From deab7e6f472bcdbbac47ce51f7ce7b7f7990e7a8 Mon Sep 17 00:00:00 2001 From: "Devin J. Pohly" Date: Thu, 8 Aug 2013 13:24:21 -0400 Subject: [PATCH] Add deinterlacing function to RageSoundMixBuffer JACK processes every channel separately, so we need this. The audio data is interlaced all the way back at RageSound::GetDataToPlay(), so this is an easier hack for now than using deinterlaced until it's needed. --- src/RageSoundMixBuffer.cpp | 8 ++++++++ src/RageSoundMixBuffer.h | 1 + 2 files changed, 9 insertions(+) diff --git a/src/RageSoundMixBuffer.cpp b/src/RageSoundMixBuffer.cpp index dca8a4f1ca..ca5ecc91f3 100644 --- a/src/RageSoundMixBuffer.cpp +++ b/src/RageSoundMixBuffer.cpp @@ -90,6 +90,14 @@ void RageSoundMixBuffer::read( float *pBuf ) m_iBufUsed = 0; } +void RageSoundMixBuffer::read_deinterlace( float **pBufs, int channels ) +{ + for( int i = 0; i < m_iBufUsed; ++i ) + for( int ch = 0; ch < channels; ++ch ) + pBufs[ch][i] = m_pMixbuf[channels * i + ch]; + m_iBufUsed = 0; +} + /* * Copyright (c) 2002-2004 Glenn Maynard * All rights reserved. diff --git a/src/RageSoundMixBuffer.h b/src/RageSoundMixBuffer.h index 5a8c40ca02..0634680364 100644 --- a/src/RageSoundMixBuffer.h +++ b/src/RageSoundMixBuffer.h @@ -17,6 +17,7 @@ public: void read( int16_t *pBuf ); void read( float *pBuf ); + void read_deinterlace( float **pBufs, int channels ); float *read() { return m_pMixbuf; } unsigned size() const { return m_iBufUsed; } void SetWriteOffset( int iOffset );