diff options
author | Diego Biurrun <diego@biurrun.de> | 2013-03-25 16:12:51 +0100 |
---|---|---|
committer | Diego Biurrun <diego@biurrun.de> | 2013-05-04 21:43:06 +0200 |
commit | e0f8be6413b6a8d334d6052e610af32935c310af (patch) | |
tree | 1548e782ae23ad6e46225593b96928a85d1286a5 | |
parent | 4d7ed3e73541983459a7913c2034eba69ebc113d (diff) | |
download | ffmpeg-e0f8be6413b6a8d334d6052e610af32935c310af.tar.gz |
avformat: Add AVPROBE_SCORE_EXTENSION define and use where appropriate
36 files changed, 55 insertions, 53 deletions
diff --git a/libavformat/aacdec.c b/libavformat/aacdec.c index 6f9763facb..8d87ce63ff 100644 --- a/libavformat/aacdec.c +++ b/libavformat/aacdec.c @@ -54,9 +54,9 @@ static int adts_aac_probe(AVProbeData *p) if(buf == buf0) first_frames= frames; } - if (first_frames>=3) return AVPROBE_SCORE_MAX/2+1; - else if(max_frames>500)return AVPROBE_SCORE_MAX/2; - else if(max_frames>=3) return AVPROBE_SCORE_MAX/4; + if (first_frames>=3) return AVPROBE_SCORE_EXTENSION + 1; + else if(max_frames>500)return AVPROBE_SCORE_EXTENSION; + else if(max_frames>=3) return AVPROBE_SCORE_EXTENSION / 2; else if(max_frames>=1) return 1; else return 0; } diff --git a/libavformat/ac3dec.c b/libavformat/ac3dec.c index d3f2ec297d..4ceffa54dd 100644 --- a/libavformat/ac3dec.c +++ b/libavformat/ac3dec.c @@ -57,7 +57,7 @@ static int ac3_eac3_probe(AVProbeData *p, enum AVCodecID expected_codec_id) if(codec_id != expected_codec_id) return 0; // keep this in sync with mp3 probe, both need to avoid // issues with MPEG-files! - if (first_frames >= 4) return AVPROBE_SCORE_MAX / 2 + 1; + if (first_frames >= 4) return AVPROBE_SCORE_EXTENSION + 1; if (max_frames) { int pes = 0, i; @@ -78,8 +78,8 @@ static int ac3_eac3_probe(AVProbeData *p, enum AVCodecID expected_codec_id) if (pes) max_frames = (max_frames + pes - 1) / pes; } - if (max_frames > 500) return AVPROBE_SCORE_MAX / 2; - else if (max_frames >= 4) return AVPROBE_SCORE_MAX / 4; + if (max_frames > 500) return AVPROBE_SCORE_EXTENSION; + else if (max_frames >= 4) return AVPROBE_SCORE_EXTENSION / 2; else if (max_frames >= 1) return 1; else return 0; } diff --git a/libavformat/avformat.h b/libavformat/avformat.h index 43afa9f526..5d224c4899 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -337,7 +337,9 @@ typedef struct AVProbeData { int buf_size; /**< Size of buf except extra allocated bytes */ } AVProbeData; -#define AVPROBE_SCORE_MAX 100 ///< maximum score, half of that is used for file-extension-based detection +#define AVPROBE_SCORE_EXTENSION 50 ///< score for file extension +#define AVPROBE_SCORE_MAX 100 ///< maximum score + #define AVPROBE_PADDING_SIZE 32 ///< extra allocated bytes at the end of the probe buffer /// Demuxer will use avio_open, no opened file should be provided by the caller. diff --git a/libavformat/avidec.c b/libavformat/avidec.c index b235875c53..cf24e8c4e1 100644 --- a/libavformat/avidec.c +++ b/libavformat/avidec.c @@ -758,7 +758,7 @@ static int avi_read_header(AVFormatContext *s) static int read_gab2_sub(AVStream *st, AVPacket *pkt) { if (!strcmp(pkt->data, "GAB2") && AV_RL16(pkt->data+5) == 2) { uint8_t desc[256]; - int score = AVPROBE_SCORE_MAX / 2, ret; + int score = AVPROBE_SCORE_EXTENSION, ret; AVIStream *ast = st->priv_data; AVInputFormat *sub_demuxer; AVRational time_base; diff --git a/libavformat/avs.c b/libavformat/avs.c index 8a3ad388db..b96a122c13 100644 --- a/libavformat/avs.c +++ b/libavformat/avs.c @@ -50,7 +50,7 @@ static int avs_probe(AVProbeData * p) d = p->buf; if (d[0] == 'w' && d[1] == 'W' && d[2] == 0x10 && d[3] == 0) - return 50; + return AVPROBE_SCORE_EXTENSION; return 0; } diff --git a/libavformat/cavsvideodec.c b/libavformat/cavsvideodec.c index ed9cdb21f5..fcca9e18b3 100644 --- a/libavformat/cavsvideodec.c +++ b/libavformat/cavsvideodec.c @@ -61,7 +61,7 @@ static int cavsvideo_probe(AVProbeData *p) } } if(seq && seq*9<=pic*10) - return AVPROBE_SCORE_MAX/2; + return AVPROBE_SCORE_EXTENSION; return 0; } diff --git a/libavformat/dtsdec.c b/libavformat/dtsdec.c index 28cccd320a..9010711599 100644 --- a/libavformat/dtsdec.c +++ b/libavformat/dtsdec.c @@ -60,7 +60,7 @@ static int dts_probe(AVProbeData *p) max = markers[2] > markers[max] ? 2 : max; if (markers[max] > 3 && p->buf_size / markers[max] < 32*1024 && markers[max] * 4 > sum * 3) - return AVPROBE_SCORE_MAX/2+1; + return AVPROBE_SCORE_EXTENSION + 1; return 0; } diff --git a/libavformat/flacdec.c b/libavformat/flacdec.c index 1edd88037a..9737095bbb 100644 --- a/libavformat/flacdec.c +++ b/libavformat/flacdec.c @@ -281,7 +281,7 @@ static int flac_probe(AVProbeData *p) { if (p->buf_size < 4 || memcmp(p->buf, "fLaC", 4)) return 0; - return AVPROBE_SCORE_MAX/2; + return AVPROBE_SCORE_EXTENSION; } AVInputFormat ff_flac_demuxer = { diff --git a/libavformat/h261dec.c b/libavformat/h261dec.c index 9b9e3f46a6..4a5805020f 100644 --- a/libavformat/h261dec.c +++ b/libavformat/h261dec.c @@ -56,9 +56,9 @@ static int h261_probe(AVProbeData *p) } } if(valid_psc > 2*invalid_psc + 6){ - return 50; + return AVPROBE_SCORE_EXTENSION; }else if(valid_psc > 2*invalid_psc + 2) - return 25; + return AVPROBE_SCORE_EXTENSION / 2; return 0; } diff --git a/libavformat/h263dec.c b/libavformat/h263dec.c index 101ef51748..4d826d8c2d 100644 --- a/libavformat/h263dec.c +++ b/libavformat/h263dec.c @@ -56,9 +56,9 @@ static int h263_probe(AVProbeData *p) } } if(valid_psc > 2*invalid_psc + 2*res_change + 3){ - return 50; + return AVPROBE_SCORE_EXTENSION; }else if(valid_psc > 2*invalid_psc) - return 25; + return AVPROBE_SCORE_EXTENSION / 2; return 0; } diff --git a/libavformat/h264dec.c b/libavformat/h264dec.c index 0c85bae6d4..7d3bb474f4 100644 --- a/libavformat/h264dec.c +++ b/libavformat/h264dec.c @@ -63,7 +63,7 @@ static int h264_probe(AVProbeData *p) } } if(sps && pps && (idr||sli>3) && res<(sps+pps+idr)) - return AVPROBE_SCORE_MAX/2+1; // +1 for .mpg + return AVPROBE_SCORE_EXTENSION + 1; // 1 more than .mpg return 0; } diff --git a/libavformat/idcin.c b/libavformat/idcin.c index fa9976bae6..2536e8bd62 100644 --- a/libavformat/idcin.c +++ b/libavformat/idcin.c @@ -137,7 +137,7 @@ static int idcin_probe(AVProbeData *p) return 0; /* return half certainty since this check is a bit sketchy */ - return AVPROBE_SCORE_MAX / 2; + return AVPROBE_SCORE_EXTENSION; } static int idcin_read_header(AVFormatContext *s) diff --git a/libavformat/img2dec.c b/libavformat/img2dec.c index 1d437f5b4d..9acb6f6927 100644 --- a/libavformat/img2dec.c +++ b/libavformat/img2dec.c @@ -130,7 +130,7 @@ static int img_read_probe(AVProbeData *p) if (av_filename_number_test(p->filename)) return AVPROBE_SCORE_MAX; else - return AVPROBE_SCORE_MAX / 2; + return AVPROBE_SCORE_EXTENSION; } return 0; } diff --git a/libavformat/m4vdec.c b/libavformat/m4vdec.c index 4bee058a50..04bd0621bc 100644 --- a/libavformat/m4vdec.c +++ b/libavformat/m4vdec.c @@ -45,7 +45,7 @@ static int mpeg4video_probe(AVProbeData *probe_packet) } if (VOP >= VISO && VOP >= VOL && VO >= VOL && VOL > 0 && res==0) - return AVPROBE_SCORE_MAX/2; + return AVPROBE_SCORE_EXTENSION; return 0; } diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 5279110312..744f7c0f6c 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -962,7 +962,7 @@ static int matroska_probe(AVProbeData *p) } // probably valid EBML header but no recognized doctype - return AVPROBE_SCORE_MAX/2; + return AVPROBE_SCORE_EXTENSION; } static MatroskaTrack *matroska_find_track_by_num(MatroskaDemuxContext *matroska, diff --git a/libavformat/mm.c b/libavformat/mm.c index 83539fa242..8c9cbd79d2 100644 --- a/libavformat/mm.c +++ b/libavformat/mm.c @@ -79,7 +79,7 @@ static int probe(AVProbeData *p) return 0; /* only return half certainty since this check is a bit sketchy */ - return AVPROBE_SCORE_MAX / 2; + return AVPROBE_SCORE_EXTENSION; } static int read_header(AVFormatContext *s) diff --git a/libavformat/mov.c b/libavformat/mov.c index 291c14227c..849ade0b2d 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -2639,7 +2639,7 @@ static int mov_probe(AVProbeData *p) case MKTAG('p','r','f','l'): offset = AV_RB32(p->buf+offset) + offset; /* if we only find those cause probedata is too small at least rate them */ - score = AVPROBE_SCORE_MAX - 50; + score = AVPROBE_SCORE_EXTENSION; break; default: /* unrecognized tag */ diff --git a/libavformat/mp3dec.c b/libavformat/mp3dec.c index 9da9aa8b16..14edc4ae8e 100644 --- a/libavformat/mp3dec.c +++ b/libavformat/mp3dec.c @@ -73,7 +73,7 @@ static int mp3_read_probe(AVProbeData *p) } // keep this in sync with ac3 probe, both need to avoid // issues with MPEG-files! - if (first_frames >= 4) return AVPROBE_SCORE_MAX / 2 + 1; + if (first_frames >= 4) return AVPROBE_SCORE_EXTENSION + 1; if (max_frames) { int pes = 0, i; @@ -94,8 +94,8 @@ static int mp3_read_probe(AVProbeData *p) if (pes) max_frames = (max_frames + pes - 1) / pes; } - if (max_frames > 500) return AVPROBE_SCORE_MAX / 2; - else if (max_frames >= 4) return AVPROBE_SCORE_MAX / 4; + if (max_frames > 500) return AVPROBE_SCORE_EXTENSION; + else if (max_frames >= 4) return AVPROBE_SCORE_EXTENSION / 2; else if (max_frames >= 1) return 1; else return 0; //mpegps_mp3_unrecognized_format.mpg has max_frames=3 diff --git a/libavformat/mpc8.c b/libavformat/mpc8.c index f60a314b77..c3c70e051e 100644 --- a/libavformat/mpc8.c +++ b/libavformat/mpc8.c @@ -92,7 +92,7 @@ static int mpc8_probe(AVProbeData *p) if (size < 2) return 0; if (bs + size - 2 >= bs_end) - return AVPROBE_SCORE_MAX / 4 - 1; //seems to be valid MPC but no header yet + return AVPROBE_SCORE_EXTENSION - 1; // seems to be valid MPC but no header yet if (header_found) { if (size < 11 || size > 28) return 0; diff --git a/libavformat/mpeg.c b/libavformat/mpeg.c index 2d08b17682..8a4c6d7acc 100644 --- a/libavformat/mpeg.c +++ b/libavformat/mpeg.c @@ -82,14 +82,14 @@ static int mpegps_probe(AVProbeData *p) } if(vid+audio > invalid) /* invalid VDR files nd short PES streams */ - score= AVPROBE_SCORE_MAX/4; + score = AVPROBE_SCORE_EXTENSION / 2; if(sys>invalid && sys*9 <= pspack*10) - return pspack > 2 ? AVPROBE_SCORE_MAX/2+2 : AVPROBE_SCORE_MAX/4; // +1 for .mpg + return pspack > 2 ? AVPROBE_SCORE_EXTENSION + 2 : AVPROBE_SCORE_EXTENSION / 2; // 1 more than .mpg if(pspack > invalid && (priv1+vid+audio)*10 >= pspack*9) - return pspack > 2 ? AVPROBE_SCORE_MAX/2+2 : AVPROBE_SCORE_MAX/4; // +1 for .mpg + return pspack > 2 ? AVPROBE_SCORE_EXTENSION + 2 : AVPROBE_SCORE_EXTENSION / 2; // 1 more than .mpg if((!!vid ^ !!audio) && (audio > 4 || vid > 1) && !sys && !pspack && p->buf_size>2048 && vid + audio > invalid) /* PES stream */ - return (audio > 12 || vid > 3) ? AVPROBE_SCORE_MAX/2+2 : AVPROBE_SCORE_MAX/4; + return (audio > 12 || vid > 3) ? AVPROBE_SCORE_EXTENSION + 2 : AVPROBE_SCORE_EXTENSION / 2; //02-Penguin.flac has sys:0 priv1:0 pspack:0 vid:0 audio:1 //mp3_misidentified_2.mp3 has sys:0 priv1:0 pspack:0 vid:0 audio:6 diff --git a/libavformat/mpegvideodec.c b/libavformat/mpegvideodec.c index 87e5e038c6..96b95a58f1 100644 --- a/libavformat/mpegvideodec.c +++ b/libavformat/mpegvideodec.c @@ -51,7 +51,7 @@ static int mpegvideo_probe(AVProbeData *p) } } if(seq && seq*9<=pic*10 && pic*9<=slice*10 && !pspack && !pes) - return pic>1 ? AVPROBE_SCORE_MAX/2+1 : AVPROBE_SCORE_MAX/4; // +1 for .mpg + return pic>1 ? AVPROBE_SCORE_EXTENSION + 1 : AVPROBE_SCORE_EXTENSION / 2; // 1 more than .mpg return 0; } diff --git a/libavformat/mtv.c b/libavformat/mtv.c index 3c2ae1f56d..ed250bccc3 100644 --- a/libavformat/mtv.c +++ b/libavformat/mtv.c @@ -64,13 +64,13 @@ static int mtv_probe(AVProbeData *p) if(!AV_RL16(&p->buf[52]) || !AV_RL16(&p->buf[54])) { if(!!AV_RL16(&p->buf[56])) - return AVPROBE_SCORE_MAX/2; + return AVPROBE_SCORE_EXTENSION; else return 0; } if(p->buf[51] != 16) - return AVPROBE_SCORE_MAX/4; // But we are going to assume 16bpp anyway .. + return AVPROBE_SCORE_EXTENSION / 2; // But we are going to assume 16bpp anyway .. return AVPROBE_SCORE_MAX; } diff --git a/libavformat/nsvdec.c b/libavformat/nsvdec.c index 7698f55bb1..ffe43cf335 100644 --- a/libavformat/nsvdec.c +++ b/libavformat/nsvdec.c @@ -791,7 +791,7 @@ static int nsv_probe(AVProbeData *p) } /* so we'll have more luck on extension... */ if (av_match_ext(p->filename, "nsv")) - return AVPROBE_SCORE_MAX/2; + return AVPROBE_SCORE_EXTENSION; /* FIXME: add mime-type check */ return score; } diff --git a/libavformat/omadec.c b/libavformat/omadec.c index b932ec33d0..4f9c49f611 100644 --- a/libavformat/omadec.c +++ b/libavformat/omadec.c @@ -428,7 +428,7 @@ static int oma_read_probe(AVProbeData *p) /* This check cannot overflow as tag_len has at most 28 bits */ if (p->buf_size < tag_len + 5) /* EA3 header comes late, might be outside of the probe buffer */ - return AVPROBE_SCORE_MAX / 2; + return AVPROBE_SCORE_EXTENSION; buf += tag_len; diff --git a/libavformat/psxstr.c b/libavformat/psxstr.c index 313a1d8fe7..712dbc9b92 100644 --- a/libavformat/psxstr.c +++ b/libavformat/psxstr.c @@ -94,7 +94,7 @@ static int str_probe(AVProbeData *p) /* MPEG files (like those ripped from VCDs) can also look like this; * only return half certainty */ - return 50; + return AVPROBE_SCORE_EXTENSION; } static int str_read_header(AVFormatContext *s) diff --git a/libavformat/pva.c b/libavformat/pva.c index 53041ba494..3abfc18508 100644 --- a/libavformat/pva.c +++ b/libavformat/pva.c @@ -36,7 +36,7 @@ static int pva_probe(AVProbeData * pd) { unsigned char *buf = pd->buf; if (AV_RB16(buf) == PVA_MAGIC && buf[2] && buf[2] < 3 && buf[4] == 0x55) - return AVPROBE_SCORE_MAX / 2; + return AVPROBE_SCORE_EXTENSION; return 0; } diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c index a5e2f050ce..3351c34a58 100644 --- a/libavformat/rtsp.c +++ b/libavformat/rtsp.c @@ -2032,7 +2032,7 @@ static int sdp_probe(AVProbeData *p1) while (p < p_end && *p != '\0') { if (p + sizeof("c=IN IP") - 1 < p_end && av_strstart(p, "c=IN IP", NULL)) - return AVPROBE_SCORE_MAX / 2; + return AVPROBE_SCORE_EXTENSION; while (p < p_end - 1 && *p != '\n') p++; if (++p >= p_end) diff --git a/libavformat/sierravmd.c b/libavformat/sierravmd.c index 359282c875..645b99bf97 100644 --- a/libavformat/sierravmd.c +++ b/libavformat/sierravmd.c @@ -76,7 +76,7 @@ static int vmd_probe(AVProbeData *p) return 0; /* only return half certainty since this check is a bit sketchy */ - return AVPROBE_SCORE_MAX / 2; + return AVPROBE_SCORE_EXTENSION; } static int vmd_read_header(AVFormatContext *s) diff --git a/libavformat/spdifdec.c b/libavformat/spdifdec.c index e5202494f5..2fb94773a5 100644 --- a/libavformat/spdifdec.c +++ b/libavformat/spdifdec.c @@ -149,10 +149,10 @@ static int spdif_probe(AVProbeData *p) if (sync_codes >= 6) /* good amount of sync codes but with unexpected offsets */ - return AVPROBE_SCORE_MAX / 2; + return AVPROBE_SCORE_EXTENSION; /* some sync codes were found */ - return AVPROBE_SCORE_MAX / 8; + return AVPROBE_SCORE_EXTENSION / 4; } static int spdif_read_header(AVFormatContext *s) diff --git a/libavformat/takdec.c b/libavformat/takdec.c index 13bc49b6b7..584cbccb50 100644 --- a/libavformat/takdec.c +++ b/libavformat/takdec.c @@ -33,7 +33,7 @@ typedef struct TAKDemuxContext { static int tak_probe(AVProbeData *p) { if (!memcmp(p->buf, "tBaK", 4)) - return AVPROBE_SCORE_MAX / 2; + return AVPROBE_SCORE_EXTENSION; return 0; } diff --git a/libavformat/tta.c b/libavformat/tta.c index 9d3d295aba..e5e6e7186c 100644 --- a/libavformat/tta.c +++ b/libavformat/tta.c @@ -36,7 +36,7 @@ static int tta_probe(AVProbeData *p) const uint8_t *d = p->buf; if (d[0] == 'T' && d[1] == 'T' && d[2] == 'A' && d[3] == '1') - return 80; + return AVPROBE_SCORE_EXTENSION + 30; return 0; } diff --git a/libavformat/utils.c b/libavformat/utils.c index e1acb254b6..75dc3631e2 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -309,7 +309,7 @@ AVInputFormat *av_probe_input_format2(AVProbeData *pd, int is_opened, int *score score = fmt1->read_probe(&lpd); } else if (fmt1->extensions) { if (av_match_ext(lpd.filename, fmt1->extensions)) { - score = 50; + score = AVPROBE_SCORE_EXTENSION; } } if (score > *score_max) { @@ -320,18 +320,18 @@ AVInputFormat *av_probe_input_format2(AVProbeData *pd, int is_opened, int *score } /* a hack for files with huge id3v2 tags -- try to guess by file extension. */ - if (!fmt && is_opened && *score_max < AVPROBE_SCORE_MAX/4) { + if (!fmt && is_opened && *score_max < AVPROBE_SCORE_EXTENSION / 2) { while ((fmt = av_iformat_next(fmt))) if (fmt->extensions && av_match_ext(lpd.filename, fmt->extensions)) { - *score_max = AVPROBE_SCORE_MAX/4; + *score_max = AVPROBE_SCORE_EXTENSION / 2; break; } } - if (!fmt && id3 && *score_max < AVPROBE_SCORE_MAX/4-1) { + if (!fmt && id3 && *score_max < AVPROBE_SCORE_EXTENSION / 2 - 1) { while ((fmt = av_iformat_next(fmt))) if (fmt->extensions && av_match_ext("mp3", fmt->extensions)) { - *score_max = AVPROBE_SCORE_MAX/4-1; + *score_max = AVPROBE_SCORE_EXTENSION / 2 - 1; break; } } diff --git a/libavformat/vc1test.c b/libavformat/vc1test.c index 1895fc4153..859188f372 100644 --- a/libavformat/vc1test.c +++ b/libavformat/vc1test.c @@ -39,7 +39,7 @@ static int vc1t_probe(AVProbeData *p) if (p->buf[3] != 0xC5 || AV_RL32(&p->buf[4]) != 4 || AV_RL32(&p->buf[20]) != 0xC) return 0; - return AVPROBE_SCORE_MAX/2; + return AVPROBE_SCORE_EXTENSION; } static int vc1t_read_header(AVFormatContext *s) diff --git a/libavformat/vqf.c b/libavformat/vqf.c index 66ced37bad..ab1042aa29 100644 --- a/libavformat/vqf.c +++ b/libavformat/vqf.c @@ -43,7 +43,7 @@ static int vqf_probe(AVProbeData *probe_packet) if (!memcmp(probe_packet->buf + 4, "00052200", 8)) return AVPROBE_SCORE_MAX; - return AVPROBE_SCORE_MAX/2; + return AVPROBE_SCORE_EXTENSION; } static void add_metadata(AVFormatContext *s, uint32_t tag, diff --git a/libavformat/westwood_aud.c b/libavformat/westwood_aud.c index c3f8e6e34d..611d223238 100644 --- a/libavformat/westwood_aud.c +++ b/libavformat/westwood_aud.c @@ -79,7 +79,7 @@ static int wsaud_probe(AVProbeData *p) return 0; /* return 1/2 certainty since this file check is a little sketchy */ - return AVPROBE_SCORE_MAX / 2; + return AVPROBE_SCORE_EXTENSION; } static int wsaud_read_header(AVFormatContext *s) diff --git a/libavformat/xa.c b/libavformat/xa.c index 02d66c5364..57a36bcbe2 100644 --- a/libavformat/xa.c +++ b/libavformat/xa.c @@ -59,7 +59,7 @@ static int xa_probe(AVProbeData *p) if (!channels || channels > 8 || !srate || srate > 192000 || bits_per_sample < 4 || bits_per_sample > 32) return 0; - return AVPROBE_SCORE_MAX/2; + return AVPROBE_SCORE_EXTENSION; } static int xa_read_header(AVFormatContext *s) |