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 | |||
@@ -122,149 +122,150 @@ static void null_frame_field (vo_frame_t *vo_img, int which_field) { | |||
122 | break; | 122 | break; |
123 | } | 123 | } |
124 | } | 124 | } |
125 | 125 | ||
126 | 126 | ||
127 | /* take care of the frame*/ | 127 | /* take care of the frame*/ |
128 | static void null_frame_dispose( vo_frame_t* vo_img){ | 128 | static void null_frame_dispose( vo_frame_t* vo_img){ |
129 | opie_frame_t* frame = (opie_frame_t*)vo_img; | 129 | opie_frame_t* frame = (opie_frame_t*)vo_img; |
130 | printf("frame_dispose\n"); | 130 | printf("frame_dispose\n"); |
131 | if( frame->data ) | 131 | if( frame->data ) |
132 | free( frame->data ); | 132 | free( frame->data ); |
133 | free (frame); | 133 | free (frame); |
134 | } | 134 | } |
135 | 135 | ||
136 | /* end take care of frames*/ | 136 | /* end take care of frames*/ |
137 | 137 | ||
138 | static vo_frame_t* null_alloc_frame( vo_driver_t* self ){ | 138 | static vo_frame_t* null_alloc_frame( vo_driver_t* self ){ |
139 | null_driver_t* this = (null_driver_t*)self; | 139 | null_driver_t* this = (null_driver_t*)self; |
140 | opie_frame_t* frame; | 140 | opie_frame_t* frame; |
141 | frame = (opie_frame_t*)malloc ( sizeof(opie_frame_t) ); | 141 | frame = (opie_frame_t*)malloc ( sizeof(opie_frame_t) ); |
142 | 142 | ||
143 | memset( frame, 0, sizeof( opie_frame_t) ); | 143 | memset( frame, 0, sizeof( opie_frame_t) ); |
144 | pthread_mutex_init (&frame->frame.mutex, NULL); | 144 | pthread_mutex_init (&frame->frame.mutex, NULL); |
145 | 145 | ||
146 | printf("alloc_frame\n"); | 146 | printf("alloc_frame\n"); |
147 | frame->name = "opie\0"; | 147 | frame->name = "opie\0"; |
148 | frame->version = 1; | 148 | frame->version = 1; |
149 | frame->output = this; | 149 | frame->output = this; |
150 | // frame->show_video = this->m_show_video; | 150 | // frame->show_video = this->m_show_video; |
151 | /* initialize the frame*/ | 151 | /* initialize the frame*/ |
152 | frame->frame.driver = self; | 152 | frame->frame.driver = self; |
153 | /*frame.frame.free = null_frame_free;*/ | 153 | /*frame.frame.free = null_frame_free;*/ |
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 | } |
239 | printf("return from helper\n"); | 240 | printf("return from helper\n"); |
240 | } | 241 | } |
241 | 242 | ||
242 | static void null_compute_rgb_size (null_driver_t *this, opie_frame_t *frame) { | 243 | static void null_compute_rgb_size (null_driver_t *this, opie_frame_t *frame) { |
243 | 244 | ||
244 | double x_factor, y_factor; | 245 | double x_factor, y_factor; |
245 | 246 | ||
246 | /* | 247 | /* |
247 | * make the frame fit into the given destination area | 248 | * make the frame fit into the given destination area |
248 | */ | 249 | */ |
249 | 250 | ||
250 | x_factor = (double) this->gui_width / (double) frame->ideal_width; | 251 | x_factor = (double) this->gui_width / (double) frame->ideal_width; |
251 | y_factor = (double) this->gui_height / (double) frame->ideal_height; | 252 | y_factor = (double) this->gui_height / (double) frame->ideal_height; |
252 | 253 | ||
253 | if ( x_factor < y_factor ) { | 254 | if ( x_factor < y_factor ) { |
254 | frame->output_width = (double) frame->ideal_width * x_factor ; | 255 | frame->output_width = (double) frame->ideal_width * x_factor ; |
255 | frame->output_height = (double) frame->ideal_height * x_factor ; | 256 | frame->output_height = (double) frame->ideal_height * x_factor ; |
256 | } else { | 257 | } else { |
257 | frame->output_width = (double) frame->ideal_width * y_factor ; | 258 | frame->output_width = (double) frame->ideal_width * y_factor ; |
258 | frame->output_height = (double) frame->ideal_height * y_factor ; | 259 | frame->output_height = (double) frame->ideal_height * y_factor ; |
259 | } | 260 | } |
260 | 261 | ||
261 | #define LOG 1 | 262 | #define LOG 1 |
262 | #ifdef LOG | 263 | #ifdef LOG |
263 | printf("video_out_fb: frame source %d x %d => screen output %d x %d%s\n", | 264 | printf("video_out_fb: frame source %d x %d => screen output %d x %d%s\n", |
264 | frame->width, frame->height, | 265 | frame->width, frame->height, |
265 | frame->output_width, frame->output_height, | 266 | frame->output_width, frame->output_height, |
266 | ( frame->width != frame->output_width | 267 | ( frame->width != frame->output_width |
267 | || frame->height != frame->output_height | 268 | || frame->height != frame->output_height |
268 | ? ", software scaling" | 269 | ? ", software scaling" |
269 | : "" ) | 270 | : "" ) |
270 | ); | 271 | ); |
@@ -273,175 +274,178 @@ static void null_compute_rgb_size (null_driver_t *this, opie_frame_t *frame) { | |||
273 | 274 | ||
274 | 275 | ||
275 | // size specific | 276 | // size specific |
276 | 277 | ||
277 | 278 | ||
278 | static void null_update_frame_format( vo_driver_t* self, vo_frame_t* img, | 279 | static void null_update_frame_format( vo_driver_t* self, vo_frame_t* img, |
279 | uint32_t width, uint32_t height, | 280 | uint32_t width, uint32_t height, |
280 | int ratio_code, int format, int flags ){ | 281 | int ratio_code, int format, int flags ){ |
281 | null_driver_t* this = (null_driver_t*) self; | 282 | null_driver_t* this = (null_driver_t*) self; |
282 | opie_frame_t* frame = (opie_frame_t*)img; | 283 | opie_frame_t* frame = (opie_frame_t*)img; |
283 | /* not needed now */ | 284 | /* not needed now */ |
284 | printf("update_frame_format\n"); | 285 | printf("update_frame_format\n"); |
285 | printf("al crash aye?\n"); | 286 | printf("al crash aye?\n"); |
286 | 287 | ||
287 | flags &= VO_BOTH_FIELDS; | 288 | flags &= VO_BOTH_FIELDS; |
288 | 289 | ||
289 | /* find out if we need to adapt this frame */ | 290 | /* find out if we need to adapt this frame */ |
290 | 291 | ||
291 | if ((width != frame->width) | 292 | if ((width != frame->width) |
292 | || (height != frame->height) | 293 | || (height != frame->height) |
293 | || (ratio_code != frame->ratio_code) | 294 | || (ratio_code != frame->ratio_code) |
294 | || (flags != frame->flags) | 295 | || (flags != frame->flags) |
295 | || (format != frame->format) | 296 | || (format != frame->format) |
296 | || (this->user_ratio != frame->user_ratio) | 297 | || (this->user_ratio != frame->user_ratio) |
297 | || (this->gui_width != frame-> gui_width ) | 298 | || (this->gui_width != frame-> gui_width ) |
298 | || (this-> gui_height != frame-> gui_height)) { | 299 | || (this-> gui_height != frame-> gui_height)) { |
299 | 300 | ||
300 | frame->width = width; | 301 | frame->width = width; |
301 | frame->height = height; | 302 | frame->height = height; |
302 | frame->ratio_code = ratio_code; | 303 | frame->ratio_code = ratio_code; |
303 | frame->flags = flags; | 304 | frame->flags = flags; |
304 | frame->format = format; | 305 | frame->format = format; |
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 ){ |
416 | null_driver_t* this = (null_driver_t*) self; | 420 | null_driver_t* this = (null_driver_t*) self; |
417 | opie_frame_t* frame = (opie_frame_t*)frame_gen; | 421 | opie_frame_t* frame = (opie_frame_t*)frame_gen; |
418 | display_xine_frame_t display = this->frameDis; | 422 | display_xine_frame_t display = this->frameDis; |
419 | 423 | ||
420 | printf("display frame\n"); | 424 | printf("display frame\n"); |
421 | // if( this->m_show_video ) { // return if not displaying | 425 | // if( this->m_show_video ) { // return if not displaying |
422 | printf("calling home aye\n" ); | 426 | printf("calling home aye\n" ); |
423 | if( display != NULL ) { | 427 | if( display != NULL ) { |
424 | (*display)(this->caller, frame->data, | 428 | (*display)(this->caller, frame->data, |
425 | frame->output_width, frame->output_height, | 429 | frame->output_width, frame->output_height, |
426 | frame->bytes_per_line ); | 430 | frame->bytes_per_line ); |
427 | printf("display done hope you enyoyed the frame"); | 431 | printf("display done hope you enyoyed the frame"); |
428 | } | 432 | } |
429 | // } | 433 | // } |
430 | 434 | ||
431 | frame->frame.displayed (&frame->frame); | 435 | frame->frame.displayed (&frame->frame); |
432 | } | 436 | } |
433 | 437 | ||
434 | 438 | ||
435 | // blending related | 439 | // blending related |
436 | 440 | ||
437 | 441 | ||
438 | static void null_overlay_clut_yuv2rgb(null_driver_t *this, vo_overlay_t *overlay, | 442 | static void null_overlay_clut_yuv2rgb(null_driver_t *this, vo_overlay_t *overlay, |
439 | opie_frame_t *frame) { | 443 | opie_frame_t *frame) { |
440 | int i; | 444 | int i; |
441 | clut_t* clut = (clut_t*) overlay->color; | 445 | clut_t* clut = (clut_t*) overlay->color; |
442 | if (!overlay->rgb_clut) { | 446 | if (!overlay->rgb_clut) { |
443 | for (i = 0; i < sizeof(overlay->color)/sizeof(overlay->color[0]); i++) { | 447 | for (i = 0; i < sizeof(overlay->color)/sizeof(overlay->color[0]); i++) { |
444 | *((uint32_t *)&clut[i]) = | 448 | *((uint32_t *)&clut[i]) = |
445 | frame->yuv2rgb->yuv2rgb_single_pixel_fun (frame->yuv2rgb, | 449 | frame->yuv2rgb->yuv2rgb_single_pixel_fun (frame->yuv2rgb, |
446 | clut[i].y, clut[i].cb, clut[i].cr); | 450 | clut[i].y, clut[i].cb, clut[i].cr); |
447 | } | 451 | } |