avcodec/v4l2_m2m_dec: set pkt_dts on decoded frames to NOPTS
Without this ffmpeg will attempt to copy the dts from the most recently enqueued packet into the most recently dequeued frame, which does not account for the buffering inside v4l2 and is not accurate. Signed-off-by: Aman Gupta <aman@tmm1.net>
This commit is contained in:
parent
8dc973dc89
commit
3475758a37
@ -420,6 +420,7 @@ int ff_v4l2_buffer_buf_to_avframe(AVFrame *frame, V4L2Buffer *avbuf)
|
||||
frame->color_range = v4l2_get_color_range(avbuf);
|
||||
frame->color_trc = v4l2_get_color_trc(avbuf);
|
||||
frame->pts = v4l2_get_pts(avbuf);
|
||||
frame->pkt_dts = AV_NOPTS_VALUE;
|
||||
|
||||
/* these two values are updated also during re-init in v4l2_process_driver_event */
|
||||
frame->height = avbuf->context->height;
|
||||
|
@ -242,6 +242,7 @@ static const AVOption options[] = {
|
||||
.close = v4l2_decode_close, \
|
||||
.bsfs = bsf_name, \
|
||||
.capabilities = AV_CODEC_CAP_HARDWARE | AV_CODEC_CAP_DELAY | AV_CODEC_CAP_AVOID_PROBING, \
|
||||
.caps_internal = FF_CODEC_CAP_SETS_PKT_DTS, \
|
||||
.wrapper_name = "v4l2m2m", \
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user