src/mixer.cpp
branchNewGRF_ports
changeset 10991 d8811e327d12
parent 10724 68a692eacf22
child 11137 16d0ea29e638
equal deleted inserted replaced
10731:67db0d431d5e 10991:d8811e327d12
   102 			return mc;
   102 			return mc;
   103 		}
   103 		}
   104 	return NULL;
   104 	return NULL;
   105 }
   105 }
   106 
   106 
   107 void MxSetChannelRawSrc(MixerChannel *mc, int8 *mem, uint size, uint rate, uint flags)
   107 void MxSetChannelRawSrc(MixerChannel *mc, int8 *mem, size_t size, uint rate, uint flags)
   108 {
   108 {
   109 	mc->memory = mem;
   109 	mc->memory = mem;
   110 	mc->flags = flags;
   110 	mc->flags = flags;
   111 	mc->frac_pos = 0;
   111 	mc->frac_pos = 0;
   112 	mc->pos = 0;
   112 	mc->pos = 0;
   113 
   113 
   114 	mc->frac_speed = (rate << 16) / _play_rate;
   114 	mc->frac_speed = (rate << 16) / _play_rate;
   115 
   115 
   116 	/* adjust the magnitude to prevent overflow */
   116 	/* adjust the magnitude to prevent overflow */
   117 	while (size & 0xFFFF0000) {
   117 	while (size & ~0xFFFF) {
   118 		size >>= 1;
   118 		size >>= 1;
   119 		rate = (rate >> 1) + 1;
   119 		rate = (rate >> 1) + 1;
   120 	}
   120 	}
   121 
   121 
   122 	mc->samples_left = size * _play_rate / rate;
   122 	mc->samples_left = (uint)size * _play_rate / rate;
   123 }
   123 }
   124 
   124 
   125 void MxSetChannelVolume(MixerChannel *mc, uint left, uint right)
   125 void MxSetChannelVolume(MixerChannel *mc, uint left, uint right)
   126 {
   126 {
   127 	mc->volume_left = left;
   127 	mc->volume_left = left;