From patchwork Mon May 8 18:46:25 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 3620 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.3.129 with SMTP id 123csp982862vsd; Mon, 8 May 2017 11:47:51 -0700 (PDT) X-Received: by 10.28.48.66 with SMTP id w63mr12963067wmw.1.1494269271552; Mon, 08 May 2017 11:47:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1494269271; cv=none; d=google.com; s=arc-20160816; b=Oy1enKNq2OKajeZs4DkKku8hrPt6yJVWHg4XU/KRrmMvMzp6ZEmMxq4pBbrW+GYjHY YlvbfJvuiv+kGzODeciG/VvEmRWwCLK06RDFyDtlB9cCYGWhoO0bPx53V0Rn9tBIA7id wlfx5GMxHFitlhyiWPEfOWbSbYHrHHvCUh812orBGgDpJz8EGIfB3i2/BoKP6HgO3ZWN CxVhZ7ms9ggIW9ubl1JbwPeWveox5gJOlsOPFqLlabEuMHUqwffH5Y3gIQ95o94yirt3 zTGHGkmDyzwTL1tOiAXkDAZU6AO6pQ85aPJ03truDxfhCuvWRROKihOpqTioZkz0xiZ9 maKw== 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=Ll6uOfzBeVi0q+EUtZnbztIL6ryhAlYe/XVQx0ssa5A=; b=HFCwTuAIS9flOcYMRglL7tfnI2kPQDG0suu8STpUx6rFakQAbUNA36DgwVmzTJhr9n PAouEs1xbacby//cHI05W4NhI0JLWlE//ulpaXkoDI9lTi7gbEIBRiFkVUZfeKBt384S /SBt7LRnw1a3h1Y+F0Ko7v6mN0TTfd/wBFvL8oybsl6O4rO0+WMbwXaqzeXXCUoQd3gS 64XAWO8qJV6v6IlbGVp45CdNltHfiurSo1SpIJ7NNqV9J0oQ6FA5v9rFRB/HnB+vsHfk OWcq74XRzQN8p6wUPGI5ZkTqmCJe1JewF4IJ11e1mBtP169BY9/96GrFicfDJgWZdVq+ BjXw== ARC-Authentication-Results: i=1; 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 sp=NONE 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 64si14827552wmy.111.2017.05.08.11.47.51; Mon, 08 May 2017 11:47:51 -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; 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=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 EAE06688369; Mon, 8 May 2017 21:47:25 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt0-f193.google.com (mail-qt0-f193.google.com [209.85.216.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0569368829F for ; Mon, 8 May 2017 21:47:19 +0300 (EEST) Received: by mail-qt0-f193.google.com with SMTP id r58so10749494qtb.2 for ; Mon, 08 May 2017 11:47:25 -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=DyHaEeUaUDq59evTC82z03pnBqaQTHivgYRjtcSw/to=; b=C191+poD+lSpLU5+Jx4FVDos6aodqw08erycNYTr3fCxO4srICHZGFaNXKaYx9ohkF JFkOzabInjEga8vJ5u9hwZK9i2V7M/uOCyVKC5bAX8sQ9L+n8YlVrXu3Qq2CoOrmwx+A jAH/rNYA2NkzGGJS00A1RPdXs3uTLQmZ6IoQmiGJj/IhwsdJEkbbydiUcr4cdG0HQcxc g/uhV4y/5V/YYKumUmXGKdSkDrQSgyeH27sP4TVvftxLfQk3Ls7fCZHACxFnWXQk6azc WH9k+W+oQ0Ph8PxKsj3l7AjKmKYnuTVScr8lPxvk4GBbCapA6+2pYA808gn9Be+KJSvO VSfg== 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=DyHaEeUaUDq59evTC82z03pnBqaQTHivgYRjtcSw/to=; b=q/yJq9HoJZ0uBqgzJ8i3bOg9j2xfct+6z8JFJKerp+B5+F9+ysjF+I2KPQO/MIklYU tzO8LIQrhDUoA+lfeqR2EOhvjyfcDtJlVgcKx8rml2xmvlPXxGToPREPojIdOvfLPqd4 4a/6qnQtzqkK1sLAx0h0Vsmthwn2OxAe6EFjFW+XQnTISEtENynmEa11SP0kZmDIyaQP wGrEB4tp9cpW7be8WphyEDasNgNRVKL/ZoA8yBmHlqt2+P9k4RGHHoVD5tPQstNn0E3h 7kLXknETUhTJax3b51Zl41Y2MpRP41Fn8LS3HvCR3xKIdySdi+usoGfn1O6vcBQmgfsS fN/A== X-Gm-Message-State: AN3rC/4T0ye+VtrphsAjYK2TlrG36Fwi8qsYZk5i8zt4upzt6Had6Wg8 /tV/+SHvMMwE82nv X-Received: by 10.237.33.161 with SMTP id l30mr53148149qtc.85.1494269244140; Mon, 08 May 2017 11:47:24 -0700 (PDT) Received: from localhost.localdomain ([181.231.116.134]) by smtp.gmail.com with ESMTPSA id t136sm702878qke.40.2017.05.08.11.47.23 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 08 May 2017 11:47:23 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Mon, 8 May 2017 15:46:25 -0300 Message-Id: <20170508184625.7056-4-jamrial@gmail.com> X-Mailer: git-send-email 2.12.1 In-Reply-To: <20170508184625.7056-1-jamrial@gmail.com> References: <20170508184625.7056-1-jamrial@gmail.com> Subject: [FFmpeg-devel] [PATCH 4/4] theora: export cropping information instead of handling it internally 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" From: Anton Khirnov --- This merges commit 1202b712690c14f0efb06e4ad8b06c5b3df6822a from libav libavcodec/vp3.c | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/libavcodec/vp3.c b/libavcodec/vp3.c index b10cb39f8a..f167acf4ee 100644 --- a/libavcodec/vp3.c +++ b/libavcodec/vp3.c @@ -2003,6 +2003,7 @@ static int vp3_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt) { + AVFrame *frame = data; const uint8_t *buf = avpkt->data; int buf_size = avpkt->size; Vp3DecodeContext *s = avctx->priv_data; @@ -2176,12 +2177,12 @@ static int vp3_decode_frame(AVCodecContext *avctx, /* output frame, offset as needed */ if ((ret = av_frame_ref(data, s->current_frame.f)) < 0) return ret; - for (i = 0; i < 3; i++) { - AVFrame *dst = data; - int off = (s->offset_x >> (i && s->chroma_y_shift)) + - (s->offset_y >> (i && s->chroma_y_shift)) * dst->linesize[i]; - dst->data[i] += off; - } + + frame->crop_left = s->offset_x; + frame->crop_right = avctx->coded_width - avctx->width - s->offset_x; + frame->crop_top = s->offset_y; + frame->crop_bottom = avctx->coded_height - avctx->height - s->offset_y; + *got_frame = 1; if (!HAVE_THREADS || !(s->avctx->active_thread_type & FF_THREAD_FRAME)) { @@ -2351,16 +2352,6 @@ static int theora_decode_header(AVCodecContext *avctx, GetBitContext *gb) // to normal axis ([0,0] upper left) s->offset_x = offset_x; s->offset_y = s->height - visible_height - offset_y; - - if ((s->offset_x & 0x1F) && !(avctx->flags & AV_CODEC_FLAG_UNALIGNED)) { - s->offset_x &= ~0x1F; - if (!s->offset_x_warned) { - s->offset_x_warned = 1; - av_log(avctx, AV_LOG_WARNING, "Reducing offset_x from %d to %d" - "chroma samples to preserve alignment.\n", - offset_x, s->offset_x); - } - } } if (colorspace == 1) @@ -2573,7 +2564,8 @@ AVCodec ff_theora_decoder = { AV_CODEC_CAP_FRAME_THREADS, .flush = vp3_decode_flush, .init_thread_copy = ONLY_IF_THREADS_ENABLED(vp3_init_thread_copy), - .update_thread_context = ONLY_IF_THREADS_ENABLED(vp3_update_thread_context) + .update_thread_context = ONLY_IF_THREADS_ENABLED(vp3_update_thread_context), + .caps_internal = FF_CODEC_CAP_EXPORTS_CROPPING, }; #endif