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);