[FFmpeg-devel] [PATCH] lavc/mediacodec: rescale pts before decoding for both hw and sw buffers
Matthieu Bouron
matthieu.bouron at gmail.com
Tue Jul 4 00:46:16 EEST 2017
On Mon, Jul 03, 2017 at 09:21:50AM -0700, Aman Gupta wrote:
> From: Aman Gupta <aman at tmm1.net>
>
> Replicates the logic used in the wrap_hw_buffer path to wrap_sw_buffer
> as well.
>
> This fixes decoding issues observed on AMLogic devices with
> OMX.amlogic.mpeg2.decoder.awesome, where the decoder would spit out a
> constant stream of "mPtsRecoveryCount" errors and decoded frames were
> returned in the incorrect order.
> ---
> libavcodec/mediacodecdec_common.c | 12 +++++++++---
> 1 file changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/libavcodec/mediacodecdec_common.c b/libavcodec/mediacodecdec_common.c
> index 1263188d34..316cdba9c1 100644
> --- a/libavcodec/mediacodecdec_common.c
> +++ b/libavcodec/mediacodecdec_common.c
> @@ -282,10 +282,16 @@ static int mediacodec_wrap_sw_buffer(AVCodecContext *avctx,
> * on the last avpacket received which is not in sync with the frame:
> * * N avpackets can be pushed before 1 frame is actually returned
> * * 0-sized avpackets are pushed to flush remaining frames at EOS */
> - frame->pts = info->presentationTimeUs;
> + if (avctx->pkt_timebase.num && avctx->pkt_timebase.den) {
> + frame->pts = av_rescale_q(info->presentationTimeUs,
> + av_make_q(1, 1000000),
> + avctx->pkt_timebase);
> + } else {
> + frame->pts = info->presentationTimeUs;
> + }
> #if FF_API_PKT_PTS
> FF_DISABLE_DEPRECATION_WARNINGS
> - frame->pkt_pts = info->presentationTimeUs;
> + frame->pkt_pts = frame->pts;
> FF_ENABLE_DEPRECATION_WARNINGS
> #endif
> frame->pkt_dts = AV_NOPTS_VALUE;
> @@ -613,7 +619,7 @@ int ff_mediacodec_dec_decode(AVCodecContext *avctx, MediaCodecDecContext *s,
> memcpy(data, pkt->data + offset, size);
> offset += size;
>
> - if (s->surface && avctx->pkt_timebase.num && avctx->pkt_timebase.den) {
> + if (avctx->pkt_timebase.num && avctx->pkt_timebase.den) {
> pts = av_rescale_q(pts, avctx->pkt_timebase, av_make_q(1, 1000000));
> }
>
> --
> 2.11.0 (Apple Git-81)
Applied. Thanks.
[...]
--
Matthieu B.
More information about the ffmpeg-devel
mailing list