From patchwork Tue Nov 8 13:30:53 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Butterworth X-Patchwork-Id: 1342 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.90.1 with SMTP id o1csp1689008vsb; Tue, 8 Nov 2016 05:31:06 -0800 (PST) X-Received: by 10.194.118.198 with SMTP id ko6mr10478770wjb.215.1478611866731; Tue, 08 Nov 2016 05:31:06 -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 v127si16643038wmg.9.2016.11.08.05.31.06; Tue, 08 Nov 2016 05:31:06 -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 F2F87689D30; Tue, 8 Nov 2016 15:31:00 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm0-f68.google.com (mail-wm0-f68.google.com [74.125.82.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 77541689CEE for ; Tue, 8 Nov 2016 15:30:54 +0200 (EET) Received: by mail-wm0-f68.google.com with SMTP id a20so11867131wme.2 for ; Tue, 08 Nov 2016 05:30:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=EYD3lmo4Ez2qGZBlrr4dehO3BfpOVj3BhnYXe24g6b8=; b=RijMk8TOBAwqbYGOn0bIULN7/2ZKBHGwn/Xi5clyvDT0zgfUBqci+tSZMmO6/cztd6 ElEvTfuwr5hAiFaWv0nd1Cs/fIW4hFTtyBWRmTHxxg2uM/VcMR/iegaCLGeBCT8Hx2B2 8i8pixAuoZ2SMwHSG2AYXPdR1KJdrwmTSmsHhA3KdMD0cPk6anV/AOQ6pnUcE57ytbXc pEYxb7JUwDMWXWR/ykm2cEwHenANZOAkUqWlaGKHGGcdkDMjb3ddIR2Web/zGwc2JkWU 6vixFcNJOSt4JDo2p1HdWZDfa/MydVuAtMwDdcfCwXJLLhg+ZEoPR4UHJ67EesZBnYd3 nT5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=EYD3lmo4Ez2qGZBlrr4dehO3BfpOVj3BhnYXe24g6b8=; b=NoQc2Ufi35DsDI7DAj2MLMpHb57HvdF1gcMUTA3jEbxJB+ATdSpqSJ1O+UtSsNLesw aweTlOvJkOPqItxUVNWAFGCulT1NRmdzUOGl9Yr8JfWxW79wAQ9wupJbTgclccfcDFV0 ObydsJ0Dt2GOs2kzQPOl6wjCj3PVpBJyYOqH+bcIs5HjB3J3A0TiLTEaCZJnLQ9LXvLW x02xLKnLSqQljym5oeujbOcgHaDiy4M4wb/RFTbbD4NHYCJD56weD65p1wto0+XTjMFL bdKOGYle1LsAGzupPfB1RWDxD7qAZ9PPiFMf/SjoSjxU6wvzHGOjyQEs3HV80fypV9TY 6K3w== X-Gm-Message-State: ABUngvfTXOMR0lXCa0Myl6Qdgnl6VfaCc4gDyn0DMmlYbEinRXD4HuswF7P37n41DSDaKA== X-Received: by 10.28.24.74 with SMTP id 71mr12213881wmy.74.1478611857532; Tue, 08 Nov 2016 05:30:57 -0800 (PST) Received: from motbook-pro.Home (bcdf199e.skybroadband.com. [188.223.25.158]) by smtp.gmail.com with ESMTPSA id m5sm19610274wmd.17.2016.11.08.05.30.56 (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 08 Nov 2016 05:30:56 -0800 (PST) From: Tom Butterworth To: ffmpeg-devel@ffmpeg.org Date: Tue, 8 Nov 2016 13:30:53 +0000 Message-Id: <20161108133054.90950-1-bangnoise@gmail.com> X-Mailer: git-send-email 2.9.3 (Apple Git-75) Subject: [FFmpeg-devel] [PATCH 1/2] avcodec/hap: pass texture-compression destination as argument, not in context 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: Tom Butterworth MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" This allows a subsequent change to compress directly into the output packet when possible. --- libavcodec/hapenc.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/libavcodec/hapenc.c b/libavcodec/hapenc.c index 076923b..79b6074 100644 --- a/libavcodec/hapenc.c +++ b/libavcodec/hapenc.c @@ -52,12 +52,14 @@ enum HapHeaderLength { HAP_HDR_LONG = 8, }; -static void compress_texture(AVCodecContext *avctx, const AVFrame *f) +static int compress_texture(AVCodecContext *avctx, uint8_t *out, int out_length, const AVFrame *f) { HapContext *ctx = avctx->priv_data; - uint8_t *out = ctx->tex_buf; int i, j; + if (ctx->tex_size > out_length) + return AVERROR_BUFFER_TOO_SMALL; + for (j = 0; j < avctx->height; j += 4) { for (i = 0; i < avctx->width; i += 4) { uint8_t *p = f->data[0] + i * 4 + j * f->linesize[0]; @@ -65,6 +67,8 @@ static void compress_texture(AVCodecContext *avctx, const AVFrame *f) out += step; } } + + return 0; } /* section_length does not include the header */ @@ -201,7 +205,9 @@ static int hap_encode(AVCodecContext *avctx, AVPacket *pkt, return ret; /* DXTC compression. */ - compress_texture(avctx, frame); + ret = compress_texture(avctx, ctx->tex_buf, ctx->tex_size, frame); + if (ret < 0) + return ret; /* Compress (using Snappy) the frame */ final_data_size = hap_compress_frame(avctx, pkt->data + header_length);