2019-01-13 21:02 GMT+01:00, Peter Ross <pr...@xvid.org>: > --- > libavcodec/vp56.c | 10 ++++++++++ > libavcodec/vp56.h | 1 + > libavcodec/vp56dsp.c | 19 ------------------- > 3 files changed, 11 insertions(+), 19 deletions(-) > > diff --git a/libavcodec/vp56.c b/libavcodec/vp56.c > index 27b4b8b944..c5c5a9fb65 100644 > --- a/libavcodec/vp56.c > +++ b/libavcodec/vp56.c > @@ -33,6 +33,8 @@ > > void ff_vp56_init_dequant(VP56Context *s, int quantizer) > { > + if (s->quantizer != quantizer) > + ff_vp3dsp_set_bounding_values(s->bounding_values_array, > ff_vp56_filter_threshold[quantizer]); > s->quantizer = quantizer; > s->dequant_dc = ff_vp56_dc_dequant[quantizer] << 2; > s->dequant_ac = ff_vp56_ac_dequant[quantizer] << 2; > @@ -320,9 +322,17 @@ static void vp56_add_predictors_dc(VP56Context *s, > VP56Frame ref_frame) > static void vp56_deblock_filter(VP56Context *s, uint8_t *yuv, > ptrdiff_t stride, int dx, int dy) > { > + if (s->avctx->codec->id == AV_CODEC_ID_VP5) { > int t = ff_vp56_filter_threshold[s->quantizer]; > if (dx) s->vp56dsp.edge_filter_hor(yuv + 10-dx , stride, t); > if (dy) s->vp56dsp.edge_filter_ver(yuv + stride*(10-dy), stride, t); > + } else { > + int * bounding_values = s->bounding_values_array + 127; > + if (dx) > + ff_vp4_h_loop_filter_12_c(yuv + 10-dx, stride, > bounding_values); > + if (dy) > + ff_vp4_v_loop_filter_12_c(yuv + stride*(10-dy), stride, > bounding_values); > + } > }
This is your code now but I wonder why it helps not to merge this with 1/6. > static void vp56_mc(VP56Context *s, int b, int plane, uint8_t *src, > diff --git a/libavcodec/vp56.h b/libavcodec/vp56.h > index 70e1d38a83..9b3036895c 100644 > --- a/libavcodec/vp56.h > +++ b/libavcodec/vp56.h > @@ -170,6 +170,7 @@ struct vp56_context { > int filter_mode; > int max_vector_length; > int sample_variance_threshold; > + DECLARE_ALIGNED(8, int, bounding_values_array)[256]; > > uint8_t coeff_ctx[4][64]; /* used in vp5 only */ > uint8_t coeff_ctx_last[4]; /* used in vp5 only */ > diff --git a/libavcodec/vp56dsp.c b/libavcodec/vp56dsp.c > index 9f299dc60f..e8d93d6680 100644 > --- a/libavcodec/vp56dsp.c > +++ b/libavcodec/vp56dsp.c > @@ -72,27 +72,8 @@ av_cold void ff_vp5dsp_init(VP56DSPContext *s) > #endif /* CONFIG_VP5_DECODER */ > > #if CONFIG_VP6_DECODER > -static int vp6_adjust(int v, int t) > -{ > - int V = v, s = v >> 31; > - V ^= s; > - V -= s; > - if (V-t-1 >= (unsigned)(t-1)) > - return v; > - V = 2*t - V; > - V += s; > - V ^= s; > - return V; > -} > - > -VP56_EDGE_FILTER(vp6, hor, 1, stride) > -VP56_EDGE_FILTER(vp6, ver, stride, 1) > - > av_cold void ff_vp6dsp_init(VP56DSPContext *s) > { > - s->edge_filter_hor = vp6_edge_filter_hor; > - s->edge_filter_ver = vp6_edge_filter_ver; And why are the new functions called "_c" but are not part of the context? (Or do I misread the code?) Carl Eugen _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel