Commit 264ff3dd authored by Hendrik Leppkes's avatar Hendrik Leppkes

Merge commit '87a051f9'

* commit '87a051f9':
  lavc: allow asynchronous decoders to return correct pkt_dts values
Merged-by: 's avatarHendrik Leppkes <h.leppkes@gmail.com>
parents 30fb54c2 87a051f9
......@@ -46,7 +46,13 @@
* all.
*/
#define FF_CODEC_CAP_INIT_CLEANUP (1 << 1)
/**
* Decoders marked with FF_CODEC_CAP_SETS_PKT_DTS want to set
* AVFrame.pkt_dts manually. If the flag is set, utils.c won't overwrite
* this field. If it's unset, utils.c tries to guess the pkt_dts field
* from the input AVPacket.
*/
#define FF_CODEC_CAP_SETS_PKT_DTS (1 << 2)
#ifdef TRACE
# define ff_tlog(ctx, ...) av_log(ctx, AV_LOG_TRACE, __VA_ARGS__)
......
......@@ -790,6 +790,7 @@ AVCodec ff_h264_mmal_decoder = {
.flush = ffmmal_flush,
.priv_class = &ffmmaldec_class,
.capabilities = AV_CODEC_CAP_DELAY,
.caps_internal = FF_CODEC_CAP_SETS_PKT_DTS,
.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_MMAL,
AV_PIX_FMT_YUV420P,
AV_PIX_FMT_NONE},
......
......@@ -2095,7 +2095,8 @@ int attribute_align_arg avcodec_decode_video2(AVCodecContext *avctx, AVFrame *pi
else {
ret = avctx->codec->decode(avctx, picture, got_picture_ptr,
&tmp);
picture->pkt_dts = avpkt->dts;
if (!(avctx->codec->caps_internal & FF_CODEC_CAP_SETS_PKT_DTS))
picture->pkt_dts = avpkt->dts;
if(!avctx->has_b_frames){
av_frame_set_pkt_pos(picture, avpkt->pos);
......
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