mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-12-09 13:15:18 -05:00
Encoders: Mixdown to mono should round towards zero not -infinity.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11634 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
416acea2d8
commit
3b7d703329
4 changed files with 6 additions and 6 deletions
|
|
@ -240,10 +240,10 @@ static void chunk_to_aiff_format(uint32_t *src, uint32_t *dst)
|
||||||
int32_t lr1, lr2;
|
int32_t lr1, lr2;
|
||||||
|
|
||||||
lr1 = *(*src)++;
|
lr1 = *(*src)++;
|
||||||
lr1 = ((int16_t)lr1 + (lr1 >> 16)) >> 1;
|
lr1 = ((int16_t)lr1 + (lr1 >> 16)) / 2;
|
||||||
|
|
||||||
lr2 = *(*src)++;
|
lr2 = *(*src)++;
|
||||||
lr2 = ((int16_t)lr2 + (lr2 >> 16)) >> 1;
|
lr2 = ((int16_t)lr2 + (lr2 >> 16)) / 2;
|
||||||
*(*dst)++ = swap_odd_even_le32((lr1 << 16) | (uint16_t)lr2);
|
*(*dst)++ = swap_odd_even_le32((lr1 << 16) | (uint16_t)lr2);
|
||||||
} /* to_mono */
|
} /* to_mono */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2055,7 +2055,7 @@ static void to_mono_mm(void)
|
||||||
inline void to_mono(uint32_t **samp)
|
inline void to_mono(uint32_t **samp)
|
||||||
{
|
{
|
||||||
int32_t lr = **samp;
|
int32_t lr = **samp;
|
||||||
int32_t m = ((int16_t)lr + (lr >> 16)) >> 1;
|
int32_t m = ((int16_t)lr + (lr >> 16)) / 2;
|
||||||
*(*samp)++ = (m << 16) | (uint16_t)m;
|
*(*samp)++ = (m << 16) | (uint16_t)m;
|
||||||
} /* to_mono */
|
} /* to_mono */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -229,10 +229,10 @@ static void chunk_to_wav_format(uint32_t *src, uint32_t *dst)
|
||||||
int32_t lr1, lr2;
|
int32_t lr1, lr2;
|
||||||
|
|
||||||
lr1 = *(*src)++;
|
lr1 = *(*src)++;
|
||||||
lr1 = ((int16_t)lr1 + (lr1 >> 16)) >> 1;
|
lr1 = ((int16_t)lr1 + (lr1 >> 16)) / 2;
|
||||||
|
|
||||||
lr2 = *(*src)++;
|
lr2 = *(*src)++;
|
||||||
lr2 = ((int16_t)lr2 + (lr2 >> 16)) >> 1;
|
lr2 = ((int16_t)lr2 + (lr2 >> 16)) / 2;
|
||||||
*(*dst)++ = swap_odd_even_be32((lr1 << 16) | (uint16_t)lr2);
|
*(*dst)++ = swap_odd_even_be32((lr1 << 16) | (uint16_t)lr2);
|
||||||
} /* to_mono */
|
} /* to_mono */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -126,7 +126,7 @@ static void chunk_to_int32(int32_t *src)
|
||||||
{
|
{
|
||||||
int32_t t = *(*src)++;
|
int32_t t = *(*src)++;
|
||||||
/* endianness irrelevant */
|
/* endianness irrelevant */
|
||||||
*(*dst)++ = ((int16_t)t + (t >> 16)) >> 1;
|
*(*dst)++ = ((int16_t)t + (t >> 16)) / 2;
|
||||||
} /* to_int32 */
|
} /* to_int32 */
|
||||||
|
|
||||||
do
|
do
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue