summaryrefslogtreecommitdiff
path: root/muggle-plugin/vdr_decoder.c
diff options
context:
space:
mode:
authorLarsAC <LarsAC@e10066b5-e1e2-0310-b819-94efdf66514b>2005-01-23 13:03:34 +0000
committerLarsAC <LarsAC@e10066b5-e1e2-0310-b819-94efdf66514b>2005-01-23 13:03:34 +0000
commitec8c7eca5af284858016d573b03f82952e9e094c (patch)
treeb810d3a415d618e0be2de9a6a95e636c60d9d843 /muggle-plugin/vdr_decoder.c
parent5a628da787cdb0738efc8fbba006544252f20912 (diff)
downloadvdr-plugin-muggle-ec8c7eca5af284858016d573b03f82952e9e094c.tar.gz
vdr-plugin-muggle-ec8c7eca5af284858016d573b03f82952e9e094c.tar.bz2
Merged branches osd_extensions and flac_player for new release, yet untested
git-svn-id: https://vdr-muggle.svn.sourceforge.net/svnroot/vdr-muggle/trunk@386 e10066b5-e1e2-0310-b819-94efdf66514b
Diffstat (limited to 'muggle-plugin/vdr_decoder.c')
-rw-r--r--muggle-plugin/vdr_decoder.c49
1 files changed, 32 insertions, 17 deletions
diff --git a/muggle-plugin/vdr_decoder.c b/muggle-plugin/vdr_decoder.c
index 9b47fa8..9a7bb7c 100644
--- a/muggle-plugin/vdr_decoder.c
+++ b/muggle-plugin/vdr_decoder.c
@@ -23,7 +23,14 @@
#include "vdr_decoder.h"
#include "vdr_decoder_mp3.h"
+
+#ifdef HAVE_VORBISFILE
#include "vdr_decoder_ogg.h"
+#endif
+
+#ifdef HAVE_FLAC
+#include "vdr_decoder_flac.h"
+#endif
#include "mg_db.h"
@@ -34,8 +41,7 @@
mgMediaType mgDecoders::getMediaType (std::string s)
{
- mgMediaType
- mt = MT_UNKNOWN;
+ mgMediaType mt = MT_UNKNOWN;
// TODO: currently handles only mp3. LVW
char *
@@ -56,6 +62,13 @@ mgMediaType mgDecoders::getMediaType (std::string s)
{
mt = MT_OGG;
}
+ else
+ {
+ if (!strcmp (p, ".flac"))
+ {
+ mt = MT_FLAC;
+ }
+ }
}
return mt;
}
@@ -76,17 +89,21 @@ mgDecoders::findDecoder (mgContentItem * item)
}
switch (getMediaType (filename))
{
- case MT_MP3:
- {
- decoder = new mgMP3Decoder (item);
- }
- break;
+ case MT_MP3:
+ {
+ decoder = new mgMP3Decoder (item);
+ } break;
#ifdef HAVE_VORBISFILE
- case MT_OGG:
- {
- decoder = new mgOggDecoder (item);
- }
- break;
+ case MT_OGG:
+ {
+ decoder = new mgOggDecoder (item);
+ } break;
+#endif
+#ifdef HAVE_FLAC
+ case MT_FLAC:
+ {
+ decoder = new mgFlacDecoder( item );
+ } break;
#endif
/*
case MT_MP3_STREAM: decoder = new mgMP3StreamDecoder(full); break;
@@ -124,23 +141,21 @@ mgDecoder::mgDecoder (mgContentItem * item)
m_playing = false;
}
-
mgDecoder::~mgDecoder ()
{
}
-
void
mgDecoder::lock (bool urgent)
{
m_locklock.Lock ();
if (urgent && m_locked)
- {
+ {
m_urgentLock = true; // signal other locks to release quickly
- }
+ }
m_locked++;
-
+
m_locklock.Unlock (); // don't hold the "locklock" when locking "lock", may cause a deadlock
m_lock.Lock ();
m_urgentLock = false;