Mercurial > mplayer.hg
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; |