mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-18 21:35:44 +00:00
Revert "directsoundsrc: Correctly calculate segsize and segtotal"
This reverts commit 6d256d9908
.
It was configuring the period/buffer size in a way that often causes
drop-outs or complete underruns. Needs further investigation.
This commit is contained in:
parent
94fe5c690e
commit
244a80787d
2 changed files with 18 additions and 14 deletions
|
@ -564,20 +564,22 @@ gst_directsound_src_prepare (GstAudioSrc * asrc, GstAudioRingBufferSpec * spec)
|
|||
GST_WARNING ("buffer-time was less than latency");
|
||||
}
|
||||
|
||||
spec->segsize =
|
||||
gst_util_uint64_scale (spec->latency_time, wfx.nAvgBytesPerSec, 1000000);
|
||||
if (spec->segsize < GST_AUDIO_INFO_BPF (&spec->info))
|
||||
spec->segsize = GST_AUDIO_INFO_BPF (&spec->info);
|
||||
else if (spec->segsize % GST_AUDIO_INFO_BPF (&spec->info) != 0)
|
||||
spec->segsize =
|
||||
((spec->segsize + GST_AUDIO_INFO_BPF (&spec->info) -
|
||||
1) / GST_AUDIO_INFO_BPF (&spec->info)) *
|
||||
GST_AUDIO_INFO_BPF (&spec->info);
|
||||
/* Save the times */
|
||||
dsoundsrc->buffer_time = spec->buffer_time;
|
||||
dsoundsrc->latency_time = spec->latency_time;
|
||||
|
||||
dsoundsrc->latency_time =
|
||||
gst_util_uint64_scale (spec->segsize, 1000000,
|
||||
GST_AUDIO_INFO_BPF (&spec->info) * GST_AUDIO_INFO_RATE (&spec->info));
|
||||
spec->segtotal = spec->buffer_time / dsoundsrc->latency_time;
|
||||
dsoundsrc->latency_size = (gint) wfx.nAvgBytesPerSec *
|
||||
dsoundsrc->latency_time / 1000000.0;
|
||||
|
||||
spec->segsize = (guint) (((double) spec->buffer_time / 1000000.0) *
|
||||
wfx.nAvgBytesPerSec);
|
||||
|
||||
/* just in case */
|
||||
if (spec->segsize < 1)
|
||||
spec->segsize = 1;
|
||||
|
||||
spec->segtotal = GST_AUDIO_INFO_BPF (&spec->info) * 8 *
|
||||
(wfx.nAvgBytesPerSec / spec->segsize);
|
||||
|
||||
GST_DEBUG_OBJECT (asrc,
|
||||
"bytes/sec: %lu, buffer size: %d, segsize: %d, segtotal: %d",
|
||||
|
@ -816,7 +818,7 @@ gst_directsound_src_mixer_find (GstDirectSoundSrc * dsoundsrc,
|
|||
if (mmres != MMSYSERR_NOERROR)
|
||||
continue;
|
||||
|
||||
mmres = mixerGetDevCaps ((UINT_PTR) dsoundsrc->mixer,
|
||||
mmres = mixerGetDevCaps ((UINT_PTR)dsoundsrc->mixer,
|
||||
mixer_caps, sizeof (MIXERCAPS));
|
||||
|
||||
if (mmres != MMSYSERR_NOERROR) {
|
||||
|
|
|
@ -86,8 +86,10 @@ struct _GstDirectSoundSrc
|
|||
DWORD notifysize;
|
||||
|
||||
guint buffer_size;
|
||||
guint latency_size;
|
||||
guint bytes_per_sample;
|
||||
|
||||
guint buffer_time;
|
||||
guint latency_time;
|
||||
|
||||
HMIXER mixer;
|
||||
|
|
Loading…
Reference in a new issue