From patchwork Sat Oct 24 11:04:57 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 23192 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 D262544BC1A for ; Sat, 24 Oct 2020 14:05:37 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id AC2E868A903; Sat, 24 Oct 2020 14:05:37 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f68.google.com (mail-wm1-f68.google.com [209.85.128.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 86B1D689A01 for ; Sat, 24 Oct 2020 14:05:31 +0300 (EEST) Received: by mail-wm1-f68.google.com with SMTP id w23so3707005wmi.4 for ; Sat, 24 Oct 2020 04:05:31 -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 :mime-version:content-transfer-encoding; bh=ALdbyrZdB0skhW0XxdKCJf0t/QaYi04X29sunTBtpac=; b=VoqOBFkwTO1ma/aNeNg+/+DtEjHCTMq82mVUzoSa8FlUWnWQVfWRZ8+ixQJ0E+V/nl aHld502PDQ9TEZdkoSYIlyhSj9pmVul01XjIs1AfL5u2SvmeCen+fi9IOVTPVFJt6Y+z SU4PYgynKSN+CxLaeXN2ffl56kP0jJIyrx6FqGKMR7jzr2RuuMsENrkDGpcGJB7Ghgym JnZ3ZfiwVXudb+nCZO4XXM3LoZodTRdX+qTD+KkylkVaEuJL65TTPU0vNdzwPjqFbpp2 FFdfP+jezaTIxRewZcQAXxVAjc0NEtElqt0E6jEEGQZ+K+C3i6PBlnLUSvN/qZaW87mo ggvg== 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:mime-version:content-transfer-encoding; bh=ALdbyrZdB0skhW0XxdKCJf0t/QaYi04X29sunTBtpac=; b=S8ifNp5E4Rt36pV2fyjuxwer+UhPIgAjy2LfbAuvsS0L6zBhRdUCiScRrimeu3Y/y1 Rse54CzEQAxNoDd/ZQbblrP1eUvVQA/TWQUldde3iaFy/g6frs6GhbzNHSphSD5sGX4d 3o7vvXlbWQdKZHpDz0jATS75muwU6hfQRzwIDj8IFF/7bKjwgsM7aQb8Z9tE8D5H30O0 wYroi7UQPi2GCpayq+HrhcHnoILvxqS5+R98/bzeg3K3bCsYHb8sbDtfBmNf49Luy0/d LBpdc/GV9xbnkviId31MzRJuEzjoerkiHj2yOyUcuZt4HEfIV+dv0idnb4TmSbgCIelm KJ5w== X-Gm-Message-State: AOAM530DTR4Helwl+E0tRM8HQL2uSF8n5z6wu+aIytgxeVAaeBsHg1hu Qy6sJPVBJoURTWSZ36yrbbxSObsxppY= X-Google-Smtp-Source: ABdhPJzgXF+KFhwy5OZP3ajNkCd0moSTsANlyhnUDeWCgdpCkdGJ2Vxh6hLvKUdpexLHn+emgkNhNw== X-Received: by 2002:a1c:9e0e:: with SMTP id h14mr6327525wme.18.1603537530762; Sat, 24 Oct 2020 04:05:30 -0700 (PDT) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id m1sm8476890wme.48.2020.10.24.04.05.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 24 Oct 2020 04:05:30 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 24 Oct 2020 13:04:57 +0200 Message-Id: <20201024110500.5424-2-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201024110500.5424-1-andreas.rheinhardt@gmail.com> References: <20201024110500.5424-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/5] avcodec/mobiclip: Don't check for errors for complete VLCs 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" Signed-off-by: Andreas Rheinhardt --- libavcodec/mobiclip.c | 26 +++++--------------------- 1 file changed, 5 insertions(+), 21 deletions(-) diff --git a/libavcodec/mobiclip.c b/libavcodec/mobiclip.c index 8d37243d87..d209a53b07 100644 --- a/libavcodec/mobiclip.c +++ b/libavcodec/mobiclip.c @@ -459,7 +459,7 @@ static void idct(int *arr, int size) arr[7] = tmp[0] - x0; } -static int read_run_encoding(AVCodecContext *avctx, +static void read_run_encoding(AVCodecContext *avctx, int *last, int *run, int *level) { MobiClipContext *s = avctx->priv_data; @@ -467,14 +467,9 @@ static int read_run_encoding(AVCodecContext *avctx, int n = get_vlc2(gb, s->vlc[s->dct_tab_idx].table, s->vlc[s->dct_tab_idx].bits, 2); - if (n < 0) - return AVERROR_INVALIDDATA; - *last = (n >> 11) == 1; *run = (n >> 5) & 0x3F; *level = n & 0x1F; - - return 0; } static int add_coefficients(AVCodecContext *avctx, AVFrame *frame, @@ -486,29 +481,22 @@ static int add_coefficients(AVCodecContext *avctx, AVFrame *frame, const uint8_t *ztab = size == 8 ? ff_zigzag_direct : zigzag4x4_tab; const int *qtab = s->qtab[size == 8]; uint8_t *dst = frame->data[plane] + by * frame->linesize[plane] + bx; - int ret = 0; for (int pos = 0; get_bits_left(gb) > 0; pos++) { int qval, last, run, level; - ret = read_run_encoding(avctx, &last, &run, &level); - if (ret < 0) - return ret; + read_run_encoding(avctx, &last, &run, &level); if (level) { if (get_bits1(gb)) level = -level; } else if (!get_bits1(gb)) { - ret = read_run_encoding(avctx, &last, &run, &level); - if (ret < 0) - return ret; + read_run_encoding(avctx, &last, &run, &level); level += run_residue[s->dct_tab_idx][(last ? 64 : 0) + run]; if (get_bits1(gb)) level = -level; } else if (!get_bits1(gb)) { - ret = read_run_encoding(avctx, &last, &run, &level); - if (ret < 0) - return ret; + read_run_encoding(avctx, &last, &run, &level); run += run_residue[s->dct_tab_idx][128 + (last ? 64 : 0) + level]; if (get_bits1(gb)) level = -level; @@ -547,7 +535,7 @@ static int add_coefficients(AVCodecContext *avctx, AVFrame *frame, dst += frame->linesize[plane]; } - return ret; + return 0; } static int add_pframe_coefficients(AVCodecContext *avctx, AVFrame *frame, @@ -1262,8 +1250,6 @@ static int predict_motion(AVCodecContext *avctx, idx2 = get_vlc2(gb, s->mv_vlc[s->moflex][tidx].table, MOBI_MV_VLC_BITS, 1); - if (idx2 < 0) - return AVERROR_INVALIDDATA; ret = predict_motion(avctx, width, height, idx2, offsetm, offsetx + i * adjx, offsety + i * adjy); @@ -1338,8 +1324,6 @@ static int mobiclip_decode(AVCodecContext *avctx, void *data, idx = get_vlc2(gb, s->mv_vlc[s->moflex][0].table, MOBI_MV_VLC_BITS, 1); - if (idx < 0) - return AVERROR_INVALIDDATA; if (idx == 6 || idx == 7) { ret = decode_macroblock(avctx, frame, x, y, idx == 7);