OpenAL на iPhone внезапно становится очень тихим - PullRequest
0 голосов
/ 25 марта 2012

Как гласит заголовок, звуки будут звучать просто смехотворно тихо.Я думал, что он вообще не играл, пока не услышал едва слышные звуки на максимальной громкости.

Это было хорошо в течение нескольких недель.Не проблема.Внезапно он начал делать это из ниоткуда.Я пытался очистить / перестроить, перезапустить Xcode, перезапустить устройство и т. Д. Ничто не помогает.Это просто внезапно вернется снова в случайной сборке.Это действительно начинает меня расстраивать, и я разочарован тем, что перешел на OpenAL, так как это не первая проблема, с которой я столкнулся всего за несколько недель его использования.Я не могу выпустить ничего со звуком, который МОЖЕТ иногда работать.

Я использую AVAudioPlayer одновременно для воспроизведения фоновой музыки, и у меня не было ни одной проблемы с этим.

У кого-нибудь есть идеичто может быть причиной этого?

В ответ на user1260708:

Мой метод инициализации выглядит следующим образом

bool D2DSoundController::init(Map<D2DSound> *sounds) {
if (!_initialzed) {
    OSStatus result = AudioSessionInitialize(NULL, NULL, &_interruptionListener, (void*)_context);
    ulong cat = kAudioSessionCategory_MediaPlayback;
    result |= AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(cat), &cat);
    _sounds = sounds;
    _device = alcOpenDevice(0);
    if (_device != 0) {
        _context = alcCreateContext(_device, 0);
        if (_context != 0) {
            alcMakeContextCurrent(_context);
            alGenSources(_numSources, _sources);
            //alDistanceModel(AL_LINEAR_DISTANCE_CLAMPED);
            //alListener3f(AL_POSITION, 300.0f, 200.0f, 0.0f); --- I think this was the problem?
            _initialzed = true;

            return (alGetError() == 0 && result == 0);
        }
        return false;
    }
    return false;
}
return false;

}

Однако я думаю, что янашел проблему.Закомментировав вызов alListener3f (только что заметил, что строка выше закомментирована некоторое время), он снова работает.Я не понимаю, почему это внезапно стало проблемой, поскольку это было там все время;Дистанционная аттенюация также не работала для меня (причина, по которой вызов был там, во-первых, для тестирования), поэтому я решил в целом не использовать его, но, думаю, я забыл удалить эту строку.См. Этот вопрос: Затухание расстояния с помощью OpenAL на iPhone / iPod

Любой вклад в вопрос об аттенюации (который также является корнем этого) был бы великолепен!

Как я отмечаю, с тех пор как я отбросил аттенюацию, я также использовал стерео, что не должно на это влиять, поэтому я все еще в замешательстве.

...