Mercurial > mplayer.hg
comparison libmpcodecs/ad_dshow.c @ 5448:e12159513d45
using sh->context and added proper uninit
author | alex |
---|---|
date | Mon, 01 Apr 2002 13:14:54 +0000 |
parents | 3dd532400d44 |
children | b3d1348b251f |
comparison
equal
deleted
inserted
replaced
5447:63082aa173f8 | 5448:e12159513d45 |
---|---|
22 | 22 |
23 LIBAD_EXTERN(dshow) | 23 LIBAD_EXTERN(dshow) |
24 | 24 |
25 #include "dshow/DS_AudioDecoder.h" | 25 #include "dshow/DS_AudioDecoder.h" |
26 | 26 |
27 static DS_AudioDecoder* ds_adec=NULL; | |
28 | |
29 static int init(sh_audio_t *sh) | 27 static int init(sh_audio_t *sh) |
30 { | 28 { |
31 return 1; | 29 return 1; |
32 } | 30 } |
33 | 31 |
34 static int preinit(sh_audio_t *sh_audio) | 32 static int preinit(sh_audio_t *sh_audio) |
35 { | 33 { |
34 DS_AudioDecoder* ds_adec; | |
36 if(!(ds_adec=DS_AudioDecoder_Open(sh_audio->codec->dll,&sh_audio->codec->guid,sh_audio->wf))) | 35 if(!(ds_adec=DS_AudioDecoder_Open(sh_audio->codec->dll,&sh_audio->codec->guid,sh_audio->wf))) |
37 { | 36 { |
38 mp_msg(MSGT_DECAUDIO,MSGL_ERR,MSGTR_MissingDLLcodec,sh_audio->codec->dll); | 37 mp_msg(MSGT_DECAUDIO,MSGL_ERR,MSGTR_MissingDLLcodec,sh_audio->codec->dll); |
39 return 0; | 38 return 0; |
40 } else { | 39 } else { |
45 if(sh_audio->audio_in_minsize<8192) sh_audio->audio_in_minsize=8192; | 44 if(sh_audio->audio_in_minsize<8192) sh_audio->audio_in_minsize=8192; |
46 sh_audio->a_in_buffer_size=sh_audio->audio_in_minsize; | 45 sh_audio->a_in_buffer_size=sh_audio->audio_in_minsize; |
47 sh_audio->a_in_buffer=malloc(sh_audio->a_in_buffer_size); | 46 sh_audio->a_in_buffer=malloc(sh_audio->a_in_buffer_size); |
48 sh_audio->a_in_buffer_len=0; | 47 sh_audio->a_in_buffer_len=0; |
49 sh_audio->audio_out_minsize=16384; | 48 sh_audio->audio_out_minsize=16384; |
49 sh_audio->context = ds_adec; | |
50 } | 50 } |
51 mp_msg(MSGT_DECVIDEO,MSGL_V,"INFO: Win32/DShow audio codec init OK!\n"); | 51 mp_msg(MSGT_DECVIDEO,MSGL_V,"INFO: Win32/DShow audio codec init OK!\n"); |
52 return 1; | 52 return 1; |
53 } | 53 } |
54 | 54 |
55 static void uninit(sh_audio_t *sh) | 55 static void uninit(sh_audio_t *sh) |
56 { | 56 { |
57 // TODO!!! | 57 DS_AudioDecoder* ds_adec = sh->context; |
58 DS_AudioDecoder_Destroy(ds_adec); | |
58 } | 59 } |
59 | 60 |
60 static int control(sh_audio_t *sh_audio,int cmd,void* arg, ...) | 61 static int control(sh_audio_t *sh_audio,int cmd,void* arg, ...) |
61 { | 62 { |
62 int skip; | 63 int skip; |
74 return CONTROL_UNKNOWN; | 75 return CONTROL_UNKNOWN; |
75 } | 76 } |
76 | 77 |
77 static int decode_audio(sh_audio_t *sh_audio,unsigned char *buf,int minlen,int maxlen) | 78 static int decode_audio(sh_audio_t *sh_audio,unsigned char *buf,int minlen,int maxlen) |
78 { | 79 { |
80 DS_AudioDecoder* ds_adec = sh_audio->context; | |
79 // int len=-1; | 81 // int len=-1; |
80 int size_in=0; | 82 int size_in=0; |
81 int size_out=0; | 83 int size_out=0; |
82 int srcsize=DS_AudioDecoder_GetSrcSize(ds_adec, maxlen); | 84 int srcsize=DS_AudioDecoder_GetSrcSize(ds_adec, maxlen); |
83 mp_msg(MSGT_DECAUDIO,MSGL_DBG3,"DShow says: srcsize=%d (buffsize=%d) out_size=%d\n",srcsize,sh_audio->a_in_buffer_size,maxlen); | 85 mp_msg(MSGT_DECAUDIO,MSGL_DBG3,"DShow says: srcsize=%d (buffsize=%d) out_size=%d\n",srcsize,sh_audio->a_in_buffer_size,maxlen); |