Mercurial > libavformat.hg
changeset 1107:921c8af78310 libavformat
probe for mpeg audio
author | mru |
---|---|
date | Mon, 05 Jun 2006 22:41:14 +0000 |
parents | 8f78a071554d |
children | 5dbdfa87d0d8 |
files | mp3.c |
diffstat | 1 files changed, 27 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mp3.c Sun Jun 04 21:01:02 2006 +0000 +++ b/mp3.c Mon Jun 05 22:41:14 2006 +0000 @@ -240,6 +240,32 @@ } /* mp3 read */ + +static int mp3_read_probe(AVProbeData *p) +{ + int d; + + if(p->buf_size < 4) + return 0; + + if(p->buf[0] == 'I' && p->buf[1] == 'D' && p->buf[2] == '3' && + p->buf[3] < 5) + return AVPROBE_SCORE_MAX; + + if(p->buf[0] != 0xff) + return 0; + + d = p->buf[1]; + if((d & 0xe0) != 0xe0 || ((d & 0x18) == 0x08 || (d & 0x06) == 0)) + return 0; + + d = p->buf[2]; + if((d & 0xf0) == 0xf0 || (d & 0x0c) == 0x0c) + return 0; + + return AVPROBE_SCORE_MAX; +} + static int mp3_read_header(AVFormatContext *s, AVFormatParameters *ap) { @@ -346,7 +372,7 @@ "mp3", "MPEG audio", 0, - NULL, + mp3_read_probe, mp3_read_header, mp3_read_packet, mp3_read_close,