]> git.ipfire.org Git - thirdparty/shairport-sync.git/commitdiff
Get dither mask working right
authorMike Brady <mikebrady@eircom.net>
Thu, 8 Sep 2016 06:57:28 +0000 (07:57 +0100)
committerMike Brady <mikebrady@eircom.net>
Thu, 8 Sep 2016 06:57:28 +0000 (07:57 +0100)
player.c

index a47b985c23a130e8b063f55683e6c8a29bda2a46..5990c45dd76f3002b69da9d5a58e3d51a870c917 100644 (file)
--- a/player.c
+++ b/player.c
@@ -593,10 +593,10 @@ static inline int32_t dithered_vol_32(int32_t sample, int output_precision) {
     s = s*v; // 32 bit multiplication -- we need to dither it down to its target resolution
 
     int64_t r = r64i();
-    int64_t mask = 1<<(64+1-output_precision);
-    //mask -=1;
+    int64_t mask = (int64_t)1<<(64+1-output_precision);
+    mask -=1;
     int64_t tpdf = (r&mask); //-(previous_random_number&((1<<(64+1-output_precision))-1));
-               debug(1,"output precision is %d, m is %llx, r is %llx, tpdf is %llx",output_precision,mask,r,tpdf);
+//             debug(1,"output precision is %d, m is %llx, r is %llx, tpdf is %llx",output_precision,mask,r,tpdf);
     previous_random_number=r;
  
     // Check there's no clipping -- if there is,