summaryrefslogtreecommitdiff
path: root/include/xine
diff options
context:
space:
mode:
authorAndreas Auras <yak54@inkennet.de>2011-03-29 11:35:31 +0200
committerAndreas Auras <yak54@inkennet.de>2011-03-29 11:35:31 +0200
commit6fa5ad78275f7f94565df3aaf3ef9bcf52c790fa (patch)
treec03974a79c219671585942ffda661071793e35dd /include/xine
parent3af2095a8b756b747db80ca9e0a75f07b3cf5e25 (diff)
downloadxine-lib-6fa5ad78275f7f94565df3aaf3ef9bcf52c790fa.tar.gz
xine-lib-6fa5ad78275f7f94565df3aaf3ef9bcf52c790fa.tar.bz2
Continuous video frame grabbing feature.
In opposite to the 'xine_get_current_frame' based snapshot function this grabbing feature allow continuous grabbing of last or next displayed video frame. Grabbed video frames are returned in simple three byte RGB format. Depending on the capabilities of the used video output driver video image data is taken as close as possible at the end of the video processing chain. Thus a returned video image could contain the blended OSD data, is deinterlaced, cropped and scaled and video properties like hue, sat could be applied. With this patch such a decent grabbing feature is implemented for vdpau video out driver. If a video output driver does not have a decent grabbing implementation then there is a generic fallback feature that grabs the video frame as they are taken from the video display queue (like the xine_get_current_frame' function). In this case color correct conversation to a RGB image incorporating source cropping and scaling to the requested grab size is also supported. A more detailed description can be found in file "xine.h".
Diffstat (limited to 'include/xine')
-rw-r--r--include/xine/video_out.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/include/xine/video_out.h b/include/xine/video_out.h
index 799e8f726..5a0401160 100644
--- a/include/xine/video_out.h
+++ b/include/xine/video_out.h
@@ -196,6 +196,9 @@ struct xine_video_port_s {
uint32_t height, double ratio,
int format, int flags);
+ /* create a new grab video frame */
+ xine_grab_video_frame_t* (*new_grab_video_frame) (xine_video_port_t *self);
+
/* retrieves the last displayed frame (useful for taking snapshots) */
vo_frame_t* (*get_last_frame) (xine_video_port_t *self);
@@ -388,6 +391,9 @@ struct vo_driver_s {
*/
int (*redraw_needed) (vo_driver_t *self);
+ /* Create a new grab video frame */
+ xine_grab_video_frame_t* (*new_grab_video_frame)(vo_driver_t *self);
+
/*
* free all resources, close driver
*/