From patchwork Tue Mar 13 09:46:57 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aman Karmani X-Patchwork-Id: 7959 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.1.70 with SMTP id c67csp551549jad; Tue, 13 Mar 2018 02:47:19 -0700 (PDT) X-Google-Smtp-Source: AG47ELu/GcOrYVChuycAE/DFAPBrDiCPz2IMEeDXSyN+afis99yG/GC6i8FUXh4V0bcIHxEuvI6G X-Received: by 10.28.14.6 with SMTP id 6mr191697wmo.2.1520934439664; Tue, 13 Mar 2018 02:47:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1520934439; cv=none; d=google.com; s=arc-20160816; b=mhTkcrcXIfbyVy27npnRLj282EbF0KXATVGyjOdxoM2NgBHr1JI1SJcvSAcg/oxVjK sICKcIWWimjgJxYbO+KjBqHr0FfSn99wNGSrV9ePHe8ldh/eyCnVLz4EaDB8w08tVeWV ZeZ2VtLcXlvqtLCXSY/1ChOIp+t96LGTvNj1jrRIGfe6e1tQMuufKY22ozt6mC6J6RaT twDUoPsUEwCeLURC2fFfas14oDio5HfsLkRJEsX2jVkW2wl2ju+/1YolqJPnHWAVM5EV 5kAY8POunoIsDkK93Z1+2fjh5X6M1gyBToWI7CjqQjXn+htSBNH0CZVUmfSQ2ZCjkH7g lFyQ== 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=KqfL9qVCDq7LHelwz9dOEPEhQrgAvqZo6grwars6r/A=; b=P6kmnzh/bEm69CzHOJx3pPczX4RjSdhVracW8fcEBzPJVNINMcAM5oqLkCKSKraOMx Qw1JpDIie/rUVH74NKx1yD8s5lJZ/+W6tm/kb5IyHQgLxCsmeAozZh8kloqteKRlqOW6 GiAcXblTwMtjngisMy07eyful2WFptwyWCgofXHMQn3nMJCkYAodvT1jloSsRV6u4zjf BF65ezUb9eDM3BpvAPEWvnryWcPxOttvYY07PfIrfWfFPNF6zvUbmpBJxNGvo4KzD+YV 96M2Fs1hhSrVw/2Cckz7EulWh6N1qSSqHb0CWDC7fYP7ce2/+C7TrRhCXf288g6h2FQ7 hzUw== 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=CuFs6jz0; 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 n191si75305wmg.146.2018.03.13.02.47.18; Tue, 13 Mar 2018 02:47:19 -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=CuFs6jz0; 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 0A183689ACB; Tue, 13 Mar 2018 11:47:06 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg0-f45.google.com (mail-pg0-f45.google.com [74.125.83.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B63AF689A92 for ; Tue, 13 Mar 2018 11:46:59 +0200 (EET) Received: by mail-pg0-f45.google.com with SMTP id t186so1153435pgc.4 for ; Tue, 13 Mar 2018 02:47:10 -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=19e2vA3OESfmmJchMHzVTY1xnoXpqa7BWdOvbBkSzE8=; b=CuFs6jz0IxH6DmwogSeBohEpWAKp3+sds5Ilrx64BJdU5LKz/YPrHIlYBTVV8wjj7s IE0QNtuTv20+bHUeAVIVHlz4mEIVelzzVqVd88UfwN269qwH++K/5sxOS1hekRwChMVj 7qgH5oeroubxdyVWzWtJFvuRl52IGveqnUMnFLTgqHNlYg4bMPkZBQeulE7j3KqpQ3DB 4BvhXFeopHnH1Pv/1AKvICYttcXA5dOGINOxPo4+bMwhIre2gMJOpNqoUeVo3uIJJ+uA COu6OpqxAnyNIIGy3XRTTvrY8jSEJexIF5mzK0VKLK507noPqsCaivlzRY6tbE3A/i8I Hy6Q== 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=19e2vA3OESfmmJchMHzVTY1xnoXpqa7BWdOvbBkSzE8=; b=g6YxxU5vYeMcBgl9AccpZD1tawnBKlm7grni2ERgnXC3XvJS2x1+0D091wPKuQE/ZL OX/g1j9RtV9X5tlriOYcpmWXNdQkZZ6MOIR7Ogbcf+9LboocCvA6Y4Q3E7IVFTWxifG7 KcsY2GhvS0nxnbtVLynZ75Vwj9gApUOLtqtqhPgvJI6BidKW/eSPY88oyVS4ikwThUGY dUbfcgkccaKREroP21AIlOyhQhyZYM5z95hYHhD0jnFvDnPUmwyRK0pPAyKfP8sjAsIs 2BJDFo8cuUZvagtzvjykwvDO6UVe50ih3deMZQuTen2S7SDFQFaqlft9AEIAdwYLpldj FHnw== X-Gm-Message-State: AElRT7EfAhz98sNlJfVxigLoa2LucF8XflwgdPigeTQWKPUDvk5NR4e5 C3LJPAdvP3yoCtCks2URw08dgPBe X-Received: by 10.101.93.73 with SMTP id e9mr9305941pgt.264.1520934428578; Tue, 13 Mar 2018 02:47:08 -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 t63sm22396015pfj.44.2018.03.13.02.47.07 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 13 Mar 2018 02:47:08 -0700 (PDT) From: Aman Gupta To: ffmpeg-devel@ffmpeg.org Date: Tue, 13 Mar 2018 02:46:57 -0700 Message-Id: <20180313094657.12332-1-ffmpeg@tmm1.net> X-Mailer: git-send-email 2.14.2 Subject: [FFmpeg-devel] [PATCH] avcodec/mediacodecdec: fix immediate EAGAIN with buffered packet 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 In cases where the mediacodec decoder consumed a partial packet, receive_frame() would start returning EAGAIN if the rest of the packet couldn't be flushed and no frames were immediately available. This fixes receive_frame() to perform its normal blocking wait for new frames before returning EAGAIN. Fixes an issue I could reproduce fairly often on a FireOS 6 device, and reported to be happening intermittently by two mpv users. --- libavcodec/mediacodecdec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/mediacodecdec.c b/libavcodec/mediacodecdec.c index 89d2421ae9..0d4a853f07 100644 --- a/libavcodec/mediacodecdec.c +++ b/libavcodec/mediacodecdec.c @@ -452,7 +452,7 @@ static int mediacodec_receive_frame(AVCodecContext *avctx, AVFrame *frame) /* skip fetching new packet if we still have one buffered */ if (s->buffered_pkt.size > 0) - return AVERROR(EAGAIN); + return mediacodec_send_receive(avctx, s, frame, true); /* fetch new packet or eof */ ret = ff_decode_get_packet(avctx, &s->buffered_pkt);