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; }