From patchwork Mon Jul 3 16:21:50 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aman Karmani X-Patchwork-Id: 4203 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.1.76 with SMTP id 73csp9565602vsb; Mon, 3 Jul 2017 09:28:12 -0700 (PDT) X-Received: by 10.28.74.131 with SMTP id n3mr5297280wmi.33.1499099292588; Mon, 03 Jul 2017 09:28:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1499099292; cv=none; d=google.com; s=arc-20160816; b=aQtWDpFL72bMLTgDZ+3L02K2I+f9VmAAEWYHfcmaqOk/IhegB7LtqTfHkssPoJI76I ITU4yWW7FMjP8tb7Bck44KpGa8VN5XFWhQFrf06CrIfbl54Z6I40iKgNdZRnB2vURO8V 3yRvESe76fAhSKvBi5qV+42yLk6pOQyUdezQaqqT/p2QUUXSkUU0oEfLzrNroG61FBhm 2DGbmEKOkcQ2jhQ4GTjfxnpGsjB/GJJieEcYxceBZ7GXSayRTehGnvl+903FLQ/c4Mw+ wIgJe8RGNc123fNEaB1CjR7ahTkmXBkMz4lyQRcn6nEHLeSLBh1DbXJRhBKRnwJhbRLQ W3hg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:dkim-signature :delivered-to:arc-authentication-results; bh=plGt4gW/pY6bEW/PqgA2N9IO+aUXSD5K+xhtol9dyJw=; b=wL1iSZaMzyJnnx9KPpNVw+S9YBPFpgSKdNvGkPSK3FkEqVIlgrooP6gseLrgaIdClf G6AmMyM0vJT3tfvEq/bf5EwIVtvEchgL6MctS4Wms7OdtHs2vjSP3avlD4oZJS7m6sy4 5wK6+rKDesT6MHtlbU+Qia3aL9p6pdCwbrwWse/p1GHiZrb0G4UTDcLloY7nmimQll90 cS4l3fgmrCunX6Ic2G4N43br1jwe8ctuHOc4wQoOV9JTgR3+U8uRPpGHbD1u1B7BAej8 p+x8lS/KON1+6PuPLkFR55f8BTSwxKLhJelgWZuvsIilWGqKZUUooPe+lSdI8G1A0opA 9kyg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@tmm1-net.20150623.gappssmtp.com header.b=CuEGoLQz; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id r5si18290223wmr.109.2017.07.03.09.28.02; Mon, 03 Jul 2017 09:28:12 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@tmm1-net.20150623.gappssmtp.com header.b=CuEGoLQz; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1AA1B6882D3; Mon, 3 Jul 2017 19:27:58 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf0-f182.google.com (mail-pf0-f182.google.com [209.85.192.182]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6E56568065F for ; Mon, 3 Jul 2017 19:27:51 +0300 (EEST) Received: by mail-pf0-f182.google.com with SMTP id s66so102398320pfs.1 for ; Mon, 03 Jul 2017 09:27:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tmm1-net.20150623.gappssmtp.com; s=20150623; h=sender:from:to:cc:subject:date:message-id; bh=GzcdhOmVraSe8h/wmOqsanYMubcuWIazYxSXHjyjocE=; b=CuEGoLQz3rP2QOR2f3lzerpxo5xZGanBaESNwFoahmPGQPEPQDJAE9kaIvxxeIRvYU 3PwR0s9EGqNqR3yfnIA+96JWEi/EhmW3Mu6ycxvaIKvh0rYauI+exYU2iv0dY5efgMq5 P5x6yqVCoimAL2iFA+E+Oj0boTG+d9CWkj+rm1C0XLfYhrsQ8H1zRS29NHPmiilthcH/ 4ROzf/TXUGCd3JIf7HThYa3vF1bhG16NfO6nDXZsfwThYc5Aw41ziP+q7KTBJE5imakk v0EVGgIjxKsQI2QziYa/ya1rkWT6Z7AXi4WBVfAtkj4qRTkU12BGNPvRzbpqXB/PWoLo 9uwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id; bh=GzcdhOmVraSe8h/wmOqsanYMubcuWIazYxSXHjyjocE=; b=CMMzXlmzqyL8st7L/iHyftpHthxYeDprrZWaJ94wLugX7DhmnFIYd5qOoR2AJNxSQ2 X6fccCi9lYn/9mpRZ0tTixMKALUmBo6XAPL4uFR0K9k9E9djxJ0WcbFh7jcLErxDflWy kdbiGfVHFYB0s5qoG/oSrFpDdit3L3PekjOm9QL5cJgxmF6PEWGGdhrK8eKxwjFZNRHM 7sUAmrLnahjTw4XQeQfBy1U2CJt6jQtQRknxM4NiJ4kncaCy34IDwaMxtFMIH+e/HikZ wXaJ1y0oImK9hjndzvHUkHLr/QV0DQm+/iG9C/7++l2S3fdfxpOeUePE6q74K10pjBUL 0ljQ== X-Gm-Message-State: AIVw112MavFEGZq/LY2jnDnL32fS+ifSSxdeMWZn1lYDl0qsHL7LEaoY vyCLuiQg9KIstv9lrJYH+Q== X-Received: by 10.99.175.87 with SMTP id s23mr11240171pgo.240.1499098933341; Mon, 03 Jul 2017 09:22:13 -0700 (PDT) Received: from tmm1-macbook.local.net (c-73-252-174-83.hsd1.ca.comcast.net. [73.252.174.83]) by smtp.gmail.com with ESMTPSA id z86sm40091580pfl.40.2017.07.03.09.22.12 (version=TLS1 cipher=AES128-SHA bits=128/128); Mon, 03 Jul 2017 09:22:12 -0700 (PDT) From: Aman Gupta To: ffmpeg-devel@ffmpeg.org Date: Mon, 3 Jul 2017 09:21:50 -0700 Message-Id: <20170703162150.24652-1-ffmpeg@tmm1.net> X-Mailer: git-send-email 2.11.0 (Apple Git-81) Subject: [FFmpeg-devel] [PATCH] lavc/mediacodec: rescale pts before decoding for both hw and sw buffers X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Aman Gupta MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Aman Gupta 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)); }