summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/xine-engine/video_out.h67
1 files 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 {