diff options
| -rw-r--r-- | HISTORY | 3 | ||||
| -rw-r--r-- | audio.c | 17 |
2 files changed, 11 insertions, 9 deletions
@@ -1,6 +1,9 @@ VDR Plugin 'rpihddevice' Revision History ----------------------------------------- +- fixed: + - don't clear audio PTS when parser shrinks the packet buffer + 2015-01-21: Version 0.0.11 -------------------------- - new: @@ -196,7 +196,7 @@ public: return ret; } - void Shrink(unsigned int length) + void Shrink(unsigned int length, bool retainPts = false) { m_mutex->Lock(); @@ -206,11 +206,6 @@ public: m_size -= length; memset(m_packet.data + m_size, 0, FF_INPUT_BUFFER_PADDING_SIZE); - // clear current PTS since it's not valid anymore after - // shrinking the packet - if (!m_ptsQueue.empty()) - m_ptsQueue.front()->pts = 0; - while (!m_ptsQueue.empty() && length) { if (m_ptsQueue.front()->length <= length) @@ -221,8 +216,12 @@ public: } else { - m_ptsQueue.front()->pts = 0; - length -= m_ptsQueue.front()->length -= length; + // clear current PTS since it's not valid anymore after + // shrinking the packet + if (!retainPts) + m_ptsQueue.front()->pts = 0; + + m_ptsQueue.front()->length -= length; length = 0; } } @@ -321,7 +320,7 @@ private: if (offset) { DBG("audio parser skipped %u of %u bytes", offset, m_size); - Shrink(offset); + Shrink(offset, true); } if (codec != cAudioCodec::eInvalid) |
