annotate libmpdemux/mp3_hdr.h @ 25376:382aeacc771f

The buffer used for pread need be aligned, but currently it got an offset 23 to the structure head. This will cause the pread always got random data on some machines (such as my iMac G5 PPC with 10.5 os) so can not play vcd. I also tried use DKIOCCDREAD ioctl call, but the result is same -- buffer need be aligned. It could be a bug of os x or its dev lib. Now fix this problem by move the buffer to a good aligned position in structure.
author ulion
date Sat, 15 Dec 2007 12:17:51 +0000
parents b5c2254d13f8
children 6ac1ece1f9fe
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4710
701976d7a7d1 fast header checker added
arpi
parents:
diff changeset
1
16162
b5c2254d13f8 set i_bps in demux_audio for WAV and MP3 to avoid division by zero before
reimar
parents: 15199
diff changeset
2 int mp_get_mp3_header(unsigned char* hbuf,int* chans, int* freq, int* spf, int* mpa_layer, int* br);
6763
e29f95ed5d36 Fix vbr muxing and win32 codec crash on init
albeu
parents: 4710
diff changeset
3
16162
b5c2254d13f8 set i_bps in demux_audio for WAV and MP3 to avoid division by zero before
reimar
parents: 15199
diff changeset
4 #define mp_decode_mp3_header(hbuf) mp_get_mp3_header(hbuf,NULL,NULL,NULL,NULL,NULL)
4710
701976d7a7d1 fast header checker added
arpi
parents:
diff changeset
5
701976d7a7d1 fast header checker added
arpi
parents:
diff changeset
6 static inline int mp_check_mp3_header(unsigned int head){
701976d7a7d1 fast header checker added
arpi
parents:
diff changeset
7 if( (head & 0x0000e0ff) != 0x0000e0ff ||
701976d7a7d1 fast header checker added
arpi
parents:
diff changeset
8 (head & 0x00fc0000) == 0x00fc0000) return 0;
701976d7a7d1 fast header checker added
arpi
parents:
diff changeset
9 if(mp_decode_mp3_header((unsigned char*)(&head))<=0) return 0;
701976d7a7d1 fast header checker added
arpi
parents:
diff changeset
10 return 1;
701976d7a7d1 fast header checker added
arpi
parents:
diff changeset
11 }