/[qemu]/qemu/audio/dsound_template.h
ViewVC logotype

Diff of /qemu/audio/dsound_template.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by bellard, Sun Oct 30 18:58:22 2005 UTC revision 1.2 by bellard, Sat Nov 5 18:55:27 2005 UTC
# Line 47  static int glue (dsound_unlock_, TYPE) ( Line 47  static int glue (dsound_unlock_, TYPE) (
47    
48      hr = glue (IFACE, _Unlock) (buf, p1, blen1, p2, blen2);      hr = glue (IFACE, _Unlock) (buf, p1, blen1, p2, blen2);
49      if (FAILED (hr)) {      if (FAILED (hr)) {
50          dsound_logerr (hr, "Can not unlock " NAME "\n");          dsound_logerr (hr, "Could not unlock " NAME "\n");
51          return -1;          return -1;
52      }      }
53    
# Line 93  static int glue (dsound_lock_, TYPE) ( Line 93  static int glue (dsound_lock_, TYPE) (
93  #ifndef DSBTYPE_IN  #ifndef DSBTYPE_IN
94              if (hr == DSERR_BUFFERLOST) {              if (hr == DSERR_BUFFERLOST) {
95                  if (glue (dsound_restore_, TYPE) (buf)) {                  if (glue (dsound_restore_, TYPE) (buf)) {
96                      dsound_logerr (hr, "Can not lock " NAME "\n");                      dsound_logerr (hr, "Could not lock " NAME "\n");
97                      goto fail;                      goto fail;
98                  }                  }
99                  continue;                  continue;
100              }              }
101  #endif  #endif
102              dsound_logerr (hr, "Can not lock " NAME "\n");              dsound_logerr (hr, "Could not lock " NAME "\n");
103              goto fail;              goto fail;
104          }          }
105    
# Line 158  static void dsound_fini_out (HWVoiceOut Line 158  static void dsound_fini_out (HWVoiceOut
158      if (ds->FIELD) {      if (ds->FIELD) {
159          hr = glue (IFACE, _Stop) (ds->FIELD);          hr = glue (IFACE, _Stop) (ds->FIELD);
160          if (FAILED (hr)) {          if (FAILED (hr)) {
161              dsound_logerr (hr, "Can not stop " NAME "\n");              dsound_logerr (hr, "Could not stop " NAME "\n");
162          }          }
163    
164          hr = glue (IFACE, _Release) (ds->FIELD);          hr = glue (IFACE, _Release) (ds->FIELD);
165          if (FAILED (hr)) {          if (FAILED (hr)) {
166              dsound_logerr (hr, "Can not release " NAME "\n");              dsound_logerr (hr, "Could not release " NAME "\n");
167          }          }
168          ds->FIELD = NULL;          ds->FIELD = NULL;
169      }      }
170  }  }
171    
172  #ifdef DSBTYPE_IN  #ifdef DSBTYPE_IN
173  static int dsound_init_in (  static int dsound_init_in (HWVoiceIn *hw, audsettings_t *as)
     HWVoiceIn *hw,  
     int freq,  
     int nchannels,  
     audfmt_e fmt  
     )  
174  #else  #else
175  static int dsound_init_out (  static int dsound_init_out (HWVoiceOut *hw, audsettings_t *as)
     HWVoiceOut *hw,  
     int freq,  
     int nchannels,  
     audfmt_e fmt  
     )  
176  #endif  #endif
177  {  {
178      int err;      int err;
179      HRESULT hr;      HRESULT hr;
180      dsound *s = &glob_dsound;      dsound *s = &glob_dsound;
181      WAVEFORMATEX wfx;      WAVEFORMATEX wfx;
182      struct full_fmt full_fmt;      audsettings_t obt_as;
183  #ifdef DSBTYPE_IN  #ifdef DSBTYPE_IN
184      const char *typ = "ADC";      const char *typ = "ADC";
185      DSoundVoiceIn *ds = (DSoundVoiceIn *) hw;      DSoundVoiceIn *ds = (DSoundVoiceIn *) hw;
# Line 202  static int dsound_init_out ( Line 192  static int dsound_init_out (
192      DSBCAPS bc;      DSBCAPS bc;
193  #endif  #endif
194    
195      full_fmt.freq = freq;      err = waveformat_from_audio_settings (&wfx, as);
     full_fmt.nchannels = nchannels;  
     full_fmt.fmt = fmt;  
     err = waveformat_from_full_fmt (&wfx, &full_fmt);  
196      if (err) {      if (err) {
197          return -1;          return -1;
198      }      }
# Line 233  static int dsound_init_out ( Line 220  static int dsound_init_out (
220  #endif  #endif
221    
222      if (FAILED (hr)) {      if (FAILED (hr)) {
223          dsound_logerr2 (hr, typ, "Can not create " NAME "\n");          dsound_logerr2 (hr, typ, "Could not create " NAME "\n");
224          return -1;          return -1;
225      }      }
226    
227      hr = glue (IFACE, _GetFormat) (      hr = glue (IFACE, _GetFormat) (ds->FIELD, &wfx, sizeof (wfx), NULL);
         ds->FIELD,  
         &wfx,  
         sizeof (wfx),  
         NULL  
         );  
228      if (FAILED (hr)) {      if (FAILED (hr)) {
229          dsound_logerr2 (hr, typ, "Can not get " NAME " format\n");          dsound_logerr2 (hr, typ, "Could not get " NAME " format\n");
230          goto fail0;          goto fail0;
231      }      }
232    
# Line 258  static int dsound_init_out ( Line 240  static int dsound_init_out (
240    
241      hr = glue (IFACE, _GetCaps) (ds->FIELD, &bc);      hr = glue (IFACE, _GetCaps) (ds->FIELD, &bc);
242      if (FAILED (hr)) {      if (FAILED (hr)) {
243          dsound_logerr2 (hr, typ, "Can not get " NAME " format\n");          dsound_logerr2 (hr, typ, "Could not get " NAME " format\n");
244          goto fail0;          goto fail0;
245      }      }
246    
247      err = waveformat_to_full_fmt (&wfx, &full_fmt);      err = waveformat_to_audio_settings (&wfx, &obt_as);
248      if (err) {      if (err) {
249          goto fail0;          goto fail0;
250      }      }
251    
252      ds->first_time = 1;      ds->first_time = 1;
253      hw->bufsize = bc.dwBufferBytes;  
254      audio_pcm_init_info (      audio_pcm_init_info (&hw->info, &obt_as, audio_need_to_swap_endian (0));
255          &hw->info,  
256          full_fmt.freq,      if (bc.dwBufferBytes & hw->info.align) {
257          full_fmt.nchannels,          dolog (
258          full_fmt.fmt,              "GetCaps returned misaligned buffer size %ld, alignment %d\n",
259          audio_need_to_swap_endian (0)              bc.dwBufferBytes, hw->info.align + 1
260          );              );
261        }
262        hw->samples = bc.dwBufferBytes >> hw->info.shift;
263    
264  #ifdef DEBUG_DSOUND  #ifdef DEBUG_DSOUND
265      dolog ("caps %ld, desc %ld\n",      dolog ("caps %ld, desc %ld\n",
266             bc.dwBufferBytes, bd.dwBufferBytes);             bc.dwBufferBytes, bd.dwBufferBytes);
267    
268      dolog ("bufsize %d, freq %d, chan %d, fmt %d\n",      dolog ("bufsize %d, freq %d, chan %d, fmt %d\n",
269             hw->bufsize, full_fmt.freq, full_fmt.nchannels, full_fmt.fmt);             hw->bufsize, settings.freq, settings.nchannels, settings.fmt);
270  #endif  #endif
271      return 0;      return 0;
272    

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26