diff options
author | Cooper Yuan <cooperyuan@gmail.com> | 2009-09-13 13:16:10 -0400 |
---|---|---|
committer | Cooper Yuan <cooperyuan@gmail.com> | 2009-09-13 13:16:10 -0400 |
commit | 654b8f2b5b31f1e121680fdfcb3de1d9cdc19ac8 (patch) | |
tree | 207142e03791428b5bfe461a2feaa1f4aaae1519 /src | |
parent | 34e792ecbce2faf4dc9f6f1e4c8498cc45231e9e (diff) |
xvmc: pass texture adaptor to xvmc
Diffstat (limited to 'src')
-rw-r--r-- | src/radeon_hwmc.c | 18 | ||||
-rw-r--r-- | src/radeon_hwmc.h | 20 | ||||
-rw-r--r-- | src/radeon_video.c | 11 |
3 files changed, 33 insertions, 16 deletions
diff --git a/src/radeon_hwmc.c b/src/radeon_hwmc.c index 4d6cdb6..4eeadac 100644 --- a/src/radeon_hwmc.c +++ b/src/radeon_hwmc.c @@ -29,7 +29,23 @@ #include <X11/extensions/XvMC.h> #include "fourcc.h" #include "radeon.h" -#include "radeon_hwmc.h" + +#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0])) + +#define FOURCC_XVMC (('C' << 24) + ('M' << 16) + ('V' << 8) + 'X') + +#define XVMC_R500_MPEG2_MC 0x1 +#define RADEON_XVMC_LIBNAME "RadeonXvMC" +#define RADEON_XVMC_MAJOR 0 +#define RADEON_XVMC_MINOR 1 +#define RADEON_XVMC_PATCHLEVEL 0 + +enum +{ + SURFACE_TYPE_MPEG2_MPML = FOURCC_XVMC, + SURFACE_TYPE_MPEG1_MPML, + SURFACE_TYPE_MAX +}; static int subpicture_index_list[] = { diff --git a/src/radeon_hwmc.h b/src/radeon_hwmc.h index 337d76c..655a93c 100644 --- a/src/radeon_hwmc.h +++ b/src/radeon_hwmc.h @@ -27,21 +27,11 @@ #ifndef RADEON_HWMC_H #define RADEON_HWMC_H -#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0])) +#include <xf86xvmc.h> -#define FOURCC_XVMC (('C' << 24) + ('M' << 16) + ('V' << 8) + 'X') - -#define XVMC_R500_MPEG2_MC 0x1 -#define RADEON_XVMC_LIBNAME "RadeonXvMC" -#define RADEON_XVMC_MAJOR 0 -#define RADEON_XVMC_MINOR 1 -#define RADEON_XVMC_PATCHLEVEL 0 - -enum -{ - SURFACE_TYPE_MPEG2_MPML = FOURCC_XVMC, - SURFACE_TYPE_MPEG1_MPML, - SURFACE_TYPE_MAX -}; +extern XF86MCAdaptorPtr RADEONCreateAdaptor(ScreenPtr pScreen); +extern void RADEONInitHwmc(ScreenPtr pScreen, unsigned int num_adaptors, + XF86VideoAdaptorPtr * xv_adaptors); +extern void RADEONDestroyAdaptor(XF86MCAdaptorPtr xv_adaptor); #endif
\ No newline at end of file diff --git a/src/radeon_video.c b/src/radeon_video.c index a14f44c..0e3d5fa 100644 --- a/src/radeon_video.c +++ b/src/radeon_video.c @@ -28,6 +28,8 @@ #include "msp3430.h" #include "tda9885.h" +#include "radeon_hwmc.h" + #define OFF_DELAY 250 /* milliseconds */ #define FREE_DELAY 15000 @@ -314,6 +316,15 @@ void RADEONInitVideo(ScreenPtr pScreen) if(newAdaptors) xfree(newAdaptors); + if (texturedAdaptor) + { + XF86MCAdaptorPtr *adaptorXvMC = RADEONCreateAdaptor(pScreen); + if (adaptorXvMC) + { + RADEONInitHwmc(pScreen, 1, adaptorXvMC); + RADEONDestroyAdaptor(adaptorXvMC); + } + } } /* client libraries expect an encoding */ |