From a098e19a0babfbc00307359e9d5f545177b52c7a Mon Sep 17 00:00:00 2001 From: Miguel Freitas Date: Fri, 6 Dec 2002 01:30:49 +0000 Subject: - rearrange vo_frame_s to look like other xine structures - add copy_called flag. this will help us to track usage of copy() method. any driver which support copy() must set this flag (for each "copied" frame) - increase interface version CVS patchset: 3433 CVS date: 2002/12/06 01:30:49 --- src/xine-engine/video_out.h | 67 ++++++++++++++++++++++++++------------------- 1 file changed, 39 insertions(+), 28 deletions(-) diff --git a/src/xine-engine/video_out.h b/src/xine-engine/video_out.h index 7026e0fa9..f29d0d6a8 100644 --- a/src/xine-engine/video_out.h +++ b/src/xine-engine/video_out.h @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: video_out.h,v 1.72 2002/12/01 15:11:47 mroi Exp $ + * $Id: video_out.h,v 1.73 2002/12/06 01:30:49 miguelfreitas Exp $ * * * xine version of video_out.h @@ -57,8 +57,34 @@ typedef struct vo_driver_s vo_driver_t; /* public part, video drivers may add private fields */ struct vo_frame_s { - struct vo_frame_s *next; + /* + * member functions + */ + /* this frame is no longer used by the decoder */ + void (*free) (vo_frame_t *vo_img); + + /* tell video driver to copy/convert a slice of this frame, may be NULL */ + /* this function MUST set the variable copy_called above */ + void (*copy) (vo_frame_t *vo_img, uint8_t **src); + + /* tell video driver that the decoder starts a new field */ + void (*field) (vo_frame_t *vo_img, int which_field); + + /* append this frame to the display queue, + returns number of frames to skip if decoder is late */ + int (*draw) (vo_frame_t *vo_img, xine_stream_t *stream); + + /* this frame is no longer used by the video driver */ + void (*displayed) (vo_frame_t *vo_img); + + /* free memory/resources for this frame */ + void (*dispose) (vo_frame_t *vo_img); + + /* + * public variables to decoders and vo drivers + * changing anything here will require recompiling them both + */ int64_t pts; /* presentation time stamp (1/90000 sec) */ int64_t vpts; /* virtual pts, generated by metronom */ int bad_frame; /* e.g. frame skipped or based on skipped frame */ @@ -83,38 +109,23 @@ struct vo_frame_s { int format; /* IMGFMT_YV12 or IMGFMT_YUY2 */ int drawn; /* used by decoder, frame has already been drawn */ - - int lock_counter; - pthread_mutex_t mutex; /* protect access to lock_count */ - + int copy_called; /* track use of copy() method */ + /* "backward" references to where this frame originates from */ xine_video_port_t *port; vo_driver_t *driver; - int id; /* debugging - track this frame */ - - /* - * member functions + + /* + * that part is used only by video_out.c for frame management + * obs: changing anything here will require recompiling vo drivers */ - - /* this frame is no longer used by the decoder */ - void (*free) (vo_frame_t *vo_img); + struct vo_frame_s *next; + int lock_counter; + pthread_mutex_t mutex; /* protect access to lock_count */ - /* tell video driver to copy/convert a slice of this frame, may be NULL */ - void (*copy) (vo_frame_t *vo_img, uint8_t **src); - - /* tell video driver that the decoder starts a new field */ - void (*field) (vo_frame_t *vo_img, int which_field); - - /* append this frame to the display queue, - returns number of frames to skip if decoder is late */ - int (*draw) (vo_frame_t *vo_img, xine_stream_t *stream); - - /* this frame is no longer used by the video driver */ - void (*displayed) (vo_frame_t *vo_img); + int id; /* debugging - track this frame */ - /* free memory/resources for this frame */ - void (*dispose) (vo_frame_t *vo_img); }; struct xine_video_port_s { @@ -236,7 +247,7 @@ struct xine_video_port_s { * from generic vo functions. */ -#define VIDEO_OUT_DRIVER_IFACE_VERSION 12 +#define VIDEO_OUT_DRIVER_IFACE_VERSION 13 struct vo_driver_s { -- cgit v1.2.3