From patchwork Tue Jul 17 19:39:19 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vittorio Giovara X-Patchwork-Id: 9747 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:104:0:0:0:0:0 with SMTP id c4-v6csp3902383jad; Tue, 17 Jul 2018 12:46:09 -0700 (PDT) X-Google-Smtp-Source: AAOMgpcAFZw7GNrDQTmlyKiDWuZZ50dwHxAUZxMpSpshugpSUsytK/xRpJM1dlqkaLgKBmTUamvC X-Received: by 2002:adf:8ec2:: with SMTP id q60-v6mr2212149wrb.275.1531856769404; Tue, 17 Jul 2018 12:46:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1531856769; cv=none; d=google.com; s=arc-20160816; b=IRjiFqvVCvITBsGpu3bjukbOg8BFMqa160pvo1lljB2Q9G893qLMawQ6Emp21sIyZA 1dpLjLJWyJ1bQcfjKVYxg6uJURZWcEbqy2E1BjR2UFBggB9fmWVcb/DI8pm3piR+UBmE +bdqvmMfPMeloVIFlWskMKXPxwKbSmX8i8glOIGr30h1/n2NkEEiAG5HtWjQpIRJxqPD kE+8jJNeR7sX6sCVOWDGyd3YNvLP5XqzdCed2pL4avY8mq+MgTX/nlCCn5OnnJINqVXr h6/+HneSzVWfrCdTn5sFVJbdlv9qT8cFI0ptLSv128AVzCK4YOvwL+vlRdhECI69/bGA 4ePg== 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:delivered-to:arc-authentication-results; bh=iiB5L/Pbdmz1bm4tzkiB6TyJ1dv7TPGSqs1vdstEbn0=; b=q6PZ0o3pE3ugGCj0k4GwXoRq8/UW10hnMzt9kgtLsOABz3LqoiwZ86uG16p+WooVMY 8FtbFE3ble8XwwkaeatOcjV2G0Z3+FaNEp1tMwy+Kx7Q7FzYLIEU0/be4Dr0/hFv3Yhl Qj9mYp8bhCSbnRFrokcqMieDRiwIVlyxiDnPbVRAnqgeHBxv8nF644voiyF//ZEwrOGy CiHMNX2+BRMYunRhd2mwBiNUGL9jJuCGWUKbVeY9sQ5wuUo0VGHlBw7O4LiqcA7CFSQL KQPLJh3t8u/yInkAJRXtb+e0d4YUk+q4On3+2jLf+aVdHeKiSH4aUlT+LRXy9SHnpQ1C bz/g== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=He1HXwRG; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id g4-v6si243666wmi.196.2018.07.17.12.46.09; Tue, 17 Jul 2018 12:46:09 -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=@gmail.com header.s=20161025 header.b=He1HXwRG; 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=QUARANTINE 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 886C568078E; Tue, 17 Jul 2018 22:45:57 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk0-f195.google.com (mail-qk0-f195.google.com [209.85.220.195]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7144F68032C for ; Tue, 17 Jul 2018 22:45:51 +0300 (EEST) Received: by mail-qk0-f195.google.com with SMTP id 26-v6so1173302qks.9 for ; Tue, 17 Jul 2018 12:46:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=0q0QvhkpUUAjKN+4S58eS6MJGArCoxrPiyUJ47dHpOo=; b=He1HXwRGL+jvQlEU03yds7K2tuszr1FBjOINfkXWVLfWQyeNu6y0pisBwLRGuQk8HP Dd5Efo8M78GvzqqNZmh0qdVa4AXuc06ZEtCt7VF8Dn10als/2GG7C9lXEEJAqHrZAAqC emcUqi7Z5cFgKqfGSvbFlGU6OO3I6IIIfJO4BCqzmXhc6ALu4BvLhBx0Sn9QwG+Uiz/s rxz3jSVXQgWbnFqmYPszvQT28yJu+fGvZEgrpnW7CVV/cBW0+ippXojiA1BoPgoS/xxa 6gz2SB/7LZNLAkUBOU72xdTTnZSliIuYLatQJBz3IWdra+fDEdiEVMHFsjygs1xYzYVC WI/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=0q0QvhkpUUAjKN+4S58eS6MJGArCoxrPiyUJ47dHpOo=; b=HVOqNazaux8gAB5ygE9IRvGDa5xJ44bX2d7uDyOtP5JB/toEk8GdMWWN3tB2nWy/Z7 hXqQzAq+6VqYSNgy7Reoro3aFOByB2zV6bTHr5mV6wbuGdQfszWmIauYuXpvAmVZ8m8B WKeriVedcawRIF6he3ymBJx1J9VBDnBwUYyQzv/i1537jrvjdnGiGKIx/t+WgfVwJ0Mc TCSVCEkSi6d3XHENFDZlBPLJXxNBTHAEIUSU1M3VseRmGfl7M9LDd2CIrY04ean4pEkx a7eMXK69FEWmNnMkNfwTkZCzApu+fE3doSamu/jCNNWdjZMFXQuxnq7KSs2jKtjZUitE 7gpw== X-Gm-Message-State: AOUpUlHof4wit2CcwIjrozzWvYc7pv1NjGLTl+rpDY4QmCAgtd7fCIfM C7Be87WFRYnfBUvNGQEA16rX/YRV X-Received: by 2002:a37:61cd:: with SMTP id v196-v6mr2902170qkb.101.1531856386477; Tue, 17 Jul 2018 12:39:46 -0700 (PDT) Received: from vimacnew.vimeo.iac.corp ([151.82.102.142]) by smtp.gmail.com with ESMTPSA id h38-v6sm1471448qtc.5.2018.07.17.12.39.41 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 17 Jul 2018 12:39:46 -0700 (PDT) From: Vittorio Giovara To: ffmpeg-devel@ffmpeg.org Date: Tue, 17 Jul 2018 21:39:19 +0200 Message-Id: <20180717193919.99925-2-vittorio.giovara@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180717193919.99925-1-vittorio.giovara@gmail.com> References: <20180717193919.99925-1-vittorio.giovara@gmail.com> Subject: [FFmpeg-devel] [PATCH 2/2] ffv1dec: Ensure that pixel format constraints are respected 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" YUV410P requires that sizes are divisible by 4. There are some encoders (including ffmpeg's) that ignore this constraint and encode a different value in the bitstream itself. Handle that case by exporting the relative cropping information. --- Alternatively it is possible to always enforce mod4 sizes and call it a day. I haven't explored ways to fix the encoder (or if other decoders are affected). Vittorio libavcodec/ffv1dec.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/libavcodec/ffv1dec.c b/libavcodec/ffv1dec.c index 7658a51685..8ff0f0deb8 100644 --- a/libavcodec/ffv1dec.c +++ b/libavcodec/ffv1dec.c @@ -971,6 +971,13 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPac if ((ret = av_frame_ref(data, f->picture.f)) < 0) return ret; + if (p->format == AV_PIX_FMT_YUV410P) { + p->crop_left = 0; + p->crop_top = 0; + p->crop_right = FFALIGN(p->width, 4) - p->width; + p->crop_bottom = FFALIGN(p->height, 4) - p->height; + } + *got_frame = 1; return buf_size; @@ -1091,5 +1098,5 @@ AVCodec ff_ffv1_decoder = { .update_thread_context = ONLY_IF_THREADS_ENABLED(update_thread_context), .capabilities = AV_CODEC_CAP_DR1 /*| AV_CODEC_CAP_DRAW_HORIZ_BAND*/ | AV_CODEC_CAP_FRAME_THREADS | AV_CODEC_CAP_SLICE_THREADS, - .caps_internal = FF_CODEC_CAP_INIT_CLEANUP + .caps_internal = FF_CODEC_CAP_INIT_CLEANUP | FF_CODEC_CAP_EXPORTS_CROPPING, };