summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/nullvideo.c34
1 files changed, 19 insertions, 15 deletions
diff --git a/noncore/multimedia/opieplayer2/nullvideo.c b/noncore/multimedia/opieplayer2/nullvideo.c
index 5ee8d5d..79337c2 100644
--- a/noncore/multimedia/opieplayer2/nullvideo.c
+++ b/noncore/multimedia/opieplayer2/nullvideo.c
@@ -183,6 +183,7 @@ static void null_compute_ideal_size (null_driver_t *this, opie_frame_t *frame) {
183 case ASPECT_AUTO: 183 case ASPECT_AUTO:
184 switch (frame->ratio_code) { 184 switch (frame->ratio_code) {
185 case XINE_ASPECT_RATIO_ANAMORPHIC: /* anamorphic */ 185 case XINE_ASPECT_RATIO_ANAMORPHIC: /* anamorphic */
186 case XINE_ASPECT_RATIO_PAN_SCAN:
186 desired_ratio = 16.0 /9.0; 187 desired_ratio = 16.0 /9.0;
187 break; 188 break;
188 case XINE_ASPECT_RATIO_211_1: /* 2.11:1 */ 189 case XINE_ASPECT_RATIO_211_1: /* 2.11:1 */
@@ -203,7 +204,7 @@ static void null_compute_ideal_size (null_driver_t *this, opie_frame_t *frame) {
203 } 204 }
204 break; 205 break;
205 case ASPECT_ANAMORPHIC: 206 case ASPECT_ANAMORPHIC:
206 desired_ratio = 16.0 / 9.0; 207 desired_ratio = 16.0 / 9.0;
207 break; 208 break;
208 case ASPECT_DVB: 209 case ASPECT_DVB:
209 desired_ratio = 2.0 / 1.0; 210 desired_ratio = 2.0 / 1.0;
@@ -334,17 +335,20 @@ static void null_update_frame_format( vo_driver_t* self, vo_frame_t* img,
334 this->bytes_per_pixel ); 335 this->bytes_per_pixel );
335 336
336 if( format == IMGFMT_YV12 ) { 337 if( format == IMGFMT_YV12 ) {
337 int image_size = width * height; /* cast ouch*/ 338 frame->frame.pitches[0] = 8*((width + 7) / 8);
338 frame->frame.base[0] = xine_xmalloc_aligned(16, image_size, 339 frame->frame.pitches[1] = 8*((width + 15) / 16);
339 (void **)&frame->chunk[0] ); 340 frame->frame.pitches[2] = 8*((width + 15) / 16);
340 frame->frame.base[1] = xine_xmalloc_aligned(16, image_size, 341 frame->frame.base[0] = xine_xmalloc_aligned (16, frame->frame.pitches[0] * height,(void **)&frame->chunk[0]);
341 (void **)&frame->chunk[1] ); 342 frame->frame.base[1] = xine_xmalloc_aligned (16, frame->frame.pitches[1] * ((height+ 1)/2), (void **)&frame->chunk[1]);
342 frame->frame.base[2] = xine_xmalloc_aligned(16, image_size, 343 frame->frame.base[2] = xine_xmalloc_aligned (16, frame->frame.pitches[2] * ((height+ 1)/2), (void **)&frame->chunk[2]);
343 (void **)&frame->chunk[2] ); 344
344 }else{ 345 }else{
345 int image_size = width * height; /* cast ouch*/ 346 frame->frame.pitches[0] = 8*((width + 3) / 4);
346 frame->frame.base[0] = xine_xmalloc_aligned(16, image_size, 347 frame->frame.pitches[1] = 8*((width + 3) / 4);
347 (void **)&frame->chunk[0] ); 348 frame->frame.pitches[2] = 8*((width + 3) / 4);
349
350 frame->frame.base[0] = xine_xmalloc_aligned (16, frame->frame.pitches[0] * height,
351 (void **)&frame->chunk[0]);
348 frame->chunk[1] = NULL; 352 frame->chunk[1] = NULL;
349 frame->chunk[2] = NULL; 353 frame->chunk[2] = NULL;
350 } 354 }
@@ -368,8 +372,8 @@ static void null_update_frame_format( vo_driver_t* self, vo_frame_t* img,
368 frame->yuv2rgb->configure (frame->yuv2rgb, 372 frame->yuv2rgb->configure (frame->yuv2rgb,
369 frame->width, 373 frame->width,
370 16, 374 16,
371 frame->width*2, 375 2*frame->frame.pitches[0],
372 frame->width, 376 2*frame->frame.pitches[1],
373 frame->output_width, 377 frame->output_width,
374 frame->stripe_height, 378 frame->stripe_height,
375 frame->bytes_per_line*2); 379 frame->bytes_per_line*2);
@@ -379,8 +383,8 @@ static void null_update_frame_format( vo_driver_t* self, vo_frame_t* img,
379 frame->yuv2rgb->configure (frame->yuv2rgb, 383 frame->yuv2rgb->configure (frame->yuv2rgb,
380 frame->width, 384 frame->width,
381 16, 385 16,
382 frame->width, 386 frame->frame.pitches[0],
383 frame->width/2, 387 frame->frame.pitches[1],
384 frame->output_width, 388 frame->output_width,
385 frame->stripe_height, 389 frame->stripe_height,
386 frame->bytes_per_line); 390 frame->bytes_per_line);