1
0
mirror of https://github.com/mpv-player/mpv synced 2025-02-20 23:07:02 +00:00

finished DirectShow audio code

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@238 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
arpi_esp 2001-03-28 21:45:12 +00:00
parent 74018c2c09
commit 92d84f3252

View File

@ -1220,6 +1220,13 @@ if(has_audio==7){
if(!DS_AudioDecoder_Open(avi_header.audio_codec,avi_header.auds_guid,in_fmt)){
MP3_channels=avi_header.wf.nChannels;
MP3_samplerate=avi_header.wf.nSamplesPerSec;
avi_header.audio_in_minsize=2*avi_header.wf.nBlockAlign;
if(avi_header.audio_in_minsize<8192) avi_header.audio_in_minsize=8192;
a_in_buffer_size=avi_header.audio_in_minsize;
a_in_buffer=malloc(a_in_buffer_size);
a_in_buffer_len=0;
} else {
printf("Could not load/initialize Win32/DirctShow AUDIO codec (missing .AX file?)\n");
if((in_fmt->wFormatTag)==0x55){
@ -1489,6 +1496,33 @@ while(has_audio){
if(ret>0) a_buffer_len+=ret;
break;
}
case 7: // DirectShow
{ int ret;
int len=a_buffer_size-a_buffer_len;
int size_in=0;
int size_out=0;
int srcsize=DS_AudioDecoder_GetSrcSize(len);
if(verbose>2)printf("DShow says: srcsize=%d (buffsize=%d) out_size=%d\n",srcsize,a_in_buffer_size,len);
if(srcsize>a_in_buffer_size) srcsize=a_in_buffer_size; // !!!!!!
if(a_in_buffer_len<srcsize){
a_in_buffer_len+=
demux_read_data(d_audio,&a_in_buffer[a_in_buffer_len],
srcsize-a_in_buffer_len);
}
DS_AudioDecoder_Convert(a_in_buffer,a_in_buffer_len,
&a_buffer[a_buffer_len],len, &size_in,&size_out);
if(verbose>2)printf("DShow: audio %d -> %d converted (in_buf_len=%d of %d)\n",size_in,size_out,a_in_buffer_len,a_in_buffer_size);
if(size_in>=a_in_buffer_len){
a_in_buffer_len=0;
} else {
a_in_buffer_len-=size_in;
memcpy(a_in_buffer,&a_in_buffer[size_in],a_in_buffer_len);
}
a_buffer_len+=size_out;
break;
}
}
}
current_module=NULL; // Leave AUDIO decoder module