equal
deleted
inserted
replaced
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; |