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 BA1324F7FC for ; Mon, 23 Jun 2025 13:39:18 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 2302668E1E2; Mon, 23 Jun 2025 16:38:06 +0300 (EEST) Received: from mail-pf1-f181.google.com (mail-pf1-f181.google.com [209.85.210.181]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 371DC68E11D for ; Mon, 23 Jun 2025 16:37:59 +0300 (EEST) Received: by mail-pf1-f181.google.com with SMTP id d2e1a72fcca58-747c2cc3419so2899068b3a.2 for ; Mon, 23 Jun 2025 06:37:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750685877; x=1751290677; 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=zDIYHWFftlhz8UEZM5klqPpfEg9F21TJ0En0qb2JeFY=; b=AvOmVwTMBwogOVnkMMfOdRdz1bUOVwJ9Cb8NFkz329IDwtyx2i/IuX2h9gNXDvhzRR uwOto4mXUof5+4SgWGt3kr+CYNDHtagTU5+cLG1jtASg7dda4Es4XUlDZTtp6hu1yosU mj31yNcze2scRHXXuXWQtbi7RGKI3h6kbQO0MOm6FYjqcXGwNuvdznn9Yq9/alAK1H7+ iEKX43mCkdTh/HhmKNWLiwmIZbuA+F368wx9c8F5YscJISnTSiH4fBGcA73+v8acey7y 9F+YgR8XoqRBLntROmZPQ/riyGhfcsgFlDOHD2Lqjn2Z9pu6r36kVKG7Idwkwkw8ddjW bdRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750685877; x=1751290677; 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=zDIYHWFftlhz8UEZM5klqPpfEg9F21TJ0En0qb2JeFY=; b=svoM8+Udhf0w+WaS3UP0WKjsor5s0sBNoUijr9sgQp0K8nHlkmS9VGm9VahuCYoCFi aschiOtajq2fanCTggZ5d0/sUpBvX8ywaiZAVnNotQu+0IjBYuzUBc0iI0S9GfNoKUKz iIiVz0ydOytYZ0iEHiTbFDndh+d0sfKPf9XkCf0q1v+qrnwiE4Ieb1BWN4dutQGb8hrj TyQHQVz8DXHic5EglD8rUwFvKAxVp9RUPtvVvW6ad5nZG6eIxFztg8gj/+nhOPic8oav 69GSQYGG9HrVN97f6vLovsbK5v6pfaBMC7zJF1BuT8n1cmMhmcKTCZZmMAv/utGtZ1/0 Fq9g== X-Gm-Message-State: AOJu0YzoVZ7eEKawd3xuQoi9dU57HCzTfFSml26RC+QZVOJzVSLbiEzY OHk+hRyIRXkYRD5PoQb3gW/GNMBKSPAdzxOiyxovrVplmr3KOso4yuvOhyH0Qg== X-Gm-Gg: ASbGncuatyuH4xv8ZW/bKkGvjuBjhchmyJXEGzoMvwhISpjkDDKy5NxhdDTYj3gNCUu v0IJ9AX7S7YhpVZBkPD6YNzRrrdNwQ/ffdtd12sN1KawXQq9CZ1iU0E2MmM6mPKDNqpuLQGEYrw ZY4wGUwe+Mf+1kcrHtzFrujPO2Yu+C5qemBSr2BcGWERiWmExT9Vo2NukBC17v8NnYtC+jtnjze yqcp7zq+tPSQSPzHfYfdPWfui/i8AmYo5s4U3x9kSMNnWnIjV60Hxgq2hUY3kLwEm/JPh+Y8JaH mQejUslRS7BtbdvF9CKjTRqvP9i/jqmuSX+Sn0lT4LoVnBm39Kuo1PEjfNjt82m1wG9MAUl8PIM 3bMJVjD1jcjuNmmVB X-Google-Smtp-Source: AGHT+IETzrWG5Ljwn3r+nfdyDe2dp7xFuI4ECisedxbsvUdrwVUxhUzX4KC5dPRdpjivqeQ1cIrjag== X-Received: by 2002:a05:6a00:2e21:b0:748:e4f6:ff31 with SMTP id d2e1a72fcca58-7490d7a3c3bmr21542307b3a.8.1750685877384; Mon, 23 Jun 2025 06:37:57 -0700 (PDT) Received: from [127.0.0.1] (master.gitmailbox.com. [34.83.118.50]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7490a621997sm8260404b3a.87.2025.06.23.06.37.57 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 23 Jun 2025 06:37:57 -0700 (PDT) From: Andreas Rheinhardt X-Google-Original-From: Andreas Rheinhardt Message-Id: <9aaafd3eca57b87669f0092fae7287adc41b47e6.1750685809.git.ffmpegagent@gmail.com> In-Reply-To: References: Date: Mon, 23 Jun 2025 13:36:11 +0000 Fcc: Sent MIME-Version: 1.0 To: ffmpeg-devel@ffmpeg.org Subject: [FFmpeg-devel] [PATCH 11/48] avcodec/h261dec: Stop using MpegEncContext.gb 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 This is in preparation for removing said field from MpegEncContext. Signed-off-by: Andreas Rheinhardt --- libavcodec/h261dec.c | 80 +++++++++++++++++++++++--------------------- 1 file changed, 41 insertions(+), 39 deletions(-) diff --git a/libavcodec/h261dec.c b/libavcodec/h261dec.c index 146f979a5e..50fc375c26 100644 --- a/libavcodec/h261dec.c +++ b/libavcodec/h261dec.c @@ -29,6 +29,7 @@ #include "avcodec.h" #include "codec_internal.h" #include "decode.h" +#include "get_bits.h" #include "mpeg_er.h" #include "mpegutils.h" #include "mpegvideo.h" @@ -51,6 +52,8 @@ static VLCElem h261_cbp_vlc[512]; typedef struct H261DecContext { MpegEncContext s; + GetBitContext gb; + H261Context common; int current_mba; @@ -129,18 +132,18 @@ static int h261_decode_gob_header(H261DecContext *h) if (!h->gob_start_code_skipped) { /* Check for GOB Start Code */ - val = show_bits(&s->gb, 15); + val = show_bits(&h->gb, 15); if (val) return -1; /* We have a GBSC */ - skip_bits(&s->gb, 16); + skip_bits(&h->gb, 16); } h->gob_start_code_skipped = 0; - h->gob_number = get_bits(&s->gb, 4); /* GN */ - s->qscale = get_bits(&s->gb, 5); /* GQUANT */ + h->gob_number = get_bits(&h->gb, 4); /* GN */ + s->qscale = get_bits(&h->gb, 5); /* GQUANT */ /* Check if gob_number is valid */ if (s->mb_height == 18) { // CIF @@ -153,7 +156,7 @@ static int h261_decode_gob_header(H261DecContext *h) } /* GEI */ - if (skip_1stop_8data_bits(&s->gb) < 0) + if (skip_1stop_8data_bits(&h->gb) < 0) return AVERROR_INVALIDDATA; if (s->qscale == 0) { @@ -257,7 +260,7 @@ static int h261_decode_block(H261DecContext *h, int16_t *block, int n, int coded scan_table = s->intra_scantable.permutated; if (s->mb_intra) { /* DC coef */ - level = get_bits(&s->gb, 8); + level = get_bits(&h->gb, 8); // 0 (00000000b) and -128 (10000000b) are FORBIDDEN if ((level & 0x7F) == 0) { av_log(s->avctx, AV_LOG_ERROR, "illegal dc %d at %d %d\n", @@ -275,10 +278,10 @@ static int h261_decode_block(H261DecContext *h, int16_t *block, int n, int coded // EOB Not possible for first level when cbp is available (that's why the table is different) // 0 1 1s // * * 0* - int check = show_bits(&s->gb, 2); + int check = show_bits(&h->gb, 2); i = 0; if (check & 0x2) { - skip_bits(&s->gb, 2); + skip_bits(&h->gb, 2); block[0] = qmul + qadd; block[0] *= (check & 0x1) ? -1 : 1; i = 1; @@ -291,14 +294,14 @@ static int h261_decode_block(H261DecContext *h, int16_t *block, int n, int coded return 0; } { - OPEN_READER(re, &s->gb); + OPEN_READER(re, &h->gb); i--; // offset by -1 to allow direct indexing of scan_table for (;;) { - UPDATE_CACHE(re, &s->gb); - GET_RL_VLC(level, run, re, &s->gb, rl->rl_vlc[0], TCOEFF_VLC_BITS, 2, 0); + UPDATE_CACHE(re, &h->gb); + GET_RL_VLC(level, run, re, &h->gb, rl->rl_vlc[0], TCOEFF_VLC_BITS, 2, 0); if (run == 66) { if (level) { - CLOSE_READER(re, &s->gb); + CLOSE_READER(re, &h->gb); av_log(s->avctx, AV_LOG_ERROR, "illegal ac vlc code at %dx%d\n", s->mb_x, s->mb_y); return -1; @@ -307,25 +310,25 @@ static int h261_decode_block(H261DecContext *h, int16_t *block, int n, int coded /* The remaining combinations of (run, level) are encoded with a * 20-bit word consisting of 6 bits escape, 6 bits run and 8 bits * level. */ - run = SHOW_UBITS(re, &s->gb, 6) + 1; - SKIP_CACHE(re, &s->gb, 6); - level = SHOW_SBITS(re, &s->gb, 8); + run = SHOW_UBITS(re, &h->gb, 6) + 1; + SKIP_CACHE(re, &h->gb, 6); + level = SHOW_SBITS(re, &h->gb, 8); if (level > 0) level = level * qmul + qadd; else if (level < 0) level = level * qmul - qadd; - SKIP_COUNTER(re, &s->gb, 6 + 8); + SKIP_COUNTER(re, &h->gb, 6 + 8); } else if (level == 0) { break; } else { level = level * qmul + qadd; - if (SHOW_UBITS(re, &s->gb, 1)) + if (SHOW_UBITS(re, &h->gb, 1)) level = -level; - SKIP_COUNTER(re, &s->gb, 1); + SKIP_COUNTER(re, &h->gb, 1); } i += run; if (i >= 64) { - CLOSE_READER(re, &s->gb); + CLOSE_READER(re, &h->gb); av_log(s->avctx, AV_LOG_ERROR, "run overflow at %dx%d\n", s->mb_x, s->mb_y); return -1; @@ -333,7 +336,7 @@ static int h261_decode_block(H261DecContext *h, int16_t *block, int n, int coded j = scan_table[i]; block[j] = level; } - CLOSE_READER(re, &s->gb); + CLOSE_READER(re, &h->gb); } s->block_last_index[n] = i; return 0; @@ -348,7 +351,7 @@ static int h261_decode_mb(H261DecContext *h) cbp = 63; // Read mba do { - h->mba_diff = get_vlc2(&s->gb, h261_mba_vlc, + h->mba_diff = get_vlc2(&h->gb, h261_mba_vlc, H261_MBA_VLC_BITS, 2); /* Check for slice end */ @@ -360,7 +363,7 @@ static int h261_decode_mb(H261DecContext *h) } while (h->mba_diff == MBA_STUFFING); // stuffing if (h->mba_diff < 0) { - if (get_bits_left(&s->gb) <= 7) + if (get_bits_left(&h->gb) <= 7) return SLICE_END; av_log(s->avctx, AV_LOG_ERROR, "illegal mba at %d %d\n", s->mb_x, s->mb_y); @@ -379,7 +382,7 @@ static int h261_decode_mb(H261DecContext *h) h261_init_dest(s); // Read mtype - com->mtype = get_vlc2(&s->gb, h261_mtype_vlc, H261_MTYPE_VLC_BITS, 2); + com->mtype = get_vlc2(&h->gb, h261_mtype_vlc, H261_MTYPE_VLC_BITS, 2); if (com->mtype < 0) { av_log(s->avctx, AV_LOG_ERROR, "Invalid mtype index\n"); return SLICE_ERROR; @@ -387,7 +390,7 @@ static int h261_decode_mb(H261DecContext *h) // Read mquant if (IS_QUANT(com->mtype)) { - s->qscale = get_bits(&s->gb, 5); + s->qscale = get_bits(&h->gb, 5); if (!s->qscale) s->qscale = 1; } @@ -410,8 +413,8 @@ static int h261_decode_mb(H261DecContext *h) h->current_mv_y = 0; } - h->current_mv_x = decode_mv_component(&s->gb, h->current_mv_x); - h->current_mv_y = decode_mv_component(&s->gb, h->current_mv_y); + h->current_mv_x = decode_mv_component(&h->gb, h->current_mv_x); + h->current_mv_y = decode_mv_component(&h->gb, h->current_mv_y); } else { h->current_mv_x = 0; h->current_mv_y = 0; @@ -419,7 +422,7 @@ static int h261_decode_mb(H261DecContext *h) // Read cbp if (HAS_CBP(com->mtype)) - cbp = get_vlc2(&s->gb, h261_cbp_vlc, H261_CBP_VLC_BITS, 1) + 1; + cbp = get_vlc2(&h->gb, h261_cbp_vlc, H261_CBP_VLC_BITS, 1) + 1; if (s->mb_intra) { s->cur_pic.mb_type[xy] = MB_TYPE_INTRA; @@ -466,11 +469,10 @@ intra: static int h261_decode_picture_header(H261DecContext *h, int *is_key) { MpegEncContext *const s = &h->s; - int format, i; uint32_t startcode = 0; - for (i = get_bits_left(&s->gb); i > 24; i -= 1) { - startcode = ((startcode << 1) | get_bits(&s->gb, 1)) & 0x000FFFFF; + for (int i = get_bits_left(&h->gb); i > 24; i -= 1) { + startcode = ((startcode << 1) | get_bits(&h->gb, 1)) & 0x000FFFFF; if (startcode == 0x10) break; @@ -482,14 +484,14 @@ static int h261_decode_picture_header(H261DecContext *h, int *is_key) } /* temporal reference */ - skip_bits(&s->gb, 5); /* picture timestamp */ + skip_bits(&h->gb, 5); /* picture timestamp */ /* PTYPE starts here */ - skip_bits1(&s->gb); /* split screen off */ - skip_bits1(&s->gb); /* camera off */ - *is_key = get_bits1(&s->gb); /* freeze picture release off */ + skip_bits1(&h->gb); /* split screen off */ + skip_bits1(&h->gb); /* camera off */ + *is_key = get_bits1(&h->gb); /* freeze picture release off */ - format = get_bits1(&s->gb); + int format = get_bits1(&h->gb); // only 2 formats possible if (format == 0) { // QCIF @@ -500,11 +502,11 @@ static int h261_decode_picture_header(H261DecContext *h, int *is_key) s->height = 288; } - skip_bits1(&s->gb); /* still image mode off */ - skip_bits1(&s->gb); /* Reserved */ + skip_bits1(&h->gb); /* still image mode off */ + skip_bits1(&h->gb); /* Reserved */ /* PEI */ - if (skip_1stop_8data_bits(&s->gb) < 0) + if (skip_1stop_8data_bits(&h->gb) < 0) return AVERROR_INVALIDDATA; h->gob_number = 0; @@ -552,7 +554,7 @@ static int h261_decode_frame(AVCodecContext *avctx, AVFrame *pict, h->gob_start_code_skipped = 0; - init_get_bits(&s->gb, buf, buf_size * 8); + init_get_bits(&h->gb, buf, buf_size * 8); ret = h261_decode_picture_header(h, &is_key); -- 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".