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 22/57] avcodec/me_cmp, motion_est: Move me_(pre_)?_cmp etc. to MotionEstContext
Date: Wed, 12 Jun 2024 15:48:18 +0200
Message-ID: <GV1P250MB0737577BFF3D9C12ED57691E8FC02@GV1P250MB0737.EURP250.PROD.OUTLOOK.COM> (raw)
In-Reply-To: <GV1P250MB073785E3B3B4EEEE52B2FC1E8FC02@GV1P250MB0737.EURP250.PROD.OUTLOOK.COM>

MECmpContext has several arrays of function pointers that
are not set by ff_me_cmp_init(), but that are set by users
to one of the other arrays via ff_set_cmp().

One of these other users is the motion estimation API.
It uses MECmpContext.(me_pre|me|me_sub|mb)_cmp. It is
basically the only user of these arrays.

This commit therefore moves these arrays to MotionEstContext;
this has the additional advantage of making motion_est.c
more independent from MpegEncContext.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
---
 libavcodec/me_cmp.h              |  4 ---
 libavcodec/motion_est.c          | 42 +++++++++++-----------
 libavcodec/motion_est.h          |  7 +++-
 libavcodec/motion_est_template.c | 60 ++++++++++++++++----------------
 libavcodec/snowenc.c             |  6 ++--
 tests/checkasm/motion.c          |  4 ---
 6 files changed, 60 insertions(+), 63 deletions(-)

diff --git a/libavcodec/me_cmp.h b/libavcodec/me_cmp.h
index 14d19bd142..67e3816829 100644
--- a/libavcodec/me_cmp.h
+++ b/libavcodec/me_cmp.h
@@ -70,10 +70,6 @@ typedef struct MECmpContext {
     me_cmp_func dct_max[6];
     me_cmp_func dct264_sad[6];
 
-    me_cmp_func me_pre_cmp[6];
-    me_cmp_func me_cmp[6];
-    me_cmp_func me_sub_cmp[6];
-    me_cmp_func mb_cmp[6];
     me_cmp_func ildct_cmp[6]; // only width 16 used
     me_cmp_func frame_skip_cmp[6]; // only width 8 used
 
diff --git a/libavcodec/motion_est.c b/libavcodec/motion_est.c
index ee28a4a445..b29d0c6d96 100644
--- a/libavcodec/motion_est.c
+++ b/libavcodec/motion_est.c
@@ -305,7 +305,7 @@ static int zero_cmp(MpegEncContext *s, const uint8_t *a, const uint8_t *b,
 static void zero_hpel(uint8_t *a, const uint8_t *b, ptrdiff_t stride, int h){
 }
 
-av_cold int ff_me_init(MotionEstContext *c, AVCodecContext *avctx, MECmpContext *mecc)
+av_cold int ff_me_init(MotionEstContext *c, AVCodecContext *avctx, const MECmpContext *mecc)
 {
     int cache_size = FFMIN(ME_MAP_SIZE>>ME_MAP_SHIFT, 1<<ME_MAP_SHIFT);
     int dia_size   = FFMAX(FFABS(avctx->dia_size) & 255, FFABS(avctx->pre_dia_size) & 255);
@@ -324,10 +324,10 @@ av_cold int ff_me_init(MotionEstContext *c, AVCodecContext *avctx, MECmpContext
     if (cache_size < 2 * dia_size)
         av_log(avctx, AV_LOG_INFO, "ME_MAP size may be a little small for the selected diamond size\n");
 
-    ret  = ff_set_cmp(mecc, mecc->me_pre_cmp, avctx->me_pre_cmp);
-    ret |= ff_set_cmp(mecc, mecc->me_cmp,     avctx->me_cmp);
-    ret |= ff_set_cmp(mecc, mecc->me_sub_cmp, avctx->me_sub_cmp);
-    ret |= ff_set_cmp(mecc, mecc->mb_cmp,     avctx->mb_cmp);
+    ret  = ff_set_cmp(mecc, c->me_pre_cmp, avctx->me_pre_cmp);
+    ret |= ff_set_cmp(mecc, c->me_cmp,     avctx->me_cmp);
+    ret |= ff_set_cmp(mecc, c->me_sub_cmp, avctx->me_sub_cmp);
+    ret |= ff_set_cmp(mecc, c->mb_cmp,     avctx->mb_cmp);
     if (ret < 0)
         return ret;
 
@@ -354,10 +354,10 @@ av_cold int ff_me_init(MotionEstContext *c, AVCodecContext *avctx, MECmpContext
      * not have yet, and even if we had, the motion estimation code
      * does not expect it. */
     if (avctx->codec_id != AV_CODEC_ID_SNOW) {
-        if ((avctx->me_cmp & FF_CMP_CHROMA) /* && !s->mecc.me_cmp[2] */)
-            mecc->me_cmp[2] = zero_cmp;
-        if ((avctx->me_sub_cmp & FF_CMP_CHROMA) && !mecc->me_sub_cmp[2])
-            mecc->me_sub_cmp[2] = zero_cmp;
+        if ((avctx->me_cmp & FF_CMP_CHROMA) /* && !c->me_cmp[2] */)
+            c->me_cmp[2] = zero_cmp;
+        if ((avctx->me_sub_cmp & FF_CMP_CHROMA) && !c->me_sub_cmp[2])
+            c->me_sub_cmp[2] = zero_cmp;
     }
 
     return 0;
@@ -649,7 +649,7 @@ static inline int h263_mv4_search(MpegEncContext *s, int mx, int my, int shift)
 
         dmin4= c->sub_motion_search(s, &mx4, &my4, dmin4, block, block, size, h);
 
-        if (s->mecc.me_sub_cmp[0] != s->mecc.mb_cmp[0]) {
+        if (c->me_sub_cmp[0] != c->mb_cmp[0]) {
             int dxy;
             const int offset= ((block&1) + (block>>1)*stride)*8;
             uint8_t *dest_y = c->scratchpad + offset;
@@ -691,11 +691,11 @@ static inline int h263_mv4_search(MpegEncContext *s, int mx, int my, int shift)
     if(same)
         return INT_MAX;
 
-    if (s->mecc.me_sub_cmp[0] != s->mecc.mb_cmp[0]) {
-        dmin_sum += s->mecc.mb_cmp[0](s,
-                                      s->new_pic->data[0] +
-                                      s->mb_x * 16 + s->mb_y * 16 * stride,
-                                      c->scratchpad, stride, 16);
+    if (c->me_sub_cmp[0] != c->mb_cmp[0]) {
+        dmin_sum += c->mb_cmp[0](s,
+                                 s->new_pic->data[0] +
+                                 s->mb_x * 16 + s->mb_y * 16 * stride,
+                                 c->scratchpad, stride, 16);
     }
 
     if(c->avctx->mb_cmp&FF_CMP_CHROMA){
@@ -717,8 +717,8 @@ static inline int h263_mv4_search(MpegEncContext *s, int mx, int my, int shift)
             s->hdsp.put_pixels_tab       [1][dxy](c->scratchpad + 8, s->last_pic.data[2] + offset, s->uvlinesize, 8);
         }
 
-        dmin_sum += s->mecc.mb_cmp[1](s, s->new_pic->data[1] + s->mb_x * 8 + s->mb_y * 8 * s->uvlinesize, c->scratchpad,     s->uvlinesize, 8);
-        dmin_sum += s->mecc.mb_cmp[1](s, s->new_pic->data[2] + s->mb_x * 8 + s->mb_y * 8 * s->uvlinesize, c->scratchpad + 8, s->uvlinesize, 8);
+        dmin_sum += c->mb_cmp[1](s, s->new_pic->data[1] + s->mb_x * 8 + s->mb_y * 8 * s->uvlinesize, c->scratchpad,     s->uvlinesize, 8);
+        dmin_sum += c->mb_cmp[1](s, s->new_pic->data[2] + s->mb_x * 8 + s->mb_y * 8 * s->uvlinesize, c->scratchpad + 8, s->uvlinesize, 8);
     }
 
     c->pred_x= mx;
@@ -814,7 +814,7 @@ static int interlaced_search(MpegEncContext *s, int ref_index,
             mv_table[xy][0]= mx_i;
             mv_table[xy][1]= my_i;
 
-            if (s->mecc.me_sub_cmp[0] != s->mecc.mb_cmp[0]) {
+            if (c->me_sub_cmp[0] != c->mb_cmp[0]) {
                 int dxy;
 
                 //FIXME chroma ME
@@ -826,7 +826,7 @@ static int interlaced_search(MpegEncContext *s, int ref_index,
                 }else{
                     s->hdsp.put_pixels_tab       [size][dxy](c->scratchpad, ref    , stride, h);
                 }
-                dmin = s->mecc.mb_cmp[size](s, c->src[block][0], c->scratchpad, stride, h);
+                dmin = c->mb_cmp[size](s, c->src[block][0], c->scratchpad, stride, h);
                 dmin+= (mv_penalty[mx_i-c->pred_x] + mv_penalty[my_i-c->pred_y] + 1)*c->mb_penalty_factor;
             }else
                 dmin+= c->mb_penalty_factor; //field_select bits
@@ -1049,7 +1049,7 @@ void ff_estimate_p_frame_motion(MpegEncContext * s,
                 *(uint32_t*)(&c->scratchpad[i*s->linesize+12]) = mean;
             }
 
-            intra_score= s->mecc.mb_cmp[0](s, c->scratchpad, pix, s->linesize, 16);
+            intra_score= c->mb_cmp[0](s, c->scratchpad, pix, s->linesize, 16);
         }
         intra_score += c->mb_penalty_factor*16 + s->intra_penalty;
 
@@ -1236,7 +1236,7 @@ static inline int check_bidir_mv(MpegEncContext * s,
 
     fbmin = (mv_penalty_f[motion_fx-pred_fx] + mv_penalty_f[motion_fy-pred_fy])*c->mb_penalty_factor
            +(mv_penalty_b[motion_bx-pred_bx] + mv_penalty_b[motion_by-pred_by])*c->mb_penalty_factor
-           + s->mecc.mb_cmp[size](s, src_data[0], dest_y, stride, h); // FIXME new_pic
+           + c->mb_cmp[size](s, src_data[0], dest_y, stride, h); // FIXME new_pic
 
     if(c->avctx->mb_cmp&FF_CMP_CHROMA){
     }
diff --git a/libavcodec/motion_est.h b/libavcodec/motion_est.h
index feea9a473b..5547aeb8bc 100644
--- a/libavcodec/motion_est.h
+++ b/libavcodec/motion_est.h
@@ -84,6 +84,11 @@ typedef struct MotionEstContext {
     int64_t mb_var_sum_temp;
     int scene_change_score;
 
+    me_cmp_func me_pre_cmp[6];
+    me_cmp_func me_cmp[6];
+    me_cmp_func me_sub_cmp[6];
+    me_cmp_func mb_cmp[6];
+
     op_pixels_func(*hpel_put)[4];
     op_pixels_func(*hpel_avg)[4];
     qpel_mc_func(*qpel_put)[16];
@@ -110,7 +115,7 @@ static inline int ff_h263_round_chroma(int x)
  * Performs one-time initialization of the MotionEstContext.
  */
 int ff_me_init(MotionEstContext *c, struct AVCodecContext *avctx,
-               struct MECmpContext *mecc);
+               const struct MECmpContext *mecc);
 
 void ff_me_init_pic(struct MpegEncContext *s);
 
diff --git a/libavcodec/motion_est_template.c b/libavcodec/motion_est_template.c
index 1888697db7..b2701aa32e 100644
--- a/libavcodec/motion_est_template.c
+++ b/libavcodec/motion_est_template.c
@@ -64,8 +64,8 @@ static int hpel_motion_search(MpegEncContext * s,
 
  //FIXME factorize
 
-    cmp_sub        = s->mecc.me_sub_cmp[size];
-    chroma_cmp_sub = s->mecc.me_sub_cmp[size + 1];
+    cmp_sub        = c->me_sub_cmp[size];
+    chroma_cmp_sub = c->me_sub_cmp[size + 1];
 
     if(c->skip){ //FIXME move out of hpel?
         *mx_ptr = 0;
@@ -178,8 +178,8 @@ static inline int get_mb_score(MpegEncContext *s, int mx, int my,
 
  //FIXME factorize
 
-    cmp_sub        = s->mecc.mb_cmp[size];
-    chroma_cmp_sub = s->mecc.mb_cmp[size + 1];
+    cmp_sub        = c->mb_cmp[size];
+    chroma_cmp_sub = c->mb_cmp[size + 1];
 
     d= cmp(s, mx>>(qpel+1), my>>(qpel+1), mx&mask, my&mask, size, h, ref_index, src_index, cmp_sub, chroma_cmp_sub, flags);
     //FIXME check cbp before adding penalty for (0,0) vector
@@ -222,12 +222,12 @@ static int qpel_motion_search(MpegEncContext * s,
     LOAD_COMMON
     int flags= c->sub_flags;
 
-    cmpf        = s->mecc.me_cmp[size];
-    chroma_cmpf = s->mecc.me_cmp[size + 1]; // FIXME: factorize
+    cmpf        = c->me_cmp[size];
+    chroma_cmpf = c->me_cmp[size + 1]; // FIXME: factorize
  //FIXME factorize
 
-    cmp_sub        = s->mecc.me_sub_cmp[size];
-    chroma_cmp_sub = s->mecc.me_sub_cmp[size + 1];
+    cmp_sub        = c->me_sub_cmp[size];
+    chroma_cmp_sub = c->me_sub_cmp[size + 1];
 
     if(c->skip){ //FIXME somehow move up (benchmark)
         *mx_ptr = 0;
@@ -424,8 +424,8 @@ static av_always_inline int small_diamond_search(MpegEncContext * s, int *best,
     LOAD_COMMON2
     unsigned map_generation = c->map_generation;
 
-    cmpf        = s->mecc.me_cmp[size];
-    chroma_cmpf = s->mecc.me_cmp[size + 1];
+    cmpf        = c->me_cmp[size];
+    chroma_cmpf = c->me_cmp[size + 1];
 
     { /* ensure that the best point is in the MAP as h/qpel refinement needs it */
         const unsigned key = ((unsigned)best[1]<<ME_MAP_MV_BITS) + best[0] + map_generation;
@@ -465,8 +465,8 @@ static int funny_diamond_search(MpegEncContext * s, int *best, int dmin,
     LOAD_COMMON2
     unsigned map_generation = c->map_generation;
 
-    cmpf        = s->mecc.me_cmp[size];
-    chroma_cmpf = s->mecc.me_cmp[size + 1];
+    cmpf        = c->me_cmp[size];
+    chroma_cmpf = c->me_cmp[size + 1];
 
     for(dia_size=1; dia_size<=4; dia_size++){
         int dir;
@@ -508,8 +508,8 @@ static int hex_search(MpegEncContext * s, int *best, int dmin,
     int x,y,d;
     const int dec= dia_size & (dia_size-1);
 
-    cmpf        = s->mecc.me_cmp[size];
-    chroma_cmpf = s->mecc.me_cmp[size + 1];
+    cmpf        = c->me_cmp[size];
+    chroma_cmpf = c->me_cmp[size + 1];
 
     for(;dia_size; dia_size= dec ? dia_size-1 : dia_size>>1){
         do{
@@ -545,8 +545,8 @@ static int l2s_dia_search(MpegEncContext * s, int *best, int dmin,
     static const int hex[8][2]={{-2, 0}, {-1,-1}, { 0,-2}, { 1,-1},
                                 { 2, 0}, { 1, 1}, { 0, 2}, {-1, 1}};
 
-    cmpf        = s->mecc.me_cmp[size];
-    chroma_cmpf = s->mecc.me_cmp[size + 1];
+    cmpf        = c->me_cmp[size];
+    chroma_cmpf = c->me_cmp[size + 1];
 
     for(; dia_size; dia_size= dec ? dia_size-1 : dia_size>>1){
         do{
@@ -584,8 +584,8 @@ static int umh_search(MpegEncContext * s, int *best, int dmin,
                                  {-2, 3}, { 0, 4}, { 2, 3},
                                  {-2,-3}, { 0,-4}, { 2,-3},};
 
-    cmpf        = s->mecc.me_cmp[size];
-    chroma_cmpf = s->mecc.me_cmp[size + 1];
+    cmpf        = c->me_cmp[size];
+    chroma_cmpf = c->me_cmp[size + 1];
 
     x= best[0];
     y= best[1];
@@ -627,8 +627,8 @@ static int full_search(MpegEncContext * s, int *best, int dmin,
     int x,y, d;
     const int dia_size= c->dia_size&0xFF;
 
-    cmpf        = s->mecc.me_cmp[size];
-    chroma_cmpf = s->mecc.me_cmp[size + 1];
+    cmpf        = c->me_cmp[size];
+    chroma_cmpf = c->me_cmp[size + 1];
 
     for(y=FFMAX(-dia_size, ymin); y<=FFMIN(dia_size,ymax); y++){
         for(x=FFMAX(-dia_size, xmin); x<=FFMIN(dia_size,xmax); x++){
@@ -693,8 +693,8 @@ static int sab_diamond_search(MpegEncContext * s, int *best, int dmin,
 
     av_assert1(minima_count <= MAX_SAB_SIZE);
 
-    cmpf        = s->mecc.me_cmp[size];
-    chroma_cmpf = s->mecc.me_cmp[size + 1];
+    cmpf        = c->me_cmp[size];
+    chroma_cmpf = c->me_cmp[size + 1];
 
     /*Note j<MAX_SAB_SIZE is needed if MAX_SAB_SIZE < ME_MAP_SIZE as j can
       become larger due to MVs overflowing their ME_MAP_MV_BITS bits space in map
@@ -779,8 +779,8 @@ static int var_diamond_search(MpegEncContext * s, int *best, int dmin,
     LOAD_COMMON2
     unsigned map_generation = c->map_generation;
 
-    cmpf        = s->mecc.me_cmp[size];
-    chroma_cmpf = s->mecc.me_cmp[size + 1];
+    cmpf        = c->me_cmp[size];
+    chroma_cmpf = c->me_cmp[size + 1];
 
     for(dia_size=1; dia_size<=c->dia_size; dia_size++){
         int dir, start, end;
@@ -880,12 +880,12 @@ static av_always_inline int epzs_motion_search_internal(MpegEncContext * s, int
 
     if(c->pre_pass){
         penalty_factor= c->pre_penalty_factor;
-        cmpf           = s->mecc.me_pre_cmp[size];
-        chroma_cmpf    = s->mecc.me_pre_cmp[size + 1];
+        cmpf           = c->me_pre_cmp[size];
+        chroma_cmpf    = c->me_pre_cmp[size + 1];
     }else{
         penalty_factor= c->penalty_factor;
-        cmpf           = s->mecc.me_cmp[size];
-        chroma_cmpf    = s->mecc.me_cmp[size + 1];
+        cmpf           = c->me_cmp[size];
+        chroma_cmpf    = c->me_cmp[size + 1];
     }
 
     map_generation= update_map_generation(c);
@@ -1008,8 +1008,8 @@ static int epzs_motion_search2(MpegEncContext * s,
     int flags= c->flags;
     LOAD_COMMON2
 
-    cmpf        = s->mecc.me_cmp[size];
-    chroma_cmpf = s->mecc.me_cmp[size + 1];
+    cmpf        = c->me_cmp[size];
+    chroma_cmpf = c->me_cmp[size + 1];
 
     map_generation= update_map_generation(c);
 
diff --git a/libavcodec/snowenc.c b/libavcodec/snowenc.c
index f3c78cfb21..9d64b1efe2 100644
--- a/libavcodec/snowenc.c
+++ b/libavcodec/snowenc.c
@@ -832,12 +832,12 @@ static int get_block_rd(SnowEncContext *enc, int mb_x, int mb_y,
             distortion = 0;
             for(i=0; i<4; i++){
                 int off = sx+16*(i&1) + (sy+16*(i>>1))*ref_stride;
-                distortion += enc->mecc.me_cmp[0](&enc->m, src + off, dst + off, ref_stride, 16);
+                distortion += enc->m.me.me_cmp[0](&enc->m, src + off, dst + off, ref_stride, 16);
             }
         }
     }else{
         av_assert2(block_w==8);
-        distortion = enc->mecc.me_cmp[0](&enc->m, src + sx + sy*ref_stride, dst + sx + sy*ref_stride, ref_stride, block_w*2);
+        distortion = enc->m.me.me_cmp[0](&enc->m, src + sx + sy*ref_stride, dst + sx + sy*ref_stride, ref_stride, block_w*2);
     }
 
     if(plane_index==0){
@@ -903,7 +903,7 @@ static int get_4block_rd(SnowEncContext *enc, int mb_x, int mb_y, int plane_inde
         }
 
         av_assert1(block_w== 8 || block_w==16);
-        distortion += enc->mecc.me_cmp[block_w==8](&enc->m, src + x + y*ref_stride, dst + x + y*ref_stride, ref_stride, block_h);
+        distortion += enc->m.me.me_cmp[block_w==8](&enc->m, src + x + y*ref_stride, dst + x + y*ref_stride, ref_stride, block_h);
     }
 
     if(plane_index==0){
diff --git a/tests/checkasm/motion.c b/tests/checkasm/motion.c
index e7a36bbbda..2bf49afc77 100644
--- a/tests/checkasm/motion.c
+++ b/tests/checkasm/motion.c
@@ -94,10 +94,6 @@ static void test_motion(const char *name, me_cmp_func test_func)
     XX(vsad)                                                                   \
     XX(vsse)                                                                   \
     XX(nsse)                                                                   \
-    XX(me_pre_cmp)                                                             \
-    XX(me_cmp)                                                                 \
-    XX(me_sub_cmp)                                                             \
-    XX(mb_cmp)                                                                 \
     XX(ildct_cmp)                                                              \
     XX(frame_skip_cmp)                                                         \
     XX(median_sad)
-- 
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-12 13:53 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 ` Andreas Rheinhardt [this message]
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 ` [FFmpeg-devel] [PATCH 59/67] avcodec/h261dec: Unquantize coefficients while parsing them Andreas Rheinhardt
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=GV1P250MB0737577BFF3D9C12ED57691E8FC02@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