Mailing List archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[vdr] Re: DVD-AC3-Playback
Stephan Schreiber wrote:
>
> Hello Klaus,
>
> > Can somebody please explicitly verify whether or not Andreas'
> > suggested modification
> >
> > int written = b[8] + 9; // skips the PES header
> > if ((b[written] & 0xF0) == 0x80)
> > written += 4;
> >
> > actually works for DVDs _and_ DVB recordings? If it doesn't, I'll have to
> > add a flag to distinguish between DVD and DVB (which I would like
> > to avoid...).
>
> I did yesterday, and Uwe confirmed my observations.
> Andreas' modification does not work with my AC3 VDR recordings.
> Some frames seem to match the condition
> > if ((b[written] & 0xF0) == 0x80)
> so I get stutterings and my amplifier switches back to PCM mode every few
> seconds.
> It stays in 3/2.1 mode most of the time however.
>
> The DVD's I tested however work perfectly ever since.
>
> That flag you mentioned seems not to be an idea _that_ bad after all, if
> maybe a little "ugly"....
Well, then just to make sure I don't break anything else, can you please
try this modification:
--- dvbapi.c 2001/11/24 14:45:58
+++ dvbapi.c 2001/11/25 16:38:09
@@ -710,6 +710,7 @@
int readIndex, writeIndex;
bool canDoTrickMode;
bool canToggleAudioTrack;
+ bool skipAC3bytes;
uchar audioTrack;
void TrickSpeed(int Increment);
virtual void Empty(bool Block = false);
@@ -752,6 +753,7 @@
readIndex = writeIndex = -1;
canDoTrickMode = false;
canToggleAudioTrack = false;
+ skipAC3bytes = false;
audioTrack = 0xC0;
if (cDvbApi::AudioCommand()) {
if (!dolbyDev.Open(cDvbApi::AudioCommand(), "w"))
@@ -769,7 +771,7 @@
if (b[0] == 0x00 && b[1] == 0x00 && b[2] == 0x01) {
if (b[3] == 0xBD) { // dolby
int l = b[4] * 256 + b[5] + 6;
- int written = b[8] + 9; // skips the PES header
+ int written = b[8] + (skipAC3bytes ? 13 : 9); // skips the PES header
int n = min(l - written, MaxLength);
while (n > 0) {
int w = fwrite(&b[written], 1, n, dolbyDev);
@@ -1545,6 +1547,7 @@
canToggleAudioTrack = true;//XXX determine from cDVD!
data = new uchar[1024 * DVD_VIDEO_LB_LEN];
canDoTrickMode = true;
+ skipAC3bytes = true;
dvbApi->SetModeReplay();
Start();
}
Maybe the line numbers don't match exactly, but this is such a small
modification that you should even be able to do it manually.
Can you confirm that this now replays DVD _and_ DVB external AC3 sound
correctly?
Klaus
--
_______________________________________________________________
Klaus Schmidinger Phone: +49-8635-6989-10
CadSoft Computer GmbH Fax: +49-8635-6989-40
Hofmark 2 Email: kls@cadsoft.de
D-84568 Pleiskirchen, Germany URL: www.cadsoft.de
_______________________________________________________________
Home |
Main Index |
Thread Index