|
|
|
@ -158,13 +158,6 @@ int ff_copy_whiteblacklists(AVFormatContext *dst, const AVFormatContext *src) |
|
|
|
|
|
|
|
|
|
static const AVCodec *find_decoder(AVFormatContext *s, const AVStream *st, enum AVCodecID codec_id) |
|
|
|
|
{ |
|
|
|
|
#if FF_API_LAVF_AVCTX |
|
|
|
|
FF_DISABLE_DEPRECATION_WARNINGS |
|
|
|
|
if (st->codec->codec) |
|
|
|
|
return st->codec->codec; |
|
|
|
|
FF_ENABLE_DEPRECATION_WARNINGS |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
switch (st->codecpar->codec_type) { |
|
|
|
|
case AVMEDIA_TYPE_VIDEO: |
|
|
|
|
if (s->video_codec) return s->video_codec; |
|
|
|
@ -354,12 +347,6 @@ static int set_codec_from_probe_data(AVFormatContext *s, AVStream *st, |
|
|
|
|
st->codecpar->codec_id = fmt_id_type[i].id; |
|
|
|
|
st->codecpar->codec_type = fmt_id_type[i].type; |
|
|
|
|
st->internal->need_context_update = 1; |
|
|
|
|
#if FF_API_LAVF_AVCTX |
|
|
|
|
FF_DISABLE_DEPRECATION_WARNINGS |
|
|
|
|
st->codec->codec_type = st->codecpar->codec_type; |
|
|
|
|
st->codec->codec_id = st->codecpar->codec_id; |
|
|
|
|
FF_ENABLE_DEPRECATION_WARNINGS |
|
|
|
|
#endif |
|
|
|
|
return score; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -480,15 +467,6 @@ static int update_stream_avctx(AVFormatContext *s) |
|
|
|
|
if (ret < 0) |
|
|
|
|
return ret; |
|
|
|
|
|
|
|
|
|
#if FF_API_LAVF_AVCTX |
|
|
|
|
FF_DISABLE_DEPRECATION_WARNINGS |
|
|
|
|
/* update deprecated public codec context */ |
|
|
|
|
ret = avcodec_parameters_to_context(st->codec, st->codecpar); |
|
|
|
|
if (ret < 0) |
|
|
|
|
return ret; |
|
|
|
|
FF_ENABLE_DEPRECATION_WARNINGS |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
st->internal->need_context_update = 0; |
|
|
|
|
} |
|
|
|
|
return 0; |
|
|
|
@ -920,13 +898,6 @@ void ff_compute_frame_duration(AVFormatContext *s, int *pnum, int *pden, AVStrea |
|
|
|
|
av_mul_q(av_inv_q(st->internal->avctx->time_base), (AVRational){1, st->internal->avctx->ticks_per_frame}); |
|
|
|
|
int frame_size, sample_rate; |
|
|
|
|
|
|
|
|
|
#if FF_API_LAVF_AVCTX |
|
|
|
|
FF_DISABLE_DEPRECATION_WARNINGS |
|
|
|
|
if ((!codec_framerate.den || !codec_framerate.num) && st->codec->time_base.den && st->codec->time_base.num) |
|
|
|
|
codec_framerate = av_mul_q(av_inv_q(st->codec->time_base), (AVRational){1, st->codec->ticks_per_frame}); |
|
|
|
|
FF_ENABLE_DEPRECATION_WARNINGS |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
*pnum = 0; |
|
|
|
|
*pden = 0; |
|
|
|
|
switch (st->codecpar->codec_type) { |
|
|
|
@ -1547,17 +1518,6 @@ static int read_frame_internal(AVFormatContext *s, AVPacket *pkt) |
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#if FF_API_LAVF_AVCTX |
|
|
|
|
FF_DISABLE_DEPRECATION_WARNINGS |
|
|
|
|
/* update deprecated public codec context */ |
|
|
|
|
ret = avcodec_parameters_to_context(st->codec, st->codecpar); |
|
|
|
|
if (ret < 0) { |
|
|
|
|
av_packet_unref(pkt); |
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|
FF_ENABLE_DEPRECATION_WARNINGS |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
st->internal->need_context_update = 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -1680,10 +1640,6 @@ FF_ENABLE_DEPRECATION_WARNINGS |
|
|
|
|
av_opt_set_dict_val(s, "metadata", NULL, AV_OPT_SEARCH_CHILDREN); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#if FF_API_LAVF_AVCTX |
|
|
|
|
update_stream_avctx(s); |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
if (s->debug & FF_FDEBUG_TS) |
|
|
|
|
av_log(s, AV_LOG_DEBUG, |
|
|
|
|
"read_frame_internal stream=%d, pts=%s, dts=%s, " |
|
|
|
@ -3632,15 +3588,6 @@ int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* check if the caller has overridden the codec id */ |
|
|
|
|
#if FF_API_LAVF_AVCTX |
|
|
|
|
FF_DISABLE_DEPRECATION_WARNINGS |
|
|
|
|
if (st->codec->codec_id != st->internal->orig_codec_id) { |
|
|
|
|
st->codecpar->codec_id = st->codec->codec_id; |
|
|
|
|
st->codecpar->codec_type = st->codec->codec_type; |
|
|
|
|
st->internal->orig_codec_id = st->codec->codec_id; |
|
|
|
|
} |
|
|
|
|
FF_ENABLE_DEPRECATION_WARNINGS |
|
|
|
|
#endif |
|
|
|
|
// only for the split stuff
|
|
|
|
|
if (!st->parser && !(ic->flags & AVFMT_FLAG_NOPARSE) && st->internal->request_probe <= 0) { |
|
|
|
|
st->parser = av_parser_init(st->codecpar->codec_id); |
|
|
|
@ -4123,42 +4070,6 @@ FF_ENABLE_DEPRECATION_WARNINGS |
|
|
|
|
goto find_stream_info_err; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#if FF_API_LAVF_AVCTX |
|
|
|
|
FF_DISABLE_DEPRECATION_WARNINGS |
|
|
|
|
ret = avcodec_parameters_to_context(st->codec, st->codecpar); |
|
|
|
|
if (ret < 0) |
|
|
|
|
goto find_stream_info_err; |
|
|
|
|
|
|
|
|
|
// The old API (AVStream.codec) "requires" the resolution to be adjusted
|
|
|
|
|
// by the lowres factor.
|
|
|
|
|
if (st->internal->avctx->lowres && st->internal->avctx->width) { |
|
|
|
|
st->codec->lowres = st->internal->avctx->lowres; |
|
|
|
|
st->codec->width = st->internal->avctx->width; |
|
|
|
|
st->codec->height = st->internal->avctx->height; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (st->codec->codec_tag != MKTAG('t','m','c','d')) { |
|
|
|
|
st->codec->time_base = st->internal->avctx->time_base; |
|
|
|
|
st->codec->ticks_per_frame = st->internal->avctx->ticks_per_frame; |
|
|
|
|
} |
|
|
|
|
st->codec->framerate = st->avg_frame_rate; |
|
|
|
|
|
|
|
|
|
if (st->internal->avctx->subtitle_header) { |
|
|
|
|
st->codec->subtitle_header = av_malloc(st->internal->avctx->subtitle_header_size); |
|
|
|
|
if (!st->codec->subtitle_header) |
|
|
|
|
goto find_stream_info_err; |
|
|
|
|
st->codec->subtitle_header_size = st->internal->avctx->subtitle_header_size; |
|
|
|
|
memcpy(st->codec->subtitle_header, st->internal->avctx->subtitle_header, |
|
|
|
|
st->codec->subtitle_header_size); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Fields unavailable in AVCodecParameters
|
|
|
|
|
st->codec->coded_width = st->internal->avctx->coded_width; |
|
|
|
|
st->codec->coded_height = st->internal->avctx->coded_height; |
|
|
|
|
st->codec->properties = st->internal->avctx->properties; |
|
|
|
|
FF_ENABLE_DEPRECATION_WARNINGS |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
st->internal->avctx_inited = 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -4368,11 +4279,6 @@ static void free_stream(AVStream **pst) |
|
|
|
|
|
|
|
|
|
av_dict_free(&st->metadata); |
|
|
|
|
avcodec_parameters_free(&st->codecpar); |
|
|
|
|
#if FF_API_LAVF_AVCTX |
|
|
|
|
FF_DISABLE_DEPRECATION_WARNINGS |
|
|
|
|
avcodec_free_context(&st->codec); |
|
|
|
|
FF_ENABLE_DEPRECATION_WARNINGS |
|
|
|
|
#endif |
|
|
|
|
av_freep(&st->priv_data); |
|
|
|
|
|
|
|
|
|
av_freep(pst); |
|
|
|
@ -4480,16 +4386,6 @@ AVStream *avformat_new_stream(AVFormatContext *s, const AVCodec *c) |
|
|
|
|
if (!st) |
|
|
|
|
return NULL; |
|
|
|
|
|
|
|
|
|
#if FF_API_LAVF_AVCTX |
|
|
|
|
FF_DISABLE_DEPRECATION_WARNINGS |
|
|
|
|
st->codec = avcodec_alloc_context3(c); |
|
|
|
|
if (!st->codec) { |
|
|
|
|
av_free(st); |
|
|
|
|
return NULL; |
|
|
|
|
} |
|
|
|
|
FF_ENABLE_DEPRECATION_WARNINGS |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
st->internal = av_mallocz(sizeof(*st->internal)); |
|
|
|
|
if (!st->internal) |
|
|
|
|
goto fail; |
|
|
|
@ -4508,13 +4404,6 @@ FF_ENABLE_DEPRECATION_WARNINGS |
|
|
|
|
goto fail; |
|
|
|
|
|
|
|
|
|
if (s->iformat) { |
|
|
|
|
#if FF_API_LAVF_AVCTX |
|
|
|
|
FF_DISABLE_DEPRECATION_WARNINGS |
|
|
|
|
/* no default bitrate if decoding */ |
|
|
|
|
st->codec->bit_rate = 0; |
|
|
|
|
FF_ENABLE_DEPRECATION_WARNINGS |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
/* default pts setting is MPEG-like */ |
|
|
|
|
avpriv_set_pts_info(st, 33, 1, 90000); |
|
|
|
|
/* we set the current DTS to 0 so that formats without any timestamps
|
|
|
|
@ -4922,11 +4811,6 @@ void avpriv_set_pts_info(AVStream *s, int pts_wrap_bits, |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
s->time_base = new_tb; |
|
|
|
|
#if FF_API_LAVF_AVCTX |
|
|
|
|
FF_DISABLE_DEPRECATION_WARNINGS |
|
|
|
|
s->codec->pkt_timebase = new_tb; |
|
|
|
|
FF_ENABLE_DEPRECATION_WARNINGS |
|
|
|
|
#endif |
|
|
|
|
s->internal->avctx->pkt_timebase = new_tb; |
|
|
|
|
s->pts_wrap_bits = pts_wrap_bits; |
|
|
|
|
} |
|
|
|
@ -5154,16 +5038,8 @@ static int match_stream_specifier(AVFormatContext *s, AVStream *st, |
|
|
|
|
if (*spec && *spec++ != ':') /* If we are not at the end, then another specifier must follow. */ |
|
|
|
|
return AVERROR(EINVAL); |
|
|
|
|
|
|
|
|
|
#if FF_API_LAVF_AVCTX |
|
|
|
|
FF_DISABLE_DEPRECATION_WARNINGS |
|
|
|
|
if (type != st->codecpar->codec_type |
|
|
|
|
&& (st->codecpar->codec_type != AVMEDIA_TYPE_UNKNOWN || st->codec->codec_type != type)) |
|
|
|
|
match = 0; |
|
|
|
|
FF_ENABLE_DEPRECATION_WARNINGS |
|
|
|
|
#else |
|
|
|
|
if (type != st->codecpar->codec_type) |
|
|
|
|
match = 0; |
|
|
|
|
#endif |
|
|
|
|
if (nopic && (st->disposition & AV_DISPOSITION_ATTACHED_PIC)) |
|
|
|
|
match = 0; |
|
|
|
|
} else if (*spec == 'p' && *(spec + 1) == ':') { |
|
|
|
@ -5230,35 +5106,16 @@ FF_DISABLE_DEPRECATION_WARNINGS |
|
|
|
|
return match && ret; |
|
|
|
|
} else if (*spec == 'u' && *(spec + 1) == '\0') { |
|
|
|
|
AVCodecParameters *par = st->codecpar; |
|
|
|
|
#if FF_API_LAVF_AVCTX |
|
|
|
|
FF_DISABLE_DEPRECATION_WARNINGS |
|
|
|
|
AVCodecContext *codec = st->codec; |
|
|
|
|
FF_ENABLE_DEPRECATION_WARNINGS |
|
|
|
|
#endif |
|
|
|
|
int val; |
|
|
|
|
switch (par->codec_type) { |
|
|
|
|
case AVMEDIA_TYPE_AUDIO: |
|
|
|
|
val = par->sample_rate && par->channels; |
|
|
|
|
#if FF_API_LAVF_AVCTX |
|
|
|
|
val = val || (codec->sample_rate && codec->channels); |
|
|
|
|
#endif |
|
|
|
|
if (par->format == AV_SAMPLE_FMT_NONE |
|
|
|
|
#if FF_API_LAVF_AVCTX |
|
|
|
|
&& codec->sample_fmt == AV_SAMPLE_FMT_NONE |
|
|
|
|
#endif |
|
|
|
|
) |
|
|
|
|
if (par->format == AV_SAMPLE_FMT_NONE) |
|
|
|
|
return 0; |
|
|
|
|
break; |
|
|
|
|
case AVMEDIA_TYPE_VIDEO: |
|
|
|
|
val = par->width && par->height; |
|
|
|
|
#if FF_API_LAVF_AVCTX |
|
|
|
|
val = val || (codec->width && codec->height); |
|
|
|
|
#endif |
|
|
|
|
if (par->format == AV_PIX_FMT_NONE |
|
|
|
|
#if FF_API_LAVF_AVCTX |
|
|
|
|
&& codec->pix_fmt == AV_PIX_FMT_NONE |
|
|
|
|
#endif |
|
|
|
|
) |
|
|
|
|
if (par->format == AV_PIX_FMT_NONE) |
|
|
|
|
return 0; |
|
|
|
|
break; |
|
|
|
|
case AVMEDIA_TYPE_UNKNOWN: |
|
|
|
@ -5268,11 +5125,7 @@ FF_ENABLE_DEPRECATION_WARNINGS |
|
|
|
|
val = 1; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
#if FF_API_LAVF_AVCTX |
|
|
|
|
return match && ((par->codec_id != AV_CODEC_ID_NONE || codec->codec_id != AV_CODEC_ID_NONE) && val != 0); |
|
|
|
|
#else |
|
|
|
|
return match && (par->codec_id != AV_CODEC_ID_NONE && val != 0); |
|
|
|
|
#endif |
|
|
|
|
} else { |
|
|
|
|
return AVERROR(EINVAL); |
|
|
|
|
} |
|
|
|
@ -5684,15 +5537,8 @@ int avformat_transfer_internal_stream_timing_info(const AVOutputFormat *ofmt, |
|
|
|
|
const AVCodecContext *dec_ctx; |
|
|
|
|
AVCodecContext *enc_ctx; |
|
|
|
|
|
|
|
|
|
#if FF_API_LAVF_AVCTX |
|
|
|
|
FF_DISABLE_DEPRECATION_WARNINGS |
|
|
|
|
dec_ctx = ist->codec; |
|
|
|
|
enc_ctx = ost->codec; |
|
|
|
|
FF_ENABLE_DEPRECATION_WARNINGS |
|
|
|
|
#else |
|
|
|
|
dec_ctx = ist->internal->avctx; |
|
|
|
|
enc_ctx = ost->internal->avctx; |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
enc_ctx->time_base = ist->time_base; |
|
|
|
|
/*
|
|
|
|
@ -5748,13 +5594,7 @@ FF_ENABLE_DEPRECATION_WARNINGS |
|
|
|
|
AVRational av_stream_get_codec_timebase(const AVStream *st) |
|
|
|
|
{ |
|
|
|
|
// See avformat_transfer_internal_stream_timing_info() TODO.
|
|
|
|
|
#if FF_API_LAVF_AVCTX |
|
|
|
|
FF_DISABLE_DEPRECATION_WARNINGS |
|
|
|
|
return st->codec->time_base; |
|
|
|
|
FF_ENABLE_DEPRECATION_WARNINGS |
|
|
|
|
#else |
|
|
|
|
return st->internal->avctx->time_base; |
|
|
|
|
#endif |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void ff_format_set_url(AVFormatContext *s, char *url) |
|
|
|
|