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

📄 fw_audio_render.cpp

📁 这是在PCA下的基于IPP库示例代码例子,在网上下了IPP的库之后,设置相关参数就可以编译该代码.
💻 CPP
字号:
/*//////////////////////////////////////////////////////////////////////////////////                  INTEL CORPORATION PROPRIETARY INFORMATION//     This software is supplied under the terms of a license agreement or//     nondisclosure agreement with Intel Corporation and may not be copied//     or disclosed except in accordance with the terms of that agreement.//          Copyright(c) 2003-2005 Intel Corporation. All Rights Reserved.//*/#include "umc_defs.h"#ifdef UMC_ENABLE_FW_AUDIO_RENDER#include "fw_audio_render.h"#include "vm_time.h"UMC::FWAudioRender::FWAudioRender():    m_tickStartTime(0),    m_tickPrePauseTime(0),    m_dfStartPTS(-1.0){}UMC::StatusUMC::FWAudioRender::Init(MediaReceiverParams* pInit){    Status umcRes = UMC_OK;    int err;    AudioRenderParams* pParams =        DynamicCast<AudioRenderParams, MediaReceiverParams>(pInit);    if (NULL == pParams)    {   umcRes = UMC_NULL_PTR;  }    if (UMC_OK == umcRes)    {   umcRes = BasicAudioRender::Init(pInit); }    m_tickStartTime = 0;    m_tickPrePauseTime = 0;    m_dfStartPTS = -1.0;    err = m_wav_file.Open(VM_STRING("output.wav"), AudioFile::AFM_CREATE);    if (err < 0)        return UMC_FAILED_TO_INITIALIZE;    m_wav_info.format_tag          = 1;    m_wav_info.sample_rate         = pParams->info.sample_frequency;    m_wav_info.resolution          = pParams->info.bitPerSample;    m_wav_info.channels_number     = pParams->info.channels;    m_wav_info.channel_mask        = 0;    m_wav_file.SetInfo(&m_wav_info);    return umcRes;}UMC::StatusUMC::FWAudioRender::SendFrame(MediaData* in){    Status umcRes = UMC_OK;    if (UMC_OK == umcRes && (NULL == in->GetDataPointer()))    {    umcRes = UMC_NULL_PTR;    }    if (-1.0 == m_dfStartPTS)    {   m_dfStartPTS = in->GetTime();   }    if (UMC_OK == umcRes)    {        if (0 == m_tickStartTime)        {   m_tickStartTime = vm_time_get_tick();   }        int nbytes = in->GetDataSize();        int err = m_wav_file.Write((unsigned char *)in->GetDataPointer(), nbytes);        if (err < 0)            return UMC_OPERATION_FAILED;    }     return umcRes;}UMC::StatusUMC::FWAudioRender::Pause(bool pause){    Status umcRes = UMC_OK;    m_tickPrePauseTime += vm_time_get_tick() - m_tickStartTime;    m_tickStartTime = 0;    return umcRes;}floatUMC::FWAudioRender::SetVolume(float volume){    return -1;}floatUMC::FWAudioRender::GetVolume(){    return -1;}UMC::StatusUMC::FWAudioRender::Close(){    m_wav_file.Close();    m_dfStartPTS = -1.0;    return BasicAudioRender::Close();}UMC::StatusUMC::FWAudioRender::Reset(){    m_tickStartTime = 0;    m_tickPrePauseTime = 0;    m_dfStartPTS = -1.0;    return BasicAudioRender::Reset();}doubleUMC::FWAudioRender::GetTimeTick(){    double dfRes = -1;    vm_var32 uiBytesPlayed = 0;    if (0 != m_tickStartTime)    {        dfRes = m_dfStartPTS +            ((double)(vm_var64s)(m_tickPrePauseTime +            vm_time_get_tick() - m_tickStartTime)) / (double)(vm_var64s)vm_time_get_frequency();    }    else    {        dfRes = m_dfStartPTS +                        ((double)(vm_var64s)m_tickPrePauseTime) / (double)(vm_var64s)vm_time_get_frequency();    }    return dfRes;}#endif //UMC_ENABLE_FW_AUDIO_RENDER

⌨️ 快捷键说明

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