Example #1
0
int PcmaDecodeStream::decode( unsigned char *in, short *out )
{
    int len = 160;
    while ( len-- > 0 )
        *out++ = alaw2linear( *in++ );
    return 160;
}
Example #2
0
bool CDVDAudioCodecPcm::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options)
{
  SetDefault();

  m_codecID = hints.codec;
  m_iSourceChannels = hints.channels;
  m_iSourceSampleRate = hints.samplerate;
  m_iSourceBitrate = 16;

  switch (m_codecID)
  {
    case CODEC_ID_PCM_ALAW:
    {
      for (int i = 0; i < 256; i++) table[i] = alaw2linear(i);
      break;
    }
    case CODEC_ID_PCM_MULAW:
    {
      for (int i = 0; i < 256; i++) table[i] = ulaw2linear(i);
      break;
    }
    default:
    {
      break;
    }
  }

  // set desired output
  m_iOutputChannels = m_iSourceChannels;

  return true;
}
Example #3
0
void AlawToPcmFilter::AudioChunkIn(AudioChunkRef& inputAudioChunk)
{
	m_outputAudioChunk.reset();

	if(inputAudioChunk.get() == NULL)
	{
		return;
	}
	if(inputAudioChunk->GetNumSamples() == 0)
	{
		return;
	}
	AudioChunkDetails outputDetails = *inputAudioChunk->GetDetails();

	if(SupportsInputRtpPayloadType(outputDetails.m_rtpPayloadType) == false)
	{
		return;
	}

	// Create output buffer
	m_outputAudioChunk.reset(new AudioChunk());
	outputDetails.m_rtpPayloadType = -1;		//  Override details that this filter changes
	outputDetails.m_encoding = PcmAudio;
	int numSamples = inputAudioChunk->GetNumSamples();
	outputDetails.m_numBytes = numSamples*2;
	short* outputBuffer = (short*)m_outputAudioChunk->CreateBuffer(outputDetails);
	char* inputBuffer = (char*)inputAudioChunk->m_pBuffer;
	

	for(int i=0; i<numSamples; i++)
	{
		outputBuffer[i] = (short)alaw2linear(inputBuffer[i]);
	}
}
Example #4
0
File: pcm.c Project: afljafa/mythtv
static av_cold int pcm_decode_init(AVCodecContext * avctx)
{
    PCMDecode *s = avctx->priv_data;
    int i;

    switch(avctx->codec->id) {
    case CODEC_ID_PCM_ALAW:
        for(i=0;i<256;i++)
            s->table[i] = alaw2linear(i);
        break;
    case CODEC_ID_PCM_MULAW:
        for(i=0;i<256;i++)
            s->table[i] = ulaw2linear(i);
        break;
    default:
        break;
    }

    avctx->sample_fmt = avctx->codec->sample_fmts[0];

    if (avctx->sample_fmt == SAMPLE_FMT_S32)
        avctx->bits_per_raw_sample = av_get_bits_per_sample(avctx->codec->id);

    return 0;
}
Example #5
0
int wr_g711a_decode(void * state, const char * input, size_t size, short * output) 
{
    int i = 0;
    wr_g711a_decoder_state *  s =  (wr_g711a_decoder_state * )state;
    for (i=0; i < size; i++){
        output[i] = (short)alaw2linear((int)(input[i]));
    }    
    return size;
} 
Example #6
0
static kal_uint16 alawGetSample( const kal_uint16 **pbuf )
{
   if( pcm.data_count == 0 ) {
      kal_uint16 data = **pbuf;
      pcm.data[1] = alaw2linear( (kal_uint8)(data & 0xFF) );
      pcm.data[0] = alaw2linear( (kal_uint8)(data >> 8) );
      *pbuf = *pbuf + 1;
      pcm.data_count = 2;
   }
Example #7
0
/* Decodes one byte PCMU data to two bytes unsigned linear data */
static int
vocoder_alaw(int fd, u_char *pl, int len)
{
	u_int16_t wbuf[2048];
	int i = 0;
	int wlen = len * sizeof(u_int16_t);

	for (i = 0; i < len && (i < sizeof(wbuf) / sizeof(u_int16_t)); i++)
		wbuf[i] = alaw2linear(pl[i]);
	if (write(fd, wbuf, wlen) < wlen)
		return -1;
	return wlen;
}