summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReinhard Nißl <rnissl@gmx.de>2007-07-26 22:34:08 +0200
committerReinhard Nißl <rnissl@gmx.de>2007-07-26 22:34:08 +0200
commitcf3d7811754b01eca1aca617a6792417d4873a06 (patch)
treefd3d0a2b634e323045d5a9f5fbc65fea5a9d0787
parenta84b249d6d82bd9ba51c4827bd78f4836f32fb6d (diff)
downloadxine-lib-cf3d7811754b01eca1aca617a6792417d4873a06.tar.gz
xine-lib-cf3d7811754b01eca1aca617a6792417d4873a06.tar.bz2
provide a direct link to accelerated frame for postprocessing
Accelerated frames share data between decoder and video out driver. When frames get intercepted for postprocessing the decoder will pass intercepted frames to the video out driver, but the driver needs to access it's native frame for accelerated decoding. Putting a pointer to the native frame into acceleration data is an easy way to achieve this. Some additional macros simplify accessing the native frame. --HG-- extra : transplant_source : 0%FB%1B4A%D9%27%92z%A5E%C1%1F%81nB%00y%17%9E
-rw-r--r--src/xine-engine/accel_xvmc.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/xine-engine/accel_xvmc.h b/src/xine-engine/accel_xvmc.h
index 46cbfba22..d60246c3e 100644
--- a/src/xine-engine/accel_xvmc.h
+++ b/src/xine-engine/accel_xvmc.h
@@ -67,6 +67,7 @@ typedef struct xine_vld_frame_s {
typedef struct xine_xvmc_s {
+ vo_frame_t *vo_frame;
xine_macroblocks_t *macroblocks;
void (*proc_macro_block)(int x,int y,int mb_type,
int motion_type,int (*mv_field_sel)[2],
@@ -76,6 +77,9 @@ typedef struct xine_xvmc_s {
int second_field,int (*f_mot_pmv)[2],int (*b_mot_pmv)[2]);
} xine_xvmc_t ;
+#define XVMC_DATA(frame_gen) ((frame_gen) ? (xine_xvmc_t *)(frame_gen)->accel_data : (xine_xvmc_t *)0)
+#define XVMC_FRAME(frame_gen) ((frame_gen) ? (xvmc_frame_t *)XVMC_DATA(frame_gen)->vo_frame : (xvmc_frame_t *)0)
+
typedef struct xine_xxmc_s {
/*
@@ -110,6 +114,9 @@ typedef struct xine_xxmc_s {
void (*proc_xxmc_unlock) (vo_driver_t *this_gen);
} xine_xxmc_t;
+#define XXMC_DATA(frame_gen) ((frame_gen) ? (xine_xxmc_t *)(frame_gen)->accel_data : (xine_xxmc_t *)0)
+#define XXMC_FRAME(frame_gen) ((frame_gen) ? (xxmc_frame_t *)XXMC_DATA(frame_gen)->xvmc.vo_frame : (xxmc_frame_t *)0)
+
/*
* Register XvMC stream types here.
*/