From patchwork Tue Aug 16 10:10:06 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nablet Developer X-Patchwork-Id: 192 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.140.67 with SMTP id o64csp2033278vsd; Tue, 16 Aug 2016 03:12:16 -0700 (PDT) X-Received: by 10.28.139.144 with SMTP id n138mr20808371wmd.71.1471342336010; Tue, 16 Aug 2016 03:12:16 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id vm5si24698634wjc.40.2016.08.16.03.12.15; Tue, 16 Aug 2016 03:12:15 -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; 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 AE7FF689B13; Tue, 16 Aug 2016 13:11:44 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mout.kundenserver.de (mout.kundenserver.de [212.227.17.13]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4189B689AF9 for ; Tue, 16 Aug 2016 13:11:28 +0300 (EEST) Received: from localhost.localdomain ([91.216.211.197]) by mrelayeu.kundenserver.de (mreue103) with ESMTPSA (Nemesis) id 0LaaTv-1auSZO3H6F-00mHiu; Tue, 16 Aug 2016 12:11:25 +0200 From: Nablet Developer To: ffmpeg-devel@ffmpeg.org Date: Tue, 16 Aug 2016 17:10:06 +0700 Message-Id: <1471342207-11982-6-git-send-email-sdk@nablet.com> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1471342207-11982-1-git-send-email-sdk@nablet.com> References: <1471342207-11982-1-git-send-email-sdk@nablet.com> X-Provags-ID: V03:K0:OhUjv3QBQ+RTa1j+8V6NWQCTwXP27zaUucKLAf4urNkwklvluwO eHOQNi3k+E9VGO0dAfdp5r98pVqu312L4WdNMkKHoxRVpOi+jiga6gBtDH0qYHztGC1+WCC ttqnOBesTSjqsktLKimLzwkoaeEgZ+2J8YjLDLAg7n1v1xRALMhPCSKsvJGzBkUdOZT7cU4 rcG+ug2mhluHNyfFCmzOA== X-UI-Out-Filterresults: notjunk:1; V01:K0:LiX1jQNLHCE=:ArcRJbFXmxnT3CtV/J5QZv +Gk7jRv3syZ+s25VxusBMd2UqHAKGdqB825RiP9928HPwh1QItf47pARyAIW0XEcoAPbZfV3+ GATPwu11ljDx02Z64DXs8K/T7KxrBeQnlU9Ma8sRfwFEv14LLeHhBdphkP7Wx4lFuRg0Qj8fh yL1C90UyQ3duVWZxGAVLv+LmeUy7E5DR0/fKrDE5LFyAzlu8NpxnbDPSRMA6UDGkkRFIUMyqG vq33Exqq5c37p1sierApFL4IIuQS8KmcxVDFxTeiXhEUcHTxvkctrOJgozpcfaJzDCgBPlz77 Qo0DXBsUR0kLhJocnEW1niGPp/etJYfeyJYgQYvfWq1pZnJW63jw/8glVakvoFeA2GtHOQhBz zOX/RL7NzBp8Z6a+rNvo7z5AzZg3UE1r1pKACRn0DXo1EQxzkwU0dlwwcSuLVuN3zd6yxAsCU q7tpY+M2qbcYpo1fdJRkSqKg6mSz9RvEpGrBWSoT4HyN/8Pt9HwxCgEpaAHKXmqERRc57n9d4 6xzx6QQhVIJhQ07zTswS9Dp/MHHK6Yf+zxT305g4XUeH9SRcuuWPxx2wqZjNcZtQZo6bKysQJ gBqEQuCb6dvYJ/mmK1aCJtzH/yi4Fae8QN6b4U0WYYgGpfjxDIrMGyh5zMvNuL+lEO7dBvrTC j6nv82oJ0fMRizUozbImPPh9cBjmL0x/14nGWSGErLskq048GmMOMxYDQhplh0puNOX2ihJLL 23dl8T7ii4WqXFFm Subject: [FFmpeg-devel] [PATCH 5/6] lavc/qsvdec: Reset decoder if MFX_ERR_UNDEFINED_BEHAVIOR is caught, because this error may get decoder stuck. 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: ChaoX A Liu MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: ChaoX A Liu Signed-off-by: ChaoX A Liu --- libavcodec/qsvdec.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c index 47dd818..2075a23 100644 --- a/libavcodec/qsvdec.c +++ b/libavcodec/qsvdec.c @@ -370,13 +370,18 @@ static int do_qsv_decode(AVCodecContext *avctx, QSVContext *q, av_usleep(500); } while (1); - if (MFX_WRN_VIDEO_PARAM_CHANGED==ret) { + if (MFX_WRN_VIDEO_PARAM_CHANGED == ret) { /* TODO: handle here minor sequence header changing */ - } else if (MFX_ERR_INCOMPATIBLE_VIDEO_PARAM==ret) { + } else if (MFX_ERR_INCOMPATIBLE_VIDEO_PARAM == ret) { av_fifo_reset(q->input_fifo); flush = q->reinit_pending = 1; continue; - } + } else if (MFX_ERR_UNDEFINED_BEHAVIOR == ret) + /* + * Decoder may get stuck with this errorcode. + * Reset decoder to avoid that. + */ + ff_qsv_decode_reset(avctx, q); if (sync) { QSVFrame *out_frame = find_frame(q, outsurf);