directsoundsink: fix modulo math with ringbuffer parameters
authorThiago Santos <thiagoss@osg.samsung.com>
Thu, 5 Mar 2015 20:54:43 +0000 (17:54 -0300)
committerThiago Santos <thiagoss@osg.samsung.com>
Fri, 6 Mar 2015 14:27:41 +0000 (11:27 -0300)
To get a multiple of bpf use a subtraction and not an addition

https://bugzilla.gnome.org/show_bug.cgi?id=745684

sys/directsound/gstdirectsoundsink.c

index 56b0418..bee96d1 100644 (file)
@@ -444,12 +444,12 @@ gst_directsound_sink_prepare (GstAudioSink * asink,
         gst_util_uint64_scale_int (wfx.nAvgBytesPerSec, spec->buffer_time,
         GST_MSECOND);
     /* Make sure we make those numbers multiple of our sample size in bytes */
-    dsoundsink->buffer_size += dsoundsink->buffer_size % spec->info.bpf;
+    dsoundsink->buffer_size -= dsoundsink->buffer_size % spec->info.bpf;
 
     spec->segsize =
         gst_util_uint64_scale_int (wfx.nAvgBytesPerSec, spec->latency_time,
         GST_MSECOND);
-    spec->segsize += spec->segsize % spec->info.bpf;
+    spec->segsize -= spec->segsize % spec->info.bpf;
     spec->segtotal = dsoundsink->buffer_size / spec->segsize;
   } else {
 #ifdef WAVE_FORMAT_DOLBY_AC3_SPDIF