+////////////////////////////////////////////////////////////////////////////////
+// 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
#include "sndsnd.h"
#include "sndfrmt.h"
#include "sndpcm.h"
-#include <dmalloc.h>
// ----------------------------------------------------------------------------
// wxSoundDataFormat
m_codcreate = TRUE;
}
+wxSoundDataFormat::wxSoundDataFormat(const wxSoundDataFormat& format)
+{
+ m_srate = format.m_srate;
+ m_bps = format.m_bps;
+ m_channels = format.m_channels;
+ m_codno = format.m_codno;
+ m_sign = format.m_sign;
+ m_byteorder = format.m_byteorder;
+ m_codchange = FALSE;
+ m_codcreate = TRUE;
+ m_codec = NULL;
+}
+
wxSoundDataFormat::~wxSoundDataFormat()
{
wxDELETE(m_codec);
return NULL;
if (m_codchange)
- wxDELETEA(m_codec);
+ wxDELETE(m_codec);
if (m_codec)
return m_codec;
m_codchange = FALSE;
m_codec = wxSoundCodec::Get(m_codno);
+ CodecChange();
return m_codec;
}
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:
+ codec->InitWith(*this);
break;
}
}
// ----------------------------------------------------------------------------
#include "sndpcm.h"
-//#include "sndadpcm.h"
+#include "sndadpcm.h"
//#include "sndalaw.h"
#include "sndmulaw.h"
static wxClassInfo *l_sound_formats[] = {
NULL,
CLASSINFO(wxSoundPcmCodec),
- NULL, // CLASSINFO(wxSoundAdpcmCodec),
+ CLASSINFO(wxSoundAdpcmCodec),
NULL,
NULL,
NULL,
NULL, // CLASSINFO(wxSoundAlawCodec),
- NULL // CLASSINFO(wxSoundMulawCodec)
+ CLASSINFO(wxSoundMulawCodec)
};
static int l_nb_formats = WXSIZEOF(l_sound_formats);
m_in_sound = NULL;
m_out_sound = NULL;
m_init = TRUE;
+ m_chain_codec = NULL;
}
wxSoundCodec::~wxSoundCodec()
{
+ if (m_mode != WAITING)
+ ExitMode();
}
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 {
m_out_sound = m_chain_codec->GetOutStream();
}
}
+ m_mode = WAITING;
}
bool wxSoundCodec::ChainCodecBefore(wxSoundDataFormat& format)