From patchwork Thu May 3 02:25:00 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aman Karmani X-Patchwork-Id: 8752 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:155:0:0:0:0:0 with SMTP id c82-v6csp1292741jad; Wed, 2 May 2018 19:25:17 -0700 (PDT) X-Google-Smtp-Source: AB8JxZryh2yCytzJDKBFRG3cBjFAuF61LJI5Q+YVIG1d87AeE32xHItOnz6Mbt6qK2L13I5Hppn3 X-Received: by 10.28.103.65 with SMTP id b62mr443wmc.0.1525314317746; Wed, 02 May 2018 19:25:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525314317; cv=none; d=google.com; s=arc-20160816; b=O4t4MzyTN1YcfFqINwFEnvM0wb2lQ2/D7lgcwzUorUIrrFXCyxqH0dueSLSSQG/dhr 0cD1IKpnThKchH+zmzq3+YnFfIC3iM8NwqLKU7MeCIltWNf3TdW0nRkUT/mjL/lby0fA ojD12VNnXBSgkdE1xqcvCoQHbg9Bdk+ozZRnZmLhRrKmWrwa+Q+z7CIpGl6wT2b25jTg mQA88E6ptYWTzm1/MSGbIyutiHavez8nJ7xthUJeQB8Sm2uQ4FPz54zMKSJx6DHqf+MK CEp2qJUgK5xyWWxJVYBpiNzXClrLorOq7KIWaQEg21cKxZ1fP96tMc5Obxstaw5bl7Cs 0AeQ== 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=Iq4X+H5NO52Vj6SB7U7JyvCLzqEo2n9wit3NH5w4Su0=; b=b06wXqdBwcX9Ezr9E67yVlIMbCoYP1fZpR8liop0Sy2nAJPJVqif5tWzuEwv4bcAOU 8KKY5208NdJgc4DDPIgHShRjxvud0TQe4756sYrzgepPiEMB6Rr9oBLwAatJaobflbmW Bem7dAAsfE3/wwHHXu1RYiV6u3aRNagxkYFmNla1Bhoer8Xxf2/nDnisZ3lBuGZzXWjV Pl06/enYuRtjP16FmhyUbxmaX3fPfH9KyVkbehI/ukppnACK/O5uKF0ariJ2mRGSCRUw 5zQPHuFEFRzjMXTEFd7v/QNAFSW6HpggSSjGUubtF+7cVkXZnSGILD8HymR31GnJOfDA alog== 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=GXimFIMV; 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 e17-v6si8847609wrg.249.2018.05.02.19.25.16; Wed, 02 May 2018 19:25:17 -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=GXimFIMV; 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 C3CEB689CAF; Thu, 3 May 2018 05:24:41 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg0-f42.google.com (mail-pg0-f42.google.com [74.125.83.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D28BF6802F3 for ; Thu, 3 May 2018 05:24:34 +0300 (EEST) Received: by mail-pg0-f42.google.com with SMTP id z4-v6so11988411pgu.13 for ; Wed, 02 May 2018 19:25:08 -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=8f0uQQ5QKfz9uUcLnfbxnRq5iTajlnw8+dTOYSVFCWs=; b=GXimFIMVfei2NI2Xpz3ES1vgeNR0wcfebozvROCH0rQw9Xv/dz4WOgjDq7nWM6fzb1 A7vowuVZYuLbNXZyCKhxR06jzoCxyBe8R3dTcbIXAszgGXkFZNZPHDo3PpFZL2ARMb5u AMOdoza7YJBLNhYPyEf/g7wcJKHf63Fm8NjsQ+MRFNaZRu1j9XBhfhldNJpfRl74eO0G xUpVCEHp2i09vg6HWlOGcqHy42dwlwZbsWAU9rta/2ysST4eb+1aLdDeouf/I2yjz2lN vzDraAfh7i1hJ17mC8wgpeKWSRpGln3L92zov9LPciXylITPyLP9ohK1q/Wl5oJVtHuj 0ZXg== 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=8f0uQQ5QKfz9uUcLnfbxnRq5iTajlnw8+dTOYSVFCWs=; b=Ulw2H2Rdt1XBAw25Ju5phSqWiAjT9Y8so/XC6VRNNMNWes21LbNcjCftApDkN62ia9 fgRkQTyoycmOV8iN5pD6+47yduOvasfiM128ehX8Y27IFxxao76n32yjDNeHWSTXLLyT UtHjVScSeg9BVIWhqL9uoz15V3RvNekHszeqcM4GvBbNLyWEQrPBjRIDKuHLDK4VrCWZ O/vUdhI0mlkJgi7usiS2G+wBqfO2mhnOb7IbIrz6JnPM/UCQXPqEiJU9JtCIip87alk7 kMBV+HvzD8regPhWWg9MaXFJyI9Uqtfb7+F8tgMe/jaS0XEsd1L1FZKDJxZTM4euigBd A3XQ== X-Gm-Message-State: ALQs6tAycfGAJzXWrv5FxrxZeO+BsYVOk4E8L1Xkc/MMLIRQfUYiUP3N MnkOkNOq3vnKbccf/ol0B8DQXNat X-Received: by 2002:a17:902:30a3:: with SMTP id v32-v6mr22477749plb.123.1525314306417; Wed, 02 May 2018 19:25:06 -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 g26sm25171476pfh.76.2018.05.02.19.25.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 02 May 2018 19:25:05 -0700 (PDT) From: Aman Gupta To: ffmpeg-devel@ffmpeg.org Date: Wed, 2 May 2018 19:25:00 -0700 Message-Id: <20180503022500.76182-4-ffmpeg@tmm1.net> X-Mailer: git-send-email 2.14.2 In-Reply-To: <20180503022500.76182-1-ffmpeg@tmm1.net> References: <20180503022500.76182-1-ffmpeg@tmm1.net> Subject: [FFmpeg-devel] [PATCH v2 4/4] avcodec/mediacodecdec: add workaround for buggy amlogic mpeg2 decoder 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Aman Gupta --- libavcodec/mediacodecdec.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/libavcodec/mediacodecdec.c b/libavcodec/mediacodecdec.c index 2ac22dd1f6..3a4240aa95 100644 --- a/libavcodec/mediacodecdec.c +++ b/libavcodec/mediacodecdec.c @@ -48,6 +48,7 @@ typedef struct MediaCodecH264DecContext { AVPacket buffered_pkt; int delay_flush; + int amlogic_mpeg2_api23_workaround; } MediaCodecH264DecContext; @@ -287,6 +288,7 @@ static int common_set_extradata(AVCodecContext *avctx, FFAMediaFormat *format) static av_cold int mediacodec_decode_init(AVCodecContext *avctx) { int ret; + int sdk_int; const char *codec_mime = NULL; @@ -377,7 +379,17 @@ static av_cold int mediacodec_decode_init(AVCodecContext *avctx) goto done; } - av_log(avctx, AV_LOG_INFO, "MediaCodec started successfully, ret = %d\n", ret); + av_log(avctx, AV_LOG_INFO, + "MediaCodec started successfully: codec = %s, ret = %d\n", + s->ctx->codec_name, ret); + + sdk_int = ff_Build_SDK_INT(avctx); + if (sdk_int <= 23 && + strcmp(s->ctx->codec_name, "OMX.amlogic.mpeg2.decoder.awesome") == 0) { + av_log(avctx, AV_LOG_INFO, "Enabling workaround for %s on API=%d\n", + s->ctx->codec_name, sdk_int); + s->amlogic_mpeg2_api23_workaround = 1; + } done: if (format) { @@ -434,8 +446,12 @@ static int mediacodec_receive_frame(AVCodecContext *avctx, AVFrame *frame) return ret; } - /* poll for space again */ - continue; + if (s->amlogic_mpeg2_api23_workaround && s->buffered_pkt.size <= 0) { + /* fallthrough to fetch next packet regardless of input buffer space */ + } else { + /* poll for space again */ + continue; + } } /* fetch new packet or eof */