comparison libvo/vo_dxr3.c @ 4480:0919d2ec5e22

Cleaned up some code
author mswitch
date Sat, 02 Feb 2002 18:09:35 +0000
parents df8e0f71cc3c
children 2e3800da1ceb
comparison
equal deleted inserted replaced
4479:423ce4451ca8 4480:0919d2ec5e22
4 * Copyright (C) 2002 David Holm <dholm@iname.com> 4 * Copyright (C) 2002 David Holm <dholm@iname.com>
5 * 5 *
6 */ 6 */
7 7
8 /* ChangeLog added 2002-01-10 8 /* ChangeLog added 2002-01-10
9 * 2002-02-02:
10 * Cleaned out some old code which might have slowed down writes
11 *
9 * 2002-01-17: 12 * 2002-01-17:
10 * Testrelease of new sync engine (using previously undocumented feature of em8300). 13 * Testrelease of new sync engine (using previously undocumented feature of em8300).
11 * 14 *
12 * 2002-01-15: 15 * 2002-01-15:
13 * Preliminary subpic support with -vc mpegpes and dvd's 16 * Preliminary subpic support with -vc mpegpes and dvd's
85 }; 88 };
86 89
87 #ifdef USE_MP1E 90 #ifdef USE_MP1E
88 void write_dxr3(rte_context *context, void *data, size_t size, void *user_data) 91 void write_dxr3(rte_context *context, void *data, size_t size, void *user_data)
89 { 92 {
90 size_t data_left = size; 93 write(fd_video, data, size);
91
92 /* Force data into the buffer */
93 while (data_left) {
94 data_left -= write(fd_video, (void*) data + (size - data_left), data_left);
95 }
96 } 94 }
97 #endif 95 #endif
98 96
99 static uint32_t config(uint32_t scr_width, uint32_t scr_height, uint32_t width, uint32_t height, uint32_t fullscreen, char *title, uint32_t format,const vo_tune_info_t *info) 97 static uint32_t config(uint32_t scr_width, uint32_t scr_height, uint32_t width, uint32_t height, uint32_t fullscreen, char *title, uint32_t format,const vo_tune_info_t *info)
100 { 98 {
376 374
377 static uint32_t draw_frame(uint8_t * src[]) 375 static uint32_t draw_frame(uint8_t * src[])
378 { 376 {
379 if (img_format == IMGFMT_MPEGPES) { 377 if (img_format == IMGFMT_MPEGPES) {
380 vo_mpegpes_t *p = (vo_mpegpes_t *) src[0]; 378 vo_mpegpes_t *p = (vo_mpegpes_t *) src[0];
381 size_t data_left = p->size;
382 379
383 if (p->id == 0x20) { 380 if (p->id == 0x20) {
384 /* Force subpic data into buffer */ 381 write(fd_spu, p->data, p->size);
385 while (data_left) {
386 data_left -= write(fd_spu, (void*) (p->data + p->size-data_left), data_left);
387 }
388 } else { 382 } else {
389 /* Force video data into buffer */ 383 write(fd_video, p->data, p->size);
390 while (data_left) {
391 data_left -= write(fd_video, (void*) (p->data + p->size-data_left), data_left);
392 }
393 } 384 }
394 return 0; 385 return 0;
395 } 386 }
396 #ifdef USE_MP1E 387 #ifdef USE_MP1E
397 else if (img_format == IMGFMT_YUY2) { 388 else if (img_format == IMGFMT_YUY2) {
428 return -1; 419 return -1;
429 } 420 }
430 421
431 static void flip_page(void) 422 static void flip_page(void)
432 { 423 {
433 static int prev_pts = 0;
434 /* Flush the device if a seek occured */ 424 /* Flush the device if a seek occured */
435 if (prev_pts > vo_pts) { 425 if (!vo_pts) {
436 /* Flush video */ 426 /* Flush video */
437 ioval = EM8300_SUBDEVICE_VIDEO; 427 ioval = EM8300_SUBDEVICE_VIDEO;
438 ioctl(fd_control, EM8300_IOCTL_FLUSH, &ioval); 428 ioctl(fd_control, EM8300_IOCTL_FLUSH, &ioval);
439 } 429 }
440 prev_pts = vo_pts;
441 #ifdef USE_MP1E 430 #ifdef USE_MP1E
442 if (img_format == IMGFMT_YV12) { 431 if (img_format == IMGFMT_YV12) {
443 mp1e_buffer.data = picture_data[0]; 432 mp1e_buffer.data = picture_data[0];
444 mp1e_buffer.time = vo_pts / 90000.0; 433 mp1e_buffer.time = vo_pts / 90000.0;
445 mp1e_buffer.user_data = NULL; 434 mp1e_buffer.user_data = NULL;
552 { 541 {
553 } 542 }
554 543
555 static uint32_t preinit(const char *arg) 544 static uint32_t preinit(const char *arg)
556 { 545 {
557 return 0; 546 return 0;
558 } 547 }
559 548
560 static void query_vaa(vo_vaa_t *vaa) 549 static void query_vaa(vo_vaa_t *vaa)
561 { 550 {
562 memset(vaa,0,sizeof(vo_vaa_t)); 551 memset(vaa, 0, sizeof(vo_vaa_t));
563 } 552 }