Dear visitor, welcome to VDR Portal. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.
Ich probiere das dieses WE auch gerne noch mal alles durch, auf die Tonspuren habe ich nicht geachtet, aber das meiste was wir in SD sehen hat auch eine DD-Tonspur.
Aber noch mal meine Frage: Kann man den Versatz, den der Decoder produziert mit entsprechendem Debug-Code nicht exakt ermitteln?
(siehe auch meinen letzten Beitrag)
Stereo / Dolby sollte keinerlei Unterschiede machen, außer man benutzt Passthrough.
Bei Passthrough kann der Fernseher/Receiver ein anderes Delay brauchen, deshalb hat xine noch ein Delay nur für Passthrough.
|
|
Source code |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
diff --git a/audio.c b/audio.c
index 24afabe..bfc6b59 100644
--- a/audio.c
+++ b/audio.c
@@ -3947,7 +3947,10 @@ int64_t AudioGetClock(void)
// delay zero, if no valid time stamp
if ((delay = AudioGetDelay())) {
- return AudioRing[AudioRingRead].PTS - delay;
+ if (AudioRing[AudioRingRead].UseAc3) {
+ return AudioRing[AudioRingRead].PTS + 0 - delay;
+ }
+ return AudioRing[AudioRingRead].PTS + 0 - delay;
}
}
return INT64_C(0x8000000000000000);
|
Mit entsprechenden Testclips könnte man es testen, aber man kann nicht groß rechnen oder sonst wie ermitteln.
Ansonsten sieht man nur den Zeitstempelbereich vom Sender "xxx/\ms" bei dem AV_INFO Debug im Log.
Stereo / Dolby sollte keinerlei Unterschiede machen, außer man benutzt Passthrough.
Bei Passthrough kann der Fernseher/Receiver ein anderes Delay brauchen, deshalb hat xine noch ein Delay nur für Passthrough.
|
|
Source code |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
diff --git a/audio.c b/audio.c
index 24afabe..2179604 100644
--- a/audio.c
+++ b/audio.c
@@ -3947,7 +3947,10 @@ int64_t AudioGetClock(void)
// delay zero, if no valid time stamp
if ((delay = AudioGetDelay())) {
- return AudioRing[AudioRingRead].PTS - delay;
+ if (AudioRing[AudioRingRead].UseAc3) {
+ return AudioRing[AudioRingRead].PTS + 0 * 90 - delay;
+ }
+ return AudioRing[AudioRingRead].PTS + 50 * 90 - delay;
}
}
return INT64_C(0x8000000000000000);
|
|
|
Source code |
1 2 3 4 5 6 7 8 9 |
// (cast) needed for the evil gcc
if (AudioPTS != (int64_t) INT64_C(0x8000000000000000)) {
int64_t delay;
if ((delay = AudioGetDelay())) {
return AudioPTS - delay;
}
}
return INT64_C(0x8000000000000000);
|
|
|
Source code |
1 2 3 4 5 6 7 8 9 |
// (cast) needed for the evil gcc
if (AudioPTS != (int64_t) INT64_C(0x8000000000000000)) {
int64_t delay;
if ((delay = AudioGetDelay())) {
return AudioPTS - delay;
}
}
return INT64_C(0x8000000000000000);
|