From patchwork Thu Aug 25 07:07:18 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nablet Developer X-Patchwork-Id: 284 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.140.134 with SMTP id o128csp758105vsd; Thu, 25 Aug 2016 00:13:47 -0700 (PDT) X-Received: by 10.194.164.229 with SMTP id yt5mr6026241wjb.39.1472109227769; Thu, 25 Aug 2016 00:13:47 -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 u22si30371676wma.74.2016.08.25.00.13.47; Thu, 25 Aug 2016 00:13:47 -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 DBAE2689AD0; Thu, 25 Aug 2016 10:13:32 +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.126.134]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 751FD689722 for ; Thu, 25 Aug 2016 10:12:46 +0300 (EEST) Received: from localhost.localdomain ([91.216.211.197]) by mrelayeu.kundenserver.de (mreue003) with ESMTPSA (Nemesis) id 0LfWft-1aoMm72WHh-00p8lx; Thu, 25 Aug 2016 09:07:34 +0200 From: Nablet Developer To: ffmpeg-devel@ffmpeg.org Date: Thu, 25 Aug 2016 14:07:18 +0700 Message-Id: <1472108839-22207-6-git-send-email-sdk@nablet.com> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1472108839-22207-1-git-send-email-sdk@nablet.com> References: <1471342207-11982-1-git-send-email-sdk@nablet.com> <1472108839-22207-1-git-send-email-sdk@nablet.com> X-Provags-ID: V03:K0:KLv1eD8bU4MajgZzTOSZ0DMAbk7l4I8HMOC51CRKPc8VifRnM8T rIy7qA4sziTamhjzz2IrTrphf+G7oTqeahYv+cmCDfI6Yx/Db6JSEOLZf7baQ/Ah53BOYKC BkspWgObIcko4hcEpnt+IqrcItl1Hxwi3hsKX04rBTL8cXKZ7tPh1MXilB/Kv2heV8KK96C uPcUDqw2Ovq0b7bWL6hzg== X-UI-Out-Filterresults: notjunk:1; V01:K0:PbpmG1KlIWw=:RlEbnwWKIoFoZi9SbXaX1E X76fM+HO4MsC39PJW+keDHNTzQJWjZ0bvZd0tDJ8I8RbvSUtvIOmBAJolN5WNuFQya0dWB/yd JgCpV5cUKQWYQnC69wkHDa+Ft1rEtzsBs6lao5GOEAr0BeofgGR9LrqV9RhtFfWjanxSywYho k6vpDbQVT7+MoUqQUNVJrZPW/rQHeaU16Xdqq0DOHNJP6gKCnETsoNCEboa0NIaYzTsVP4f/t s1AUGS5zyKc0JSYCexbF0A7XuLdv9h3LhRi2xEjsAXxysK9mKEtsAJsmqWmvvMuPvD6ETBQ9I q+v68nNlc+xYTFvZjvkONM1Nq+5z1pGLaReThHRSaK8S44DsdGoqkga6Vr8y11aYAGDTH1Ni3 xXXq4q3sQT1UhBMgiGFmDjKND9JwGWqq0xKy3i2mBRPEubMatV+rgCCslJjQK7Xu/NwSuu/0C 5L7rQdpCQSN0isgkNzkrqvB5fb9wJA10MafynRVSGApyXAML49R2e+UaalveZc8We0iNN3i28 smYLojLJaLWs6Qq1yu3WNhk/URGfwvBx2y67tW9gjzeJTSveFU2DUfMRZ9UASCDU2OPJMErMU VTd07sa1gmYb1bczlE6xCRgX6/NEXtIE8CHaNvHPAOdQrlGK8xT/mSyAxFZyxfy9RryP2UZQJ NKHqKM3nb6vgpFxJ6jgZ81R/30h8vcsM/XT4pgZBPexzRifOqcANTq/FuNKo0KbFgWK0= 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);