summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2001-11-10 13:41:22 +0100
committerKlaus Schmidinger <vdr@tvdr.de>2001-11-10 13:41:22 +0100
commitf131c8c79dfe9a36a5e332f5c27f5685028ccbc3 (patch)
tree18d0b5e88706f884831bd8af93005cb44af08d58
parent8d7c343a927f7be87f85cdaae4a2c13db085d67e (diff)
downloadvdr-f131c8c79dfe9a36a5e332f5c27f5685028ccbc3.tar.gz
vdr-f131c8c79dfe9a36a5e332f5c27f5685028ccbc3.tar.bz2
Added MPEG audio support for DVD
-rw-r--r--HISTORY1
-rw-r--r--dvbapi.c25
-rw-r--r--dvd.c23
-rw-r--r--dvd.h11
4 files changed, 36 insertions, 24 deletions
diff --git a/HISTORY b/HISTORY
index a1e79e9a..0628970f 100644
--- a/HISTORY
+++ b/HISTORY
@@ -871,3 +871,4 @@ Video Disk Recorder Revision History
- Changed version numbering scheme.
- Fixed several channel definitions in 'channels.conf' (thanks to Thilo
Wunderlich).
+- Added MPEG audio support for DVD (thanks to Andreas Schultz).
diff --git a/dvbapi.c b/dvbapi.c
index f72782b4..12ff9486 100644
--- a/dvbapi.c
+++ b/dvbapi.c
@@ -7,7 +7,7 @@
* DVD support initially written by Andreas Schultz <aschultz@warp10.net>
* based on dvdplayer-0.5 by Matjaz Thaler <matjaz.thaler@guest.arnes.si>
*
- * $Id: dvbapi.c 1.137 2001/11/04 12:05:36 kls Exp $
+ * $Id: dvbapi.c 1.138 2001/11/10 13:35:22 kls Exp $
*/
//#define DVDDEBUG 1
@@ -1348,9 +1348,6 @@ bool cReplayBuffer::NextFile(uchar FileNumber, int FileOffset)
#define cOUTPACK 5
#define cOUTFRAMES 6
-#define aAC3 0x80
-#define aLPCM 0xA0
-
// --- cAC3toPCM -------------------------------------------------------------
class cAC3toPCM {
@@ -1574,28 +1571,12 @@ cDVDplayBuffer::~cDVDplayBuffer()
unsigned int cDVDplayBuffer::getAudioStream(unsigned int StreamId)
{
- unsigned int trackID;
-
- if ((cyclestate < cOPENCHAPTER) || (StreamId > 7))
+ if (cyclestate < cOPENCHAPTER || StreamId > 7)
return 0;
if (!(cur_pgc->audio_control[StreamId] & 0x8000))
return 0;
int track = (cur_pgc->audio_control[StreamId] >> 8) & 0x07;
- switch (vts_file->vtsi_mat->vts_audio_attr[track].audio_format) {
- case 0: // ac3
- trackID = aAC3;
- break;
- case 2: // mpeg1
- case 3: // mpeg2ext
- case 4: // lpcm
- case 6: // dts
- trackID = aLPCM;
- break;
- default: esyslog(LOG_ERR, "ERROR: unknown Audio stream info");
- return 0;
- }
- trackID |= track;
- return trackID;
+ return dvd->getAudioTrack(track) | track;
}
void cDVDplayBuffer::ToggleAudioTrack(void)
diff --git a/dvd.c b/dvd.c
index 841e998b..e061b141 100644
--- a/dvd.c
+++ b/dvd.c
@@ -6,7 +6,7 @@
*
* Initially written by Andreas Schultz <aschultz@warp10.net>
*
- * $Id: dvd.c 1.3 2001/08/06 16:07:44 kls Exp $
+ * $Id: dvd.c 1.4 2001/11/10 13:38:50 kls Exp $
*/
#ifdef DVDSUPPORT
@@ -21,6 +21,7 @@
#include <unistd.h>
#include "dvd.h"
+#include "tools.h"
// --- cDVD ----------------------------------------------------------------------------
@@ -145,4 +146,24 @@ dvd_file_t *cDVD::openTitle(int Title, dvd_read_domain_t domain)
return title;
}
+int cDVD::getAudioTrack(int stream)
+{
+ if (getVTS()) {
+ switch (getVTS()->vtsi_mat->vts_audio_attr[stream].audio_format) {
+ case 0: // ac3
+ return aAC3;
+ case 2: // mpeg1
+ case 3: // mpeg2ext
+ return aMPEG;
+ case 4: // lpcm
+ return aLPCM;
+ case 6: // dts
+ return aDTS;
+ default:
+ esyslog(LOG_ERR, "ERROR: unknown Audio stream info");
+ }
+ }
+ return 0;
+}
+
#endif //DVDSUPPORT
diff --git a/dvd.h b/dvd.h
index 68fc1d38..5ac14548 100644
--- a/dvd.h
+++ b/dvd.h
@@ -6,7 +6,7 @@
*
* Initially written by Andreas Schultz <aschultz@warp10.net>
*
- * $Id: dvd.h 1.3 2001/08/05 16:00:57 kls Exp $
+ * $Id: dvd.h 1.4 2001/11/10 13:38:25 kls Exp $
*/
#ifndef __DVD_H
@@ -21,6 +21,11 @@
#include <dvdread/nav_read.h>
#include <dvdread/nav_print.h>
+#define aAC3 0x80
+#define aDTS 0x88
+#define aLPCM 0xA0
+#define aMPEG 0xC0
+
class cDVD {
private:
static cDVD *dvdInstance;
@@ -44,8 +49,12 @@ public:
bool isValid(void) { return (dvd != NULL); }
ifo_handle_t *openVMG(void);
ifo_handle_t *openVTS(int TitleSet);
+ ifo_handle_t *getVTS() { return vts_file; }
dvd_file_t *openTitle(int Title, dvd_read_domain_t domain);
static cDVD *getDVD(void);
+ int getAudioNrOfTracks() { return getVTS() ? getVTS()->vtsi_mat->nr_of_vts_audio_streams : 0; }
+ int getAudioLanguage(int stream) { return getVTS() ? getVTS()->vtsi_mat->vts_audio_attr[stream].lang_code : 0; }
+ int getAudioTrack(int stream);
};
#endif //DVDSUPPORT