29 #include "../idlib/precompiled.h"
32 #define JPEG_INTERNALS
110 void recurseQuad(
long startX,
long startY,
long quadSize,
long xOff,
long yOff );
134 static long ROQ_YY_tab[256];
135 static long ROQ_UB_tab[256];
136 static long ROQ_UG_tab[256];
137 static long ROQ_VG_tab[256];
138 static long ROQ_VR_tab[256];
140 static unsigned short * vq2 =
NULL;
141 static unsigned short * vq4 =
NULL;
142 static unsigned short * vq8 =
NULL;
154 float t_ub,t_vr,t_ug,t_vg;
158 t_ub = (1.77200f/2.0f) * (
float)(1<<6) + 0.5
f;
159 t_vr = (1.40200f/2.0f) * (
float)(1<<6) + 0.5
f;
160 t_ug = (0.34414f/2.0f) * (
float)(1<<6) + 0.5
f;
161 t_vg = (0.71414f/2.0f) * (
float)(1<<6) + 0.5
f;
162 for( i = 0; i < 256; i++ ) {
163 float x = (
float)(2 * i - 255);
165 ROQ_UB_tab[
i] = (long)( ( t_ub * x) + (1<<5));
166 ROQ_VR_tab[
i] = (long)( ( t_vr * x) + (1<<5));
167 ROQ_UG_tab[
i] = (long)( (-t_ug * x) );
168 ROQ_VG_tab[
i] = (long)( (-t_vg * x) + (1<<5));
169 ROQ_YY_tab[
i] = (long)( (i << 6) | (i >> 2) );
245 memset( &c, 0,
sizeof( c ) );
294 unsigned short RoQID;
301 if ( strstr( qpath,
"/" ) ==
NULL && strstr( qpath,
"\\" ) ==
NULL ) {
325 RoQID = (
unsigned short)(file[0]) + (
unsigned short)(file[1])*256;
386 if ( thisTime < 0 ) {
390 memset( &cinData, 0,
sizeof(cinData) );
476 ddst[0*dspl+0] = dsrc[0*dspl+0];
477 ddst[0*dspl+1] = dsrc[0*dspl+1];
478 ddst[0*dspl+2] = dsrc[0*dspl+2];
479 ddst[0*dspl+3] = dsrc[0*dspl+3];
480 ddst[0*dspl+4] = dsrc[0*dspl+4];
481 ddst[0*dspl+5] = dsrc[0*dspl+5];
482 ddst[0*dspl+6] = dsrc[0*dspl+6];
483 ddst[0*dspl+7] = dsrc[0*dspl+7];
485 ddst[1*dspl+0] = dsrc[1*dspl+0];
486 ddst[1*dspl+1] = dsrc[1*dspl+1];
487 ddst[1*dspl+2] = dsrc[1*dspl+2];
488 ddst[1*dspl+3] = dsrc[1*dspl+3];
489 ddst[1*dspl+4] = dsrc[1*dspl+4];
490 ddst[1*dspl+5] = dsrc[1*dspl+5];
491 ddst[1*dspl+6] = dsrc[1*dspl+6];
492 ddst[1*dspl+7] = dsrc[1*dspl+7];
494 ddst[2*dspl+0] = dsrc[2*dspl+0];
495 ddst[2*dspl+1] = dsrc[2*dspl+1];
496 ddst[2*dspl+2] = dsrc[2*dspl+2];
497 ddst[2*dspl+3] = dsrc[2*dspl+3];
498 ddst[2*dspl+4] = dsrc[2*dspl+4];
499 ddst[2*dspl+5] = dsrc[2*dspl+5];
500 ddst[2*dspl+6] = dsrc[2*dspl+6];
501 ddst[2*dspl+7] = dsrc[2*dspl+7];
503 ddst[3*dspl+0] = dsrc[3*dspl+0];
504 ddst[3*dspl+1] = dsrc[3*dspl+1];
505 ddst[3*dspl+2] = dsrc[3*dspl+2];
506 ddst[3*dspl+3] = dsrc[3*dspl+3];
507 ddst[3*dspl+4] = dsrc[3*dspl+4];
508 ddst[3*dspl+5] = dsrc[3*dspl+5];
509 ddst[3*dspl+6] = dsrc[3*dspl+6];
510 ddst[3*dspl+7] = dsrc[3*dspl+7];
512 ddst[4*dspl+0] = dsrc[4*dspl+0];
513 ddst[4*dspl+1] = dsrc[4*dspl+1];
514 ddst[4*dspl+2] = dsrc[4*dspl+2];
515 ddst[4*dspl+3] = dsrc[4*dspl+3];
516 ddst[4*dspl+4] = dsrc[4*dspl+4];
517 ddst[4*dspl+5] = dsrc[4*dspl+5];
518 ddst[4*dspl+6] = dsrc[4*dspl+6];
519 ddst[4*dspl+7] = dsrc[4*dspl+7];
521 ddst[5*dspl+0] = dsrc[5*dspl+0];
522 ddst[5*dspl+1] = dsrc[5*dspl+1];
523 ddst[5*dspl+2] = dsrc[5*dspl+2];
524 ddst[5*dspl+3] = dsrc[5*dspl+3];
525 ddst[5*dspl+4] = dsrc[5*dspl+4];
526 ddst[5*dspl+5] = dsrc[5*dspl+5];
527 ddst[5*dspl+6] = dsrc[5*dspl+6];
528 ddst[5*dspl+7] = dsrc[5*dspl+7];
530 ddst[6*dspl+0] = dsrc[6*dspl+0];
531 ddst[6*dspl+1] = dsrc[6*dspl+1];
532 ddst[6*dspl+2] = dsrc[6*dspl+2];
533 ddst[6*dspl+3] = dsrc[6*dspl+3];
534 ddst[6*dspl+4] = dsrc[6*dspl+4];
535 ddst[6*dspl+5] = dsrc[6*dspl+5];
536 ddst[6*dspl+6] = dsrc[6*dspl+6];
537 ddst[6*dspl+7] = dsrc[6*dspl+7];
539 ddst[7*dspl+0] = dsrc[7*dspl+0];
540 ddst[7*dspl+1] = dsrc[7*dspl+1];
541 ddst[7*dspl+2] = dsrc[7*dspl+2];
542 ddst[7*dspl+3] = dsrc[7*dspl+3];
543 ddst[7*dspl+4] = dsrc[7*dspl+4];
544 ddst[7*dspl+5] = dsrc[7*dspl+5];
545 ddst[7*dspl+6] = dsrc[7*dspl+6];
546 ddst[7*dspl+7] = dsrc[7*dspl+7];
551 dsrc = (
double *)src;
552 ddst = (
double *)dst;
555 ddst[0] = dsrc[0]; ddst[1] = dsrc[1]; ddst[2] = dsrc[2]; ddst[3] = dsrc[3];
556 dsrc += dspl; ddst += dspl;
557 ddst[0] = dsrc[0]; ddst[1] = dsrc[1]; ddst[2] = dsrc[2]; ddst[3] = dsrc[3];
558 dsrc += dspl; ddst += dspl;
559 ddst[0] = dsrc[0]; ddst[1] = dsrc[1]; ddst[2] = dsrc[2]; ddst[3] = dsrc[3];
560 dsrc += dspl; ddst += dspl;
561 ddst[0] = dsrc[0]; ddst[1] = dsrc[1]; ddst[2] = dsrc[2]; ddst[3] = dsrc[3];
562 dsrc += dspl; ddst += dspl;
563 ddst[0] = dsrc[0]; ddst[1] = dsrc[1]; ddst[2] = dsrc[2]; ddst[3] = dsrc[3];
564 dsrc += dspl; ddst += dspl;
565 ddst[0] = dsrc[0]; ddst[1] = dsrc[1]; ddst[2] = dsrc[2]; ddst[3] = dsrc[3];
566 dsrc += dspl; ddst += dspl;
567 ddst[0] = dsrc[0]; ddst[1] = dsrc[1]; ddst[2] = dsrc[2]; ddst[3] = dsrc[3];
568 dsrc += dspl; ddst += dspl;
569 ddst[0] = dsrc[0]; ddst[1] = dsrc[1]; ddst[2] = dsrc[2]; ddst[3] = dsrc[3];
587 ddst[0*dspl+0] = dsrc[0*dspl+0];
588 ddst[0*dspl+1] = dsrc[0*dspl+1];
589 ddst[0*dspl+2] = dsrc[0*dspl+2];
590 ddst[0*dspl+3] = dsrc[0*dspl+3];
592 ddst[1*dspl+0] = dsrc[1*dspl+0];
593 ddst[1*dspl+1] = dsrc[1*dspl+1];
594 ddst[1*dspl+2] = dsrc[1*dspl+2];
595 ddst[1*dspl+3] = dsrc[1*dspl+3];
597 ddst[2*dspl+0] = dsrc[2*dspl+0];
598 ddst[2*dspl+1] = dsrc[2*dspl+1];
599 ddst[2*dspl+2] = dsrc[2*dspl+2];
600 ddst[2*dspl+3] = dsrc[2*dspl+3];
602 ddst[3*dspl+0] = dsrc[3*dspl+0];
603 ddst[3*dspl+1] = dsrc[3*dspl+1];
604 ddst[3*dspl+2] = dsrc[3*dspl+2];
605 ddst[3*dspl+3] = dsrc[3*dspl+3];
610 dsrc = (
double *)src;
611 ddst = (
double *)dst;
614 ddst[0] = dsrc[0]; ddst[1] = dsrc[1];
615 dsrc += dspl; ddst += dspl;
616 ddst[0] = dsrc[0]; ddst[1] = dsrc[1];
617 dsrc += dspl; ddst += dspl;
618 ddst[0] = dsrc[0]; ddst[1] = dsrc[1];
619 dsrc += dspl; ddst += dspl;
620 ddst[0] = dsrc[0]; ddst[1] = dsrc[1];
638 ddst[0*dspl+0] = dsrc[ 0];
639 ddst[0*dspl+1] = dsrc[ 1];
640 ddst[0*dspl+2] = dsrc[ 2];
641 ddst[0*dspl+3] = dsrc[ 3];
642 ddst[0*dspl+4] = dsrc[ 4];
643 ddst[0*dspl+5] = dsrc[ 5];
644 ddst[0*dspl+6] = dsrc[ 6];
645 ddst[0*dspl+7] = dsrc[ 7];
647 ddst[1*dspl+0] = dsrc[ 8];
648 ddst[1*dspl+1] = dsrc[ 9];
649 ddst[1*dspl+2] = dsrc[10];
650 ddst[1*dspl+3] = dsrc[11];
651 ddst[1*dspl+4] = dsrc[12];
652 ddst[1*dspl+5] = dsrc[13];
653 ddst[1*dspl+6] = dsrc[14];
654 ddst[1*dspl+7] = dsrc[15];
656 ddst[2*dspl+0] = dsrc[16];
657 ddst[2*dspl+1] = dsrc[17];
658 ddst[2*dspl+2] = dsrc[18];
659 ddst[2*dspl+3] = dsrc[19];
660 ddst[2*dspl+4] = dsrc[20];
661 ddst[2*dspl+5] = dsrc[21];
662 ddst[2*dspl+6] = dsrc[22];
663 ddst[2*dspl+7] = dsrc[23];
665 ddst[3*dspl+0] = dsrc[24];
666 ddst[3*dspl+1] = dsrc[25];
667 ddst[3*dspl+2] = dsrc[26];
668 ddst[3*dspl+3] = dsrc[27];
669 ddst[3*dspl+4] = dsrc[28];
670 ddst[3*dspl+5] = dsrc[29];
671 ddst[3*dspl+6] = dsrc[30];
672 ddst[3*dspl+7] = dsrc[31];
674 ddst[4*dspl+0] = dsrc[32];
675 ddst[4*dspl+1] = dsrc[33];
676 ddst[4*dspl+2] = dsrc[34];
677 ddst[4*dspl+3] = dsrc[35];
678 ddst[4*dspl+4] = dsrc[36];
679 ddst[4*dspl+5] = dsrc[37];
680 ddst[4*dspl+6] = dsrc[38];
681 ddst[4*dspl+7] = dsrc[39];
683 ddst[5*dspl+0] = dsrc[40];
684 ddst[5*dspl+1] = dsrc[41];
685 ddst[5*dspl+2] = dsrc[42];
686 ddst[5*dspl+3] = dsrc[43];
687 ddst[5*dspl+4] = dsrc[44];
688 ddst[5*dspl+5] = dsrc[45];
689 ddst[5*dspl+6] = dsrc[46];
690 ddst[5*dspl+7] = dsrc[47];
692 ddst[6*dspl+0] = dsrc[48];
693 ddst[6*dspl+1] = dsrc[49];
694 ddst[6*dspl+2] = dsrc[50];
695 ddst[6*dspl+3] = dsrc[51];
696 ddst[6*dspl+4] = dsrc[52];
697 ddst[6*dspl+5] = dsrc[53];
698 ddst[6*dspl+6] = dsrc[54];
699 ddst[6*dspl+7] = dsrc[55];
701 ddst[7*dspl+0] = dsrc[56];
702 ddst[7*dspl+1] = dsrc[57];
703 ddst[7*dspl+2] = dsrc[58];
704 ddst[7*dspl+3] = dsrc[59];
705 ddst[7*dspl+4] = dsrc[60];
706 ddst[7*dspl+5] = dsrc[61];
707 ddst[7*dspl+6] = dsrc[62];
708 ddst[7*dspl+7] = dsrc[63];
713 dsrc = (
double *)src;
714 ddst = (
double *)dst;
717 ddst[0] = dsrc[0]; ddst[1] = dsrc[1]; ddst[2] = dsrc[2]; ddst[3] = dsrc[3];
718 dsrc += 4; ddst += dspl;
719 ddst[0] = dsrc[0]; ddst[1] = dsrc[1]; ddst[2] = dsrc[2]; ddst[3] = dsrc[3];
720 dsrc += 4; ddst += dspl;
721 ddst[0] = dsrc[0]; ddst[1] = dsrc[1]; ddst[2] = dsrc[2]; ddst[3] = dsrc[3];
722 dsrc += 4; ddst += dspl;
723 ddst[0] = dsrc[0]; ddst[1] = dsrc[1]; ddst[2] = dsrc[2]; ddst[3] = dsrc[3];
724 dsrc += 4; ddst += dspl;
725 ddst[0] = dsrc[0]; ddst[1] = dsrc[1]; ddst[2] = dsrc[2]; ddst[3] = dsrc[3];
726 dsrc += 4; ddst += dspl;
727 ddst[0] = dsrc[0]; ddst[1] = dsrc[1]; ddst[2] = dsrc[2]; ddst[3] = dsrc[3];
728 dsrc += 4; ddst += dspl;
729 ddst[0] = dsrc[0]; ddst[1] = dsrc[1]; ddst[2] = dsrc[2]; ddst[3] = dsrc[3];
730 dsrc += 4; ddst += dspl;
731 ddst[0] = dsrc[0]; ddst[1] = dsrc[1]; ddst[2] = dsrc[2]; ddst[3] = dsrc[3];
749 ddst[0*dspl+0] = dsrc[ 0];
750 ddst[0*dspl+1] = dsrc[ 1];
751 ddst[0*dspl+2] = dsrc[ 2];
752 ddst[0*dspl+3] = dsrc[ 3];
753 ddst[1*dspl+0] = dsrc[ 4];
754 ddst[1*dspl+1] = dsrc[ 5];
755 ddst[1*dspl+2] = dsrc[ 6];
756 ddst[1*dspl+3] = dsrc[ 7];
757 ddst[2*dspl+0] = dsrc[ 8];
758 ddst[2*dspl+1] = dsrc[ 9];
759 ddst[2*dspl+2] = dsrc[10];
760 ddst[2*dspl+3] = dsrc[11];
761 ddst[3*dspl+0] = dsrc[12];
762 ddst[3*dspl+1] = dsrc[13];
763 ddst[3*dspl+2] = dsrc[14];
764 ddst[3*dspl+3] = dsrc[15];
769 dsrc = (
double *)src;
770 ddst = (
double *)dst;
773 ddst[0] = dsrc[0]; ddst[1] = dsrc[1];
774 dsrc += 2; ddst += dspl;
775 ddst[0] = dsrc[0]; ddst[1] = dsrc[1];
776 dsrc += 2; ddst += dspl;
777 ddst[0] = dsrc[0]; ddst[1] = dsrc[1];
778 dsrc += 2; ddst += dspl;
779 ddst[0] = dsrc[0]; ddst[1] = dsrc[1];
797 ddst[0*dspl+0] = dsrc[0];
798 ddst[0*dspl+1] = dsrc[1];
799 ddst[1*dspl+0] = dsrc[2];
800 ddst[1*dspl+1] = dsrc[3];
805 dsrc = (
double *)src;
806 ddst = (
double *)dst;
810 ddst[dspl] = dsrc[1];
820 unsigned short newd, celdata, code;
830 celdata = data[0] + data[1]*256;
836 code = (
unsigned short)(celdata&0xc000);
850 celdata = data[0] + data[1]*256;
856 code = (
unsigned short)(celdata&0xc000); celdata <<= 2;
890 }
while ( status[index] !=
NULL );
893 #define VQ2TO4(a,b,c,d) { \
916 #define VQ2TO2(a,b,c,d) { \
935 long r,
g,
b,YY = (long)(ROQ_YY_tab[(y)]);
937 r = (YY + ROQ_VR_tab[
v]) >> 9;
938 g = (YY + ROQ_UG_tab[u] + ROQ_VG_tab[
v]) >> 8;
939 b = (YY + ROQ_UB_tab[u]) >> 9;
941 if (r<0) r = 0;
if (g<0) g = 0;
if (b<0) b = 0;
942 if (r > 31) r = 31;
if (g > 63) g = 63;
if (b > 31) b = 31;
944 return (
unsigned short)((r<<11)+(g<<5)+(
b));
953 long r,
g,
b,YY = (long)(ROQ_YY_tab[(y)]);
955 r = (YY + ROQ_VR_tab[
v]) >> 6;
956 g = (YY + ROQ_UG_tab[u] + ROQ_VG_tab[
v]) >> 6;
957 b = (YY + ROQ_UB_tab[u]) >> 6;
959 if (r<0) r = 0;
if (g<0) g = 0;
if (b<0) b = 0;
960 if (r > 255) r = 255;
if (g > 255) g = 255;
if (b > 255) b = 255;
971 long i,
j, two, four;
972 unsigned short *aptr, *bptr, *cptr, *dptr;
973 long y0,
y1,
y2,y3,cr,cb;
974 unsigned int *iaptr, *ibptr, *icptr, *idptr;
981 four = roq_flags&0xff;
986 bptr = (
unsigned short *)vq2;
1000 cb = (long)*input++;
1007 cptr = (
unsigned short *)vq4;
1008 dptr = (
unsigned short *)vq8;
1010 for(i=0;i<four;i++) {
1011 aptr = (
unsigned short *)vq2 + (*input++)*4;
1012 bptr = (
unsigned short *)vq2 + (*input++)*4;
1014 VQ2TO4(aptr,bptr,cptr,dptr);
1017 ibptr = (
unsigned int *)bptr;
1018 for(i=0;i<two;i++) {
1019 y0 = (long)*input++;
1020 y1 = (long)*input++;
1021 y2 = (long)*input++;
1022 y3 = (long)*input++;
1023 cr = (long)*input++;
1024 cb = (long)*input++;
1031 icptr = (
unsigned int *)vq4;
1032 idptr = (
unsigned int *)vq8;
1034 for(i=0;i<four;i++) {
1035 iaptr = (
unsigned int *)vq2 + (*input++)*4;
1036 ibptr = (
unsigned int *)vq2 + (*input++)*4;
1038 VQ2TO4(iaptr, ibptr, icptr, idptr);
1046 for(i=0;i<two;i++) {
1047 y0 = (long)*input++;
1048 y1 = (long)*input++;
1049 y2 = (long)*input++;
1050 y3 = (long)*input++;
1051 cr = (long)*input++;
1052 cb = (long)*input++;
1055 *bptr++ =
yuv_to_rgb( ((y0*3)+y2)/4, cr, cb );
1056 *bptr++ =
yuv_to_rgb( ((y1*3)+y3)/4, cr, cb );
1057 *bptr++ =
yuv_to_rgb( (y0+(y2*3))/4, cr, cb );
1058 *bptr++ =
yuv_to_rgb( (y1+(y3*3))/4, cr, cb );
1063 cptr = (
unsigned short *)vq4;
1064 dptr = (
unsigned short *)vq8;
1066 for(i=0;i<four;i++) {
1067 aptr = (
unsigned short *)vq2 + (*input++)*8;
1068 bptr = (
unsigned short *)vq2 + (*input++)*8;
1070 VQ2TO4(aptr,bptr,cptr,dptr);
1071 VQ2TO4(aptr,bptr,cptr,dptr);
1075 ibptr = (
unsigned int *)bptr;
1076 for(i=0;i<two;i++) {
1077 y0 = (long)*input++;
1078 y1 = (long)*input++;
1079 y2 = (long)*input++;
1080 y3 = (long)*input++;
1081 cr = (long)*input++;
1082 cb = (long)*input++;
1093 icptr = (
unsigned int *)vq4;
1094 idptr = (
unsigned int *)vq8;
1096 for(i=0;i<four;i++) {
1097 iaptr = (
unsigned int *)vq2 + (*input++)*8;
1098 ibptr = (
unsigned int *)vq2 + (*input++)*8;
1100 VQ2TO4(iaptr, ibptr, icptr, idptr);
1101 VQ2TO4(iaptr, ibptr, icptr, idptr);
1111 for(i=0;i<two;i++) {
1112 y0 = (long)*input; input+=2;
1113 y2 = (long)*input; input+=2;
1114 cr = (long)*input++;
1115 cb = (long)*input++;
1120 cptr = (
unsigned short *)vq4;
1121 dptr = (
unsigned short *)vq8;
1123 for(i=0;i<four;i++) {
1124 aptr = (
unsigned short *)vq2 + (*input++)*2;
1125 bptr = (
unsigned short *)vq2 + (*input++)*2;
1127 VQ2TO2(aptr,bptr,cptr,dptr);
1131 ibptr = (
unsigned int *) bptr;
1132 for(i=0;i<two;i++) {
1133 y0 = (long)*input; input+=2;
1134 y2 = (long)*input; input+=2;
1135 cr = (long)*input++;
1136 cb = (long)*input++;
1141 icptr = (
unsigned int *)vq4;
1142 idptr = (
unsigned int *)vq8;
1144 for(i=0;i<four;i++) {
1145 iaptr = (
unsigned int *)vq2 + (*input++)*2;
1146 ibptr = (
unsigned int *)vq2 + (*input++)*2;
1148 VQ2TO2(iaptr,ibptr,icptr,idptr);
1162 long bigx, bigy, lowx, lowy, useY;
1174 if ( (startX >= lowx) && (startX+quadSize) <= (bigx) && (startY+quadSize) <= (bigy) && (startY >= lowy) && quadSize <=
MAXSIZE) {
1184 recurseQuad( startX, startY , quadSize, xOff, yOff );
1185 recurseQuad( startX+quadSize, startY , quadSize, xOff, yOff );
1186 recurseQuad( startX, startY+quadSize , quadSize, xOff, yOff );
1187 recurseQuad( startX+quadSize, startY+quadSize , quadSize, xOff, yOff );
1197 long numQuadCels,
i,
x,
y;
1201 numQuadCels += numQuadCels/4 + numQuadCels/16;
1205 numQuadCels += numQuadCels/4;
1210 for(y=0;y<(long)
ysize;y+=16)
1211 for(x=0;x<(long)
xsize;x+=16)
1216 for(i=(numQuadCels-64);i<numQuadCels;i++) {
1228 xsize = qData[0]+qData[1]*256;
1229 ysize = qData[2]+qData[3]*256;
1230 maxsize = qData[4]+qData[5]*256;
1231 minsize = qData[6]+qData[7]*256;
1259 long i,
j,
x,
y, temp, temp2;
1265 temp2 = (y+yoff-8)*i;
1267 temp = (x+xoff-8)*j;
1298 #define INPUT_BUF_SIZE 32768
1398 if (num_bytes > 0) {
1529 buffer = (*cinfo.mem->alloc_sarray)
1548 memcpy( wStatus, &buffer[0][0], row_stride );
1562 wStatus -= row_stride;
1674 roq_id = framedata[0] + framedata[1]*256;
1675 RoQFrameSize = framedata[2] + framedata[3]*256 + framedata[4]*65536;
1676 roq_flags = framedata[6] + framedata[7]*256;
1677 roqF0 = (char)framedata[7];
1678 roqF1 = (char)framedata[6];
1689 inMemory =
false; framedata += 8;
goto redump;
1709 roqFPS = file[ 6] + file[ 7]*256;
1715 roq_id = file[ 8] + file[ 9]*256;
1716 RoQFrameSize= file[10] + file[11]*256 + file[12]*65536;
1747 idStr fname = qpath;
1750 if ( !fname.
Icmp(
"waveform" ) ) {
virtual bool InitFromFile(const char *qpath, bool looping)
virtual idFile * OpenFileRead(const char *relativePath, bool allowCopyFiles=true, const char *gamedir=NULL)=0
my_source_mgr * my_src_ptr
static void ShutdownCinematic(void)
virtual cinData_t ImageForTime(const int milliseconds, const bool waveform)=0
static void InitCinematic(void)
void recurseQuad(long startX, long startY, long quadSize, long xOff, long yOff)
cinData_t ImageForTime(int milliseconds)
GLOBAL boolean jpeg_start_decompress(j_decompress_ptr cinfo)
METHODDEF void term_source(j_decompress_ptr cinfo)
virtual int AnimationLength()
boolean do_fancy_upsampling
void move8_32(byte *src, byte *dst, int spl)
struct jpeg_common_struct * j_common_ptr
void readQuadInfo(byte *qData)
idFileSystem * fileSystem
GLenum GLsizei GLenum GLenum const GLvoid * image
static idCinematic * Alloc()
#define VQ2TO2(a, b, c, d)
virtual void ResetTime(int time)
METHODDEF void init_source(j_decompress_ptr cinfo)
int Icmp(const char *text) const
struct jpeg_error_mgr jerr
virtual bool InitFromFile(const char *qpath, bool looping)
virtual int AnimationLength()
void decodeCodeBook(byte *input, unsigned short roq_flags)
unsigned int RoQFrameSize
idCVar r_skipROQ("r_skipROQ","0", CVAR_RENDERER|CVAR_BOOL,"skip ROQ decoding")
int JPEGBlit(byte *wStatus, byte *data, int datasize)
unsigned int yuv_to_rgb24(long y, long u, long v)
GLOBAL void jpeg_create_decompress(j_decompress_ptr cinfo)
GLOBAL JDIMENSION jpeg_read_scanlines(j_decompress_ptr cinfo, JSAMPARRAY scanlines, JDIMENSION max_lines)
GLsizei GLsizei GLenum GLenum const GLvoid * data
#define VQ2TO4(a, b, c, d)
virtual cinData_t ImageForTime(int milliseconds)
virtual int Read(void *buffer, int len)
const int DEFAULT_CIN_HEIGHT
J_DITHER_MODE dither_mode
GLenum GLenum GLenum input
GLOBAL void jpeg_memory_src(j_decompress_ptr cinfo, byte *infile, int size)
virtual void ResetTime(int time)
GLOBAL boolean jpeg_finish_decompress(j_decompress_ptr cinfo)
GLdouble GLdouble GLdouble y2
virtual int Seek(long offset, fsOrigin_t origin)
void move4_32(byte *src, byte *dst, int spl)
struct jpeg_source_mgr * src
GLdouble GLdouble GLdouble r
JDIMENSION output_scanline
GLOBAL void jpeg_destroy_decompress(j_decompress_ptr cinfo)
const int ZA_SOUND_STEREO
const int DEFAULT_CIN_WIDTH
void blit8_32(byte *src, byte *dst, int spl)
virtual ~idCinematicLocal()
idSoundSystem * soundSystem
GLOBAL boolean jpeg_resync_to_restart(j_decompress_ptr cinfo, int desired)
METHODDEF void skip_input_data(j_decompress_ptr cinfo, long num_bytes)
GLOBAL struct jpeg_error_mgr * jpeg_std_error(struct jpeg_error_mgr *err)
typedef void(APIENTRYP PFNGLBLENDCOLORPROC)(GLclampf red
METHODDEF boolean fill_input_buffer(j_decompress_ptr cinfo)
bool InitFromFile(const char *qpath, bool looping)
struct jpeg_source_mgr pub
void blitVQQuad32fs(byte **status, unsigned char *data)
void setupQuad(long xOff, long yOff)
void * Mem_Alloc(const int size)
void blit2_32(byte *src, byte *dst, int spl)
if(!ValidDisplayID(prefInfo.prefDisplayID)) prefInfo.prefDisplayID
virtual cinData_t ImageForTime(int milliseconds)
void blit4_32(byte *src, byte *dst, int spl)
virtual void CloseFile(idFile *f)=0
const JOCTET * next_input_byte
virtual void DPrintf(const char *fmt,...) id_attribute((format(printf
GLOBAL int jpeg_read_header(j_decompress_ptr cinfo, boolean require_image)
int sprintf(idStr &string, const char *fmt,...)
unsigned short yuv_to_rgb(long y, long u, long v)
void RoQPrepMcomp(long xoff, long yoff)
const viewDef_t * viewDef