X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/926c550dc5347b149be7a5f02dd452865a8a524d..fed485e0946d9cff74fce6afdb169796d90a99f2:/utils/wxMMedia/sndfrmt.cpp diff --git a/utils/wxMMedia/sndfrmt.cpp b/utils/wxMMedia/sndfrmt.cpp index a489109d1e..dc6d653ad9 100644 --- a/utils/wxMMedia/sndfrmt.cpp +++ b/utils/wxMMedia/sndfrmt.cpp @@ -1,3 +1,12 @@ +//////////////////////////////////////////////////////////////////////////////// +// Name: sndfrmt.cpp +// Purpose: wxMMedia +// Author: Guilhem Lavaux +// Created: 1998 +// Updated: December 1998 +// Copyright: (C) 1997, 1998, Guilhem Lavaux +// License: wxWindows license +//////////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ #pragma implementation "sndfrmt.h" #endif @@ -81,6 +90,7 @@ wxSoundCodec *wxSoundDataFormat::GetCodec() m_codchange = FALSE; m_codec = wxSoundCodec::Get(m_codno); + CodecChange(); return m_codec; } @@ -96,9 +106,11 @@ void wxSoundDataFormat::CodecChange() case WXSOUND_PCM: { wxSoundPcmCodec *pcm_codec = (wxSoundPcmCodec *)codec; - pcm_codec->SetBits(m_bps); - pcm_codec->SetByteOrder(m_byteorder); - pcm_codec->SetSign(m_sign); + pcm_codec->m_orig_format.SetSampleRate(m_srate); + pcm_codec->m_orig_format.SetBps(m_bps); + pcm_codec->m_orig_format.SetChannels(m_channels); + pcm_codec->m_orig_format.SetByteOrder(m_byteorder); + pcm_codec->m_orig_format.SetSign(m_sign); break; } default: @@ -165,6 +177,8 @@ wxSoundCodec::wxSoundCodec() wxSoundCodec::~wxSoundCodec() { + if (m_mode != WAITING) + ExitMode(); } void wxSoundCodec::InitIO(const wxSoundDataFormat& format) @@ -172,13 +186,13 @@ void wxSoundCodec::InitIO(const wxSoundDataFormat& format) m_io_format = format; } -void wxSoundCodec::InitMode(int mode) +void wxSoundCodec::InitMode(ModeType mode) { wxStreamBuffer *buf_snd; - m_mode = (mode == 0) ? ENCODING : DECODING; + m_mode = mode; if (!m_chain_codec) { - if (mode == ENCODING) { + if (m_mode == ENCODING) { m_out_sound = new wxStreamBuffer(*this, wxStreamBuffer::write); m_out_sound->SetBufferIO(1024); } else { @@ -219,6 +233,7 @@ void wxSoundCodec::ExitMode() m_out_sound = m_chain_codec->GetOutStream(); } } + m_mode = WAITING; } bool wxSoundCodec::ChainCodecBefore(wxSoundDataFormat& format)