From patchwork Tue Apr 24 20:59:25 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aman Karmani X-Patchwork-Id: 8638 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:155:0:0:0:0:0 with SMTP id c82-v6csp2282601jad; Tue, 24 Apr 2018 13:59:58 -0700 (PDT) X-Google-Smtp-Source: AIpwx49yotOmkLxhrYNAhkb3dCN43Ekmv8er4hHQ2kyV9HHDj1ba5M/nQzlxsDioY9Ex0QSyE1Fr X-Received: by 2002:adf:988e:: with SMTP id w14-v6mr22260125wrb.210.1524603598270; Tue, 24 Apr 2018 13:59:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524603598; cv=none; d=google.com; s=arc-20160816; b=Wh+5esiopYrPLmKZIBikO7hGBU9qcWinlEq51zrTzl0acoqNYxBsP0ZX9pdwu7W6/z qOPmilAG84JEvhJSvox7rLlYkfEUfU7tkquooTws2ND8yvSLXb7WVA5aQlYqhsIetAqA MuJTFXhWw6fJfZdJil3ENILeQiXd18CeudVGp7A093DGKVPl4lBpvPr5GrSqNWX0P1r2 2GQw2uzRgUf9GtpAcSv5gI0FrFH0pN6AMKGM89I9BXKBPbLMHzoK9eSParNiA0KB6I9Q Ogj7flrmhhJ6snzu9Yx0e676GQ7ybCX4g8p+Q/OERXJdyFfBH728EC0+D8B8ozlej0jA ZaTw== 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:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=659X7EDX5sR4Cfg4FJrklKvMQJ/IigD2UejACwJPKcw=; b=bi4CZrDXByU4zTjy+CCZPnlAdtotY5FZxOvlTepE1hedgAwl1xz29he8TGR72romCG HSSqoPbc+N4JGS7P+/3cK18cbqiUf9JW65cgZeB86lEKSgiI/5Qz3b9o7HKKlnHf6obM U1BzlGO7/vvhc3m3LX929WrAhcVvtW9R95ypuOjRzvvdqW1wo7HfTUBgEU99jOAYq6jE gUuDVF3owRDfXSn7+LycHx3h4qoBL7rT/MfvKxRtjbGvsu0mAR+ueAkdkYFDSGUtCY44 x9RyBnNmhGDyp5T6se1X/NCl7MMrHYm3Fb3W+gTMIaAG9XEo3GHppfVNtmQKmP0Lo/bG CdVg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@tmm1-net.20150623.gappssmtp.com header.s=20150623 header.b=ixp/eUoj; 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 75si7710793wmw.86.2018.04.24.13.59.57; Tue, 24 Apr 2018 13:59:58 -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.s=20150623 header.b=ixp/eUoj; 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 E5BCC689F43; Tue, 24 Apr 2018 23:59:11 +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 3466A689CD8 for ; Tue, 24 Apr 2018 23:59:04 +0300 (EEST) Received: by mail-pf0-f182.google.com with SMTP id o76so8575321pfi.5 for ; Tue, 24 Apr 2018 13:59:34 -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:in-reply-to:references; bh=ByiJrX4ez1ndqVt4EPq/1IeeSsqpNXzsZTRcQNIWlMo=; b=ixp/eUojHIrEwUk7D2OXyhGo2QO3Sjh52yJTqvXnCaz9fT15TSw9YN6FS3WI1zsIij Vyxl6kz6QU1FjYFgQ6fX7axI8Mn3KDqdB8GL5TR4no+YlJp0h0Ksl+FufxR8SK+oxMDv dOLLoyD5eDtbgFjaShhRsqI6WFQtI6Hb8xN4fR0EOhbg+ILkhKNYObpyQ6vTFAKLWyTF eHHXdkwDL/+hXGpmhlQ7P6vVxvf4suuKjHeYkAA1lOYCqfO+T6eu+pXzww0Xi7zvAXwx +UWuABRYtc54Ca0YuzWUqpISjNHVOmXMhynX8CAqEZQI8Vutq/oCjFsbSWk8LRjrZCFt 7B/A== 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 :in-reply-to:references; bh=ByiJrX4ez1ndqVt4EPq/1IeeSsqpNXzsZTRcQNIWlMo=; b=sne/CMwypm4LYGEsikoikY4io5sHHvvJH8YN4rtNP+naSl+AboxA0+CwEY1i+G8Sx9 XlmRwrnaQzE4TxZ+CcSmsVgAkdbtY7BBe6kLUAAlq02DHQzg4QS8g9cs5pb1T0jew10W /Bz6VFTVB0KeI9cDxAl9laRb819o0MrMFzl/RUC+EJ9WJl7D/L4eatfxhtOy1UQa0X9C AnfLUsvh/t9OfRejRwPcTtTenFC6iF1MP9jgfWAUnclSn7Bk2u/EJDUfg0YQ39YTNEDq WTd4YbdKsPtj0qxmkCrP7r4keRkQdPu4sdqZ8acVAIyApc5yyc1+RH1OzCyHzqUXyAq4 bqyw== X-Gm-Message-State: ALQs6tAQwnfObXAkWlYHAdJLG+9KPlSvKO7K9DKfoWopGWpEjqvK48xk +4dQotmpE9Oo1kJIHqpPW+AE/QmM X-Received: by 2002:a17:902:ab83:: with SMTP id f3-v6mr5386694plr.344.1524603572412; Tue, 24 Apr 2018 13:59:32 -0700 (PDT) Received: from localhost.localdomain (c-69-181-54-242.hsd1.ca.comcast.net. [69.181.54.242]) by smtp.gmail.com with ESMTPSA id h6sm26184534pfi.35.2018.04.24.13.59.31 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 24 Apr 2018 13:59:31 -0700 (PDT) From: Aman Gupta To: ffmpeg-devel@ffmpeg.org Date: Tue, 24 Apr 2018 13:59:25 -0700 Message-Id: <20180424205926.42027-3-ffmpeg@tmm1.net> X-Mailer: git-send-email 2.14.2 In-Reply-To: <20180424205926.42027-1-ffmpeg@tmm1.net> References: <20180424205926.42027-1-ffmpeg@tmm1.net> Subject: [FFmpeg-devel] [PATCH 3/4] avcodec/mediacodecdec: refactor pts handling 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: matthieu.bouron@gmail.com, Aman Gupta , jeebjp@gmail.com MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Aman Gupta Also fixes a bug where EOS buffer was sent with incorrect pts when not using surface generation. --- libavcodec/mediacodecdec_common.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/libavcodec/mediacodecdec_common.c b/libavcodec/mediacodecdec_common.c index 56b3c4fd1e..c0f0a6b983 100644 --- a/libavcodec/mediacodecdec_common.c +++ b/libavcodec/mediacodecdec_common.c @@ -571,6 +571,7 @@ int ff_mediacodec_dec_send(AVCodecContext *avctx, MediaCodecDecContext *s, FFAMediaCodec *codec = s->codec; int status; int64_t input_dequeue_timeout_us = INPUT_DEQUEUE_TIMEOUT_US; + int64_t pts; if (s->flushing) { av_log(avctx, AV_LOG_ERROR, "Decoder is flushing and cannot accept new buffer " @@ -605,14 +606,14 @@ int ff_mediacodec_dec_send(AVCodecContext *avctx, MediaCodecDecContext *s, return AVERROR_EXTERNAL; } + pts = pkt->pts; + if (pts != AV_NOPTS_VALUE && avctx->pkt_timebase.num && avctx->pkt_timebase.den) { + pts = av_rescale_q(pts, avctx->pkt_timebase, AV_TIME_BASE_Q); + } + if (need_draining) { - int64_t pts = pkt->pts; uint32_t flags = ff_AMediaCodec_getBufferFlagEndOfStream(codec); - if (s->surface) { - pts = av_rescale_q(pts, avctx->pkt_timebase, AV_TIME_BASE_Q); - } - av_log(avctx, AV_LOG_DEBUG, "Sending End Of Stream signal\n"); status = ff_AMediaCodec_queueInputBuffer(codec, index, 0, 0, pts, flags); @@ -627,16 +628,10 @@ int ff_mediacodec_dec_send(AVCodecContext *avctx, MediaCodecDecContext *s, s->draining = 1; break; } else { - int64_t pts = pkt->pts; - size = FFMIN(pkt->size - offset, size); memcpy(data, pkt->data + offset, size); offset += size; - if (avctx->pkt_timebase.num && avctx->pkt_timebase.den) { - pts = av_rescale_q(pts, avctx->pkt_timebase, AV_TIME_BASE_Q); - } - status = ff_AMediaCodec_queueInputBuffer(codec, index, 0, size, pts, 0); if (status < 0) { av_log(avctx, AV_LOG_ERROR, "Failed to queue input buffer (status = %d)\n", status);