[MPlayer-cvslog] CVS: main/libmpdemux demux_mov.c,1.141,1.142

Dominik Mierzejewski CVS syncmail at mplayerhq.hu
Tue Mar 14 00:32:40 CET 2006


CVS change done by Dominik Mierzejewski CVS

Update of /cvsroot/mplayer/main/libmpdemux
In directory mail:/var2/tmp/cvs-serv14240/libmpdemux

Modified Files:
	demux_mov.c 
Log Message:
in24/in32/fl32 little/big-endian QuickTime PCM audio support
approved by rxt


Index: demux_mov.c
===================================================================
RCS file: /cvsroot/mplayer/main/libmpdemux/demux_mov.c,v
retrieving revision 1.141
retrieving revision 1.142
diff -u -r1.141 -r1.142
--- demux_mov.c	6 Mar 2006 08:26:07 -0000	1.141
+++ demux_mov.c	13 Mar 2006 23:32:36 -0000	1.142
@@ -724,13 +724,29 @@
 		    mp_msg(MSGT_DEMUX,MSGL_V,"Audio extra header: len=%d  fcc=0x%X\n",len,fcc);
 		    if((len >= 4) && 
 		       (char2int(trak->stdata,52) >= 12) &&
-		       (char2int(trak->stdata,52+4) == MOV_FOURCC('f','r','m','a')) &&
-		       (char2int(trak->stdata,52+8) == MOV_FOURCC('a','l','a','c')) &&
-		       (len >= 36 + char2int(trak->stdata,52))) {
+		       (char2int(trak->stdata,52+4) == MOV_FOURCC('f','r','m','a'))) {
+			switch(char2int(trak->stdata,52+8)) {
+			 case MOV_FOURCC('a','l','a','c'):
+			  if (len >= 36 + char2int(trak->stdata,52)) {
 			    sh->codecdata_len = char2int(trak->stdata,52+char2int(trak->stdata,52));
 			    mp_msg(MSGT_DEMUX, MSGL_V, "MOV: Found alac atom (%d)!\n", sh->codecdata_len);
 			    sh->codecdata = (unsigned char *)malloc(sh->codecdata_len);
 			    memcpy(sh->codecdata, &trak->stdata[52+char2int(trak->stdata,52)], sh->codecdata_len);
+			  }
+			  break;
+			 case MOV_FOURCC('i','n','2','4'):
+			 case MOV_FOURCC('i','n','3','2'):
+			 case MOV_FOURCC('f','l','3','2'):
+			 case MOV_FOURCC('f','l','6','4'):
+			  if ((len >= 22) &&
+			      (char2int(trak->stdata,52+16)==MOV_FOURCC('e','n','d','a')) &&
+			      (char2short(trak->stdata,52+20))) {
+				sh->format=le2me_32(char2int(trak->stdata,52+8));
+				mp_msg(MSGT_DEMUX, MSGL_V, "MOV: Found little endian PCM data, reversed fourcc:%04x\n", sh->format);
+			  }
+		          break;
+		         default: break;
+		        }
 		    } else {
 		      if (len > 8 && len + 44 <= trak->stdata_len) {
 		    sh->codecdata_len = len-8;




More information about the MPlayer-cvslog mailing list