// ACM audio and VfW video codecs initialization // based on the avifile library [http://divx.euro.ru] int init_audio_codec(){ HRESULT ret; WAVEFORMATEX *in_fmt=(WAVEFORMATEX*)&avi_header.wf_ext; unsigned long srcsize=0; if(verbose) printf("======= Win32 (ACM) AUDIO Codec init =======\n"); avi_header.srcstream=NULL; // if(in_fmt->nSamplesPerSec==0){ printf("Bad WAVE header!\n");exit(1); } // MSACM_RegisterAllDrivers(); avi_header.wf.nChannels=in_fmt->nChannels; avi_header.wf.nSamplesPerSec=in_fmt->nSamplesPerSec; avi_header.wf.nAvgBytesPerSec=2*avi_header.wf.nSamplesPerSec*avi_header.wf.nChannels; avi_header.wf.wFormatTag=WAVE_FORMAT_PCM; avi_header.wf.nBlockAlign=2*in_fmt->nChannels; avi_header.wf.wBitsPerSample=16; avi_header.wf.cbSize=0; win32_codec_name = avi_header.audio_codec; ret=acmStreamOpen(&avi_header.srcstream,(HACMDRIVER)NULL, in_fmt,&avi_header.wf, NULL,0,0,0); if(ret){ if(ret==ACMERR_NOTPOSSIBLE) printf("ACM_Decoder: Unappropriate audio format\n"); else printf("ACM_Decoder: acmStreamOpen error %d", ret); avi_header.srcstream=NULL; return 0; } if(verbose) printf("Audio codec opened OK! ;-)\n"); srcsize=in_fmt->nBlockAlign; acmStreamSize(avi_header.srcstream, srcsize, &srcsize, ACM_STREAMSIZEF_SOURCE); if(srcsize