author | harlekin <harlekin> | 2002-08-04 00:52:55 (UTC) |
---|---|---|
committer | harlekin <harlekin> | 2002-08-04 00:52:55 (UTC) |
commit | 549df674d7af9fe1347751e6a63d6ed8249d2503 (patch) (unidiff) | |
tree | b7a2e9499eca9ca7d20655bc51bc645e1f501d27 | |
parent | 0cecd08dba036f39e414e34a2b7c070008ee3884 (diff) | |
download | opie-549df674d7af9fe1347751e6a63d6ed8249d2503.zip opie-549df674d7af9fe1347751e6a63d6ed8249d2503.tar.gz opie-549df674d7af9fe1347751e6a63d6ed8249d2503.tar.bz2 |
change due to xine 0.9.13 changes
-rw-r--r-- | noncore/multimedia/opieplayer2/nullvideo.c | 34 |
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 | |||
@@ -154,85 +154,86 @@ static vo_frame_t* null_alloc_frame( vo_driver_t* self ){ | |||
154 | frame->frame.copy = null_frame_copy; | 154 | frame->frame.copy = null_frame_copy; |
155 | frame->frame.field = null_frame_field; | 155 | frame->frame.field = null_frame_field; |
156 | frame->frame.dispose = null_frame_dispose; | 156 | frame->frame.dispose = null_frame_dispose; |
157 | frame->yuv2rgb = 0; | 157 | frame->yuv2rgb = 0; |
158 | /* | 158 | /* |
159 | * colorspace converter for this frame | 159 | * colorspace converter for this frame |
160 | */ | 160 | */ |
161 | frame->yuv2rgb = this->yuv2rgb_factory->create_converter (this->yuv2rgb_factory); | 161 | frame->yuv2rgb = this->yuv2rgb_factory->create_converter (this->yuv2rgb_factory); |
162 | 162 | ||
163 | 163 | ||
164 | return (vo_frame_t*) frame; | 164 | return (vo_frame_t*) frame; |
165 | } | 165 | } |
166 | 166 | ||
167 | // size specific | 167 | // size specific |
168 | static void null_compute_ideal_size (null_driver_t *this, opie_frame_t *frame) { | 168 | static void null_compute_ideal_size (null_driver_t *this, opie_frame_t *frame) { |
169 | 169 | ||
170 | if (!this->m_is_scaling /*|| !this->m_show_video*/) { | 170 | if (!this->m_is_scaling /*|| !this->m_show_video*/) { |
171 | printf("Not scaling\n"); | 171 | printf("Not scaling\n"); |
172 | frame->ideal_width = frame->width; | 172 | frame->ideal_width = frame->width; |
173 | frame->ideal_height = frame->height; | 173 | frame->ideal_height = frame->height; |
174 | frame->ratio_factor = 1.0; | 174 | frame->ratio_factor = 1.0; |
175 | 175 | ||
176 | } else { | 176 | } else { |
177 | 177 | ||
178 | double image_ratio, desired_ratio, corr_factor; | 178 | double image_ratio, desired_ratio, corr_factor; |
179 | 179 | ||
180 | image_ratio = (double) frame->width / (double) frame->height; | 180 | image_ratio = (double) frame->width / (double) frame->height; |
181 | 181 | ||
182 | switch (frame->user_ratio) { | 182 | switch (frame->user_ratio) { |
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 */ |
189 | desired_ratio = 2.11/1.0; | 190 | desired_ratio = 2.11/1.0; |
190 | break; | 191 | break; |
191 | case XINE_ASPECT_RATIO_SQUARE: /* square pels */ | 192 | case XINE_ASPECT_RATIO_SQUARE: /* square pels */ |
192 | case XINE_ASPECT_RATIO_DONT_TOUCH: /* probably non-mpeg stream => don't touch aspect ratio */ | 193 | case XINE_ASPECT_RATIO_DONT_TOUCH: /* probably non-mpeg stream => don't touch aspect ratio */ |
193 | desired_ratio = image_ratio; | 194 | desired_ratio = image_ratio; |
194 | break; | 195 | break; |
195 | case 0: /* forbidden -> 4:3 */ | 196 | case 0: /* forbidden -> 4:3 */ |
196 | printf ("video_out_fb: invalid ratio, using 4:3\n"); | 197 | printf ("video_out_fb: invalid ratio, using 4:3\n"); |
197 | default: | 198 | default: |
198 | printf ("video_out_fb: unknown aspect ratio (%d) in stream => using 4:3\n", | 199 | printf ("video_out_fb: unknown aspect ratio (%d) in stream => using 4:3\n", |
199 | frame->ratio_code); | 200 | frame->ratio_code); |
200 | case XINE_ASPECT_RATIO_4_3: /* 4:3 */ | 201 | case XINE_ASPECT_RATIO_4_3: /* 4:3 */ |
201 | desired_ratio = 4.0 / 3.0; | 202 | desired_ratio = 4.0 / 3.0; |
202 | break; | 203 | break; |
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; |
210 | break; | 211 | break; |
211 | case ASPECT_SQUARE: | 212 | case ASPECT_SQUARE: |
212 | desired_ratio = image_ratio; | 213 | desired_ratio = image_ratio; |
213 | break; | 214 | break; |
214 | case ASPECT_FULL: | 215 | case ASPECT_FULL: |
215 | default: | 216 | default: |
216 | desired_ratio = 4.0 / 3.0; | 217 | desired_ratio = 4.0 / 3.0; |
217 | } | 218 | } |
218 | 219 | ||
219 | frame->ratio_factor = this->display_ratio * desired_ratio; | 220 | frame->ratio_factor = this->display_ratio * desired_ratio; |
220 | 221 | ||
221 | corr_factor = frame->ratio_factor / image_ratio ; | 222 | corr_factor = frame->ratio_factor / image_ratio ; |
222 | 223 | ||
223 | if (fabs(corr_factor - 1.0) < 0.005) { | 224 | if (fabs(corr_factor - 1.0) < 0.005) { |
224 | frame->ideal_width = frame->width; | 225 | frame->ideal_width = frame->width; |
225 | frame->ideal_height = frame->height; | 226 | frame->ideal_height = frame->height; |
226 | 227 | ||
227 | } else { | 228 | } else { |
228 | 229 | ||
229 | if (corr_factor >= 1.0) { | 230 | if (corr_factor >= 1.0) { |
230 | frame->ideal_width = frame->width * corr_factor + 0.5; | 231 | frame->ideal_width = frame->width * corr_factor + 0.5; |
231 | frame->ideal_height = frame->height; | 232 | frame->ideal_height = frame->height; |
232 | } else { | 233 | } else { |
233 | frame->ideal_width = frame->width; | 234 | frame->ideal_width = frame->width; |
234 | frame->ideal_height = frame->height / corr_factor + 0.5; | 235 | frame->ideal_height = frame->height / corr_factor + 0.5; |
235 | } | 236 | } |
236 | 237 | ||
237 | } | 238 | } |
238 | } | 239 | } |
@@ -305,111 +306,114 @@ static void null_update_frame_format( vo_driver_t* self, vo_frame_t* img, | |||
305 | frame->user_ratio = this->user_ratio; | 306 | frame->user_ratio = this->user_ratio; |
306 | this->gui_changed = 0; | 307 | this->gui_changed = 0; |
307 | //frame->show_video = this->m_show_video; | 308 | //frame->show_video = this->m_show_video; |
308 | frame->gui_width = this->gui_width; | 309 | frame->gui_width = this->gui_width; |
309 | frame->gui_height = this->gui_height; | 310 | frame->gui_height = this->gui_height; |
310 | 311 | ||
311 | null_compute_ideal_size (this, frame); | 312 | null_compute_ideal_size (this, frame); |
312 | null_compute_rgb_size (this, frame); | 313 | null_compute_rgb_size (this, frame); |
313 | 314 | ||
314 | /* | 315 | /* |
315 | * (re-) allocate | 316 | * (re-) allocate |
316 | */ | 317 | */ |
317 | if( frame->data ) { | 318 | if( frame->data ) { |
318 | if(frame->chunk[0] ){ | 319 | if(frame->chunk[0] ){ |
319 | free( frame->chunk[0] ); | 320 | free( frame->chunk[0] ); |
320 | frame->chunk[0] = NULL; | 321 | frame->chunk[0] = NULL; |
321 | } | 322 | } |
322 | if(frame->chunk[1] ){ | 323 | if(frame->chunk[1] ){ |
323 | free ( frame->chunk[1] ); | 324 | free ( frame->chunk[1] ); |
324 | frame->chunk[1] = NULL; | 325 | frame->chunk[1] = NULL; |
325 | } | 326 | } |
326 | if(frame->chunk[2] ){ | 327 | if(frame->chunk[2] ){ |
327 | free ( frame->chunk[2] ); | 328 | free ( frame->chunk[2] ); |
328 | frame->chunk[2] = NULL; | 329 | frame->chunk[2] = NULL; |
329 | } | 330 | } |
330 | free ( frame->data ); | 331 | free ( frame->data ); |
331 | } | 332 | } |
332 | printf("after freeing\n"); | 333 | printf("after freeing\n"); |
333 | frame->data = xine_xmalloc (frame->output_width * frame->output_height * | 334 | frame->data = xine_xmalloc (frame->output_width * frame->output_height * |
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 | } |
351 | 355 | ||
352 | frame->format = format; | 356 | frame->format = format; |
353 | frame->width = width; | 357 | frame->width = width; |
354 | frame->height = height; | 358 | frame->height = height; |
355 | 359 | ||
356 | frame->stripe_height = 16 * frame->output_height / frame->height; | 360 | frame->stripe_height = 16 * frame->output_height / frame->height; |
357 | frame->bytes_per_line = frame->output_width * this->bytes_per_pixel; | 361 | frame->bytes_per_line = frame->output_width * this->bytes_per_pixel; |
358 | 362 | ||
359 | /* | 363 | /* |
360 | * set up colorspace converter | 364 | * set up colorspace converter |
361 | */ | 365 | */ |
362 | if(1 /*this->m_show_video*/ ){ | 366 | if(1 /*this->m_show_video*/ ){ |
363 | printf("showing video\n"); | 367 | printf("showing video\n"); |
364 | 368 | ||
365 | switch (flags) { | 369 | switch (flags) { |
366 | case VO_TOP_FIELD: | 370 | case VO_TOP_FIELD: |
367 | case VO_BOTTOM_FIELD: | 371 | case VO_BOTTOM_FIELD: |
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); |
376 | frame->yuv_stride = frame->bytes_per_line*2; | 380 | frame->yuv_stride = frame->bytes_per_line*2; |
377 | break; | 381 | break; |
378 | case VO_BOTH_FIELDS: | 382 | case VO_BOTH_FIELDS: |
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); |
387 | frame->yuv_stride = frame->bytes_per_line; | 391 | frame->yuv_stride = frame->bytes_per_line; |
388 | break; | 392 | break; |
389 | } | 393 | } |
390 | } | 394 | } |
391 | } | 395 | } |
392 | printf("after gui changed\n"); | 396 | printf("after gui changed\n"); |
393 | /* | 397 | /* |
394 | * reset dest pointers | 398 | * reset dest pointers |
395 | */ | 399 | */ |
396 | 400 | ||
397 | if (frame->data) { | 401 | if (frame->data) { |
398 | switch (flags) { | 402 | switch (flags) { |
399 | case VO_TOP_FIELD: | 403 | case VO_TOP_FIELD: |
400 | frame->rgb_dst = (uint8_t *)frame->data; | 404 | frame->rgb_dst = (uint8_t *)frame->data; |
401 | frame->stripe_inc = 2 * frame->stripe_height * frame->bytes_per_line; | 405 | frame->stripe_inc = 2 * frame->stripe_height * frame->bytes_per_line; |
402 | break; | 406 | break; |
403 | case VO_BOTTOM_FIELD: | 407 | case VO_BOTTOM_FIELD: |
404 | frame->rgb_dst = (uint8_t *)frame->data + frame->bytes_per_line ; | 408 | frame->rgb_dst = (uint8_t *)frame->data + frame->bytes_per_line ; |
405 | frame->stripe_inc = 2 * frame->stripe_height * frame->bytes_per_line; | 409 | frame->stripe_inc = 2 * frame->stripe_height * frame->bytes_per_line; |
406 | break; | 410 | break; |
407 | case VO_BOTH_FIELDS: | 411 | case VO_BOTH_FIELDS: |
408 | frame->rgb_dst = (uint8_t *)frame->data; | 412 | frame->rgb_dst = (uint8_t *)frame->data; |
409 | frame->stripe_inc = frame->stripe_height * frame->bytes_per_line; | 413 | frame->stripe_inc = frame->stripe_height * frame->bytes_per_line; |
410 | break; | 414 | break; |
411 | } | 415 | } |
412 | } | 416 | } |
413 | printf("done\n"); | 417 | printf("done\n"); |
414 | } | 418 | } |
415 | static void null_display_frame( vo_driver_t* self, vo_frame_t *frame_gen ){ | 419 | static void null_display_frame( vo_driver_t* self, vo_frame_t *frame_gen ){ |