[FFmpeg-cvslog] r23783 - in trunk/libavcodec: h264pred.c h264pred.h x86/Makefile x86/dsputil_mmx.c x86/dsputil_mmx.h x86/h264_intrapred.asm x86/h264dsp_mmx.c

Måns Rullgård mans
Mon Jun 28 11:55:03 CEST 2010


Martin Storsj? <martin at martin.st> writes:

> On Fri, 25 Jun 2010, darkshikari wrote:
>
>> +void ff_h264_pred_init_x86(H264PredContext *h, int codec_id)
>> +{
>> +#if HAVE_YASM
>> +    if (mm_flags & FF_MM_MMX) {
>> +        h->pred16x16[VERT_PRED8x8] = ff_pred16x16_vertical_mmx;
>> +        h->pred16x16[HOR_PRED8x8 ] = ff_pred16x16_horizontal_mmx;
>> +        h->pred16x16[DC_PRED8x8  ] = ff_pred16x16_dc_mmx;
>> +        h->pred8x8  [VERT_PRED8x8] = ff_pred8x8_vertical_mmx;
>> +        h->pred8x8  [HOR_PRED8x8 ] = ff_pred8x8_horizontal_mmx;
>> +        if (codec_id == CODEC_ID_VP8) {
>> +            h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_tm_vp8_mmx;
>> +            h->pred8x8  [DC_PRED8x8   ] = ff_pred8x8_dc_rv40_mmx;
>> +            h->pred8x8  [PLANE_PRED8x8] = ff_pred8x8_tm_vp8_mmx;
>> +        }
>> +    }
>> +
>> +    if (mm_flags & FF_MM_MMXEXT) {
>> +        h->pred16x16[HOR_PRED8x8 ] = ff_pred16x16_horizontal_mmxext;
>> +        h->pred16x16[DC_PRED8x8  ] = ff_pred16x16_dc_mmxext;
>> +        h->pred8x8  [HOR_PRED8x8 ] = ff_pred8x8_horizontal_mmxext;
>> +        if (codec_id == CODEC_ID_VP8) {
>> +            h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_tm_vp8_mmxext;
>> +            h->pred8x8  [DC_PRED8x8   ] = ff_pred8x8_dc_rv40_mmxext;
>> +            h->pred8x8  [PLANE_PRED8x8] = ff_pred8x8_tm_vp8_mmxext;
>> +        }
>> +    }
>> +
>> +    if (mm_flags & FF_MM_SSE) {
>> +        h->pred16x16[VERT_PRED8x8] = ff_pred16x16_vertical_sse;
>> +        h->pred16x16[DC_PRED8x8  ] = ff_pred16x16_dc_sse;
>> +    }
>> +
>> +    if (mm_flags & FF_MM_SSE2) {
>> +        h->pred16x16[DC_PRED8x8  ] = ff_pred16x16_dc_sse2;
>> +        if (codec_id == CODEC_ID_VP8) {
>> +            h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_tm_vp8_sse2;
>> +            h->pred8x8  [PLANE_PRED8x8] = ff_pred8x8_tm_vp8_sse2;
>> +        }
>> +    }
>> +
>> +    if (mm_flags & FF_MM_SSSE3) {
>> +        h->pred16x16[HOR_PRED8x8 ] = ff_pred16x16_horizontal_ssse3;
>> +        h->pred16x16[DC_PRED8x8  ] = ff_pred16x16_dc_ssse3;
>> +        h->pred8x8  [HOR_PRED8x8 ] = ff_pred8x8_horizontal_ssse3;
>> +        if (codec_id == CODEC_ID_VP8) {
>> +            h->pred8x8  [PLANE_PRED8x8] = ff_pred8x8_tm_vp8_ssse3;
>> +        }
>> +    }
>> +#endif
>> +}
>
> This broke compilation if CONFIG_H264DSP isn't enabled, e.g. with 
> --disable-everything --enable-decoder=<whatever that doesn't enable 
> h264dsp>. One way of unbreaking it is in the attached patch, but that's 
> not all that pretty.

dsputil_mmx.c is an awful file.  It needs to be sliced and diced and
rearranged in a more sensible way.  Any takers?

-- 
M?ns Rullg?rd
mans at mansr.com



More information about the ffmpeg-cvslog mailing list