From patchwork Mon Jun 11 14:21:19 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Guillem X-Patchwork-Id: 9364 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:11c:0:0:0:0:0 with SMTP id c28-v6csp4187637jad; Mon, 11 Jun 2018 07:21:52 -0700 (PDT) X-Google-Smtp-Source: ADUXVKIkjaLgMYaVqNUssLZ5oB2G3qYivhF9u03DomVDCf7ktRNhmGP3+3++InrKCLTZeq69+sn8 X-Received: by 2002:a1c:e184:: with SMTP id y126-v6mr7906220wmg.128.1528726912011; Mon, 11 Jun 2018 07:21:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528726911; cv=none; d=google.com; s=arc-20160816; b=txXQTlCdf/pL8DoHQvgFIoZ3G/GD/H6eAauFbc9WfhxSR5nDtZ4aiO1ErxL5RoijDR FjW/ZpBei6/PiR4HPTV2jC3DMBl8BR0Q349GCfK+QbCrweE72DNZAwToOHCV2KQK61Om kVOJCy2Q+LLSHF6L7EEjD2Z2K+yTwXFEyS8qZkhxcwddGWRaWRTahxDMhLJ7j+WIQ6kQ m9JxXKCTIppaWrRiVoMxF5r9c+63nU9+OTUrjzfyyXlFs7joa6AFwysrxwZCKfLoR+l3 idb4ThupbYwKij8IKbhINRhX9Urrp0evo9l9SHh2rJMVcrTDiXrb9BULyy3JU3kio1tY 7/ug== 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: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:dkim-signature:delivered-to :arc-authentication-results; bh=/RnJXOIoYER69Ftg4CBfr0BZFBW4WGn7G4d2HIN61s8=; b=KW8zU6YeLbEEKXqRyPzE3l/PhrbF3IDprJplbWtzPytCm5kNR4uKSQ/U8jzPbdgP2p djUb6juxL7/azIBAx/VF5XEdHQTQTGJZxikvOB8ZH1Zl9LxMnSjnrNYoTw/tVq0BIOyB UfhzAyKCAna4d3rwGayhmyXNysmyjd1pLt1X54/1ZjmSgzosOi72WQ+zdhPeJJLdekef dZQ+fCLRlmnBwwswoTXB+Z3Rwts4XTWGTN0sZBAPZ/j5DBcEJeqOica2jP9KKf7U/NNi CMTX0FqajImZWBDztd1X4Y73czJnTUyyn7Q3j9XnnWFMLXw0PEUgNN8tzhR+EIeGY3VQ AG3w== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gllm.fr header.s=fm3 header.b=W4/WGXNW; dkim=neutral (body hash did not verify) header.i=@messagingengine.com header.s=fm3 header.b=qvboDtzJ; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gllm.fr Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id x4-v6si15038713wrg.195.2018.06.11.07.21.51; Mon, 11 Jun 2018 07:21:51 -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=@gllm.fr header.s=fm3 header.b=W4/WGXNW; dkim=neutral (body hash did not verify) header.i=@messagingengine.com header.s=fm3 header.b=qvboDtzJ; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gllm.fr Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C5DD068AD2E; Mon, 11 Jun 2018 17:20:42 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out1-smtp.messagingengine.com (out1-smtp.messagingengine.com [66.111.4.25]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8EDAF68AD47 for ; Mon, 11 Jun 2018 17:20:35 +0300 (EEST) Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.nyi.internal (Postfix) with ESMTP id AAD1621AE8 for ; Mon, 11 Jun 2018 10:21:23 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute5.internal (MEProxy); Mon, 11 Jun 2018 10:21:23 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gllm.fr; h=date :from:in-reply-to:message-id:references:subject:to:x-me-sender :x-me-sender:x-sasl-enc; s=fm3; bh=xMzR1wNrXnTC+wMzKMHxfDXqCrHj/ EvAFT553zBbkoY=; b=W4/WGXNWAAr1Irrag35yQrAW8c5j/2mIYiiCZbYj7vm/b nnCam2OeAjIB4xp0Df5C6A85dBa0k+b1DSMGQVAUQTCtgptPCVifb39ZmoU3mQga ygAiYWq//cccexZGMlFfPdiEswT7IuX65gZ1Tk0Dc/NEo5W0dc9dCvtSdnvJLmOI hXY5PfmVdvEKczoK9qZhDplo4s5NQTFooTAbHwRC0Vgu8yf4BNdIlLWZyGP1LV1w Sc6uR7nwia724lXHACsJVwOgFyM1W+66oU3/6DP6CbS+LBwbACrOPkh6iwI4pHbk ZXOel/zhzcYyCm2k9GxzCVluPCrs96jR2QcA5PxeQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=date:from:in-reply-to:message-id :references:subject:to:x-me-sender:x-me-sender:x-sasl-enc; s= fm3; bh=xMzR1wNrXnTC+wMzKMHxfDXqCrHj/EvAFT553zBbkoY=; b=qvboDtzJ 6zbF/ZSx541Oopc/U/dskbZD5TPV48hSu2nCTpH6+shecw18uGg4IhkGiBKvGogF KvTrUsIS7JPCBXoOXj/hnqR8t+K2zxEO1qlkxYTt/U3WQ1fu9M+u/UfS2zz4+obl JTqcJXQZK9kSNEqK8bA4Klto3s/0u1mG76fWfNdUsxhUJs0wcgmTfEJtiKHcN7zX Acx+d9QMOAY6TdUqFNXRfq7C50oUcDN+Dsj6/6kxsB7+XsDR9T4iJcg4PQwBTbVG DGGzKwo4Lp+gaqs7wCvAOtYZwrX4OOZ/8lccWUBST70eAIPinot5h4nPOLB/rIen Uwq7oQaVI9TsKA== X-ME-Proxy: X-ME-Proxy: X-ME-Proxy: X-ME-Proxy: X-ME-Proxy: X-ME-Proxy: X-ME-Sender: Received: from localhost.localdomain (unknown [78.194.250.245]) by mail.messagingengine.com (Postfix) with ESMTPA id 2B2B710255 for ; Mon, 11 Jun 2018 10:21:23 -0400 (EDT) From: Thomas Guillem To: ffmpeg-devel@ffmpeg.org Date: Mon, 11 Jun 2018 16:21:19 +0200 Message-Id: <20180611142119.12001-3-thomas@gllm.fr> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180611142119.12001-1-thomas@gllm.fr> References: <20180611142119.12001-1-thomas@gllm.fr> Subject: [FFmpeg-devel] [PATCH 3/3] avcodec/videotoolboxenc: fix invalid session on iOS 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Cf. comment. Restart the VT session when the APP goes from foreground to background and vice versa. --- libavcodec/videotoolboxenc.c | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/libavcodec/videotoolboxenc.c b/libavcodec/videotoolboxenc.c index 1060055ba5..4b79fca45e 100644 --- a/libavcodec/videotoolboxenc.c +++ b/libavcodec/videotoolboxenc.c @@ -2175,8 +2175,29 @@ static int create_cv_pixel_buffer(AVCodecContext *avctx, #if TARGET_OS_IPHONE pix_buf_pool = VTCompressionSessionGetPixelBufferPool(vtctx->session); if (!pix_buf_pool) { - av_log(avctx, AV_LOG_ERROR, "Could not get pixel buffer pool.\n"); - return AVERROR_EXTERNAL; + /* On iOS, the VT session is invalidated when the APP switches from + * foreground to background and vice versa. Fetch the actual error code + * of the VT session to detect that case and restart the VT session + * accordingly. */ + OSStatus vtstatus = + VTCompressionSessionPrepareToEncodeFrames(vtctx->session); + + if (vtstatus == kVTInvalidSessionErr) + { + CFRelease(vtctx->session); + vtctx->session = NULL; + status = vtenc_configure_encoder(avctx); + if (status == 0) + pix_buf_pool = VTCompressionSessionGetPixelBufferPool(vtctx->session); + } + if (!pix_buf_pool) + { + av_log(avctx, AV_LOG_ERROR, "Could not get pixel buffer pool.\n"); + return AVERROR_EXTERNAL; + } + else + av_log(avctx, AV_LOG_WARNING, "VT session restarted because of a " + "kVTInvalidSessionErr error.\n"); } status = CVPixelBufferPoolCreatePixelBuffer(NULL,