Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
To: ffmpeg-devel@ffmpeg.org
Cc: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Subject: [FFmpeg-devel] [PATCH 59/67] avcodec/h261dec: Unquantize coefficients while parsing them
Date: Fri, 14 Jun 2024 20:25:50 +0200
Message-ID: <GV1P250MB07379BCCDB1DD4B269BEC54C8FC22@GV1P250MB0737.EURP250.PROD.OUTLOOK.COM> (raw)
In-Reply-To: <GV1P250MB073785E3B3B4EEEE52B2FC1E8FC02@GV1P250MB0737.EURP250.PROD.OUTLOOK.COM>

This is beneficial for performance: When concatenating
the file from the vsynth1-h261 fate-test 100 times,
performance (measured by timing the codec's decode callback)
improved by 9.6%.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
---
 libavcodec/h261dec.c                     | 11 +++++++++--
 libavcodec/mpegvideo_dec.c               | 11 ++++++-----
 libavcodec/mpegvideo_enc.c               |  2 +-
 libavcodec/mpv_reconstruct_mb_template.c | 24 ++++++++++++------------
 4 files changed, 28 insertions(+), 20 deletions(-)

diff --git a/libavcodec/h261dec.c b/libavcodec/h261dec.c
index f1c1e1a48a..6df8588bb6 100644
--- a/libavcodec/h261dec.c
+++ b/libavcodec/h261dec.c
@@ -244,6 +244,7 @@ static int h261_decode_block(H261DecContext *h, int16_t *block, int n, int coded
     int level, i, j, run;
     const RLTable *rl = &ff_h261_rl_tcoeff;
     const uint8_t *scan_table;
+    const int qmul = s->qscale << 1, qadd = (s->qscale - 1) | 1;
 
     /* For the variable length encoding there are two code tables, one being
      * used for the first transmitted LEVEL in INTER, INTER + MC and
@@ -265,7 +266,7 @@ static int h261_decode_block(H261DecContext *h, int16_t *block, int n, int coded
          * being coded as 1111 1111. */
         if (level == 255)
             level = 128;
-        block[0] = level;
+        block[0] = level * s->y_dc_scale;
         i        = 1;
     } else if (coded) {
         // Run  Level   Code
@@ -276,7 +277,8 @@ static int h261_decode_block(H261DecContext *h, int16_t *block, int n, int coded
         i = 0;
         if (check & 0x2) {
             skip_bits(&s->gb, 2);
-            block[0] = (check & 0x1) ? -1 : 1;
+            block[0] = qmul + qadd;
+            block[0] *= (check & 0x1) ? -1 : 1;
             i        = 1;
         }
     } else {
@@ -306,10 +308,15 @@ static int h261_decode_block(H261DecContext *h, int16_t *block, int n, int coded
             run   = SHOW_UBITS(re, &s->gb, 6) + 1;
             SKIP_CACHE(re, &s->gb, 6);
             level = SHOW_SBITS(re, &s->gb, 8);
+            if (level > 0)
+                level = level * qmul + qadd;
+            else if (level < 0)
+                level = level * qmul - qadd;
             SKIP_COUNTER(re, &s->gb, 6 + 8);
         } else if (level == 0) {
             break;
         } else {
+            level = level * qmul + qadd;
             if (SHOW_UBITS(re, &s->gb, 1))
                 level = -level;
             SKIP_COUNTER(re, &s->gb, 1);
diff --git a/libavcodec/mpegvideo_dec.c b/libavcodec/mpegvideo_dec.c
index 684f31947c..da88a35120 100644
--- a/libavcodec/mpegvideo_dec.c
+++ b/libavcodec/mpegvideo_dec.c
@@ -927,15 +927,16 @@ void ff_mpv_reconstruct_mb(MpegEncContext *s, int16_t block[12][64])
        }
     }
 
+    av_assert2((s->out_format <= FMT_H261) == (s->out_format == FMT_H261 || s->out_format == FMT_MPEG1));
     if (!s->avctx->lowres) {
 #if !CONFIG_SMALL
-        if (s->out_format == FMT_MPEG1)
-            mpv_reconstruct_mb_internal(s, block, 0, DEFINITELY_MPEG12);
+        if (s->out_format <= FMT_H261)
+            mpv_reconstruct_mb_internal(s, block, 0, DEFINITELY_MPEG12_H261);
         else
-            mpv_reconstruct_mb_internal(s, block, 0, NOT_MPEG12);
+            mpv_reconstruct_mb_internal(s, block, 0, NOT_MPEG12_H261);
 #else
-        mpv_reconstruct_mb_internal(s, block, 0, MAY_BE_MPEG12);
+        mpv_reconstruct_mb_internal(s, block, 0, MAY_BE_MPEG12_H261);
 #endif
     } else
-        mpv_reconstruct_mb_internal(s, block, 1, MAY_BE_MPEG12);
+        mpv_reconstruct_mb_internal(s, block, 1, MAY_BE_MPEG12_H261);
 }
diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c
index 125d16e694..d05a93d249 100644
--- a/libavcodec/mpegvideo_enc.c
+++ b/libavcodec/mpegvideo_enc.c
@@ -1101,7 +1101,7 @@ static void mpv_reconstruct_mb(MpegEncContext *s, int16_t block[12][64])
        }
     }
 
-    mpv_reconstruct_mb_internal(s, block, 0, MAY_BE_MPEG12);
+    mpv_reconstruct_mb_internal(s, block, 0, MAY_BE_MPEG12_H261);
 }
 
 static int get_sae(const uint8_t *src, int ref, int stride)
diff --git a/libavcodec/mpv_reconstruct_mb_template.c b/libavcodec/mpv_reconstruct_mb_template.c
index 4b16974827..dca982ae0f 100644
--- a/libavcodec/mpv_reconstruct_mb_template.c
+++ b/libavcodec/mpv_reconstruct_mb_template.c
@@ -20,9 +20,9 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#define NOT_MPEG12        0
-#define MAY_BE_MPEG12     1
-#define DEFINITELY_MPEG12 2
+#define NOT_MPEG12_H261        0
+#define MAY_BE_MPEG12_H261     1
+#define DEFINITELY_MPEG12_H261 2
 
 /* put block[] to dest[] */
 static inline void put_dct(MpegEncContext *s,
@@ -56,14 +56,14 @@ static av_always_inline
 void mpv_reconstruct_mb_internal(MpegEncContext *s, int16_t block[12][64],
                                  int lowres_flag, int is_mpeg12)
 {
-#define IS_MPEG12(s) (is_mpeg12 == MAY_BE_MPEG12 ? ((s)->out_format == FMT_MPEG1) : is_mpeg12)
+#define IS_MPEG12_H261(s) (is_mpeg12 == MAY_BE_MPEG12_H261 ? ((s)->out_format <= FMT_H261) : is_mpeg12)
     const int mb_xy = s->mb_y * s->mb_stride + s->mb_x;
 
     s->cur_pic.qscale_table[mb_xy] = s->qscale;
 
     /* update DC predictors for P macroblocks */
     if (!s->mb_intra) {
-        if (is_mpeg12 != DEFINITELY_MPEG12 && (s->h263_pred || s->h263_aic)) {
+        if (is_mpeg12 != DEFINITELY_MPEG12_H261 && (s->h263_pred || s->h263_aic)) {
             if (s->mbintra_table[mb_xy])
                 ff_clean_intra_table_entries(s);
         } else {
@@ -71,7 +71,7 @@ void mpv_reconstruct_mb_internal(MpegEncContext *s, int16_t block[12][64],
             s->last_dc[1] =
             s->last_dc[2] = 128 << s->intra_dc_precision;
         }
-    } else if (is_mpeg12 != DEFINITELY_MPEG12 && (s->h263_pred || s->h263_aic))
+    } else if (is_mpeg12 != DEFINITELY_MPEG12_H261 && (s->h263_pred || s->h263_aic))
         s->mbintra_table[mb_xy] = 1;
 
 #if IS_ENCODER
@@ -110,7 +110,7 @@ void mpv_reconstruct_mb_internal(MpegEncContext *s, int16_t block[12][64],
             /* decoding or more than one mb_type (MC was already done otherwise) */
 
 #if !IS_ENCODER
-            if (HAVE_THREADS && is_mpeg12 != DEFINITELY_MPEG12 &&
+            if (HAVE_THREADS && is_mpeg12 != DEFINITELY_MPEG12_H261 &&
                 s->avctx->active_thread_type & FF_THREAD_FRAME) {
                 if (s->mv_dir & MV_DIR_FORWARD) {
                     ff_thread_progress_await(&s->last_pic.ptr->progress,
@@ -136,7 +136,7 @@ void mpv_reconstruct_mb_internal(MpegEncContext *s, int16_t block[12][64],
                 const op_pixels_func (*op_pix)[4];
                 const qpel_mc_func (*op_qpix)[16];
 
-                if ((is_mpeg12 == DEFINITELY_MPEG12 || !s->no_rounding) || s->pict_type == AV_PICTURE_TYPE_B) {
+                if ((is_mpeg12 == DEFINITELY_MPEG12_H261 || !s->no_rounding) || s->pict_type == AV_PICTURE_TYPE_B) {
                     op_pix = s->hdsp.put_pixels_tab;
                     op_qpix = s->qdsp.put_qpel_pixels_tab;
                 } else {
@@ -162,7 +162,7 @@ void mpv_reconstruct_mb_internal(MpegEncContext *s, int16_t block[12][64],
             }
 
             /* add dct residue */
-            if (!(IS_MPEG12(s) || s->msmpeg4_version != MSMP4_UNUSED ||
+            if (!(IS_MPEG12_H261(s) || s->msmpeg4_version != MSMP4_UNUSED ||
                   (s->codec_id == AV_CODEC_ID_MPEG4 && !s->mpeg_quant)))
 #endif /* !IS_ENCODER */
             {
@@ -187,7 +187,7 @@ void mpv_reconstruct_mb_internal(MpegEncContext *s, int16_t block[12][64],
                 }
             }
 #if !IS_ENCODER
-              else if (is_mpeg12 == DEFINITELY_MPEG12 || lowres_flag || (s->codec_id != AV_CODEC_ID_WMV2)) {
+              else if (is_mpeg12 == DEFINITELY_MPEG12_H261 || lowres_flag || (s->codec_id != AV_CODEC_ID_WMV2)) {
                 add_dct(s, block[0], 0, dest_y                          , dct_linesize);
                 add_dct(s, block[1], 1, dest_y              + block_size, dct_linesize);
                 add_dct(s, block[2], 2, dest_y + dct_offset             , dct_linesize);
@@ -222,12 +222,12 @@ void mpv_reconstruct_mb_internal(MpegEncContext *s, int16_t block[12][64],
 #if !IS_ENCODER
             /* Only MPEG-4 Simple Studio Profile is supported in > 8-bit mode.
                TODO: Integrate 10-bit properly into mpegvideo.c so that ER works properly */
-            if (is_mpeg12 != DEFINITELY_MPEG12 && CONFIG_MPEG4_DECODER &&
+            if (is_mpeg12 != DEFINITELY_MPEG12_H261 && CONFIG_MPEG4_DECODER &&
                 /* s->codec_id == AV_CODEC_ID_MPEG4 && */
                 s->avctx->bits_per_raw_sample > 8) {
                 ff_mpeg4_decode_studio(s, dest_y, dest_cb, dest_cr, block_size,
                                        uvlinesize, dct_linesize, dct_offset);
-            } else if (!IS_MPEG12(s))
+            } else if (!IS_MPEG12_H261(s))
 #endif /* !IS_ENCODER */
             {
                 /* dct only in intra block */
-- 
2.40.1

_______________________________________________
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".

  parent reply	other threads:[~2024-06-14 18:26 UTC|newest]

Thread overview: 87+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-12 13:16 [FFmpeg-devel] [PATCH 01/57] avcodec/vc1: Combine identical checks Andreas Rheinhardt
2024-06-12 13:47 ` [FFmpeg-devel] [PATCH 02/57] avcodec/mpegvideo_enc: Avoid branches for flipping no_rounding Andreas Rheinhardt
2024-06-12 13:47 ` [FFmpeg-devel] [PATCH 03/57] avcodec/mpegvideo: Don't pretend dct_init can fail Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 04/57] avcodec/mpegvideo: Set dct_unquantize earlier Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 05/57] avcodec/mpegvideo_dec: Set dct_unquantize ptrs only once when possible Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 06/57] configure: Remove obsolete mpeg4_decoder->mpeg4video_parser dependency Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 07/57] avcodec/mpegutils: Remap MB_TYPE_ACPRED, add codec-specific MB_TYPE Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 08/57] avcodec/mpegutils: Remap MB_TYPE_{GMC, SKIP, CBP, QUANT} Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 09/57] avcodec/h261dec: Use VLC symbol table Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 10/57] avcodec/h261dec: Remove nonsense information from error message Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 11/57] avcodec/mpegutils: Remove always-false check Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 12/57] avcodec/mpegutils: Don't use MB_TYPE_L[01] for mpegvideo Andreas Rheinhardt
2024-06-13  8:23   ` Michael Niedermayer
2024-06-13  8:49     ` Andreas Rheinhardt
2024-06-13  9:56       ` Michael Niedermayer
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 13/57] avcodec/mpegutils: Move H.264-only macros to h264dec.h Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 14/57] avcodec/mpeg4videodec: Use VLC symbol table Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 15/57] avcodec/mpeg12dec: " Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 16/57] avcodec/ituh263dec: " Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 17/57] avcodec/mpegvideo_enc: Avoid excessive inlining Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 18/57] avcodec/mpegvideo_enc: Check for existence of ildct cmp functions Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 19/57] avcodec/dvenc: Check for availability of interlaced dct cmp func Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 20/57] avcodec/motion_est: Factor one-time initialization out of ff_init_me Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 21/57] avcodec/me_cmp: Constify ff_set_cmp() Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 22/57] avcodec/me_cmp, motion_est: Move me_(pre_)?_cmp etc. to MotionEstContext Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 23/57] avcodec/me_cmp, mpegvideo: Move frame_skip_cmp to MpegEncContext Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 24/57] avcodec/me_cmp, dvenc, mpegvideo: Move ildct_cmp to its users Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 25/57] avcodec/me_cmp, motion_est: Sanitize permissible cmp_funcs Andreas Rheinhardt
2024-06-13  7:49   ` Michael Niedermayer
2024-06-13  9:37     ` Andreas Rheinhardt
2024-06-13 21:11       ` Michael Niedermayer
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 26/57] avcodec/motion_est: Store remaining required me_cmp_funcs Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 27/57] avcodec/me_cmp: Zero MECmpContext in ff_me_cmp_init() Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 28/57] avcodec/mpegvideo_enc: Avoid branch for sse vs nsse cmp Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 29/57] avcodec/mpegvideo_enc: Only keep what is used from MECmpContext Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 30/57] avcodec/mpegvideo_enc: Initialize qscale tab for all codecs Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 31/57] avcodec/mpegvideo_enc: Don't update qscale unnecessarily Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 32/57] avcodec/mpegutils: Fix ff_draw_horiz_band() Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 33/57] avcodec/mpv_reconstruct_mb_template: Don't unnecessarily copy data Andreas Rheinhardt
2024-06-13  7:36   ` Michael Niedermayer
2024-06-13  8:50     ` Andreas Rheinhardt
2024-06-13 21:19       ` Michael Niedermayer
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 34/57] avcodec/mpeg12dec: Disable allocating scratchpad buffers when possible Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 35/57] avcodec/mpegvideo_dec: Don't alloc framesize-bufs in update_thread_ctx Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 36/57] avcodec/mpegvideo_dec: Don't keep droppable in sync " Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 37/57] avcodec/mpegutils: Don't output wrong mb skip values Andreas Rheinhardt
2024-06-13  7:27   ` Michael Niedermayer
2024-06-17 11:08     ` Andreas Rheinhardt
2024-06-18 22:08       ` Michael Niedermayer
2024-06-19 13:54         ` Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 38/57] avcodec/svq1enc: Stop copying PutBitContext unnecessarily Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 39/57] avcodec/ituh263enc: Inline constants Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 40/57] avcodec/h263enc: Remove no-output code Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 41/57] avcodec/mpeg4videodec: Inline constants Andreas Rheinhardt
2024-06-13  7:16   ` Michael Niedermayer
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 42/57] avcodec/mpeg4videodec: Don't initialize unused stuff Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 43/57] avcodec/vc1_block: Remove unnecessary assignments Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 44/57] avcodec/vc1_block: Simplify resetting coded_block Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 45/57] avcodec/mpeg4videodec: Remove always-false check Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 46/57] avcodec/mpeg12enc: Use AVCodecContext, not priv ctx as logctx Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 47/57] avcodec/mpeg12enc: Pass AVCodecContext* directly Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 48/57] avcodec/msmpeg4enc: Combine writing bits Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 49/57] avcodec/h261dec: Don't reset gob_start_code_skipped in h261_decode_init() Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 50/57] avcodec/h261dec: Fix UB NULL + 0, remove broken resync code Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 51/57] avcodec/h261dec: Simplify decoding GOB header Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 52/57] avcodec/mpv_reconstruct_mb_template: Optimize always-true branch away Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 53/57] avcodec/mpegvideo_dec: Remove unnecessary FFMIN Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 54/57] avcodec/mpegvideo: Join loops when initializing ScanTable Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 55/57] avcodec/mpv_reconstruct_mb_template: Optimize WMV2 code away if possible Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 56/57] avcodec/mpeg4videodec: Don't initialize unused inter_scantable Andreas Rheinhardt
2024-06-12 13:48 ` [FFmpeg-devel] [PATCH 57/57] avcodec/mpeg_er: Don't set block_index unnecessarily Andreas Rheinhardt
2024-06-14 18:25 ` [FFmpeg-devel] [PATCH 58/67] avcodec/h261enc, msmpeg4: Avoid setting dc_scale_tables unnecessarily Andreas Rheinhardt
2024-06-14 18:25 ` Andreas Rheinhardt [this message]
2024-06-14 18:25 ` [FFmpeg-devel] [PATCH 60/67] avcodec/h261dec: Simplify decoding motion vectors Andreas Rheinhardt
2024-06-14 18:25 ` [FFmpeg-devel] [PATCH 61/67] avcodec/h261dec: Don't set framerate multiple times Andreas Rheinhardt
2024-06-14 18:25 ` [FFmpeg-devel] [PATCH 62/67] avcodec/rv10: Remove write-only assignments Andreas Rheinhardt
2024-06-14 18:25 ` [FFmpeg-devel] [PATCH 63/67] avcodec/mpeg_er: Simplify disabling IDCT Andreas Rheinhardt
2024-06-14 18:25 ` [FFmpeg-devel] [PATCH 64/67] avcodec/rv10: Use ff_h263_decode_init() Andreas Rheinhardt
2024-06-14 18:25 ` [FFmpeg-devel] [PATCH 65/67] avcodec/mpegvideo: Move quant_precision to Mpeg4DecContext Andreas Rheinhardt
2024-06-14 18:25 ` [FFmpeg-devel] [PATCH 66/67] avcodec/rv10: Avoid indirection Andreas Rheinhardt
2024-06-14 18:25 ` [FFmpeg-devel] [PATCH 67/67] avcodec/mpegvideo_dec: Move setting dct_unquant funcs to h263dec.c Andreas Rheinhardt
2024-06-15 17:16 ` [FFmpeg-devel] [PATCH 68/73] avcodec/h261enc: Inline constants Andreas Rheinhardt
2024-06-15 17:16 ` [FFmpeg-devel] [PATCH 69/73] avcodec/motion_est: Optimize dead code away Andreas Rheinhardt
2024-06-15 17:16 ` [FFmpeg-devel] [PATCH 70/73] avcodec/mpegvideo_enc: Constify pointers to static storage Andreas Rheinhardt
2024-06-15 17:16 ` [FFmpeg-devel] [PATCH 71/73] avcodec/h261data: Make some tables non-static Andreas Rheinhardt
2024-06-15 17:16 ` [FFmpeg-devel] [PATCH 72/73] avcodec/h261enc: Avoid RLTable when writing macroblock Andreas Rheinhardt
2024-06-15 17:16 ` [FFmpeg-devel] [PATCH 73/73] avcodec/h261enc: Fix ac_vlc_length tables Andreas Rheinhardt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=GV1P250MB07379BCCDB1DD4B269BEC54C8FC22@GV1P250MB0737.EURP250.PROD.OUTLOOK.COM \
    --to=andreas.rheinhardt@outlook.com \
    --cc=ffmpeg-devel@ffmpeg.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git