From patchwork Wed Dec 7 18:06:32 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Derek Buitenhuis X-Patchwork-Id: 1709 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.65.86 with SMTP id o83csp454748vsa; Wed, 7 Dec 2016 10:23:26 -0800 (PST) X-Received: by 10.28.104.213 with SMTP id d204mr3829848wmc.101.1481135006667; Wed, 07 Dec 2016 10:23:26 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id c135si9440372wmh.118.2016.12.07.10.23.25; Wed, 07 Dec 2016 10:23:26 -0800 (PST) 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=@gmail.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; dmarc=fail (p=NONE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A765968A06D; Wed, 7 Dec 2016 20:23:20 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wj0-f195.google.com (mail-wj0-f195.google.com [209.85.210.195]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 48E5568A064 for ; Wed, 7 Dec 2016 20:23:13 +0200 (EET) Received: by mail-wj0-f195.google.com with SMTP id he10so37054039wjc.2 for ; Wed, 07 Dec 2016 10:23:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:message-id; bh=y4aSFFLaWOIbkjO/qa/1ibaVSfptJEjiunnpEw1Qt3c=; b=yWBv0HfapskBTE+XogyAJ1b37ZKHMUbwKvrcbOuDEmkysWQjsnqsf9YxHTdraLjYP2 uIWbPIViigbY6qsQV+AMVOT4zdGbfs90Ed3mSICqBLy3xJD7Wlf1bqp8/wtya/41bJOW weEIrK+hONzdQqtB0VdzhxX0BixMHSgRWxR17S+KNOoHf+dKC01RpoTt+ZysZtMEvEql SGRQJESt58OEtdJkOlZbRxSb/QNVlPW2sYekYa/Oupi8zd3lGr0ciBBdesLzN/T+hCsn PY8UWHFqvbi8wcxCW+3d5/f7PyvZI6gZMffF5OYIaxjA1P7cVrQKE7B7H5Sec5rp53Kz yYvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:date:message-id; bh=y4aSFFLaWOIbkjO/qa/1ibaVSfptJEjiunnpEw1Qt3c=; b=AYsjmpqHWFge1tWZUDgnSPNJg+2qQWwfhR+EY+c312eEK9l3bt/whoTEdyJUkYOlqJ QwzERBbA2Jz5ArxCNRkgBlWsLcATCVk0SqRSwyOWffYOXhHVkO5Z60BNN9X4neXng6j7 bPFgu6vL/CY35BBe7l8qqKE2oj0b9SNPU0yqDzN45KkcRTv7M/cXpggykCiNi6t+Mw47 l3hpSQ6qDj8Huou7Rj49QN2YYc6HvaxuYssAHnLB2/u1wHjbIVmD2LN/3V3/nZ+4SEhQ N+0M0uEWKyE2hvA19V5i7S3534lkBlkl05oCV5GThddS6Kb3TZhXhKKYa5HWB6+5FQ4v Tf/w== X-Gm-Message-State: AKaTC01Dg7c5k3vlDSzB9Fb87z+rgOlLzfyNJa4zPdUxG/+i47XP6qw7RIT11uknYjRu9g== X-Received: by 10.194.59.71 with SMTP id x7mr71608696wjq.74.1481134038431; Wed, 07 Dec 2016 10:07:18 -0800 (PST) Received: from localhost.localdomain ([62.208.37.185]) by smtp.gmail.com with ESMTPSA id e188sm10879281wma.21.2016.12.07.10.07.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Dec 2016 10:07:17 -0800 (PST) From: Derek Buitenhuis To: ffmpeg-devel@ffmpeg.org Date: Wed, 7 Dec 2016 18:06:32 +0000 Message-Id: <20161207180632.23815-1-derek.buitenhuis@gmail.com> X-Mailer: git-send-email 2.11.0 Subject: [FFmpeg-devel] [PATCH] h264_slice: Wait for refs to be available before we use them in error concealment 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" This could happen when there was a frame number gap and frame threading was used. This fixes #5458. Debugging-by: Ronald S. Bultje Debugging-by: Justin Ruggles Signed-off-by: Derek Buitenhuis --- This fixes a ton of samples that had frame num gaps and were decoding using large numbers of threads. --- libavcodec/h264_slice.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index 1f2c06521e..480340b854 100644 --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@ -1424,6 +1424,9 @@ static int h264_field_start(H264Context *h, const H264SliceContext *sl, h->short_ref[0]->f->width == prev->f->width && h->short_ref[0]->f->height == prev->f->height && h->short_ref[0]->f->format == prev->f->format) { + ff_thread_await_progress(&prev->tf, INT_MAX, 0); + if (prev->f->interlaced_frame) + ff_thread_await_progress(&prev->tf, INT_MAX, 1); av_image_copy(h->short_ref[0]->f->data, h->short_ref[0]->f->linesize, (const uint8_t **)prev->f->data,