summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2010-01-01 01:06:34 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2010-01-01 01:06:34 +0000
commitc0cae7b3275b81d539f3d11fe64687ed6294ebfe (patch)
tree03a2c6ba7ce7f034a4b278944f1edee3d7127c62
parent8afc25d710d8520b454d48b7744dde4812feef74 (diff)
downloadmpv-c0cae7b3275b81d539f3d11fe64687ed6294ebfe.tar.bz2
mpv-c0cae7b3275b81d539f3d11fe64687ed6294ebfe.tar.xz
Also pass alpha plane to swscale, avoids crashes when converting between
YUV with alpha and some other format supporting alpha. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30158 b3059339-0415-0410-9bf9-f77b7e298cf2
-rw-r--r--libmpcodecs/vf_scale.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/libmpcodecs/vf_scale.c b/libmpcodecs/vf_scale.c
index 0131b36d82..3435f75447 100644
--- a/libmpcodecs/vf_scale.c
+++ b/libmpcodecs/vf_scale.c
@@ -331,7 +331,7 @@ static void start_slice(struct vf_instance_s* vf, mp_image_t *mpi){
static void scale(struct SwsContext *sws1, struct SwsContext *sws2, uint8_t *src[MP_MAX_PLANES], int src_stride[MP_MAX_PLANES],
int y, int h, uint8_t *dst[MP_MAX_PLANES], int dst_stride[MP_MAX_PLANES], int interlaced){
- uint8_t *src2[MP_MAX_PLANES]={src[0], src[1], src[2]};
+ uint8_t *src2[MP_MAX_PLANES]={src[0], src[1], src[2], src[3]};
#if HAVE_BIGENDIAN
uint32_t pal2[256];
if (src[1] && !src[2]){
@@ -344,9 +344,9 @@ static void scale(struct SwsContext *sws1, struct SwsContext *sws2, uint8_t *src
if(interlaced){
int i;
- uint8_t *dst2[MP_MAX_PLANES]={dst[0], dst[1], dst[2]};
- int src_stride2[MP_MAX_PLANES]={2*src_stride[0], 2*src_stride[1], 2*src_stride[2]};
- int dst_stride2[MP_MAX_PLANES]={2*dst_stride[0], 2*dst_stride[1], 2*dst_stride[2]};
+ uint8_t *dst2[MP_MAX_PLANES]={dst[0], dst[1], dst[2], dst[3]};
+ int src_stride2[MP_MAX_PLANES]={2*src_stride[0], 2*src_stride[1], 2*src_stride[2], 2*src_stride[3]};
+ int dst_stride2[MP_MAX_PLANES]={2*dst_stride[0], 2*dst_stride[1], 2*dst_stride[2], 2*dst_stride[3]};
sws_scale_ordered(sws1, src2, src_stride2, y>>1, h>>1, dst2, dst_stride2);
for(i=0; i<3; i++){