⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pe_iconfig.cpp

📁 这是DVD中伺服部分的核心代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    }

    pStrmCtrl = ((PEHANDLE *)handle)->iStreamCtrl;


    // AudioMixer - GetGain
    *level = g_audioMixerGain;

    return (status);
}

/**
 * Sets the audio DACs level.
 *
 * @param handle - iConfigure handle
 * @param input  - specifies the audio input type
 * @param level  - the audio level
 *
 * @return PE_STATUS - Error code.
 */
PE_STATUS PEiConfigureAMSetChannelLevel(PE_HANDLE handle, PE_ICONFIGURE_AUDIO_INPUT input,
    PE_ICONFIGURE_AUDIO_INTERACTIVE_ID iaudio_id, PE_ICONFIGURE_AUDIO_LEVEL level)
{
    PE_STATUS           status = PE_SUCCESS;
    ISTREAMCTRLHANDLE   *pStrmCtrl;

    DBGPRINT(DBG_ON(DBG_TRACE), ("PEiConfigureAMSetChannelLevel - STUBBED\n"));

    if (handle == NULL)
    {
        return (PE_INVALID_HANDLE);
    }
    if (level > PE_AUDIO_LEVEL_MAX)
    {
        return (PE_INVALID_AUDIO_VOLUME);
    }
    if (level < PE_AUDIO_LEVEL_MIN)
    {
        return (PE_INVALID_AUDIO_VOLUME);
    }
    if (((PEHANDLE *)handle)->iStreamCtrl == NULL)
    {
        return (PE_INVALID_HANDLE);
    }

    pStrmCtrl = ((PEHANDLE *)handle)->iStreamCtrl;

    status = PE_NOT_IMPLEMENTED;

    return (status);
}

/**
 * Returns the current analog audio volume.
 *
 * @param handle - iConfigure handle
 * @param input  - specifies the audio input type
 * @param *level - the audio level
 *
 * @return PE_STATUS - Error code.
 */
PE_STATUS PEiConfigureAMGetChannelLevel(PE_HANDLE handle, PE_ICONFIGURE_AUDIO_INPUT input,
    PE_ICONFIGURE_AUDIO_INTERACTIVE_ID iaudio_id, PE_ICONFIGURE_AUDIO_LEVEL *level)
{
    ISTREAMCTRLHANDLE   *pStrmCtrl;
    PE_STATUS           status = PE_SUCCESS;

    if (handle == NULL)
    {
        return (PE_INVALID_HANDLE);
    }
    if (level == NULL)
    {
        return (PE_NULL_POINTER);
    }
    if (((PEHANDLE *)handle)->iStreamCtrl == NULL)
    {
        return (PE_INVALID_HANDLE);
    }

    pStrmCtrl = ((PEHANDLE *)handle)->iStreamCtrl;

    status = PE_NOT_IMPLEMENTED;

    return (status);
}

/**
 * Mutes the analog audio volume.
 *
 * @param handle - iConfigure handle
 * @param input  - specifies the audio input type
 * @param mute   - mute on/off
 *
 * @return PE_STATUS - Error code.
 */
PE_STATUS PEiConfigureAMSetMute(PE_HANDLE handle, PE_ICONFIGURE_AUDIO_INPUT input,
    PE_ICONFIGURE_AUDIO_INTERACTIVE_ID iaudio_id, BOOLEAN mute)
{
    PE_STATUS               status = PE_SUCCESS;
    ISTREAMCTRLHANDLE       *pStrmCtrl;

    DBGPRINT(DBG_ON(DBG_TRACE), ("PEiConfigureAMSetMute\n"));

    if (handle == NULL)
    {
        return (PE_INVALID_HANDLE);
    }

    if (((PEHANDLE *)handle)->iStreamCtrl == NULL)
    {
        return (PE_INVALID_HANDLE);
    }

    pStrmCtrl = ((PEHANDLE *)handle)->iStreamCtrl;

    // AudioMixer - SetMute
    g_audioMixerMute = mute;

    PE_AM_LEVEL_EVENT_INFO event_info;
    float flevel = 0.0;

    /* if bstream is overall or primary and digital out is compressed, mute it also */
    if (((input == PE_AUDIO_INPUT_OVERALL) || (input == PE_AUDIO_INPUT_PRIMARY)) &&
        (((PEHANDLE *)handle)->iConfigure->DigitalAudio == AUDIO_CHANNELS_5p1))
    {
        /* mute SPDIF */
    }

    /*
     * send a level changed event
     */
    event_info.mute  = mute;
    event_info.level = g_audioMixerGain;
    peSendEvent(handle, PE_EVENT_AM_LEVEL_CHG, &event_info);

    return (status);
}

/**
 * Returns the current analog audio volume mute state.
 *
 * @param handle - iConfigure handle
 * @param input  - specifies the audio input type
 * @param *mute  - mute on/off
 *
 * @return PE_STATUS Error code.
 */
PE_STATUS PEiConfigureAMGetMute(PE_HANDLE handle, PE_ICONFIGURE_AUDIO_INPUT input,
    PE_ICONFIGURE_AUDIO_INTERACTIVE_ID iaudio_id, BOOLEAN *isMuted)
{
    PE_STATUS           status = PE_SUCCESS;
    ISTREAMCTRLHANDLE   *pStrmCtrl;

    if (handle == NULL)
    {
        return (PE_INVALID_HANDLE);
    }

    if (isMuted == NULL)
    {
        return (PE_NULL_POINTER);
    }

    if (((PEHANDLE *)handle)->iStreamCtrl == NULL)
    {
        return (PE_INVALID_HANDLE);
    }

    pStrmCtrl = ((PEHANDLE *)handle)->iStreamCtrl;


    BOOLEAN muteState = false;

    // AudioMixer - GetMute
    muteState = g_audioMixerMute;

    *isMuted = (muteState != 0);


    return (status);
}

/**
 * Gets the audio balance (left to right)
 *
 * @param handle   - iConfigure handle
 * @param input    - specifies the audio input type
 * @param *balance - the audio balance
 *
 * @return PE_STATUS - Error code.
 */
PE_STATUS PEiConfigureAMGetBalance(PE_HANDLE handle, PE_ICONFIGURE_AUDIO_INPUT input,
    PE_ICONFIGURE_AUDIO_INTERACTIVE_ID iaudio_id, PE_ICONFIGURE_AUDIO_BALANCE *balance)
{
    PE_STATUS                       status     = PE_SUCCESS;
    ISTREAMCTRLHANDLE*              pStrmCtrl;

    if (handle == NULL)
    {
        return (PE_INVALID_HANDLE);
    }

    if (balance == NULL)
    {
        return (PE_NULL_POINTER);
    }

    if (((PEHANDLE *)handle)->iStreamCtrl == NULL)
    {
        return (PE_INVALID_HANDLE);
    }

    pStrmCtrl = ((PEHANDLE *)handle)->iStreamCtrl;

    // AudioMixer - GetPan
    *balance = g_audioMixerBalance; 

    return (status);
}

/**
 * Sets the audio balance (left to right)
 *
 * @param handle  - iConfigure handle
 * @param input   - specifies the audio input type
 * @param balance - the audio balance
 *
 * @return PE_STATUS - Error code.
 */
PE_STATUS PEiConfigureAMSetBalance(PE_HANDLE handle, PE_ICONFIGURE_AUDIO_INPUT input,
    PE_ICONFIGURE_AUDIO_INTERACTIVE_ID iaudio_id, PE_ICONFIGURE_AUDIO_BALANCE balance)
{
    PE_STATUS               status     = PE_SUCCESS;
    ISTREAMCTRLHANDLE*      pStrmCtrl;


    if (handle == NULL)
    {
        return (PE_INVALID_HANDLE);
    }

    if (balance > PE_AUDIO_BALANCE_MAX)
    {
        return (PE_INVALID_PARAM);
    }

    if (balance < PE_AUDIO_BALANCE_MIN)
    {
        return (PE_INVALID_PARAM);
    }

    if (((PEHANDLE *)handle)->iStreamCtrl == NULL)
    {
        return (PE_INVALID_HANDLE);
    }

    pStrmCtrl = ((PEHANDLE *)handle)->iStreamCtrl;

    // AudioMixer - Set Balance
    g_audioMixerBalance = balance;

    PE_AM_PANNING_EVENT_INFO event_info;

    /*
     * send a panning changed event
     */
    event_info.balance = balance;
    event_info.panning = g_audioMixerPan;
    peSendEvent(handle, PE_EVENT_AM_PANNING_CHG, &event_info);

    return (status);
}

/**
 * Gets the audio panning (front to back)
 *
 * @param handle - iConfigure handle
 * @param input  - specifies the audio input type
 * @param *pan   - the audio pan
 *
 * @return PE_STATUS - Error code.
 */
PE_STATUS PEiConfigureAMGetPan(PE_HANDLE handle, PE_ICONFIGURE_AUDIO_INPUT input, 
    PE_ICONFIGURE_AUDIO_INTERACTIVE_ID iaudio_id, PE_ICONFIGURE_AUDIO_PAN *pan)
{
    PE_STATUS           status     = PE_SUCCESS;
    ISTREAMCTRLHANDLE*  pStrmCtrl;

    if (handle == NULL)
    {
        return (PE_INVALID_HANDLE);
    }

    if (pan == NULL)
    {
        return (PE_NULL_POINTER);
    }

    if (((PEHANDLE *)handle)->iStreamCtrl == NULL)
    {
        return (PE_INVALID_HANDLE);
    }

    pStrmCtrl = ((PEHANDLE *)handle)->iStreamCtrl;


    // AudioMixerGetPan
    *pan =  g_audioMixerPan;

    return (status);
}

/**
 * Sets the audio panning (front to back)
 *
 * @param handle - iConfigure handle
 * @param input  - specifies the audio input type
 * @param pan    - the audio pan
 *
 * @return PE_STATUS - Error code.
 */
PE_STATUS PEiConfigureAMSetPan(PE_HANDLE handle, PE_ICONFIGURE_AUDIO_INPUT input, 
    PE_ICONFIGURE_AUDIO_INTERACTIVE_ID iaudio_id, PE_ICONFIGURE_AUDIO_PAN pan)
{
    PE_STATUS         status     = PE_SUCCESS;
    ISTREAMCTRLHANDLE *pStrmCtrl;

    if (handle == NULL)
    {
        return (PE_INVALID_HANDLE);
    }

    if (pan > PE_AUDIO_PAN_MAX)
    {
        return (PE_INVALID_PARAM);
    }

    if (pan < PE_AUDIO_PAN_MIN)
    {
        return (PE_INVALID_PARAM);
    }

    if (((PEHANDLE *)handle)->iStreamCtrl == NULL)
    {
        return (PE_INVALID_HANDLE);
    }

    pStrmCtrl = ((PEHANDLE *)handle)->iStreamCtrl;



    // AudioMixer - SetPan
    g_audioMixerPan = pan;

    PE_AM_PANNING_EVENT_INFO event_info;

    /*
     * send a panning changed event
     */
    event_info.balance = g_audioMixerBalance;
    event_info.panning = pan;
    peSendEvent(handle, PE_EVENT_AM_PANNING_CHG, &event_info);

    return (status);
}

/**
 * Open the sound sample
 *
 * @param handle  - iConfigure handle
 * @param config  - specifies if the pcm sound is mono or stereo
 * @param *pcm    - buffer that contains the pcm data
 * @param samples - the number of PCM samples in the buffer
 * @param *iaudio_id - iaudio handle
 *
 * @return PE_STATUS - Error code.
 */
PE_STATUS PEiConfigureAMOpenSound(PE_HANDLE handle, PE_ICONFIGURE_AUDIO_CHANNEL_CONFIG *config,
    BYTE *pcm, ULONG samples, PE_ICONFIGURE_AUDIO_INTERACTIVE_ID *iaudio_id)
{
   PE_STATUS status = PE_SUCCESS;
    ISTREAMCTRLHANDLE *pStrmCtrl;

    if (handle == NULL)
    {
        return (PE_INVALID_HANDLE);
    }

    if (pcm == NULL)
    {
        return (PE_INVALID_PARAM);
    }

    if (config == NULL)
    {
        return (PE_INVALID_PARAM);
    }

    if (((PEHANDLE *)handle)->iStreamCtrl == NULL)
    {
        return (PE_INVALID_HANDLE);
    }

    pStrmCtrl = ((PEHANDLE *)handle)->iStreamCtrl;

    status = PE_NOT_IMPLEMENTED;

    return (status);
}

/**
 * Play a PCM sound sample
 *
 * @param handle  - iConfigure handle
 * @param config  - specifies if the pcm sound is mono or stereo
 * @param *pcm    - buffer that contains the pcm data
 * @param samples - the number of PCM samples in the buffer
 *
 * @return PE_STATUS - Error code.
 */
PE_STATUS PEiConfigureAMPlaySound(PE_HANDLE handle, PE_ICONFIGURE_AUDIO_INTERACTIVE_ID iaudio_id)
{
    PE_STATUS status = PE_SUCCESS;

    if (handle == NULL)
    {
        return (PE_INVALID_HANDLE);
    }

    status = PE_NOT_IMPLEMENTED;

    return (status);
}

/**
 * Stop the sound sample
 *
 * @param handle     - iConfigure handle
 * @param iaudio_id  - iaudio handle
 *
 * @return PE_STATUS - Error code.
 */
PE_STATUS PEiConfigureAMStopSound(PE_HANDLE handle, PE_ICONFIGURE_AUDIO_INTERACTIVE_ID iaudio_id)
{
    PE_STATUS status = PE_SUCCESS;

    if (handle == NULL)
    {
        return (PE_INVALID_HANDLE);
    }

    status = PE_NOT_IMPLEMENTED;

    return (status);
}

/**
 * Get state from audio playback
 *
 * @param handle     - iConfigure handle
 * @param iaudio_id  - iaudio handle
 * @param *isRunning - true if sound is playing
 *
 * @return PE_STATUS - Error code.
 */
PE_STATUS PEiConfigureAMGetSoundState(PE_HANDLE handle, PE_ICONFIGURE_AUDIO_INTERACTIVE_ID iaudio_id, BOOLEAN *isRunning)
{
    PE_STATUS status = PE_SUCCESS;

    if (handle == NULL)
    {
        return (PE_INVALID_HANDLE);
    }

    status = PE_NOT_IMPLEMENTED;

    return (status);
}

/**
 * Close the sound sample
 *
 * @param handle     - iConfigure handle
 * @param iaudio_id  - iaudio handle
 *
 * @return PE_STATUS - Error code.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -