* Fixes and updates on wxMMedia.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1722 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Guilhem Lavaux
1999-02-18 18:18:06 +00:00
parent b2cce0c457
commit 8a7c9dcc1c
12 changed files with 84 additions and 27 deletions

View File

@@ -10,30 +10,65 @@
wxSoundAdpcmCodec::wxSoundAdpcmCodec()
: wxSoundCodec()
{
g72x_init_state(codec_state);
// TODO: For the moment, only 1 channel is supported.
m_codec_state = new g72x_state;
g72x_init_state(m_codec_state);
}
wxSoundAdpcmCodec::~wxSoundAdpcmCodec()
{
}
void wxSoundAdpcmCodec::InitWith(const wxSoundDataFormat& format)
{
m_srate = format.GetSampleRate();
}
int wxSoundAdpcmCodec::GetBits(int nbits)
{
unsigned int mask;
int bits;
if (bits_waiting == 0)
current_byte = m_in_sound->GetChar();
if (m_bits_waiting == 0)
m_current_byte = m_in_sound->GetChar();
mask = (1 << nbits) - 1;
bits = current_byte & mask;
current_byte >>= nbits;
bits = m_current_byte & mask;
m_current_byte >>= nbits;
m_bits_waiting -= nbits;
return bits;
}
void wxSoundAdpcmCodec::Decode()
{
int smp, bits;
wxSoundDataFormat pref_frmt;
pref_frmt = GetPreferredFormat(0);
if (!(m_io_format == pref_frmt))
ChainCodecAfter(pref_frmt);
bits = GetBits(4);
if (m_io_format.GetByteOrder() == wxSND_SAMPLE_LE) {
while (!StreamOk()) {
smp = g721_decoder(bits, AUDIO_ENCODING_LINEAR, m_codec_state);
m_out_sound->PutChar(smp & 0x00ff);
m_out_sound->PutChar((smp & 0xff00) >> 8);
bits = GetBits(4);
}
} else {
while (!StreamOk()) {
smp = g721_decoder(bits, AUDIO_ENCODING_LINEAR, m_codec_state);
m_out_sound->PutChar((smp & 0xff00) >> 8);
m_out_sound->PutChar(smp & 0x00ff);
bits = GetBits(4);
}
}
}
void wxSoundAdpcmCodec::Encode()
{
/*
int smp;
wxSoundDataFormat pref_frmt;
@@ -57,18 +92,15 @@ void wxSoundAdpcmCodec::Decode()
bits = GetBits(4);
}
}
*/
}
void wxSoundMulawCodec::Encode()
size_t wxSoundAdpcmCodec::GetByteRate() const
{
return (m_io_format.GetSampleRate() * m_io_format.GetChannels()) / 2;
}
size_t wxSoundMulawCodec::GetByteRate() const
{
return m_srate;
}
wxSoundDataFormat wxSoundMulawCodec::GetPreferredFormat(int WXUNUSED(no)) const
wxSoundDataFormat wxSoundAdpcmCodec::GetPreferredFormat(int WXUNUSED(no)) const
{
wxSoundDataFormat format;