Ho provato a mixare 2 flussi audio PCM lineari a 16 bit e non riesco a superare i problemi di rumore. Penso che provengano da overflow quando si miscelano i campioni insieme.Mixare flussi PCM lineari a 16 bit ed evitare clipping/overflow
Ho seguente funzione ...
short int mix_sample(short int sample1, short int sample2)
{
return #mixing_algorithm#;
}
... e qui è quello che ho cercato come # mixing_algorithm #
sample1/2 + sample2/2
2*(sample1 + sample2) - 2*(sample1*sample2) - 65535
(sample1 + sample2) - sample1*sample2
(sample1 + sample2) - sample1*sample2 - 65535
(sample1 + sample2) - ((sample1*sample2) >> 0x10) // same as divide by 65535
Alcuni di loro hanno prodotto risultati migliori rispetto ad altri, ma anche il il miglior risultato conteneva un bel po 'di rumore.
Qualche idea su come risolverlo?
puoi scrivere l'algoritmo completo, non riesco a vedere nessun compito !! – perilbrain
Quando dividi sample1 e sample2 per 2, ottieni l'intervallo di errore di 1. –