mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-08 13:22:53 +02:00
avformat: Add max_probe_packets option
Allows user to set maximum number of buffered packets when probing a codec. It was a hard-coded parameter before this commit. Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
33583803e1
commit
5e3229df4c
@ -27,6 +27,10 @@ stream information. A higher value will enable detecting more
|
||||
information in case it is dispersed into the stream, but will increase
|
||||
latency. Must be an integer not lesser than 32. It is 5000000 by default.
|
||||
|
||||
@item max_probe_packets @var{integer} (@emph{input})
|
||||
Set the maximum number of buffered packets when probing a codec.
|
||||
Default is 2500 packets.
|
||||
|
||||
@item packetsize @var{integer} (@emph{output})
|
||||
Set packet size.
|
||||
|
||||
|
@ -1951,6 +1951,13 @@ typedef struct AVFormatContext {
|
||||
* - decoding: set by user
|
||||
*/
|
||||
int skip_estimate_duration_from_pts;
|
||||
|
||||
/**
|
||||
* Maximum number of packets that can be probed
|
||||
* - encoding: unused
|
||||
* - decoding: set by user
|
||||
*/
|
||||
int max_probe_packets;
|
||||
} AVFormatContext;
|
||||
|
||||
#if FF_API_FORMAT_GET_SET
|
||||
|
@ -33,8 +33,6 @@
|
||||
#define PROBE_BUF_MIN 2048
|
||||
#define PROBE_BUF_MAX (1 << 20)
|
||||
|
||||
#define MAX_PROBE_PACKETS 2500
|
||||
|
||||
#ifdef DEBUG
|
||||
# define hex_dump_debug(class, buf, size) av_hex_dump_log(class, AV_LOG_DEBUG, buf, size)
|
||||
#else
|
||||
|
@ -111,6 +111,7 @@ static const AVOption avformat_options[] = {
|
||||
{"protocol_blacklist", "List of protocols that are not allowed to be used", OFFSET(protocol_blacklist), AV_OPT_TYPE_STRING, { .str = NULL }, CHAR_MIN, CHAR_MAX, D },
|
||||
{"max_streams", "maximum number of streams", OFFSET(max_streams), AV_OPT_TYPE_INT, { .i64 = 1000 }, 0, INT_MAX, D },
|
||||
{"skip_estimate_duration_from_pts", "skip duration calculation in estimate_timings_from_pts", OFFSET(skip_estimate_duration_from_pts), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, D},
|
||||
{"max_probe_packets", "Maximum number of packets to probe a codec", OFFSET(max_probe_packets), AV_OPT_TYPE_INT, { .i64 = 2500 }, 0, INT_MAX, D },
|
||||
{NULL},
|
||||
};
|
||||
|
||||
|
@ -363,7 +363,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, MAX_PROBE_PACKETS - st->probe_packets,
|
||||
pd->buf_size, s->max_probe_packets - st->probe_packets,
|
||||
fmt->name, score);
|
||||
for (i = 0; fmt_id_type[i].name; i++) {
|
||||
if (!strcmp(fmt->name, fmt_id_type[i].name)) {
|
||||
@ -1948,7 +1948,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 = MAX_PROBE_PACKETS;
|
||||
st->probe_packets = s->max_probe_packets;
|
||||
|
||||
for (j = 0; j < MAX_REORDER_DELAY + 1; j++)
|
||||
st->pts_buffer[j] = AV_NOPTS_VALUE;
|
||||
@ -4570,7 +4570,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
|
||||
st->start_time = AV_NOPTS_VALUE;
|
||||
st->duration = AV_NOPTS_VALUE;
|
||||
st->first_dts = AV_NOPTS_VALUE;
|
||||
st->probe_packets = MAX_PROBE_PACKETS;
|
||||
st->probe_packets = s->max_probe_packets;
|
||||
st->pts_wrap_reference = AV_NOPTS_VALUE;
|
||||
st->pts_wrap_behavior = AV_PTS_WRAP_IGNORE;
|
||||
|
||||
|
@ -32,7 +32,7 @@
|
||||
// Major bumping may affect Ticket5467, 5421, 5451(compatibility with Chromium)
|
||||
// Also please add any ticket numbers that you believe might be affected here
|
||||
#define LIBAVFORMAT_VERSION_MAJOR 58
|
||||
#define LIBAVFORMAT_VERSION_MINOR 33
|
||||
#define LIBAVFORMAT_VERSION_MINOR 34
|
||||
#define LIBAVFORMAT_VERSION_MICRO 100
|
||||
|
||||
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
|
||||
|
Loading…
Reference in New Issue
Block a user