Технические вопросы и ответы QA1737

auval - Недопустимый Селектор Для Ошибки Типа AU на Mac OS X 10.7

Q: При тестировании наших Аудиоустройств на Mac OS X 10.7, мы видим auval ошибки, не присутствовавшие на предыдущей версии Mac OS X. Например, мы теперь добираемся ERROR: MusicDeviceSendMIDI should be invalid selector for AU type - noErr was returned. Что это означает?

A: Существует несколько вещей, подразумеваемых возвращенным сообщением об ошибке:

Недопустимое селекторное сообщение

auval сам тест утвержден на двух вещах:

Поэтому разъяснить эту неоднозначность с точки зрения узла Аудиоустройства, auval теперь выполнит этот тест и приведет Аудиоустройство к сбою, он распространяет эту неоднозначность.

Сообщение noErr

Когда auval возвращает a noErr от Аудиоустройства в этом случае, модуль должен поддерживать kMusicDeviceMIDIEventSelect селектор где-нибудь в функции Отгрузки Компонента.

Если Аудиоустройство является подклассом AUBase или AUEffectBase тогда по умолчанию это не имело бы поддержки селекторов MIDI. Если это - подкласс AUMIDIBase однако, тогда точка входа переопределяется и может быть найдена в AUMIDIBase.cpp:

Перечисление 1  

ComponentResult AUMIDIBase::ComponentEntryDispatch(ComponentParameters *params, AUMIDIBase *This)
{
    if (This == NULL) return paramErr;

    ComponentResult result;

    switch (params->what) {
    case kMusicDeviceMIDIEventSelect:
        {
            PARAM(UInt32, pbinStatus, 0, 4);
            PARAM(UInt32, pbinData1, 1, 4);
            PARAM(UInt32, pbinData2, 2, 4);
            PARAM(UInt32, pbinOffsetSampleFrame, 3, 4);
            result = This->MIDIEvent(pbinStatus, pbinData1, pbinData2, pbinOffsetSampleFrame);
        }
        break;
    case kMusicDeviceSysExSelect:
        {
            PARAM(const UInt8 *, pbinData, 0, 2);
            PARAM(UInt32, pbinLength, 1, 2);
            result = This->SysEx(pbinData, pbinLength);
        }
        break;

    default:
        result = badComponentSelector;
        break;
    }

    return result;
}

Поиск kMusicDeviceMIDIEventSelect и kMusicDeviceSysExSelect поскольку код отгрузки должен принимать их как допустимые селекторы.



История версии документа


ДатаПримечания
13.04.2011

Новый документ, описывающий новую ошибку auval, может возвратить Mac OS X 10.7, когда не была ранее возвращена никакая ошибка.