From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 8FEC64F7FC for ; Mon, 23 Jun 2025 13:44:38 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id BB0FD68E2F9; Mon, 23 Jun 2025 16:40:19 +0300 (EEST) Received: from mail-pf1-f174.google.com (mail-pf1-f174.google.com [209.85.210.174]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id DE40368E222 for ; Mon, 23 Jun 2025 16:40:17 +0300 (EEST) Received: by mail-pf1-f174.google.com with SMTP id d2e1a72fcca58-747abb3cd0bso2898976b3a.1 for ; Mon, 23 Jun 2025 06:40:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750686016; x=1751290816; darn=ffmpeg.org; h=cc:to:mime-version:content-transfer-encoding:fcc:subject:date :references:in-reply-to:message-id:from:from:to:cc:subject:date :message-id:reply-to; bh=66VlauT22WJHjaRR9UA7/W7I3dMAK2ffd3AB0LhBpvQ=; b=hh5a1+1Eh0BwTV7t3RJB3lCBvPvyveBsDwfv4WURQsge5Bu8H4zBCWKXgnacs0Jxck u9gwIWnjnNUC+3frqlR3NpsjC3E7w6FKxTcRHRnoKI6mZsOYYdZlJcmRUtyjb08/eW4/ 3eSI19r2KHYiGu5azO9sIH4ZI8CDOK4BBZQxJPw9bNVC8auhYVve4GiRtjyYPwWo8QJd /SgmMz+yZ+2/ggduCAqUy2JnMmyzZm31RyyASqyZcjLjqeoz4OuDj960GbK2SgTrUMDb 2WnJ121BV+aJg9nmON0qj1N3tzbG9wvxfJE8bmWB+aVHVn/iqVj6s/Oyno/w5kZ+RayO EltQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750686016; x=1751290816; h=cc:to:mime-version:content-transfer-encoding:fcc:subject:date :references:in-reply-to:message-id:from:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=66VlauT22WJHjaRR9UA7/W7I3dMAK2ffd3AB0LhBpvQ=; b=NMBL0SvfAi6lPNCik6O9A+6cY8+qKxEZcmxIRcn6nHUv9AzpglLxUj/TsbhZRpGDrK haslXXRb52GNE0rVIOocTFv3pYGZXK3mRACNVKh5mp5Y8O+ZeXp1jYaazt56Ws7Zb6ZW gNQnIwyX57gXIOb9dbU7Pin4ekP0iDh9Be3OsHN/vNhz1J4D34Dp0MVVg5pzksg/vX5v yZC+cVo817KuwNXAfzF0HD49zfbTuNhLb5Y6ddVVaS/lHH3mOe3xzT80vtcQR0GEo0dS IsLh31qaD7gq+aL5R5N7nx1SXD+QaPl/xNIVaN7Zz9t3c2Au+yzLIcgU0cwfh6CxwZtO JTDg== X-Gm-Message-State: AOJu0YzL154YApugYB/zZj8zAlAzdeIgs7Iuq34mpCg/Lm949zMNTQXk 5m34pPh1SKu44yW1OZ7KUTQpqK6J03or9FFMkL3elO8MMDoUxqvicCCuLlJZvw== X-Gm-Gg: ASbGnctVDLaEjlrBAYP5oZax3kK52IYIHUdLXSasFHzrhREzF4uLrULzXw1c8dfJ6sY S4lb2yCwmvflZ2C+Kf31QMgrGGPE4g6ZZrib+xdv/S8HrpeFOyt6ZpTgxrBqQIU4Zl0GbhUW5tg 51lVpmf3BXTNkDYp8H+kqL9p9SP5JY1LRYdJ7HGOvNSoWfHXjdRGEnnNQhOGOlNe0Pw2Ts+XzQd 8FpIskltspyaz9mbvt3vvRC54sI1UbfinyKa3ZhBRI8PAgDrmQNL+xYNNrOkgGV13YqEOamO7L/ RiWDyD/yC6M/xVoQCdedqIV4McOAMjGXXu8Rdl15VgoONDlW+yR7EA/6OtK+mUHQhgpfk4tvYF0 4obJy9ELwOLJDwFTM X-Google-Smtp-Source: AGHT+IGA+d88jZ8spAw1EpvNRoYX1AhjpKu3ZqFnjB0AYEVSw+A/QIc0E2hbZJKvLqSiXeBNehjH2g== X-Received: by 2002:a05:6a20:d706:b0:21a:de8e:5c53 with SMTP id adf61e73a8af0-220292c228cmr17570973637.12.1750686016075; Mon, 23 Jun 2025 06:40:16 -0700 (PDT) Received: from [127.0.0.1] (master.gitmailbox.com. [34.83.118.50]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7490a649455sm8604228b3a.108.2025.06.23.06.40.15 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 23 Jun 2025 06:40:15 -0700 (PDT) From: Andreas Rheinhardt X-Google-Original-From: Andreas Rheinhardt Message-Id: <894af62cfd524ba9d5e966841dd7d2bf07a2a6ec.1750685809.git.ffmpegagent@gmail.com> In-Reply-To: References: Date: Mon, 23 Jun 2025 13:36:36 +0000 Fcc: Sent MIME-Version: 1.0 To: ffmpeg-devel@ffmpeg.org Subject: [FFmpeg-devel] [PATCH 36/48] avcodec/mpeg12dec: Put mb_skip_run on the stack X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: From: Andreas Rheinhardt Signed-off-by: Andreas Rheinhardt --- libavcodec/mpeg12dec.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c index db6f9d66a5..998f6aa2e5 100644 --- a/libavcodec/mpeg12dec.c +++ b/libavcodec/mpeg12dec.c @@ -402,7 +402,7 @@ static inline int get_dmv(Mpeg12SliceContext *const s) #define MT_16X8 2 #define MT_DMV 3 -static int mpeg_decode_mb(Mpeg12SliceContext *const s) +static int mpeg_decode_mb(Mpeg12SliceContext *const s, int *mb_skip_run) { int i, j, k, cbp, val, mb_type, motion_type; const int mb_block_count = 4 + (1 << s->c.chroma_format); @@ -412,7 +412,7 @@ static int mpeg_decode_mb(Mpeg12SliceContext *const s) av_assert2(s->c.mb_skipped == 0); - if (s->c.mb_skip_run-- != 0) { + if ((*mb_skip_run)-- != 0) { if (s->c.pict_type == AV_PICTURE_TYPE_P) { s->c.mb_skipped = 1; s->c.cur_pic.mb_type[s->c.mb_x + s->c.mb_y * s->c.mb_stride] = @@ -1432,7 +1432,6 @@ static int mpeg_decode_slice(Mpeg12SliceContext *const s, int mb_y, s->c.resync_mb_x = s->c.mb_x; s->c.resync_mb_y = s->c.mb_y = mb_y; - s->c.mb_skip_run = 0; ff_init_block_index(&s->c); if (s->c.mb_y == 0 && s->c.mb_x == 0 && (s->c.first_field || s->c.picture_structure == PICT_FRAME)) { @@ -1456,8 +1455,8 @@ static int mpeg_decode_slice(Mpeg12SliceContext *const s, int mb_y, } } - for (;;) { - ret = mpeg_decode_mb(s); + for (int mb_skip_run = 0;;) { + ret = mpeg_decode_mb(s, &mb_skip_run); if (ret < 0) return ret; @@ -1552,7 +1551,7 @@ static int mpeg_decode_slice(Mpeg12SliceContext *const s, int mb_y, !s->c.progressive_sequence && left <= 25 && left >= 0 && - s->c.mb_skip_run == -1 && + mb_skip_run == -1 && (!left || show_bits(&s->gb, left) == 0)) goto eos; @@ -1560,9 +1559,9 @@ static int mpeg_decode_slice(Mpeg12SliceContext *const s, int mb_y, } /* skip mb handling */ - if (s->c.mb_skip_run == -1) { + if (mb_skip_run == -1) { /* read increment again */ - s->c.mb_skip_run = 0; + mb_skip_run = 0; for (;;) { int code = get_vlc2(&s->gb, ff_mbincr_vlc, MBINCR_VLC_BITS, 2); @@ -1572,9 +1571,9 @@ static int mpeg_decode_slice(Mpeg12SliceContext *const s, int mb_y, } if (code >= 33) { if (code == 33) { - s->c.mb_skip_run += 33; + mb_skip_run += 33; } else if (code == 35) { - if (s->c.mb_skip_run != 0 || show_bits(&s->gb, 15) != 0) { + if (mb_skip_run != 0 || show_bits(&s->gb, 15) != 0) { av_log(s->c.avctx, AV_LOG_ERROR, "slice mismatch\n"); return AVERROR_INVALIDDATA; } @@ -1582,11 +1581,11 @@ static int mpeg_decode_slice(Mpeg12SliceContext *const s, int mb_y, } /* otherwise, stuffing, nothing to do */ } else { - s->c.mb_skip_run += code; + mb_skip_run += code; break; } } - if (s->c.mb_skip_run) { + if (mb_skip_run) { int i; if (s->c.pict_type == AV_PICTURE_TYPE_I) { av_log(s->c.avctx, AV_LOG_ERROR, -- ffmpeg-codebot _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".