* Fixes.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1366 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
7
utils/wxMMedia/TODO
Normal file
7
utils/wxMMedia/TODO
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
-------------
|
||||||
|
| TODO list |
|
||||||
|
-------------
|
||||||
|
|
||||||
|
* Update the sound fragmenter to the new codec scheme.
|
||||||
|
* Fix the codec scheme.
|
||||||
|
* Add more codec.
|
7
utils/wxMMedia/WARNING
Normal file
7
utils/wxMMedia/WARNING
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
------------------------------------------------------------------------------
|
||||||
|
| WARNING: This sub-package doesn't work, so don't try to compile it if you |
|
||||||
|
| don't want to make some development on it. |
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
If you want to build it rename Makefile.bd in Makefile and Makefile.ibd in
|
||||||
|
Makefile.in. After that, rerun config.status.
|
86
utils/wxMMedia/sndadpcm.cpp
Normal file
86
utils/wxMMedia/sndadpcm.cpp
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
#ifdef __GNUG__
|
||||||
|
#pragma implementation "sndmulaw.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "sndsnd.h"
|
||||||
|
#include "sndfrmt.h"
|
||||||
|
#include "sndadpcm.h"
|
||||||
|
#include "adpcm/g72x.h"
|
||||||
|
|
||||||
|
wxSoundAdpcmCodec::wxSoundAdpcmCodec()
|
||||||
|
: wxSoundCodec()
|
||||||
|
{
|
||||||
|
g72x_init_state(codec_state);
|
||||||
|
}
|
||||||
|
|
||||||
|
wxSoundAdpcmCodec::~wxSoundAdpcmCodec()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
int wxSoundAdpcmCodec::GetBits(int nbits)
|
||||||
|
{
|
||||||
|
unsigned int mask;
|
||||||
|
int bits;
|
||||||
|
|
||||||
|
if (bits_waiting == 0)
|
||||||
|
current_byte = m_in_sound->GetChar();
|
||||||
|
|
||||||
|
mask = (1 << nbits) - 1;
|
||||||
|
bits = current_byte & mask;
|
||||||
|
current_byte >>= nbits;
|
||||||
|
return bits;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void wxSoundAdpcmCodec::Decode()
|
||||||
|
{
|
||||||
|
int smp;
|
||||||
|
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, 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, codec_state);
|
||||||
|
m_out_sound->PutChar((smp & 0xff00) >> 8);
|
||||||
|
m_out_sound->PutChar(smp & 0x00ff);
|
||||||
|
bits = GetBits(4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxSoundMulawCodec::Encode()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t wxSoundMulawCodec::GetByteRate() const
|
||||||
|
{
|
||||||
|
return m_srate;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxSoundDataFormat wxSoundMulawCodec::GetPreferredFormat(int WXUNUSED(no)) const
|
||||||
|
{
|
||||||
|
wxSoundDataFormat format;
|
||||||
|
|
||||||
|
format.SetCodecNo(WXSOUND_PCM);
|
||||||
|
format.SetSampleRate(m_srate);
|
||||||
|
format.SetBps(16);
|
||||||
|
format.SetChannels(1);
|
||||||
|
format.SetSign(wxSND_SAMPLE_SIGNED);
|
||||||
|
#ifdef USE_BE_MACH
|
||||||
|
format.SetByteOrder(wxSND_SAMPLE_BE);
|
||||||
|
#else
|
||||||
|
format.SetByteOrder(wxSND_SAMPLE_LE);
|
||||||
|
#endif
|
||||||
|
return format;
|
||||||
|
}
|
@@ -106,9 +106,11 @@ void wxSoundDataFormat::CodecChange()
|
|||||||
case WXSOUND_PCM: {
|
case WXSOUND_PCM: {
|
||||||
wxSoundPcmCodec *pcm_codec = (wxSoundPcmCodec *)codec;
|
wxSoundPcmCodec *pcm_codec = (wxSoundPcmCodec *)codec;
|
||||||
|
|
||||||
pcm_codec->SetBits(m_bps);
|
pcm_codec->m_orig_format.SetSampleRate(m_srate);
|
||||||
pcm_codec->SetByteOrder(m_byteorder);
|
pcm_codec->m_orig_format.SetBps(m_bps);
|
||||||
pcm_codec->SetSign(m_sign);
|
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;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
@@ -13,11 +13,6 @@ class wxSoundPcmCodec : public wxSoundCodec {
|
|||||||
wxSoundPcmCodec();
|
wxSoundPcmCodec();
|
||||||
virtual ~wxSoundPcmCodec();
|
virtual ~wxSoundPcmCodec();
|
||||||
|
|
||||||
void SetSampleRate(int srate) { m_orig_format.SetSampleRate(srate); }
|
|
||||||
void SetBits(int bits) { m_orig_format.SetBps(bits); }
|
|
||||||
void SetByteOrder(int order) { m_orig_format.SetByteOrder(order); }
|
|
||||||
void SetSign(int sample_sign) { m_orig_format.SetSign(sample_sign); }
|
|
||||||
|
|
||||||
size_t GetByteRate() const;
|
size_t GetByteRate() const;
|
||||||
wxSoundDataFormat GetPreferredFormat(int codec = 0) const;
|
wxSoundDataFormat GetPreferredFormat(int codec = 0) const;
|
||||||
|
|
||||||
@@ -31,6 +26,7 @@ class wxSoundPcmCodec : public wxSoundCodec {
|
|||||||
void OutputSwapAndSign16();
|
void OutputSwapAndSign16();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
friend class wxSoundDataFormat;
|
||||||
wxSoundDataFormat m_orig_format;
|
wxSoundDataFormat m_orig_format;
|
||||||
char m_char_stack;
|
char m_char_stack;
|
||||||
bool m_char_bool;
|
bool m_char_bool;
|
||||||
|
Reference in New Issue
Block a user