From 3de68cd50620e8602be9b36258811ad801148800 Mon Sep 17 00:00:00 2001 From: narspt Date: Sun, 6 Feb 2022 21:00:15 +0000 Subject: [PATCH 1/2] fix frame sequence applied by UpdatePids() --- src/cpacketstream.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/cpacketstream.cpp b/src/cpacketstream.cpp index 27776b7..87d278d 100644 --- a/src/cpacketstream.cpp +++ b/src/cpacketstream.cpp @@ -77,7 +77,8 @@ void CPacketStream::Push(CPacket *Packet) { // update stream dependent packet data m_LastPacketTime.Now(); - Packet->UpdatePids(m_uiPacketCntr++); + Packet->UpdatePids(m_uiPacketCntr); + if (Packet->IsDvFrame()) { m_uiPacketCntr++; } // transcoder avaliable ? if ( m_CodecStream != NULL ) { From ee95248e95407ffb8d480bd1b892f8d0745ce93e Mon Sep 17 00:00:00 2001 From: narspt Date: Sun, 6 Feb 2022 21:08:53 +0000 Subject: [PATCH 2/2] fix m_uiYsfPacketFrameId and m_uiImrsPacketFrameId to match the change on m_uiPacketCntr --- src/cpacket.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/cpacket.cpp b/src/cpacket.cpp index 3fe3bd5..61d7134 100644 --- a/src/cpacket.cpp +++ b/src/cpacket.cpp @@ -174,7 +174,10 @@ void CPacket::UpdatePids(uint32 pid) } if ( m_uiYsfPacketFrameId == 0xFF ) { - m_uiYsfPacketFrameId = ((pid / 5) & 0x7FU) << 1; + if (IsDvHeader()) + m_uiYsfPacketFrameId = 0; + else + m_uiYsfPacketFrameId = (((pid / 5) + 1) & 0x7FU) << 1; } // imrs pid needs update ? if ( m_uiImrsPacketId == 0xFF ) @@ -184,6 +187,9 @@ void CPacket::UpdatePids(uint32 pid) } if ( m_uiImrsPacketFrameId == 0xFFFF ) { - m_uiImrsPacketFrameId = LOWORD(pid / 5); + if (IsDvHeader()) + m_uiImrsPacketFrameId = 0; + else + m_uiImrsPacketFrameId = LOWORD((pid / 5) + 1); } }