lavf: add AVFormatContext.max_ts_probe
It allows to configure how long will avformat_find_stream_info() wait to get the first timestamp.
This commit is contained in:
parent
6ca11f7157
commit
b263f8ffe7
@ -13,6 +13,9 @@ libavutil: 2014-08-09
|
|||||||
|
|
||||||
API changes, most recent first:
|
API changes, most recent first:
|
||||||
|
|
||||||
|
2014-08-xx - xxxxxxx - lavf 56.03.0 - avformat.h
|
||||||
|
Add AVFormatContext.max_ts_probe.
|
||||||
|
|
||||||
2014-08-13 - 8ddc326 - lavu 54.03.0 - mem.h
|
2014-08-13 - 8ddc326 - lavu 54.03.0 - mem.h
|
||||||
Add av_strndup().
|
Add av_strndup().
|
||||||
|
|
||||||
|
@ -1192,6 +1192,12 @@ typedef struct AVFormatContext {
|
|||||||
int event_flags;
|
int event_flags;
|
||||||
#define AVFMT_EVENT_FLAG_METADATA_UPDATED 0x0001 ///< The call resulted in updated metadata.
|
#define AVFMT_EVENT_FLAG_METADATA_UPDATED 0x0001 ///< The call resulted in updated metadata.
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Maximum number of packets to read while waiting for the first timestamp.
|
||||||
|
* Decoding only.
|
||||||
|
*/
|
||||||
|
int max_ts_probe;
|
||||||
|
|
||||||
/*****************************************************************
|
/*****************************************************************
|
||||||
* All fields below this line are not part of the public API. They
|
* All fields below this line are not part of the public API. They
|
||||||
* may not be used outside of libavformat and can be changed and
|
* may not be used outside of libavformat and can be changed and
|
||||||
|
@ -65,6 +65,7 @@ static const AVOption avformat_options[] = {
|
|||||||
{"strict", "strictly conform to all the things in the spec no matter what the consequences", 0, AV_OPT_TYPE_CONST, {.i64 = FF_COMPLIANCE_STRICT }, INT_MIN, INT_MAX, D|E, "strict"},
|
{"strict", "strictly conform to all the things in the spec no matter what the consequences", 0, AV_OPT_TYPE_CONST, {.i64 = FF_COMPLIANCE_STRICT }, INT_MIN, INT_MAX, D|E, "strict"},
|
||||||
{"normal", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_COMPLIANCE_NORMAL }, INT_MIN, INT_MAX, D|E, "strict"},
|
{"normal", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_COMPLIANCE_NORMAL }, INT_MIN, INT_MAX, D|E, "strict"},
|
||||||
{"experimental", "allow non-standardized experimental variants", 0, AV_OPT_TYPE_CONST, {.i64 = FF_COMPLIANCE_EXPERIMENTAL }, INT_MIN, INT_MAX, D|E, "strict"},
|
{"experimental", "allow non-standardized experimental variants", 0, AV_OPT_TYPE_CONST, {.i64 = FF_COMPLIANCE_EXPERIMENTAL }, INT_MIN, INT_MAX, D|E, "strict"},
|
||||||
|
{"max_ts_probe", "maximum number of packets to read while waiting for the first timestamp", OFFSET(max_ts_probe), AV_OPT_TYPE_INT, { .i64 = 50 }, 0, INT_MAX, D },
|
||||||
{NULL},
|
{NULL},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -2108,6 +2108,7 @@ int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
|
|||||||
!st->codec->extradata)
|
!st->codec->extradata)
|
||||||
break;
|
break;
|
||||||
if (st->first_dts == AV_NOPTS_VALUE &&
|
if (st->first_dts == AV_NOPTS_VALUE &&
|
||||||
|
st->codec_info_nb_frames < ic->max_ts_probe &&
|
||||||
(st->codec->codec_type == AVMEDIA_TYPE_VIDEO ||
|
(st->codec->codec_type == AVMEDIA_TYPE_VIDEO ||
|
||||||
st->codec->codec_type == AVMEDIA_TYPE_AUDIO))
|
st->codec->codec_type == AVMEDIA_TYPE_AUDIO))
|
||||||
break;
|
break;
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
#include "libavutil/version.h"
|
#include "libavutil/version.h"
|
||||||
|
|
||||||
#define LIBAVFORMAT_VERSION_MAJOR 56
|
#define LIBAVFORMAT_VERSION_MAJOR 56
|
||||||
#define LIBAVFORMAT_VERSION_MINOR 2
|
#define LIBAVFORMAT_VERSION_MINOR 3
|
||||||
#define LIBAVFORMAT_VERSION_MICRO 0
|
#define LIBAVFORMAT_VERSION_MICRO 0
|
||||||
|
|
||||||
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
|
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
|
||||||
|
Loading…
Reference in New Issue
Block a user