📄 fw_audio_render.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 + -