summaryrefslogtreecommitdiff
path: root/asdcplib/src/WavFileWriter.h
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2016-01-05 15:32:10 +0000
committerCarl Hetherington <cth@carlh.net>2016-01-05 15:32:10 +0000
commit3ec4338ce90ea0549409312f24f8b28c07a5d2da (patch)
tree09aaaff66dd860abbeacc20793145e1a27f4defd /asdcplib/src/WavFileWriter.h
parent342aad2ddf893aaaafa9a2c9980579d2dc4ec125 (diff)
asdcplib 2.5.11
Diffstat (limited to 'asdcplib/src/WavFileWriter.h')
-rwxr-xr-xasdcplib/src/WavFileWriter.h51
1 files changed, 33 insertions, 18 deletions
diff --git a/asdcplib/src/WavFileWriter.h b/asdcplib/src/WavFileWriter.h
index daf26ead..763930bb 100755
--- a/asdcplib/src/WavFileWriter.h
+++ b/asdcplib/src/WavFileWriter.h
@@ -25,7 +25,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*! \file WavFileWriter.h
- \version $Id: WavFileWriter.h,v 1.6 2009/04/09 19:16:49 msheby Exp $
+ \version $Id: WavFileWriter.h,v 1.8 2013/06/17 17:55:54 jhurst Exp $
\brief demux and write PCM data to WAV file(s)
*/
@@ -98,7 +98,8 @@ class WavFileWriter
enum SplitType_t {
ST_NONE, // write all channels to a single WAV file
ST_MONO, // write each channel a separate WAV file
- ST_STEREO // write channel pairs to separate WAV files
+ ST_STEREO, // write channel pairs to separate WAV files
+ ST_MAX
};
ASDCP::Result_t
@@ -136,22 +137,36 @@ class WavFileWriter
assert(file_count && m_ChannelCount);
ui32_t element_size = ASDCP::PCM::CalcFrameBufferSize(m_ADesc) / file_count;
-
- for ( ui32_t i = 0; i < file_count && ASDCP_SUCCESS(result); i++ )
- {
- snprintf(filename, Kumu::MaxFilePath, "%s_%u.wav", file_root, (i + 1));
- m_OutFile.push_back(new WavFileElement(element_size));
- result = m_OutFile.back()->OpenWrite(filename);
-
- if ( ASDCP_SUCCESS(result) )
- {
- ASDCP::PCM::AudioDescriptor tmpDesc = m_ADesc;
- tmpDesc.ChannelCount = m_ChannelCount;
- ASDCP::Wav::SimpleWaveHeader Wav(tmpDesc);
- result = Wav.WriteToFile(*(m_OutFile.back()));
- }
- }
-
+ if (split == ST_NONE)
+ {
+ snprintf(filename, Kumu::MaxFilePath, "%s", file_root);
+ m_OutFile.push_back(new WavFileElement(element_size));
+ result = m_OutFile.back()->OpenWrite(filename);
+ if ( ASDCP_SUCCESS(result) )
+ {
+ ASDCP::PCM::AudioDescriptor tmpDesc = m_ADesc;
+ tmpDesc.ChannelCount = m_ChannelCount;
+ ASDCP::RF64::SimpleRF64Header Wav(tmpDesc);
+ result = Wav.WriteToFile(*(m_OutFile.back()));
+ }
+ }
+ else
+ {
+ for ( ui32_t i = 0; i < file_count && ASDCP_SUCCESS(result); i++ )
+ {
+ snprintf(filename, Kumu::MaxFilePath, "%s_%u.wav", file_root, (i + 1));
+ m_OutFile.push_back(new WavFileElement(element_size));
+ result = m_OutFile.back()->OpenWrite(filename);
+
+ if ( ASDCP_SUCCESS(result) )
+ {
+ ASDCP::PCM::AudioDescriptor tmpDesc = m_ADesc;
+ tmpDesc.ChannelCount = m_ChannelCount;
+ ASDCP::RF64::SimpleRF64Header Wav(tmpDesc);
+ result = Wav.WriteToFile(*(m_OutFile.back()));
+ }
+ }
+ }
return result;
}