SOURCES: xanim-qt-co64.patch (NEW) - partial QT CO64 support, from...
qboosh
qboosh at pld-linux.org
Tue Oct 31 22:16:42 CET 2006
Author: qboosh Date: Tue Oct 31 21:16:42 2006 GMT
Module: SOURCES Tag: HEAD
---- Log message:
- partial QT CO64 support, from xanim2801c patch from 3ivx.com
---- Files affected:
SOURCES:
xanim-qt-co64.patch (NONE -> 1.1) (NEW)
---- Diffs:
================================================================
Index: SOURCES/xanim-qt-co64.patch
diff -u /dev/null SOURCES/xanim-qt-co64.patch:1.1
--- /dev/null Tue Oct 31 22:16:42 2006
+++ SOURCES/xanim-qt-co64.patch Tue Oct 31 22:16:37 2006
@@ -0,0 +1,146 @@
+extracted from xanim2801c patch from 3ivx.com, adapted for xanim 2920
+--- xanim2920/xa_qt.c.orig 2002-07-10 03:31:32.000000000 +0200
++++ xanim2920/xa_qt.c 2006-10-31 20:44:53.719423750 +0100
+@@ -117,6 +117,7 @@
+ void QT_Read_STTS();
+ void QT_Read_STSS();
+ void QT_Read_STCO();
++void QT_Read_CO64();
+ void QT_Read_STSZ();
+ void QT_Read_STSC();
+ void QT_Read_STGS();
+@@ -529,6 +530,14 @@
+ len = xin->Read_MSB_U32(xin);
+ id = xin->Read_MSB_U32(xin);
+
++ if (len==1) {
++ if (xin->Read_MSB_U32(xin)!=0) {
++ fprintf(stdout,"QT: atom too big (must be < 4Go).\n");
++ return(xaFALSE);
++ }
++ len = xin->Read_MSB_U32(xin) - 8;
++ }
++
+ /* if (xa_verbose) */
+ DEBUG_LEVEL1
+ fprintf(stdout,"%c%c%c%c %04x len = %x file_len = %x\n",
+@@ -635,6 +644,12 @@
+ else xin->Seek_FPos(xin,(len-8),1);
+ file_len -= len;
+ break;
++ case QT_co64:
++ if (qt_v_flag) QT_Read_CO64(xin,&qtv_chunkoff_num,&qtv_chunkoffs);
++ else if (qt_s_flag) QT_Read_CO64(xin,&qts_chunkoff_num,&qts_chunkoffs);
++ else xin->Seek_FPos(xin,(len-8),1);
++ file_len -= len;
++ break;
+ case QT_stsz:
+ if (qt_v_flag) QT_Read_STSZ(xin,len,&qtv_samp_num,&qtv_samp_sizes);
+ else if (qt_s_flag)
+@@ -877,8 +892,9 @@
+ {
+ file_len = 0;
+ if ((qt_moov_flag == xaFALSE) && (qt_data_flag == xaTRUE))
+- { fprintf(stdout,"QT: file possibly truncated or missing .rsrc info.\n");
+- return(xaFALSE);
++ {
++ fprintf(stdout,"QT: file possibly truncated or missing .rsrc info.\n");
++ return(xaFALSE);
+ }
+ }
+ else if (file_len <= 0)
+@@ -1500,15 +1516,18 @@
+ xaLONG len;
+ xaULONG *qt_samp_num,**qt_samp_sizes;
+ {
+- xaULONG version,samp_size,num,i,cur;
++ xaULONG version,samp_size,flags,num,i,cur;
+ xaULONG samp_num = *qt_samp_num;
+ xaULONG *samp_sizes = *qt_samp_sizes;
+
+- version = xin->Read_MSB_U32(xin);
++ version = xin->Read_U8(xin);
++ flags = xin->Read_U8(xin)<<16;
++ flags |= xin->Read_U8(xin)<<8;
++ flags |= xin->Read_U8(xin);
+ samp_size = xin->Read_MSB_U32(xin);
+ num = xin->Read_MSB_U32(xin);
+ len = (len - 20) / 4; /* number of stored samples */
+- DEBUG_LEVEL2 fprintf(stdout," ver=%x samp_size=%x entries= %x stored entries=%x\n",version,samp_size,num,len);
++ DEBUG_LEVEL2 fprintf(stdout," ver=%x flags=%x samp_size=%x entries=%x stored entries=%x\n",version,flags,samp_size,num,len);
+
+ #ifdef NO_MORE
+ if (samp_size == 1) num = 1; /* for AUDIO PODNOTE: rethink this */
+@@ -1520,7 +1539,7 @@
+ if (len < num) num = len;
+ if (num == 0) num = 1;
+
+- if (samp_sizes == 0)
++ if (samp_size == 0)
+ {
+ samp_num = num;
+ samp_sizes = (xaULONG *)malloc(num * sizeof(xaULONG));
+@@ -1588,6 +1607,52 @@
+ }
+ }
+
++/* 64-bits chunk Offset */
++void QT_Read_CO64(xin,qt_chunkoff_num,qt_chunkoffs)
++XA_INPUT *xin;
++xaULONG *qt_chunkoff_num;
++xaULONG **qt_chunkoffs;
++{
++ xaULONG version,num,i,cur;
++ xaULONG chunkoff_num = *qt_chunkoff_num;
++ xaULONG *chunkoffs = *qt_chunkoffs;
++
++ version = xin->Read_MSB_U32(xin);
++ num = xin->Read_MSB_U32(xin);
++ DEBUG_LEVEL2 fprintf(stdout," ver=%x entries= %x\n",version,num);
++ if (chunkoffs == 0)
++ {
++ chunkoff_num = num;
++ chunkoffs = (xaULONG *)malloc(num * sizeof(xaULONG) );
++ cur = 0;
++ }
++ else
++ {
++ xaULONG *tchunks;
++ tchunks = (xaULONG *)malloc((chunkoff_num + num) * sizeof(xaULONG));
++ if (tchunks == 0) {fprintf(stdout,"malloc err 0\n"); TheEnd();}
++ for(i=0; i<chunkoff_num; i++) tchunks[i] = chunkoffs[i];
++ cur = chunkoff_num;
++ chunkoff_num += num;
++ FREE(chunkoffs,0x9011);
++ chunkoffs = tchunks;
++ }
++ for(i=0;i<num;i++) {
++ if (xin->Read_MSB_U32(xin)!=0)
++ {
++ fprintf(stdout,"QT: This file uses 64-bits chunck offset >4Go.\n");
++ TheEnd();
++ }
++ chunkoffs[cur] = xin->Read_MSB_U32(xin); cur++;
++ }
++ *qt_chunkoff_num = chunkoff_num;
++ *qt_chunkoffs = chunkoffs;
++ DEBUG_LEVEL2
++ { for(i=0;i<num;i++) fprintf(stdout," CO64 %d) %x\n",i,
++ chunkoffs[ i ]);
++ }
++}
++
+
+
+ xaULONG QT_Read_Video_Data(qt,xin,anim_hdr)
+diff -r -u -P xanim2801/xa_qt.h xanim2801c/xa_qt.h
+--- xanim2801/xa_qt.h Sun Mar 21 23:36:26 1999
++++ xanim2801c/xa_qt.h Mon Mar 19 21:56:48 2001
+@@ -42,6 +42,7 @@
+ #define QT_stsc 0x73747363
+ #define QT_stsz 0x7374737a
+ #define QT_stco 0x7374636f
++#define QT_co64 0x636f3634
+ /*-------------- VIDEO CODECS ---------------*/
+ #define QT_rle 0x726c6520
+ #define QT_smc 0x736D6320
================================================================
More information about the pld-cvs-commit
mailing list