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); } } 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 ) {