diff --git a/libavformat/avformat.h b/libavformat/avformat.h index 301cb11bac..59f32b1c2b 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -1003,11 +1003,6 @@ typedef struct AVStream { int64_t first_dts; int64_t cur_dts; - /** - * Number of packets to buffer for codec probing - */ - int probe_packets; - /** * Number of frames that have been demuxed during avformat_find_stream_info() */ diff --git a/libavformat/internal.h b/libavformat/internal.h index 10d8f8dfeb..6af38720c8 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -368,6 +368,11 @@ struct AVStreamInternal { int64_t last_IP_pts; int last_IP_duration; + + /** + * Number of packets to buffer for codec probing + */ + int probe_packets; }; #ifdef __GNUC__ diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c index 9092dbce72..0ed108ce89 100644 --- a/libavformat/mpegts.c +++ b/libavformat/mpegts.c @@ -954,7 +954,7 @@ static int mpegts_set_stream_info(AVStream *st, PESContext *pes, } if ((st->codecpar->codec_id == AV_CODEC_ID_NONE || (st->internal->request_probe > 0 && st->internal->request_probe < AVPROBE_SCORE_STREAM_RETRY / 5)) && - st->probe_packets > 0 && + st->internal->probe_packets > 0 && stream_type == STREAM_TYPE_PRIVATE_DATA) { st->codecpar->codec_type = AVMEDIA_TYPE_DATA; st->codecpar->codec_id = AV_CODEC_ID_BIN_DATA; diff --git a/libavformat/sbgdec.c b/libavformat/sbgdec.c index bc9945dfd4..7b9ada569e 100644 --- a/libavformat/sbgdec.c +++ b/libavformat/sbgdec.c @@ -1438,7 +1438,7 @@ static av_cold int sbg_read_header(AVFormatContext *avf) st->codecpar->sample_rate = sbg->sample_rate; st->codecpar->frame_size = sbg->frame_size; avpriv_set_pts_info(st, 64, 1, st->codecpar->sample_rate); - st->probe_packets = 0; + st->internal->probe_packets = 0; st->start_time = av_rescale(script.start_ts, sbg->sample_rate, AV_TIME_BASE); st->duration = script.end_ts == AV_NOPTS_VALUE ? AV_NOPTS_VALUE : diff --git a/libavformat/tedcaptionsdec.c b/libavformat/tedcaptionsdec.c index 94e8432c53..6e87ef66e9 100644 --- a/libavformat/tedcaptionsdec.c +++ b/libavformat/tedcaptionsdec.c @@ -299,7 +299,7 @@ static av_cold int tedcaptions_read_header(AVFormatContext *avf) st->codecpar->codec_type = AVMEDIA_TYPE_SUBTITLE; st->codecpar->codec_id = AV_CODEC_ID_TEXT; avpriv_set_pts_info(st, 64, 1, 1000); - st->probe_packets = 0; + st->internal->probe_packets = 0; st->start_time = 0; st->duration = last->pts + last->duration; st->cur_dts = 0; diff --git a/libavformat/utils.c b/libavformat/utils.c index 679cb14650..a13717f56c 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -334,7 +334,7 @@ static int set_codec_from_probe_data(AVFormatContext *s, AVStream *st, int i; av_log(s, AV_LOG_DEBUG, "Probe with size=%d, packets=%d detected %s with score=%d\n", - pd->buf_size, s->max_probe_packets - st->probe_packets, + pd->buf_size, s->max_probe_packets - st->internal->probe_packets, fmt->name, score); for (i = 0; fmt_id_type[i].name; i++) { if (!strcmp(fmt->name, fmt_id_type[i].name)) { @@ -648,8 +648,8 @@ static int probe_codec(AVFormatContext *s, AVStream *st, const AVPacket *pkt) if (st->internal->request_probe>0) { AVProbeData *pd = &st->internal->probe_data; int end; - av_log(s, AV_LOG_DEBUG, "probing stream %d pp:%d\n", st->index, st->probe_packets); - --st->probe_packets; + av_log(s, AV_LOG_DEBUG, "probing stream %d pp:%d\n", st->index, st->internal->probe_packets); + --st->internal->probe_packets; if (pkt) { uint8_t *new_buf = av_realloc(pd->buf, pd->buf_size+pkt->size+AVPROBE_PADDING_SIZE); @@ -665,7 +665,7 @@ static int probe_codec(AVFormatContext *s, AVStream *st, const AVPacket *pkt) memset(pd->buf + pd->buf_size, 0, AVPROBE_PADDING_SIZE); } else { no_packet: - st->probe_packets = 0; + st->internal->probe_packets = 0; if (!pd->buf_size) { av_log(s, AV_LOG_WARNING, "nothing to probe for stream %d\n", st->index); @@ -673,7 +673,7 @@ no_packet: } end= s->internal->raw_packet_buffer_remaining_size <= 0 - || st->probe_packets<= 0; + || st->internal->probe_packets<= 0; if (end || av_log2(pd->buf_size) != av_log2(pd->buf_size - pkt->size)) { int score = set_codec_from_probe_data(s, st, pd); @@ -804,7 +804,7 @@ FF_ENABLE_DEPRECATION_WARNINGS return err; for (i = 0; i < s->nb_streams; i++) { st = s->streams[i]; - if (st->probe_packets || st->internal->request_probe > 0) + if (st->internal->probe_packets || st->internal->request_probe > 0) if ((err = probe_codec(s, st, NULL)) < 0) return err; av_assert0(st->internal->request_probe <= 0); @@ -1831,7 +1831,7 @@ void ff_read_frame_flush(AVFormatContext *s) /* We set the current DTS to an unspecified origin. */ st->cur_dts = AV_NOPTS_VALUE; - st->probe_packets = s->max_probe_packets; + st->internal->probe_packets = s->max_probe_packets; for (j = 0; j < MAX_REORDER_DELAY + 1; j++) st->internal->pts_buffer[j] = AV_NOPTS_VALUE; @@ -4419,7 +4419,7 @@ AVStream *avformat_new_stream(AVFormatContext *s, const AVCodec *c) st->start_time = AV_NOPTS_VALUE; st->duration = AV_NOPTS_VALUE; st->first_dts = AV_NOPTS_VALUE; - st->probe_packets = s->max_probe_packets; + st->internal->probe_packets = s->max_probe_packets; st->internal->pts_wrap_reference = AV_NOPTS_VALUE; st->internal->pts_wrap_behavior = AV_PTS_WRAP_IGNORE; diff --git a/libavformat/wavdec.c b/libavformat/wavdec.c index 0c8b8bf85d..8e2a7a7475 100644 --- a/libavformat/wavdec.c +++ b/libavformat/wavdec.c @@ -167,7 +167,7 @@ static void handle_stream_probing(AVStream *st) { if (st->codecpar->codec_id == AV_CODEC_ID_PCM_S16LE) { st->internal->request_probe = AVPROBE_SCORE_EXTENSION; - st->probe_packets = FFMIN(st->probe_packets, 32); + st->internal->probe_packets = FFMIN(st->internal->probe_packets, 32); } }