On Wed, Mar 26, 2014 at 05:48:53PM +0100, Vittorio Giovara wrote:
> --- a/configure
> +++ b/configure
> @@ -1846,6 +1846,7 @@ vp5_decoder_select="h264chroma hpeldsp videodsp vp3dsp"
>  vp6_decoder_select="h264chroma hpeldsp huffman videodsp vp3dsp"
>  vp6a_decoder_select="vp6_decoder"
>  vp6f_decoder_select="vp6_decoder"
> +vp7_decoder_select="h264pred videodsp"
>  vp8_decoder_select="h264pred videodsp"

How much code is actually shared?  It might make sense to have one decoder
select the other.

> --- a/libavcodec/arm/vp8dsp_init_neon.c
> +++ b/libavcodec/arm/vp8dsp_init_neon.c
> @@ -39,9 +39,65 @@ VP8_BILIN(16, neon);
>  
>  av_cold void ff_vp8dsp_init_neon(VP8DSPContext *dsp)
>  {
> -    dsp->vp8_luma_dc_wht    = ff_vp8_luma_dc_wht_neon;
> +    dsp->vp8_luma_dc_wht = ff_vp8_luma_dc_wht_neon;

stray change

> --- a/libavcodec/vp8.c
> +++ b/libavcodec/vp8.c
> @@ -291,6 +338,54 @@ static VP56Frame ref_to_update(VP8Context *s, int 
> update, VP56Frame ref)
> @@ -302,10 +397,188 @@ static void update_refs(VP8Context *s)
> +static int vp7_decode_frame_header(VP8Context *s, const uint8_t *buf, int 
> buf_size)
> +{
> +    VP56RangeCoder *c = &s->c;
> +    int part1_size, hscale, vscale, i, j, ret;
> +    int width  = s->avctx->width;
> +    int height = s->avctx->height;
> +
> +    s->profile   =  (buf[0]>>1) & 7;

spaces around >>

> +        s->update_golden = s->update_altref = VP56_FRAME_CURRENT;
> +        vp78_reset_probability_tables(s);
> +        memcpy(s->prob->pred16x16, vp8_pred16x16_prob_inter, 
> sizeof(s->prob->pred16x16));
> +        memcpy(s->prob->pred8x8c , vp8_pred8x8c_prob_inter , 
> sizeof(s->prob->pred8x8c));

spaces before ,

> +    s->segmentation.enabled = 0;
> +    s->segmentation.update_map = 0;
> +    s->lf_delta.enabled = 0;

align

> +    /* D. Golden frame update flag (a Flag) for interframes only */
> +    if (!s->keyframe) {
> +        s->update_golden = vp8_rac_get(c) ? VP56_FRAME_CURRENT : 
> VP56_FRAME_NONE;
> +        s->sign_bias[VP56_FRAME_GOLDEN] = 0;
> +    }
> +
> +    s->update_last = 1;
> +    s->update_probabilities = 1;
> +    s->fade_present         = 1;

ditto

> +            dst = prev_frame->tf.f->data[0];
> +            linesize = prev_frame->tf.f->linesize[0];

again

> @@ -904,14 +1331,12 @@ void decode_mb_coeffs(VP8Context *s, VP8ThreadData 
> *td, VP56RangeCoder *c,
> -                nnz_pred = l_nnz[i + 2 * y] + t_nnz[i + 2 * x];
> -                nnz      = decode_block_coeffs(c, td->block[i][(y << 1) + x],
> -                                               s->prob->token[2],
> -                                               0, nnz_pred,
> -                                               s->qmat[segment].chroma_qmul);
> -                td->non_zero_count_cache[i][(y << 1) + x] = nnz;
> -                t_nnz[i + 2 * x] = l_nnz[i + 2 * y] = !!nnz;
> -                nnz_total       += nnz;
> +                nnz_pred = l_nnz[i+2*y] + t_nnz[i+2*x];
> +                nnz = decode_block_coeffs(c, td->block[i][(y<<1)+x], 
> s->prob->token[2], 0,
> +                                          nnz_pred, 
> s->qmat[segment].chroma_qmul, s->prob[0].scan, is_vp7);
> +                td->non_zero_count_cache[i][(y<<1)+x] = nnz;
> +                t_nnz[i+2*x] = l_nnz[i+2*y] = !!nnz;

lots of missing spaces around operators

> @@ -1094,19 +1522,18 @@ void intra_predict(VP8Context *s, VP8ThreadData *td, 
> uint8_t *dst[3],
> -                        copy_dst[3] = 127U;
> -                        AV_WN32A(copy_dst + 4, 127U * 0x01010101U);
> +                        copy_dst[3] = lo;
> +                        AV_WN32A(copy_dst+4, lo * 0x01010101U);

again

> @@ -1578,20 +2022,22 @@ void filter_mb(VP8Context *s, uint8_t *dst[3], 
> VP8FilterStrength *f,
>      }
>  
>      if (inner_filter) {
> -        s->vp8dsp.vp8_v_loop_filter16y_inner(dst[0] + 4 * linesize,
> -                                             linesize, bedge_lim,
> +        s->vp8dsp.vp8_v_loop_filter16y_inner(dst[0]+ 4*linesize,
> +                                             linesize,    bedge_lim_y,
>                                               inner_limit, hev_thresh);
> -        s->vp8dsp.vp8_v_loop_filter16y_inner(dst[0] + 8 * linesize,
> -                                             linesize, bedge_lim,
> +        s->vp8dsp.vp8_v_loop_filter16y_inner(dst[0]+ 8*linesize,
> +                                             linesize,    bedge_lim_y,
>                                               inner_limit, hev_thresh);
> -        s->vp8dsp.vp8_v_loop_filter16y_inner(dst[0] + 12 * linesize,
> -                                             linesize, bedge_lim,
> +        s->vp8dsp.vp8_v_loop_filter16y_inner(dst[0]+12*linesize,
> +                                             linesize,    bedge_lim_y,

same

Also, these look like half stray changes.

> @@ -1888,12 +2339,11 @@ static int vp8_decode_mb_row_sliced(AVCodecContext 
> *avctx, void *tdata,
>      td->thread_nr = threadnr;
>      for (mb_y = jobnr; mb_y < s->mb_height; mb_y += num_jobs) {
> -        if (mb_y >= s->mb_height)
> -            break;
> -        td->thread_mb_pos = mb_y << 16;
> +        if (mb_y >= s->mb_height) break;
> +        td->thread_mb_pos = mb_y<<16;

This was better before, please no stray changes.

> --- a/libavcodec/vp8data.h
> +++ b/libavcodec/vp8data.h
> @@ -51,6 +58,63 @@ static const int8_t vp8_pred16x16_tree_inter[4][2] = {
>  
> +typedef struct {
> +    int8_t yoffset;
> +    int8_t xoffset;
> +    uint8_t subblock;
> +    uint8_t score;
> +} VP7MVPred;

Please no more anonymous structs.

> @@ -121,7 +189,6 @@ static const uint8_t vp8_pred8x8c_prob_intra[3] = {
>  static const uint8_t vp8_pred8x8c_prob_inter[3] = {
>      162, 101, 204
>  };
> -
>  static const uint8_t vp8_pred4x4_prob_inter[9] = {
>      120, 90, 79, 133, 87, 85, 80, 111, 151
>  };

stray change

> --- a/libavcodec/vp8dsp.c
> +++ b/libavcodec/vp8dsp.c
> @@ -348,7 +482,7 @@ PUT_PIXELS(4)
>      cm[(F[2] * src[x + 0 * stride] - F[1] * src[x - 1 * stride] +            
>  \
>          F[3] * src[x + 1 * stride] - F[4] * src[x + 2 * stride] + 64) >> 7]
>  
> -#define VP8_EPEL_H(SIZE, TAPS)                                               
>  \
> +#define VP8_EPEL_H(SIZE, TAPS) \
>      static void put_vp8_epel ## SIZE ## _h ## TAPS ## _c(uint8_t *dst,       
>  \
>                                                           ptrdiff_t 
> dststride, \
>                                                           uint8_t *src,       
>  \
> @@ -397,7 +531,6 @@ PUT_PIXELS(4)
>          uint8_t tmp_array[(2 * SIZE + VTAPS - 1) * SIZE];                    
>  \
>          uint8_t *tmp = tmp_array;                                            
>  \
>          src -= (2 - (VTAPS == 4)) * srcstride;                               
>  \
> -                                                                             
>  \
>          for (y = 0; y < h + VTAPS - 1; y++) {                                
>  \
>              for (x = 0; x < SIZE; x++)                                       
>  \
>                  tmp[x] = FILTER_ ## HTAPS ## TAP(src, filter, 1);            
>  \
> @@ -406,7 +539,6 @@ PUT_PIXELS(4)
>          }                                                                    
>  \
>          tmp    = tmp_array + (2 - (VTAPS == 4)) * SIZE;                      
>  \
>          filter = subpel_filters[my - 1];                                     
>  \
> -                                                                             
>  \
>          for (y = 0; y < h; y++) {                                            
>  \
>              for (x = 0; x < SIZE; x++)                                       
>  \
>                  dst[x] = FILTER_ ## VTAPS ## TAP(tmp, filter, SIZE);         
>  \
> @@ -441,7 +573,7 @@ VP8_EPEL_HV(16, 6, 6)
>  VP8_EPEL_HV( 8, 6, 6)
>  VP8_EPEL_HV( 4, 6, 6)
>  
> -#define VP8_BILINEAR(SIZE)                                                   
>  \
> +#define VP8_BILINEAR(SIZE) \
>      static void put_vp8_bilinear ## SIZE ## _h_c(uint8_t *dst, ptrdiff_t 
> dstride, \
>                                                   uint8_t *src, ptrdiff_t 
> sstride, \
>                                                   int h, int mx, int my)      
>  \
> @@ -496,7 +628,7 @@ VP8_BILINEAR(16)
>  VP8_BILINEAR(8)
>  VP8_BILINEAR(4)
>  
> -#define VP8_MC_FUNC(IDX, SIZE) \
> +#define VP8_MC_FUNC(IDX, SIZE)                                               
>  \
>      dsp->put_vp8_epel_pixels_tab[IDX][0][0] = put_vp8_pixels ## SIZE ## _c;  
>  \
>      dsp->put_vp8_epel_pixels_tab[IDX][0][1] = put_vp8_epel ## SIZE ## _h4_c; 
>  \
>      dsp->put_vp8_epel_pixels_tab[IDX][0][2] = put_vp8_epel ## SIZE ## _h6_c; 
>  \
> @@ -507,7 +639,7 @@ VP8_BILINEAR(4)
>      dsp->put_vp8_epel_pixels_tab[IDX][2][1] = put_vp8_epel ## SIZE ## 
> _h4v6_c; \
>      dsp->put_vp8_epel_pixels_tab[IDX][2][2] = put_vp8_epel ## SIZE ## _h6v6_c
>  
> -#define VP8_BILINEAR_MC_FUNC(IDX, SIZE) \
> +#define VP8_BILINEAR_MC_FUNC(IDX, SIZE)                                      
>  \
>      dsp->put_vp8_bilinear_pixels_tab[IDX][0][0] = put_vp8_pixels ## SIZE ## 
> _c; \
>      dsp->put_vp8_bilinear_pixels_tab[IDX][0][1] = put_vp8_bilinear ## SIZE 
> ## _h_c; \
>      dsp->put_vp8_bilinear_pixels_tab[IDX][0][2] = put_vp8_bilinear ## SIZE 
> ## _h_c; \

Please self-review for stray changes.

> @@ -518,27 +650,35 @@ VP8_BILINEAR(4)
>  
> -av_cold void ff_vp8dsp_init(VP8DSPContext *dsp)
> +av_cold void ff_vp8dsp_init(VP8DSPContext *dsp, int vp7)

Why don't you split the dsp stuff in two and call just one or both of
ff_vp8dsp_init() and ff_vp8dsp_init()?

> --- a/libavcodec/x86/vp8dsp_init.c
> +++ b/libavcodec/x86/vp8dsp_init.c
> @@ -324,9 +374,10 @@ av_cold void ff_vp8dsp_init_x86(VP8DSPContext* c)
>          c->vp8_idct_dc_add    = ff_vp8_idct_dc_add_mmx;
>          c->vp8_idct_dc_add4uv = ff_vp8_idct_dc_add4uv_mmx;
>  #if ARCH_X86_32
> -        c->vp8_idct_dc_add4y  = ff_vp8_idct_dc_add4y_mmx;
> -        c->vp8_idct_add       = ff_vp8_idct_add_mmx;
> -        c->vp8_luma_dc_wht    = ff_vp8_luma_dc_wht_mmx;
> +        c->vp8_idct_dc_add4y = ff_vp8_idct_dc_add4y_mmx;
> +        c->vp8_idct_add      = ff_vp8_idct_add_mmx;
> +        c->vp8_luma_dc_wht   = ff_vp8_luma_dc_wht_mmx;

stray changes

> @@ -342,10 +393,10 @@ av_cold void ff_vp8dsp_init_x86(VP8DSPContext* c)
>          c->vp8_v_loop_filter8uv_inner = ff_vp8_v_loop_filter8uv_inner_mmx;
>          c->vp8_h_loop_filter8uv_inner = ff_vp8_h_loop_filter8uv_inner_mmx;
>  
> -        c->vp8_v_loop_filter16y       = ff_vp8_v_loop_filter16y_mbedge_mmx;
> -        c->vp8_h_loop_filter16y       = ff_vp8_h_loop_filter16y_mbedge_mmx;
> -        c->vp8_v_loop_filter8uv       = ff_vp8_v_loop_filter8uv_mbedge_mmx;
> -        c->vp8_h_loop_filter8uv       = ff_vp8_h_loop_filter8uv_mbedge_mmx;
> +        c->vp8_v_loop_filter16y = ff_vp8_v_loop_filter16y_mbedge_mmx;
> +        c->vp8_h_loop_filter16y = ff_vp8_h_loop_filter16y_mbedge_mmx;
> +        c->vp8_v_loop_filter8uv = ff_vp8_v_loop_filter8uv_mbedge_mmx;
> +        c->vp8_h_loop_filter8uv = ff_vp8_h_loop_filter8uv_mbedge_mmx;

same

> @@ -360,24 +411,24 @@ av_cold void ff_vp8dsp_init_x86(VP8DSPContext* c)
>  
> -        c->vp8_v_loop_filter_simple   = ff_vp8_v_loop_filter_simple_mmxext;
> -        c->vp8_h_loop_filter_simple   = ff_vp8_h_loop_filter_simple_mmxext;
> +        c->vp8_v_loop_filter_simple = ff_vp8_v_loop_filter_simple_mmxext;
> +        c->vp8_h_loop_filter_simple = ff_vp8_h_loop_filter_simple_mmxext;
>  
>          c->vp8_v_loop_filter16y_inner = ff_vp8_v_loop_filter16y_inner_mmxext;
>          c->vp8_h_loop_filter16y_inner = ff_vp8_h_loop_filter16y_inner_mmxext;
>          c->vp8_v_loop_filter8uv_inner = ff_vp8_v_loop_filter8uv_inner_mmxext;
>          c->vp8_h_loop_filter8uv_inner = ff_vp8_h_loop_filter8uv_inner_mmxext;
>  
> -        c->vp8_v_loop_filter16y       = 
> ff_vp8_v_loop_filter16y_mbedge_mmxext;
> -        c->vp8_h_loop_filter16y       = 
> ff_vp8_h_loop_filter16y_mbedge_mmxext;
> -        c->vp8_v_loop_filter8uv       = 
> ff_vp8_v_loop_filter8uv_mbedge_mmxext;
> -        c->vp8_h_loop_filter8uv       = 
> ff_vp8_h_loop_filter8uv_mbedge_mmxext;
> +        c->vp8_v_loop_filter16y = ff_vp8_v_loop_filter16y_mbedge_mmxext;
> +        c->vp8_h_loop_filter16y = ff_vp8_h_loop_filter16y_mbedge_mmxext;
> +        c->vp8_v_loop_filter8uv = ff_vp8_v_loop_filter8uv_mbedge_mmxext;
> +        c->vp8_h_loop_filter8uv = ff_vp8_h_loop_filter8uv_mbedge_mmxext;
>  #endif
>      }
>  
>      if (EXTERNAL_SSE(cpu_flags)) {
> -        c->vp8_idct_add                         = ff_vp8_idct_add_sse;
> -        c->vp8_luma_dc_wht                      = ff_vp8_luma_dc_wht_sse;
> +        c->vp8_idct_add    = ff_vp8_idct_add_sse;
> +        c->vp8_luma_dc_wht = ff_vp8_luma_dc_wht_sse;
>          c->put_vp8_epel_pixels_tab[0][0][0]     =
>          c->put_vp8_bilinear_pixels_tab[0][0][0] = ff_put_vp8_pixels16_sse;

more

> @@ -393,20 +444,20 @@ av_cold void ff_vp8dsp_init_x86(VP8DSPContext* c)
>          c->vp8_v_loop_filter16y_inner = ff_vp8_v_loop_filter16y_inner_sse2;
>          c->vp8_v_loop_filter8uv_inner = ff_vp8_v_loop_filter8uv_inner_sse2;
>  
> -        c->vp8_v_loop_filter16y       = ff_vp8_v_loop_filter16y_mbedge_sse2;
> -        c->vp8_v_loop_filter8uv       = ff_vp8_v_loop_filter8uv_mbedge_sse2;
> +        c->vp8_v_loop_filter16y = ff_vp8_v_loop_filter16y_mbedge_sse2;
> +        c->vp8_v_loop_filter8uv = ff_vp8_v_loop_filter8uv_mbedge_sse2;
>      }
>  
>      if (EXTERNAL_SSE2(cpu_flags)) {
> -        c->vp8_idct_dc_add4y          = ff_vp8_idct_dc_add4y_sse2;
> +        c->vp8_idct_dc_add4y = ff_vp8_idct_dc_add4y_sse2;
>  
>          c->vp8_h_loop_filter_simple = ff_vp8_h_loop_filter_simple_sse2;
>  
>          c->vp8_h_loop_filter16y_inner = ff_vp8_h_loop_filter16y_inner_sse2;
>          c->vp8_h_loop_filter8uv_inner = ff_vp8_h_loop_filter8uv_inner_sse2;
>  
> -        c->vp8_h_loop_filter16y       = ff_vp8_h_loop_filter16y_mbedge_sse2;
> -        c->vp8_h_loop_filter8uv       = ff_vp8_h_loop_filter8uv_mbedge_sse2;
> +        c->vp8_h_loop_filter16y = ff_vp8_h_loop_filter16y_mbedge_sse2;
> +        c->vp8_h_loop_filter8uv = ff_vp8_h_loop_filter8uv_mbedge_sse2;
>      }
>  
>      if (EXTERNAL_SSSE3(cpu_flags)) {
> @@ -425,18 +476,18 @@ av_cold void ff_vp8dsp_init_x86(VP8DSPContext* c)
>          c->vp8_v_loop_filter8uv_inner = ff_vp8_v_loop_filter8uv_inner_ssse3;
>          c->vp8_h_loop_filter8uv_inner = ff_vp8_h_loop_filter8uv_inner_ssse3;
>  
> -        c->vp8_v_loop_filter16y       = ff_vp8_v_loop_filter16y_mbedge_ssse3;
> -        c->vp8_h_loop_filter16y       = ff_vp8_h_loop_filter16y_mbedge_ssse3;
> -        c->vp8_v_loop_filter8uv       = ff_vp8_v_loop_filter8uv_mbedge_ssse3;
> -        c->vp8_h_loop_filter8uv       = ff_vp8_h_loop_filter8uv_mbedge_ssse3;
> +        c->vp8_v_loop_filter16y = ff_vp8_v_loop_filter16y_mbedge_ssse3;
> +        c->vp8_h_loop_filter16y = ff_vp8_h_loop_filter16y_mbedge_ssse3;
> +        c->vp8_v_loop_filter8uv = ff_vp8_v_loop_filter8uv_mbedge_ssse3;
> +        c->vp8_h_loop_filter8uv = ff_vp8_h_loop_filter8uv_mbedge_ssse3;
>      }
>  
>      if (EXTERNAL_SSE4(cpu_flags)) {
> -        c->vp8_idct_dc_add                  = ff_vp8_idct_dc_add_sse4;
> +        c->vp8_idct_dc_add = ff_vp8_idct_dc_add_sse4;
>  
> -        c->vp8_h_loop_filter_simple   = ff_vp8_h_loop_filter_simple_sse4;
> -        c->vp8_h_loop_filter16y       = ff_vp8_h_loop_filter16y_mbedge_sse4;
> -        c->vp8_h_loop_filter8uv       = ff_vp8_h_loop_filter8uv_mbedge_sse4;
> +        c->vp8_h_loop_filter_simple = ff_vp8_h_loop_filter_simple_sse4;
> +        c->vp8_h_loop_filter16y     = ff_vp8_h_loop_filter16y_mbedge_sse4;
> +        c->vp8_h_loop_filter8uv     = ff_vp8_h_loop_filter8uv_mbedge_sse4;

.. and more ..

Diego
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to