From: Guenter B. <gu...@us...> - 2001-09-12 19:50:44
|
Update of /cvsroot/xine/xine-lib/src/xine-engine In directory usw-pr-cvs1:/tmp/cvs-serv4974/src/xine-engine Modified Files: video_out.c video_out.h Log Message: adding still picture support (needed to implement menus) based on Rich's work Index: video_out.c =================================================================== RCS file: /cvsroot/xine/xine-lib/src/xine-engine/video_out.c,v retrieving revision 1.44 retrieving revision 1.45 diff -u -r1.44 -r1.45 --- video_out.c 2001/09/11 09:03:51 1.44 +++ video_out.c 2001/09/12 19:50:41 1.45 @@ -375,6 +375,11 @@ img->bDisplayLock = 0; img->bDecoderLock = 1; img->bDriverLock = 0; + img->width = width; + img->height = height; + img->ratio = ratio; + img->format = format; + img->duration = duration; /* let driver ensure this image has the right format */ @@ -442,6 +447,10 @@ pthread_mutex_unlock (&img->mutex); } +static vo_frame_t *vo_get_last_frame (vo_instance_t *this) { + return this->last_frame; +} + static int vo_frame_draw (vo_frame_t *img) { vo_instance_t *this = img->instance; @@ -493,10 +502,12 @@ xprintf (VERBOSE|VIDEO, "frame is ok => appending to display buffer\n"); + this->last_frame = img; + pthread_mutex_lock (&img->mutex); img->bDisplayLock = 1; pthread_mutex_unlock (&img->mutex); - + vo_append_to_img_buf_queue (this->display_img_buf_queue, img); } else { @@ -550,6 +561,7 @@ this->open = vo_open; this->get_frame = vo_get_frame; + this->get_last_frame = vo_get_last_frame; this->close = vo_close; this->exit = vo_exit; this->get_capabilities = vo_get_capabilities; Index: video_out.h =================================================================== RCS file: /cvsroot/xine/xine-lib/src/xine-engine/video_out.h,v retrieving revision 1.17 retrieving revision 1.18 diff -u -r1.17 -r1.18 --- video_out.h 2001/08/17 15:54:31 1.17 +++ video_out.h 2001/09/12 19:50:41 1.18 @@ -64,6 +64,10 @@ uint8_t *base[3]; int nType; /* I, B or P frame */ + /* additional information to be able to duplicate frames: */ + int width, height; + int ratio, format, duration; + int bDisplayLock, bDecoderLock, bDriverLock; pthread_mutex_t mutex; /* so the various locks will be serialized */ @@ -124,6 +128,8 @@ uint32_t height, int ratio_code, int format, uint32_t duration, int flags); + + vo_frame_t* (*get_last_frame) (vo_instance_t *this); /* overlay stuff */ void (*register_ovl_src) (vo_instance_t *this, ovl_src_t *ovl_src); @@ -143,6 +149,8 @@ img_buf_fifo_t *free_img_buf_queue; img_buf_fifo_t *display_img_buf_queue; + + vo_frame_t *last_frame; int video_loop_running; pthread_t video_thread; |