mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
dsputil: set STRIDE_ALIGN to 16 for x86 also.
This fixes crashes in e.g. PNG decoding with SSE2 enabled. In fact, many x86 optimizations for codecs assume that our buffer strides are 16-byte aligned.
This commit is contained in:
parent
4ff6dea390
commit
9b027c0d07
@ -655,23 +655,9 @@ void ff_intrax8dsp_init(DSPContext* c, AVCodecContext *avctx);
|
||||
void ff_mlp_init(DSPContext* c, AVCodecContext *avctx);
|
||||
void ff_mlp_init_x86(DSPContext* c, AVCodecContext *avctx);
|
||||
|
||||
#if ARCH_ARM
|
||||
|
||||
#if HAVE_NEON
|
||||
#if (ARCH_ARM && HAVE_NEON) || ARCH_PPC || HAVE_MMI || HAVE_MMX
|
||||
# define STRIDE_ALIGN 16
|
||||
#endif
|
||||
|
||||
#elif ARCH_PPC
|
||||
|
||||
#define STRIDE_ALIGN 16
|
||||
|
||||
#elif HAVE_MMI
|
||||
|
||||
#define STRIDE_ALIGN 16
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef STRIDE_ALIGN
|
||||
#else
|
||||
# define STRIDE_ALIGN 8
|
||||
#endif
|
||||
|
||||
|
@ -234,18 +234,6 @@ void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height,
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
linesize_align[i] = STRIDE_ALIGN;
|
||||
//STRIDE_ALIGN is 8 for SSE* but this does not work for SVQ1 chroma planes
|
||||
//we could change STRIDE_ALIGN to 16 for x86/sse but it would increase the
|
||||
//picture size unneccessarily in some cases. The solution here is not
|
||||
//pretty and better ideas are welcome!
|
||||
#if HAVE_MMX
|
||||
if(s->codec_id == CODEC_ID_SVQ1 || s->codec_id == CODEC_ID_VP5 ||
|
||||
s->codec_id == CODEC_ID_VP6 || s->codec_id == CODEC_ID_VP6F ||
|
||||
s->codec_id == CODEC_ID_VP6A) {
|
||||
for (i = 0; i < 4; i++)
|
||||
linesize_align[i] = 16;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void avcodec_align_dimensions(AVCodecContext *s, int *width, int *height){
|
||||
|
Loading…
Reference in New Issue
Block a user