avcodec_align_dimensions2: set only 4 linesizes, not AV_NUM_DATA_POINTERS.
This function is video-only, so there's no point in setting more linesizes. Fixes stack corruption in avplay.
This commit is contained in:
parent
be822d77b6
commit
2d9535ad31
@ -219,7 +219,7 @@ void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height,
|
|||||||
*height+=2; // some of the optimized chroma MC reads one line too much
|
*height+=2; // some of the optimized chroma MC reads one line too much
|
||||||
// which is also done in mpeg decoders with lowres > 0
|
// which is also done in mpeg decoders with lowres > 0
|
||||||
|
|
||||||
for (i = 0; i < AV_NUM_DATA_POINTERS; i++)
|
for (i = 0; i < 4; i++)
|
||||||
linesize_align[i] = STRIDE_ALIGN;
|
linesize_align[i] = STRIDE_ALIGN;
|
||||||
//STRIDE_ALIGN is 8 for SSE* but this does not work for SVQ1 chroma planes
|
//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
|
//we could change STRIDE_ALIGN to 16 for x86/sse but it would increase the
|
||||||
@ -229,7 +229,7 @@ void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height,
|
|||||||
if(s->codec_id == CODEC_ID_SVQ1 || s->codec_id == CODEC_ID_VP5 ||
|
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_VP6 || s->codec_id == CODEC_ID_VP6F ||
|
||||||
s->codec_id == CODEC_ID_VP6A) {
|
s->codec_id == CODEC_ID_VP6A) {
|
||||||
for (i = 0; i < AV_NUM_DATA_POINTERS; i++)
|
for (i = 0; i < 4; i++)
|
||||||
linesize_align[i] = 16;
|
linesize_align[i] = 16;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user