summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dxr3demuxdevice.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/dxr3demuxdevice.c b/dxr3demuxdevice.c
index b9e7215..cbba41d 100644
--- a/dxr3demuxdevice.c
+++ b/dxr3demuxdevice.c
@@ -417,6 +417,19 @@ int cDxr3DemuxDevice::DemuxPes(const uint8_t* buf, int length, bool bAc3Dts)
&& bAc3Dts) {
if (m_synchState == DXR3_DEMUX_AUDIO_SYNCHED ||
m_synchState == DXR3_DEMUX_SYNCHED) {
+
+ if (pts && m_synchState != DXR3_DEMUX_SYNCHED) {
+ m_synchState = DXR3_DEMUX_SYNCHED;
+ pcr = aPts - PRE_BUFFER_LENGTH;
+ m_dxr3Device->SetSysClock(pcr);
+ m_dxr3Device->SetPlayMode();
+ m_dxr3Device->EnableVideo();
+ m_dxr3Device->EnableAudio();
+ m_vBuf.Start();
+ m_aBuf.Start();
+ }
+ while(!Poll(100)) {}
+
m_aDecoder.DecodeAc3Dts(pesFrame, pts, m_aBuf);
} else {
if (pts) {