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

📄 umc_dv_spl.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 "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 + -