summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCooper Yuan <cooperyuan@gmail.com>2009-09-13 13:16:10 -0400
committerCooper Yuan <cooperyuan@gmail.com>2009-09-13 13:16:10 -0400
commit654b8f2b5b31f1e121680fdfcb3de1d9cdc19ac8 (patch)
tree207142e03791428b5bfe461a2feaa1f4aaae1519
parent34e792ecbce2faf4dc9f6f1e4c8498cc45231e9e (diff)
xvmc: pass texture adaptor to xvmc
-rw-r--r--src/radeon_hwmc.c18
-rw-r--r--src/radeon_hwmc.h20
-rw-r--r--src/radeon_video.c11
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 */