comparison libmpdemux/demux_mov.c @ 4903:d8b465e3fd88

fixed some endian issues, like changing bswap_32() -> be2me_32(), and removing FIXME #warning about endianness (seems to work fine on PPC)
author melanson
date Fri, 01 Mar 2002 03:02:25 +0000
parents 59eb588c7115
children 54fe37e1f1a7
comparison
equal deleted inserted replaced
4902:7c4edfe929c8 4903:d8b465e3fd88
192 off_t mdat_end; 192 off_t mdat_end;
193 int track_db; 193 int track_db;
194 mov_track_t* tracks[MOV_MAX_TRACKS]; 194 mov_track_t* tracks[MOV_MAX_TRACKS];
195 } mov_priv_t; 195 } mov_priv_t;
196 196
197 #warning "FIXME - mov support is only working perfectly on Little Endian systems?!"
198 //#ifdef WORDS_BIGENDIAN
199 //#define MOV_FOURCC(a,b,c,d) ((d)|(c<<8)|(b<<16)|(a<<24))
200 //#else
201 #define MOV_FOURCC(a,b,c,d) ((a<<24)|(b<<16)|(c<<8)|(d)) 197 #define MOV_FOURCC(a,b,c,d) ((a<<24)|(b<<16)|(c<<8)|(d))
202 //#endif
203 198
204 int mov_check_file(demuxer_t* demuxer){ 199 int mov_check_file(demuxer_t* demuxer){
205 int flags=0; 200 int flags=0;
206 int no=0; 201 int no=0;
207 mov_priv_t* priv=malloc(sizeof(mov_priv_t)); 202 mov_priv_t* priv=malloc(sizeof(mov_priv_t));
248 break; 243 break;
249 case MOV_FOURCC('w','i','d','e'): 244 case MOV_FOURCC('w','i','d','e'):
250 break; 245 break;
251 default: 246 default:
252 if(no==0) return 0; // first chunk is bad! 247 if(no==0) return 0; // first chunk is bad!
253 id = bswap_32(id); 248 id = be2me_32(id);
254 mp_msg(MSGT_DEMUX,MSGL_V,"MOV: unknown chunk: %.4s %d\n",&id,(int)len); 249 mp_msg(MSGT_DEMUX,MSGL_V,"MOV: unknown chunk: %.4s %d\n",&id,(int)len);
255 } 250 }
256 if(!stream_skip(demuxer->stream,len-skipped)) break; 251 if(!stream_skip(demuxer->stream,len-skipped)) break;
257 ++no; 252 ++no;
258 } 253 }
529 case MOV_FOURCC('c','o','d','e'): 524 case MOV_FOURCC('c','o','d','e'):
530 { 525 {
531 #warning "Implement atom 'code' for FLASH support" 526 #warning "Implement atom 'code' for FLASH support"
532 } 527 }
533 default: 528 default:
534 id = bswap_32(id); 529 id = be2me_32(id);
535 mp_msg(MSGT_DEMUX,MSGL_V,"MOV: unknown chunk: %.4s %d\n",&id,(int)len); 530 mp_msg(MSGT_DEMUX,MSGL_V,"MOV: unknown chunk: %.4s %d\n",&id,(int)len);
536 break; 531 break;
537 }//switch(id) 532 }//switch(id)
538 } else { /* not in track */ 533 } else { /* not in track */
539 switch(id) { 534 switch(id) {
738 lschunks(demuxer,level+1,pos+len,NULL); 733 lschunks(demuxer,level+1,pos+len,NULL);
739 break; 734 break;
740 } 735 }
741 case MOV_FOURCC('d','c','o','m'): { 736 case MOV_FOURCC('d','c','o','m'): {
742 // int temp=stream_read_dword(demuxer->stream); 737 // int temp=stream_read_dword(demuxer->stream);
743 unsigned int len=bswap_32(stream_read_dword(demuxer->stream)); 738 unsigned int len=be2me_32(stream_read_dword(demuxer->stream));
744 mp_msg(MSGT_DEMUX, MSGL_INFO, "Compressed header uses %.4s algo!\n",&len); 739 mp_msg(MSGT_DEMUX, MSGL_INFO, "Compressed header uses %.4s algo!\n",&len);
745 break; 740 break;
746 } 741 }
747 case MOV_FOURCC('c','m','v','d'): { 742 case MOV_FOURCC('c','m','v','d'): {
748 // int temp=stream_read_dword(demuxer->stream); 743 // int temp=stream_read_dword(demuxer->stream);
909 } 904 }
910 } 905 }
911 break; 906 break;
912 } /* eof udta */ 907 } /* eof udta */
913 default: 908 default:
914 id = bswap_32(id); 909 id = be2me_32(id);
915 mp_msg(MSGT_DEMUX,MSGL_V,"MOV: unknown chunk: %.4s %d\n",&id,(int)len); 910 mp_msg(MSGT_DEMUX,MSGL_V,"MOV: unknown chunk: %.4s %d\n",&id,(int)len);
916 } /* endof switch */ 911 } /* endof switch */
917 } /* endof else */ 912 } /* endof else */
918 913
919 pos+=len+8; 914 pos+=len+8;