From cf3d7811754b01eca1aca617a6792417d4873a06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Reinhard=20Ni=C3=9Fl?= Date: Thu, 26 Jul 2007 22:34:08 +0200 Subject: 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 --- src/xine-engine/accel_xvmc.h | 7 +++++++ 1 file changed, 7 insertions(+) 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. */ -- cgit v1.2.3