📄 umc_dv_spl.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 "vm_debug.h"#include "vm_time.h"#include "umc_dv_spl.h"#include "dv_il_audio.h"const vm_var32 uiMaxAudioBytesPerDVFrame = 8000;UMC::StatusUMC::DVSplitter::SelectVideoStream(vm_var32 uiInd, VideoStreamType& rvType, VideoStreamSubType& /*rvSubType*/){ Status umcRes = UMC_OK;// bool bVideoStrmFound = false; //'dvsd', 'dvhd', 'vidv' or 'dvsl' vm_var32 fccHandler = m_pStreams[uiInd].sStrmHdr.fccHandler; if (AVI_FOURCC_DVSD == fccHandler || AVI_FOURCC_DSVD == fccHandler || AVI_FOURCC_VIDV == fccHandler || AVI_FOURCC_DVSL == fccHandler || AVI_FOURCC_SLDV == fccHandler) { if (AVI_FOURCC_VIDEOSTRM == m_pStreams[uiInd].sStrmHdr.fccType) { rvType = DIGITAL_VIDEO_SD; umcRes = UMC_OK; } else if (AVI_FOURCC_IAVS == m_pStreams[uiInd].sStrmHdr.fccType) { assert(false);// m_info.m_video_info.stream_type = DIGITAL_VIDEO_SD;// umcRes = ExtractInterleavedInfo(ulStream);// if (UMC_OK == umcRes) {// ruiInd = ulStream;// bVideoStrmFound = true;// break;// } } } else { umcRes = UMC_BAD_STREAM; } if (UMC_OK != umcRes) { vm_debug_trace(4, VM_STRING("DVSplitter SelectVideoStream failed\n")); } return umcRes;}/*UMC::StatusUMC::DVSplitter::ExtractInterleavedInfo(const unsigned long ulStreamInd){ Status umcRes = UMC_OK; assert(NULL != m_pStreams[ulStreamInd].pbStrmFmt); AVISplitStrmStruct& rCurStream = m_pStreams[ulStreamInd]; UMC::DVINFO* pDVInfo = (UMC::DVINFO*)rCurStream.pbStrmFmt; NDVAudioIL::DV_AAUX_PACK* pPACK = (NDVAudioIL::DV_AAUX_PACK*)&(pDVInfo->uiDVAAuxSrc); assert(sizeof(UMC::DVINFO) == rCurStream.ulStrmFmtSize); m_info.m_video_info.clip_info.width = rCurStream.sStrmHdr.rcFrame.right - rCurStream.sStrmHdr.rcFrame.left; m_info.m_video_info.clip_info.height = rCurStream.sStrmHdr.rcFrame.bottom - rCurStream.sStrmHdr.rcFrame.top; m_info.m_video_info.bitrate = m_sAviHdr.uiMaxBytesPerSec * 8; m_info.m_video_info.framerate = (double)rCurStream.sStrmHdr.uiRate / rCurStream.sStrmHdr.uiScale; if (UNDEF_VIDEO != m_info.m_video_info.stream_type) { assert(0 != rCurStream.sStrmHdr.uiSuggestedBufferSize); umcRes = m_VideoFifo.Init(rCurStream.sStrmHdr.uiSuggestedBufferSize, UMC_DVSPL_VIDEOFIFO_LEN); } if (UMC_OK == umcRes && UNDEF_VIDEO != m_info.m_video_info.stream_type) { m_lVideoStreamInd = ulStreamInd; } // sample rate in Hz if (UMC_OK == umcRes) { switch (pPACK->SamplingFreq) { case 0: m_info.m_audio_info.sample_frequency = 48000; break; case 1: m_info.m_audio_info.sample_frequency = 44100; break; case 2: m_info.m_audio_info.sample_frequency = 32000; break; default: umcRes = UMC_BAD_STREAM; } // number of audio channels switch (pPACK->Channels) { case 0: m_info.m_audio_info.channels = 0; break; case 1: m_info.m_audio_info.channels = 1; break; default: umcRes = UMC_BAD_STREAM; } m_info.m_audio_info.bitPerSample = 16; // 0 if compressed // bitstream in bps m_info.m_audio_info.bitrate = m_info.m_audio_info.bitPerSample * m_info.m_audio_info.sample_frequency; m_info.m_audio_info.stream_type = PCM_AUDIO; } if (UNDEF_AUDIO != m_info.m_audio_info.stream_type) { vm_var32 uiBufNum = 15; vm_var32 uiBufSize = (unsigned int)(m_info.m_audio_info.sample_frequency / (m_info.m_video_info.framerate * 15)) * m_info.m_audio_info.channels * (m_info.m_audio_info.bitPerSample >> 3); umcRes = m_AudioFifo.Init(uiBufSize, UMC_DVSPL_AUDIOFIFO_LEN * uiBufNum); } if (UMC_OK == umcRes && UNDEF_AUDIO != m_info.m_audio_info.stream_type) { m_uiFlags |= FLAGS_AVISPL_INTRLVAUDIO; } if (UMC_OK != umcRes) { vm_debug_trace(4,__VM_STRING("DVSplitter ExtractInterleavedInfo failed\n")); } return umcRes;}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -