From patchwork Sat Mar 20 18:47:16 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 26504 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id E5FC344A50F for ; Sat, 20 Mar 2021 20:47:32 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C0F7668A853; Sat, 20 Mar 2021 20:47:32 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A1F9F68A17B for ; Sat, 20 Mar 2021 20:47:26 +0200 (EET) Received: by mail-wr1-f45.google.com with SMTP id e18so12470105wrt.6 for ; Sat, 20 Mar 2021 11:47:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:reply-to:mime-version :content-transfer-encoding; bh=fT0wXp6VhmzwnPg7uQ4gq+fHj8DrsOmedbBHOB0oJvc=; b=RohF6FJl/+O9rQWK3RhBFJs/5Cn69a2uiNT6BeXf1ddZOxtylxQihRCWqzV/LlYyfU bjM06kEpQlNheXhXva8wKUAjhglh2VjGwz7IbeJdlNMRH6DlTruNpI9RHJuFVgbkwwho zpXUflxYE4Oks27fSatghSslQSMLzh31My192cxTsclvDXZOM54bHnVB26VoTVhbpSJP Quo251gFGw3YVtMP3GIuExzk9AfMZqHb8UfKI9ltpsQkfFA/ZeWbh2OOYP4RtKwHMxMD 4YCAlO90+lYRg1tTuBRxCTnJ6XT3Ii85F6rnv/HhIKsdC9mcXeWX/x4I15/b1e/yEINi Xlpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :mime-version:content-transfer-encoding; bh=fT0wXp6VhmzwnPg7uQ4gq+fHj8DrsOmedbBHOB0oJvc=; b=fB4GIFcCvxCrghvg1//FaUpnE62bvOfD8PI8oM6KkbJrUvEDHf+6qqD5joewLVFcdA sVU65heH/wUJtMIev79/nriOUo33Dp+EsjnLB7Ga+E4fqh4Q9SQgOWhAT3WHOU29C5Eo c9ox8ZPS7iK6na3Bi0pXSHKtzklOlPoNNy7+uvhZV6TduXxO7Yx5Cjk8oN38AUUWfEsu JdGQN+VPIwUAck0MnWFFY8f/xzBWASPlS4LZjOckaBvnOG/dksxap79qCJex1Voj0P3o yNLhDJGB6nH+zLEOB9LFcgfKHsvQaeebVQbr+zzPHDNRfQtdwsSBAERMpOBCWT/gvoNw GDrQ== X-Gm-Message-State: AOAM531tFaTdqGDeYkoEiSR4BQmtuejA/J7SMrQwSAj9/0kv3hMppmHh uu504hvF09g+sMgU85C2aDn5SqvYd2xtZg== X-Google-Smtp-Source: ABdhPJyj24/nrKZ2apJyuyLyOGtypVYpc9os/Zt7vZ+4YD3SE57YgguR3+q4phHvgym/qCJ78SBZsg== X-Received: by 2002:adf:b1de:: with SMTP id r30mr10649261wra.125.1616266045860; Sat, 20 Mar 2021 11:47:25 -0700 (PDT) Received: from sblaptop.fritz.box (ipbcc08960.dynamic.kabel-deutschland.de. [188.192.137.96]) by smtp.gmail.com with ESMTPSA id t1sm12393602wry.90.2021.03.20.11.47.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 20 Mar 2021 11:47:25 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 20 Mar 2021 19:47:16 +0100 Message-Id: <20210320184717.168755-1-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/2] avcodec/svq3: Use av_fast_padded_malloc() instead of av_fast_malloc() 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" It takes care of zeroing padding (which has been forgotten here). Also rename the size variable to indicate that this is not the size of the current slice. Signed-off-by: Andreas Rheinhardt --- libavcodec/svq3.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavcodec/svq3.c b/libavcodec/svq3.c index 54ef4add06..32accb1484 100644 --- a/libavcodec/svq3.c +++ b/libavcodec/svq3.c @@ -92,7 +92,7 @@ typedef struct SVQ3Context { GetBitContext gb; GetBitContext gb_slice; uint8_t *slice_buf; - int slice_size; + unsigned slice_buf_size; int halfpel_flag; int thirdpel_flag; int has_watermark; @@ -1035,7 +1035,7 @@ static int svq3_decode_slice_header(AVCodecContext *avctx) skip_bits(&s->gb, 8); - av_fast_malloc(&s->slice_buf, &s->slice_size, slice_bytes + AV_INPUT_BUFFER_PADDING_SIZE); + av_fast_padded_malloc(&s->slice_buf, &s->slice_buf_size, slice_bytes); if (!s->slice_buf) return AVERROR(ENOMEM); From patchwork Sat Mar 20 18:47:17 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 26505 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 17ADB44A50F for ; Sat, 20 Mar 2021 20:47:50 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id EA4C368A862; Sat, 20 Mar 2021 20:47:49 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 31A2B688179 for ; Sat, 20 Mar 2021 20:47:43 +0200 (EET) Received: by mail-wm1-f54.google.com with SMTP id g25so7224893wmh.0 for ; Sat, 20 Mar 2021 11:47:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=StyZTVUTfkIrB3/40ePXWAoW8RJEMUnrDUk0PJUDPvo=; b=ISpPgNVSIhPCgPFlxQN7idDL7i4PzOBqCgZES7JmsaeKkZ+qnwl+Bz2RU3xTUmamk2 4s6i8Nyv5qDBKtJt7An9ikRJdVn70sBIpLigIDOjJkDIu8iNEQeRdK3qVvbMAqHmORKN Pu7wcHdcyXy6pbZIify8xV0iktGxdaXdjHOh/ojYamLljJLykeXu2T2uj7oG/ccQ9kfM oH0nFl7BlMZNyhQh6MugpMqK2M/qR7aau/1aDfwVxsMJBUn7SxSPa1FucMEm3PNH+lwJ vYWSnzpN5KktIxsEzkyhR/OiS+YQ0laulPE+xtLYfS/PzlXD6uQE1QbdsDVE8S3QpA6M QwgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=StyZTVUTfkIrB3/40ePXWAoW8RJEMUnrDUk0PJUDPvo=; b=T/2gUzfYK+TH58bHfAhtPR3gQWjCKh1sifDEkYnAYqZ2dHJJQwjP5JfUY5Ip14rOdY A01fGpU7E1rJuzF0CsShSIh/Jc+3PdFwG7TZE0MMwbj3Wc0A6NU4StbO5uODG6PXiGE4 0aUl78RzR2kZm7X2hyQYcytIwdMRzFO+W1tC670SZvBWDASoKkhtNR7fir8i8VCgPxx+ cArgP6xPTscpiqH6BCYh3gQ5A+24/HBQsCuHtj0ooK2ovIaZ3OJhPJUQfv6Eg6ql9iW1 qjxPT8kIk124FpfcE5C+EX5GPnkpaQ6L2BO2jNbcFPuqYFfpA9Bfc6VOWnvz3V0Rjczt YCYA== X-Gm-Message-State: AOAM532bjDA99Z/oh/L5LMruABwqn+o6i+Bdyn1Yd8VtKn6rwn0HOruY xuTX1aKfuz2k98Fk6Qd9W4gijMpzo8e/Nw== X-Google-Smtp-Source: ABdhPJwvk6vTQkFBZohbUceP5BWCVYi5XEy059Uiz3tSKw/Wmsc3XYlAb1H5SnlojbudXDsWV7/mmA== X-Received: by 2002:a1c:c918:: with SMTP id f24mr9022526wmb.12.1616266062505; Sat, 20 Mar 2021 11:47:42 -0700 (PDT) Received: from sblaptop.fritz.box (ipbcc08960.dynamic.kabel-deutschland.de. [188.192.137.96]) by smtp.gmail.com with ESMTPSA id t1sm12393602wry.90.2021.03.20.11.47.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 20 Mar 2021 11:47:42 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 20 Mar 2021 19:47:17 +0100 Message-Id: <20210320184717.168755-2-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20210320184717.168755-1-andreas.rheinhardt@gmail.com> References: <20210320184717.168755-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/2] avcodec/svq3: Don't copy watermarked frame data twice 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" The SVQ3 decoder modifies the input bitstream at two places. One of them is only reached when the file is watermarked. Therefore commit 2264c1108135380c49fdf0aef97520bf77a6ed37 made a copy of all the frame data in this case. But there is a second possibility for modifying the frame and therefore Libav commit 1098f5c0495c61a98d4ff6b8e24c17974d4bace5 made the decoder always copy the data. This of course makes the additional copy for watermarked frames redundant, but it hasn't been removed. This commit does so. Signed-off-by: Andreas Rheinhardt --- libavcodec/svq3.c | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/libavcodec/svq3.c b/libavcodec/svq3.c index 32accb1484..edc8aeacc6 100644 --- a/libavcodec/svq3.c +++ b/libavcodec/svq3.c @@ -97,8 +97,6 @@ typedef struct SVQ3Context { int thirdpel_flag; int has_watermark; uint32_t watermark_key; - uint8_t *buf; - int buf_size; int adaptive_quant; int next_p_frame_damaged; int h_edge_pos; @@ -1383,7 +1381,6 @@ static int svq3_decode_frame(AVCodecContext *avctx, void *data, SVQ3Context *s = avctx->priv_data; int buf_size = avpkt->size; int left; - uint8_t *buf; int ret, m, i; /* special case for last picture */ @@ -1400,17 +1397,7 @@ static int svq3_decode_frame(AVCodecContext *avctx, void *data, s->mb_x = s->mb_y = s->mb_xy = 0; - if (s->watermark_key) { - av_fast_padded_malloc(&s->buf, &s->buf_size, buf_size); - if (!s->buf) - return AVERROR(ENOMEM); - memcpy(s->buf, avpkt->data, buf_size); - buf = s->buf; - } else { - buf = avpkt->data; - } - - ret = init_get_bits(&s->gb, buf, 8 * buf_size); + ret = init_get_bits8(&s->gb, avpkt->data, avpkt->size); if (ret < 0) return ret; @@ -1611,10 +1598,6 @@ static av_cold int svq3_decode_end(AVCodecContext *avctx) av_freep(&s->edge_emu_buffer); av_freep(&s->mb2br_xy); - - av_freep(&s->buf); - s->buf_size = 0; - return 0; }