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

📄 umc_splitter.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 <string.h>#include "umc_splitter.h"namespace UMC{SplitterParams::SplitterParams(){   m_lFlags = 0;   m_pDataReader = NULL;   m_uiSelectedVideoPID = SELECT_ANY_VIDEO_PID;   m_uiSelectedAudioPID = SELECT_ANY_AUDIO_PID;} // SplitterParams::SplitterParams()SplitterParams::~SplitterParams(){} // SplitterParams::~SplitterParams()SplitterInfo::SplitterInfo(){    m_splitter_flags = 0;    m_audio_info_aux = NULL;    m_video_info_aux = NULL;    number_audio_tracks = 1;    number_video_tracks = 1;    memset(&m_audio_info, 0, sizeof(m_audio_info));    memset(&m_video_info, 0, sizeof(m_video_info));    memset(&m_system_info, 0, sizeof(m_system_info));} // SplitterInfo::SplitterInfo()SplitterInfo::~SplitterInfo(){} // SplitterInfo::~SplitterInfo()SystemStreamType Splitter::GetStreamType(DataReader* dr){    vm_var32 long_code;    vm_byte byte_code;    Status umcSts = UMC_OK;    if (NULL == dr)        return UNDEF_STREAM;    else        dr->Reset();    umcSts = dr->CheckUInt(&long_code, 0);    if (UMC_OK != umcSts)        return UNDEF_STREAM;    if (long_code == 'RIFF') // RIFF    {        //avi RIFF container        return AVI_STREAM;    }    umcSts = dr->CheckUInt(&long_code, 4);    if (UMC_OK != umcSts)        return UNDEF_STREAM;    if (long_code == 'ftyp')    {        umcSts = dr->CheckUInt(&long_code,8);        if (UMC_OK != umcSts) return UNDEF_STREAM;        // mp42        if (long_code == 'mp42' ||            long_code == 'mp41' ||            long_code == 'isom' ||            long_code == 'MSNV' ||            long_code == 'M4A ')        {            //MP4 container            return MP4_ATOM_STREAM;        }    }    umcSts = dr->CheckUInt(&long_code,4);    if (UMC_OK != umcSts)        return UNDEF_STREAM;    if (long_code == 'moov')    {        return MP4_ATOM_STREAM;    }    umcSts = dr->CheckByte(&byte_code,0);    if (UMC_OK != umcSts)        return UNDEF_STREAM;    umcSts = dr->CheckUInt(&long_code,0);    if (UMC_OK != umcSts)        return UNDEF_STREAM;    if ((byte_code == 0x47) ||        ((long_code & 0xffffff00) == 0x00000100) ||        (long_code == 0x00000001))    {        //mpeg 1 ,2, 4 programm stream system        return MPEGx_SYSTEM_STREAM;    }    if (((long_code & 0xfff00000) == 0xfff00000) ||        ((long_code & 0xffffff00) == 0x49443300) ||        ((long_code & 0xffff0000) == 0x0b770000))    {        return MPEGx_SYSTEM_STREAM;    }    if (((long_code & 0xfffffc00) == 0x00008000))    {        //H.263 pure video        return MPEGx_SYSTEM_STREAM;    }    if (((long_code & 0xfffff000) == 0x00010000))    {        //H.261 pure video        return MPEGx_SYSTEM_STREAM;    }    if (((long_code & 0xffffff00) == 0x00000100))    {        //mpeg 1 ,2, 4 programm stream system        return MPEGx_SYSTEM_STREAM;    }    else if (0 == long_code)    {        int check_counter = 1;        while (0 == long_code)        {            umcSts = dr->CheckUInt(&long_code,check_counter);            if (UMC_OK != umcSts)                return UNDEF_STREAM;            check_counter++;        }        umcSts = dr->CheckUInt(&long_code,check_counter);        if (UMC_OK != umcSts)            return UNDEF_STREAM;         if (((long_code & 0xffffff00) == 0x00000100) ||             ((long_code & 0x0000fff0) == 0x0000fff0))        {            //mpeg 2 programm stream system            return MPEGx_SYSTEM_STREAM;        }    }    //last chanse    {        vm_byte byte_code1;        umcSts = dr->CheckByte(&byte_code, 4);        if (UMC_OK != umcSts)            return UNDEF_STREAM;        umcSts = dr->CheckByte(&byte_code1, 196);        if (UMC_OK != umcSts)            return UNDEF_STREAM;        if ((byte_code == 0x47) &&            (byte_code1 == 0x47))        {        //mpeg2 ts tts        return MPEGx_SYSTEM_STREAM;        }    }    return UNDEF_STREAM;} // SystemStreamType Splitter::GetStreamType(DataReader* dr)} // namespace UMC

⌨️ 快捷键说明

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