Комбинируйте моно и стерео вход с мощным плеером - PullRequest
0 голосов
/ 25 октября 2018

У меня 3 файла, два моно, один стерео.Я хочу сыграть их вместе.В настоящее время мой код похож на это, но кажется, что вывод не является правильным.

bool silence = !player1->process(stereoBuffer, false, numberOfSamples, vol);
silence = !(playerLeft->process(stereoBuffer, !silence, numberOfSamples,vol));
silence = !(playerRight->process(stereoBuffer, !silence, numberOfSamples,vol));
if (!silence) {
        SuperpoweredFloatToShortInt(stereoBuffer, output, numberOfSamples);
        return true;
    }

Кто-нибудь знает, что здесь не так?Я думаю, что я должен использовать этот метод

void SuperpoweredFloatToShortIntInterleave(float *inputLeft, float *inputRight, short int *output, unsigned int numberOfSamples);

С 2 буферами для левого и правого, но тогда как я могу добавить данные player1 в эти 2 буфера?Пожалуйста, помогите.

1 Ответ

0 голосов
/ 25 октября 2018

Вам необходимо логически ИЛИ значение тишины с playerLeft и playerRight, потому что оно уже может быть истинным после player1.

silence |= !playerLeft->process(...
silence |= !playerRight->process(...

Вы также можете «перевернуть» тишину на «hasAudio» для более легкого понимания:

bool hasAudio = player1->process(stereoBuffer, false, ...
hasAudio |= playerLeft->process(stereoBuffer, hasAudio, ...
hasAudio |= playerRight->process(stereoBuffer, hasAudio, ...
...