From patchwork Tue Jul 17 19:39:18 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vittorio Giovara X-Patchwork-Id: 9746 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:104:0:0:0:0:0 with SMTP id c4-v6csp3901513jad; Tue, 17 Jul 2018 12:45:13 -0700 (PDT) X-Google-Smtp-Source: AAOMgpcq3vVeDDHwW0YeMh1Azy3iLqpASxSSO0Igz8u7X4YZvazsedspsBHXYs0wj4oMF04BEnCX X-Received: by 2002:adf:ef8c:: with SMTP id d12-v6mr2434197wro.195.1531856713132; Tue, 17 Jul 2018 12:45:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1531856713; cv=none; d=google.com; s=arc-20160816; b=GsMvWiG0E5q9owG9DBiTbExkSxTN7UAXQyi9uLLJEYZnDDYrg7xX4HzniphojG8GQ8 l0XUl9nveC6RoSldJtaSi9nHVygRycTOfc16Cdd7EX2kk6O3NCb3qv6a2dl6IQcYFqtr y/qWbsIOoVcirIBIg607ARLtpeKqxkitdpVUOYhWrBPybOlzcQos4exHDg489wcqCQJ9 ENNtgnVwWU6sLUjBXISG9M9JkojMf3OXYFeexWr9avbtBMnWqbFksrWmM93RSUFS3xsB rp5WFSV/1yDQRH0YP/bJAmWCzHAhkhOxkYh2Y5bEpUIedr05ZVrvbk/zN4HSkoeKocHs WX/A== 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:message-id:date:to:from:dkim-signature :delivered-to:arc-authentication-results; bh=WRP/C9NZKcKRSmuYgGL3RPlgpz3QDnI44d280UU8yAA=; b=UYAi4xPgXkQbz5QgED7htWrucs5LdFzz6IgfcdClpJOVux5ik5yRsefjfF/c2JGDbZ sd3sIcfyn8ylIv9Z7mPwAbWDA/EAv49NDaEEOWWzeuRAXICAchCpruo7Yh6Pp8mXvUV8 NX/CbyOyAajt+dg8DXQYhGQRMpvoJNAt/3qKtL7XMgapTeXSGs+xqyHCRUNX8E04S6qM pZXKNZWayhMgc/8kswii2zoVCV7i01xnFmLBIV3zjCUOjy8soODnDPeQbTTUOoWNlVdk 5i4JjiOhB4Je+ETJb/bB54ubND8gbCsdFAG3PnAN6w4JZxd9kheHTJUyGv5OSqiXCyC0 QG3Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=sWgYUuQn; 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 t12-v6si1261376wrr.216.2018.07.17.12.45.12; Tue, 17 Jul 2018 12:45:13 -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=sWgYUuQn; 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 6CABA6806C2; Tue, 17 Jul 2018 22:45:00 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk0-f196.google.com (mail-qk0-f196.google.com [209.85.220.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1938E6803EF for ; Tue, 17 Jul 2018 22:44:54 +0300 (EEST) Received: by mail-qk0-f196.google.com with SMTP id u21-v6so1178811qku.2 for ; Tue, 17 Jul 2018 12:45:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id; bh=t6vUh+0zQ+V680AaXH24PGHuuZEESHS77Ok33KNzXS0=; b=sWgYUuQnAvxFi0G/1pkp+Ef1Ii7bvg8RbPnJ10G+xlBWUN1Ukm6gNJMrkcuaqAxrXm qAApV/rH08QV3UQiGwol9tRd54LxHQUUtkGJZuQED5KwXL/jsesdr4HL0qzwFNqaj4br FdTVf4ZsiRvxnFplc75yVg9MjbGUQSV0K+pnCCty8alhkiHYDqoVKIIpb/jOnucZ2/U2 3PHXD/XZQlz+bXFFSYMAydzOTRgfuczbg8XeS7uxqPz3zTuFjc6NKi/ZRUVRK7U+qUcw BfkzqKHCVSJ2te8rIRWhPMNdOkGNcGPPAIhA92k9Si7sL4gFGZWrCYN6GcU525kiYzOy lzIw== 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; bh=t6vUh+0zQ+V680AaXH24PGHuuZEESHS77Ok33KNzXS0=; b=O9ZFO5NvBc/1ImmsWOsOY2cqo3Wu28KklKZ/cXieRpKIjhWOuLqOCdwRQlS70yDilc 1ccu3xFb14CFPhNrdmnYE+gs25U9btO0Oj2TReaVTz389xCuyZHCHG40GyQ14l68vLQD MTM62KC2oSRdsWmk+cOrEH3dG2NO8/pZtiFpH3UfwqABcmIYpwPSwDHJ47jhiRs82RZd jbJj+EacmuEhvatwAPM7hbzO8RySpHK9gIIvzzvMHrN30i01JuLa/PnaAx3AQX68fKWE qiiQESbfc0xiuUs/D6UV5dQqJ9sdV1JI2T/Q1rQmMMf/Y6snR83oAHNuy70J4xg2agmi lcSg== X-Gm-Message-State: AOUpUlHElyoR1ua8ib14cSdXyHeK6Tk1tietEz8p9MdyDSaBpP6jPw3q QSDM098TUz0JFWNfbFdNzb6ZgUqD X-Received: by 2002:a37:4c85:: with SMTP id z127-v6mr2894629qka.302.1531856379896; Tue, 17 Jul 2018 12:39:39 -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.33 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 17 Jul 2018 12:39:39 -0700 (PDT) From: Vittorio Giovara To: ffmpeg-devel@ffmpeg.org Date: Tue, 17 Jul 2018 21:39:18 +0200 Message-Id: <20180717193919.99925-1-vittorio.giovara@gmail.com> X-Mailer: git-send-email 2.17.1 Subject: [FFmpeg-devel] [PATCH 1/2] svq1dec: 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 seem to be some encoders that ignore that 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. Vittorio libavcodec/svq1dec.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/libavcodec/svq1dec.c b/libavcodec/svq1dec.c index d3e60c3a4a..55047b43ce 100644 --- a/libavcodec/svq1dec.c +++ b/libavcodec/svq1dec.c @@ -663,7 +663,8 @@ static int svq1_decode_frame(AVCodecContext *avctx, void *data, return result; } - result = ff_set_dimensions(avctx, s->width, s->height); + /* sizes must be always disivible by 4 due to pixel format constraints */ + result = ff_set_dimensions(avctx, FFALIGN(s->width, 4), FFALIGN(s->height, 4)); if (result < 0) return result; @@ -755,6 +756,11 @@ static int svq1_decode_frame(AVCodecContext *avctx, void *data, *got_frame = 1; result = buf_size; + cur->crop_left = 0; + cur->crop_top = 0; + cur->crop_right = FFALIGN(s->width, 4) - s->width; + cur->crop_bottom = FFALIGN(s->height, 4) - s->height; + err: av_free(pmv); return result; @@ -843,6 +849,7 @@ AVCodec ff_svq1_decoder = { .close = svq1_decode_end, .decode = svq1_decode_frame, .capabilities = AV_CODEC_CAP_DR1, + .caps_internal = FF_CODEC_CAP_EXPORTS_CROPPING, .flush = svq1_flush, .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV410P, AV_PIX_FMT_NONE },