From cef42f30ebb37eececff319dbc77a4a7f663fb48 Mon Sep 17 00:00:00 2001 From: Christian Gmeiner Date: Mon, 20 Apr 2009 21:03:50 +0200 Subject: this is a small preperation for later patches Reduce the number of method arguments and simply use a pointer to a cDxr3PesFrame. --- dxr3audiodecoder.c | 12 ++++++++---- dxr3audiodecoder.h | 8 ++++---- dxr3demuxdevice.c | 18 +++++------------- 3 files changed, 17 insertions(+), 21 deletions(-) diff --git a/dxr3audiodecoder.c b/dxr3audiodecoder.c index 645c6a3..0535ab7 100644 --- a/dxr3audiodecoder.c +++ b/dxr3audiodecoder.c @@ -99,8 +99,7 @@ void cDxr3AudioDecoder::Init() // ================================== //! decode given buffer -void cDxr3AudioDecoder::Decode(const uint8_t* buf, int length, uint32_t pts, - cDxr3SyncBuffer &aBuf) +void cDxr3AudioDecoder::Decode(cDxr3PesFrame *frame, uint32_t pts, cDxr3SyncBuffer &aBuf) { int len; int out_size = AVCODEC_MAX_AUDIO_FRAME_SIZE; @@ -111,6 +110,9 @@ void cDxr3AudioDecoder::Decode(const uint8_t* buf, int length, uint32_t pts, UNEXPECTED_PARAMETER_CHANGE }; + const uint8_t *buf = frame->GetPayload(); + int length = frame->GetPayloadLength(); + int i = 0; for (i = 0; i < length-4 && !foundHeader; i++) { @@ -215,9 +217,11 @@ void cDxr3AudioDecoder::Decode(const uint8_t* buf, int length, uint32_t pts, // ================================== //! decode lpcm -void cDxr3AudioDecoder::DecodeLpcm(const uint8_t* buf, int length, - uint32_t pts, cDxr3SyncBuffer &aBuf) +void cDxr3AudioDecoder::DecodeLpcm(cDxr3PesFrame *frame, uint32_t pts, cDxr3SyncBuffer &aBuf) { + const uint8_t *buf = frame->GetPayload(); + int length = frame->GetPayloadLength(); + if (length > (LPCM_HEADER_LENGTH + 2)) { // only even number of bytes are allowed diff --git a/dxr3audiodecoder.h b/dxr3audiodecoder.h index 81b9bc4..29ead1a 100644 --- a/dxr3audiodecoder.h +++ b/dxr3audiodecoder.h @@ -34,6 +34,8 @@ extern "C" { #include "dxr3multichannelaudio.h" #include "Uncopyable.h" +class cDxr3PesFrame; + // ================================== // decode audio to mp2 or use DD :) class cDxr3AudioDecoder : private Uncopyable { @@ -43,10 +45,8 @@ public: void Init(); - void Decode(const uint8_t* buf, int length, uint32_t pts, - cDxr3SyncBuffer &aBuf); - void DecodeLpcm(const uint8_t* buf, int length, uint32_t pts, - cDxr3SyncBuffer &aBuf); + void Decode(cDxr3PesFrame *frame, uint32_t pts, cDxr3SyncBuffer &aBuf); + void DecodeLpcm(cDxr3PesFrame *frame, uint32_t pts, cDxr3SyncBuffer &aBuf); void DecodeAc3Dts(const uint8_t* pPes, const uint8_t* buf, int length, uint32_t pts, cDxr3SyncBuffer &aBuf); diff --git a/dxr3demuxdevice.c b/dxr3demuxdevice.c index 565ea47..2b56843 100644 --- a/dxr3demuxdevice.c +++ b/dxr3demuxdevice.c @@ -368,17 +368,13 @@ int cDxr3DemuxDevice::DemuxPes(const uint8_t* buf, int length, bool bAc3Dts) m_aBuf.Start(); } while(!Poll(100)); - m_aDecoder.Decode(pesFrame.GetPayload(), - (int) (pesFrame.GetPayloadLength()), - pts, m_aBuf); + m_aDecoder.Decode(&pesFrame, pts, m_aBuf); } else { if (pts) { aPts = pts; - m_aDecoder.Decode(pesFrame.GetPayload(), - (int) (pesFrame.GetPayloadLength()), - pts, m_aBuf); + m_aDecoder.Decode(&pesFrame, pts, m_aBuf); if (m_synchState == DXR3_DEMUX_VIDEO_SYNCHED) { m_synchState = DXR3_DEMUX_SYNCHED; @@ -409,14 +405,11 @@ int cDxr3DemuxDevice::DemuxPes(const uint8_t* buf, int length, bool bAc3Dts) && !bAc3Dts) { if (m_synchState == DXR3_DEMUX_AUDIO_SYNCHED || m_synchState == DXR3_DEMUX_SYNCHED) { - m_aDecoder.DecodeLpcm(pesFrame.GetPayload(), - pesFrame.GetPayloadLength(), pts, m_aBuf); + m_aDecoder.DecodeLpcm(&pesFrame, pts, m_aBuf); } else { if (pts) { aPts = pts; - m_aDecoder.DecodeLpcm(pesFrame.GetPayload(), - pesFrame.GetPayloadLength(), - pts, m_aBuf); + m_aDecoder.DecodeLpcm(&pesFrame, pts, m_aBuf); if (m_synchState == DXR3_DEMUX_VIDEO_SYNCHED) { m_synchState = DXR3_DEMUX_SYNCHED; @@ -518,8 +511,7 @@ int cDxr3DemuxDevice::DemuxAudioPes(const uint8_t* buf, int length) syncCounter++; } while (!m_aBuf.Poll(100)); - m_aDecoder.DecodeLpcm(pesFrame.GetPayload(), - pesFrame.GetPayloadLength(), 0, m_aBuf); + m_aDecoder.DecodeLpcm(&pesFrame, 0, m_aBuf); } -- cgit v1.2.3