Mercurial > mplayer.hg
view libmpcodecs/ad_alaw.c @ 22771:ce6b4af46882
r22547: fix up some longer than 80 char lines , and use suggestion from Diego.
r22570: dont start newline with a space and readd subdirectory
r22718: add new audio and video codecs to libavcodec list
r22748: add png and gif encoders, how to use them with mencoder is another question
r22749: split sonic into sonic/sonicls and wma into wmav1/wmav2
r22750: add rest of lavc encoders to list (vcr1, cljr, jpegls, ffvhuff, msmpeg4v1)
r22751: gsm requires libgsm so remove it
r22752: aiff isnt there as well, TEST FIRST, THEN DOCUMENT COMPN!
r22753: ok so cljr , vcr1 and msmpegv1 dont actually work... removed
r22679: Some more details for the mga_vid section taken from drivers/README.
r22686: tdfx_vid compilation has been simplified.
r22695: Add a link to Attila's mga_vid port to Linux 2.6.x.
r22704: 'make install' now takes care of most manual installation steps for *_vid.o.
author | voroshil |
---|---|
date | Sat, 24 Mar 2007 03:08:19 +0000 |
parents | e0a6fb06f058 |
children | 0f1b5b68af32 |
line wrap: on
line source
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include "config.h" #include "ad_internal.h" static ad_info_t info = { "aLaw/uLaw audio decoder", "alaw", "Nick Kurshev", "A'rpi", "" }; LIBAD_EXTERN(alaw) #include "native/alaw.h" static int init(sh_audio_t *sh_audio) { /* aLaw audio codec:*/ if(!sh_audio->wf) return 0; sh_audio->channels=sh_audio->wf->nChannels; sh_audio->samplerate=sh_audio->wf->nSamplesPerSec; sh_audio->i_bps=sh_audio->channels*sh_audio->samplerate; sh_audio->samplesize=2; return 1; } static int preinit(sh_audio_t *sh) { sh->audio_out_minsize=2048; sh->ds->ss_div = 1; // 1 samples/packet sh->ds->ss_mul = sh->wf->nChannels; // bytes/packet return 1; } static void uninit(sh_audio_t *sh) { } static int control(sh_audio_t *sh,int cmd,void* arg, ...) { int skip; switch(cmd) { case ADCTRL_SKIP_FRAME: skip=sh->i_bps/16; skip=skip&(~3); demux_read_data(sh->ds,NULL,skip); return CONTROL_TRUE; default: return CONTROL_UNKNOWN; } return CONTROL_UNKNOWN; } static int decode_audio(sh_audio_t *sh_audio,unsigned char *buf,int minlen,int maxlen) { int len; int l=demux_read_data(sh_audio->ds,buf,minlen/2); unsigned short *d=(unsigned short *) buf; unsigned char *s=buf; len=2*l; if(sh_audio->format==6 || sh_audio->format==0x77616C61){ /* aLaw */ while(l>0){ --l; d[l]=alaw2short[s[l]]; } } else { /* uLaw */ while(l>0){ --l; d[l]=ulaw2short[s[l]]; } } return len; }