summaryrefslogtreecommitdiff
path: root/softhddev.c
diff options
context:
space:
mode:
authorJohns <johns98@gmx.net>2012-08-13 16:57:36 +0200
committerJohns <johns98@gmx.net>2012-08-13 16:57:36 +0200
commitc07ec82e6dc94020592930f5e6a206ddc1357802 (patch)
tree69224dbdf734f61a4b6b01f53c11c9b6ab9ce700 /softhddev.c
parentecb48a5d637ff1c41001729cbf016e5498601bac (diff)
downloadvdr-plugin-softhddevice-c07ec82e6dc94020592930f5e6a206ddc1357802.tar.gz
vdr-plugin-softhddevice-c07ec82e6dc94020592930f5e6a206ddc1357802.tar.bz2
Fix bug: Can't use software decoder with VDPAU.
Diffstat (limited to 'softhddev.c')
-rw-r--r--softhddev.c21
1 files changed, 10 insertions, 11 deletions
diff --git a/softhddev.c b/softhddev.c
index 215d8a8..1131701 100644
--- a/softhddev.c
+++ b/softhddev.c
@@ -59,9 +59,9 @@ static int H264Dump(const uint8_t * data, int size);
//////////////////////////////////////////////////////////////////////////////
#ifdef USE_VDPAU
-static char ConfigVdpauDecoder = 1; ///< use vdpau decoder, if possible
+static char VdpauDecoder = 1; ///< vdpau decoder used
#else
-#define ConfigVdpauDecoder 0 ///< no vdpau decoder configured
+#define VdpauDecoder 0 ///< no vdpau decoder configured
#endif
extern int ConfigAudioBufferTime; ///< config size ms of audio buffer
@@ -1533,17 +1533,16 @@ int VideoDecodeInput(void)
case CODEC_ID_MPEG2VIDEO:
if (last_codec_id != CODEC_ID_MPEG2VIDEO) {
last_codec_id = CODEC_ID_MPEG2VIDEO;
- CodecVideoOpen(MyVideoDecoder,
- ConfigVdpauDecoder ? "mpegvideo_vdpau" : NULL,
+ CodecVideoOpen(MyVideoDecoder, VideoHardwareDecoder < 0
+ && VdpauDecoder ? "mpeg_vdpau" : NULL,
CODEC_ID_MPEG2VIDEO);
}
break;
case CODEC_ID_H264:
if (last_codec_id != CODEC_ID_H264) {
last_codec_id = CODEC_ID_H264;
- CodecVideoOpen(MyVideoDecoder,
- ConfigVdpauDecoder ? "h264video_vdpau" : NULL,
- CODEC_ID_H264);
+ CodecVideoOpen(MyVideoDecoder, VideoHardwareDecoder
+ && VdpauDecoder ? "h264_vdpau" : NULL, CODEC_ID_H264);
}
break;
default:
@@ -1587,6 +1586,10 @@ int VideoGetBuffers(void)
static void StartVideo(void)
{
VideoInit(X11DisplayName);
+#ifdef USE_VDPAU
+ VdpauDecoder = !strcasecmp(VideoGetDriverName(), "vdpau");
+#endif
+
if (ConfigFullscreen) {
// FIXME: not good looking, mapped and then resized.
VideoSetFullscreen(1);
@@ -2347,10 +2350,6 @@ int ProcessArgs(int argc, char *const argv[])
continue;
case 'v': // video driver
VideoSetDevice(optarg);
-#ifdef USE_VDPAU
- // FIXME: this is a big hack
- ConfigVdpauDecoder = !strcasecmp(optarg, "vdpau");
-#endif
continue;
case 'x': // x11 server
ConfigStartX11Server = 1;