[Sumover-dev] [svn commit] r4345 - vic/branches/mpeg4/render
sumover-dev at cs.ucl.ac.uk
sumover-dev at cs.ucl.ac.uk
Tue Jan 13 04:44:19 GMT 2009
Author: douglask
Date: Tue Jan 13 04:44:15 2009
New Revision: 4345
Modified:
vic/branches/mpeg4/render/color-swscale.cpp
Log:
Corrected memory offset for YUV422 in color-swscale
Modified: vic/branches/mpeg4/render/color-swscale.cpp
==============================================================================
--- vic/branches/mpeg4/render/color-swscale.cpp (original)
+++ vic/branches/mpeg4/render/color-swscale.cpp Tue Jan 13 04:44:15 2009
@@ -27,19 +27,19 @@
switch (depth_) {
case 15:
case 16:
- // printf("16\n");
+ // printf("16\n");
//out_format = PIX_FMT_RGB565;
out_format = PIX_FMT_BGR565;
bytes_per_pixel = 2;
break;
case 24:
- // printf("24\n");
- out_format = PIX_FMT_RGB24;
- bytes_per_pixel = 3;
- break;
+ // printf("24\n");
+ out_format = PIX_FMT_RGB24;
+ bytes_per_pixel = 3;
+ break;
case 32:
- // printf("32\n");
+ // printf("32\n");
out_format = PIX_FMT_RGB32;
bytes_per_pixel = 4;
}
@@ -78,20 +78,22 @@
flags |= (available_cpu_flags & FF_CPU_3DNOW ? SWS_CPU_CAPS_3DNOW : 0);
flags |= (available_cpu_flags & FF_CPU_ALTIVEC ? SWS_CPU_CAPS_ALTIVEC : 0);
#elif defined(HAVE_MMX)
- flags |= SWS_CPU_CAPS_MMX;
+ flags |= SWS_CPU_CAPS_MMX;
#if defined(HAVE_MMX2)
- flags |= SWS_CPU_CAPS_MMX2;
+ flags |= SWS_CPU_CAPS_MMX2;
#endif
#elif defined(HAVE_3DNOW)
- flags |= SWS_CPU_CAPS_3DNOW;
+ flags |= SWS_CPU_CAPS_3DNOW;
#elif defined(HAVE_ALTIVEC)
- flags |= SWS_CPU_CAPS_ALTIVEC;
+ flags |= SWS_CPU_CAPS_ALTIVEC;
#endif
- if(!outw_ || !outh_ || !width_ || !height_) return;
+ if(!outw_ || !outh_ || !width_ || !height_)
+ return;
+
int in_format = PIX_FMT_YUV420P;
if (decimation_ == 422) {
- in_format = PIX_FMT_YUV422P;
+ in_format = PIX_FMT_YUV422P;
}
// Accelerated Colour conversion routines
@@ -101,11 +103,10 @@
// printf("X11WindowRenderer: %dx%d ==> %dx%d\n", width_, height_, outw_, outh_);
if(sws_context == NULL){
- debug_msg("X11WindowRenderer: error! cannot allocate memory for swscontext!\n");
- return;
+ debug_msg("X11WindowRenderer: error! cannot allocate memory for swscontext!\n");
+ return;
}
-
sws_src_stride[0] = width_;
sws_src_stride[1] = sws_src_stride[2] = width_/2;
@@ -113,12 +114,16 @@
sws_tar[1] = sws_tar[2] = NULL;
sws_tar_stride[0] = outw_*bytes_per_pixel;
sws_tar_stride[1] = sws_tar_stride[2] = 0;
- }
+ }
i_width = width_; i_height = height_; o_width = outw_; o_height = outh_;
sws_src[0] = (uint8_t*)frm;
sws_src[1] = sws_src[0] + framesize_;
- sws_src[2] = sws_src[1] + framesize_/4;
+ if (decimation_ == 422) {
+ sws_src[2] = sws_src[1] + framesize_/2;
+ } else {
+ sws_src[2] = sws_src[1] + framesize_/4;
+ }
#if LIBSWSCALE_VERSION_INT >= ((0<<16)+(5<<8)+0)
sws_scale(sws_context, sws_src, sws_src_stride, 0, height_, sws_tar, sws_tar_stride);
More information about the Sumover-dev
mailing list