Commit e3d95b54 authored by Michael Niedermayer's avatar Michael Niedermayer

probe: belive protocol content type if set and avoid lengthly probing.

Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent 76d851b6
...@@ -413,6 +413,7 @@ int av_probe_input_buffer(AVIOContext *pb, AVInputFormat **fmt, ...@@ -413,6 +413,7 @@ int av_probe_input_buffer(AVIOContext *pb, AVInputFormat **fmt,
{ {
AVProbeData pd = { filename ? filename : "", NULL, -offset }; AVProbeData pd = { filename ? filename : "", NULL, -offset };
unsigned char *buf = NULL; unsigned char *buf = NULL;
uint8_t *demuxer_name;
int ret = 0, probe_size, buf_offset = 0; int ret = 0, probe_size, buf_offset = 0;
if (!max_probe_size) { if (!max_probe_size) {
...@@ -427,6 +428,10 @@ int av_probe_input_buffer(AVIOContext *pb, AVInputFormat **fmt, ...@@ -427,6 +428,10 @@ int av_probe_input_buffer(AVIOContext *pb, AVInputFormat **fmt,
return AVERROR(EINVAL); return AVERROR(EINVAL);
} }
if (!*fmt && pb && pb->av_class && av_opt_get(pb, "demuxer", AV_OPT_SEARCH_CHILDREN, &demuxer_name) >= 0 && demuxer_name) {
*fmt = av_find_input_format(demuxer_name);
}
for(probe_size= PROBE_BUF_MIN; probe_size<=max_probe_size && !*fmt; for(probe_size= PROBE_BUF_MIN; probe_size<=max_probe_size && !*fmt;
probe_size = FFMIN(probe_size<<1, FFMAX(max_probe_size, probe_size+1))) { probe_size = FFMIN(probe_size<<1, FFMAX(max_probe_size, probe_size+1))) {
int score = probe_size < max_probe_size ? AVPROBE_SCORE_RETRY : 0; int score = probe_size < max_probe_size ? AVPROBE_SCORE_RETRY : 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment