TCC89播放代码与 LOG 对应
来源:互联网 发布:2017年java饱和了 编辑:程序博客网 时间:2024/06/14 18:30
阅读与测试 Telechips 平台下音频播放 Filter,同时对比 WinCE 下标准的 Overlay 音频播放过程。了解音频播放过程,记录如下:
(1) CheckCoCreateInstance(hr, CLSID_FilterGraph, IID_IGraphBuilder, (void **)&mpGraph, TEXT("CLSID_FilterGraph fail")); 原型: BOOL CFilterControl::CheckCoCreateInstance(HRESULT &hr, REFCLSID rclsid, REFIID riid, LPVOID* ppv, LPCTSTR pszErrorMessage) 调用 CoCreateInstance 的代码 : hr = ::CoCreateInstance(rclsid, NULL, CLSCTX_INPROC_SERVER, riid, ppv);加载模块: quartz.dll加载模块: mmtimer.dll加载模块: waveapic.dll(2) hr = CoCreateInstance((REFCLSID)CLSID_AudioRender, NULL, CLSCTX_INPROC, (REFIID)IID_IBaseFilter, (void **)&m_pAudioRenderFilter); hr = mpGraph->AddFilter(m_pAudioRenderFilter,L"Audio Renderer"); hr = mpGraph->AddFilter(m_pAudioOutputControlFilter,L"TCC Audio Output Control Filter");加载模块: TCCAudioOutputControlFilter.dll对应实现: TWS893x_200\Filters\TCCAudioOutputControlFilter\TCCAudioOutputControlFilter.cpp CFactoryTemplate g_Templates[] = { { L"TCC Audio Output Control Filter", &CLSID_TCCAudioOutputControlFilter, CAudioOutputControlFilter::CreateInstance, // Create a new instance of this class NULL, &sudTCCAudioOutputControlFilter }, };(3) hr = CoCreateInstance((REFCLSID)CLSID_TCCDEQ, NULL, CLSCTX_INPROC, (REFIID)IID_IBaseFilter, (void **)&m_pDEQFilter); // DEQ Filter Add if(SUCCEEDED(hr)) hr = mpGraph->AddFilter(m_pDEQFilter,L"TCC DEQ Filter");加载模块: TCCDEQFilter.dll(4) hr = mpGraph->RenderFile(FileName,NULL);加载模块: TCCCDKAudioDecFilter.dll加载模块: TCCCDKDemuxFilter.dll[ CDK DEMUX ] Audio Demuxer is MP3========================================================[ CDK DEMUX ]Start Time : 1999-10-29 07:21:08[ CDK DEMUX ]Demux Type : AUDIO(8)[ CDK DEMUX ]Video Width : 0[ CDK DEMUX ]Video Height : 0[ CDK DEMUX ]Video Frame Rate : 0.00[ CDK DEMUX ]Video BitRate : Unknown[ CDK DEMUX ]Extra Data Length : 0[ CDK DEMUX ]Seekable : Seekable[ CDK DEMUX ]AspectRatio : 4 x 3--------------------------------------------------------[ CDK DEMUX ]Audio Track Num : 1 [0]Audio nFormatId : MP3(0x55) [0]Avg Bytes Per Sec : 16000 [0]Bits Per Sample : 16 [0]Block Align : 0 [0]nChannels : 2 [0]SamplePerSec : 44100 [0]nExtraDataLength : 0--------------------------------------------------------[ CDK DEMUX ]Total Subtitle Num : 0[ CDK DEMUX ]Current Subtitle Num : 0========================================================[ CDK AUDIO ][CCDKAudioDecFilter::CheckInputType,1180] AUDIO_ID_MP3 --------------------------------------------------------[ CDK DEMUX ]Audio Stream ID : Audio0[ CDK DEMUX ]Audio Ouptut Buffer Num : 128[ CDK DEMUX ]Audio Ouptut 1 Buffer Size : 32[Kbytes][ CDK DEMUX ]Audio Ouptut Buffer total Size : 4[Mbytes]----------------------------------------------------------------------------------------------------------------[ CDK AUDIO ]Audio Ouptut Buffer Num : 16[ CDK AUDIO ]Audio Ouptut 1 Buffer Size : 512[Kbytes][ CDK AUDIO ]Audio Ouptut Buffer total Size : 8[Mbytes]----------------------------------------------------------------------------------------------------------------[ CDK AUDIO ]Audio Ouptut Buffer Num : 16[ CDK AUDIO ]Audio Ouptut 1 Buffer Size : 512[Kbytes][ CDK AUDIO ]Audio Ouptut Buffer total Size : 8[Mbytes]--------------------------------------------------------(5) HRESULT hr = mpGraph->QueryInterface(IID_IMediaControl, (void **)&p_mc); if (hr == S_OK) { hr = p_mc->Run(); mIsRunning = TRUE; if (FAILED(hr)) printf("Fail : RunGraph(ret=0x%x)\r\n", hr); // Leo 失败后 mIsRunning 的值? SAFE_RELEASE(p_mc); }[ CDK DEMUX ]CDK Audio DMX Seek Time : 0========================================================[ CDK DEMUX ]Seek Position : 0(00:00:00)[ CDK DEMUX ]Real Position : 0(00:00:00)[ CDK DEMUX ]Seek duration : 3[ms]========================================================+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 微软标准 DirectShow 播放音频IGraphBuilder *m_pGB;IMediaControl *m_pMC;IMediaEventEx *m_pME;IBasicAudio *m_pBA;IMediaSeeking *m_pMS;// Initialize COM if(CoInitializeEx(NULL,COINIT_MULTITHREADED) != S_OK){ goto END;}// Get the interface for DirectShow's GraphBuilderif(CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC_SERVER,IID_IGraphBuilder,(void **)&m_pGB) != S_OK){ goto END;}// Have the graph construct its the appropriate graph automaticallyif(m_pGB->RenderFile(m_szFileName, NULL) != NOERROR){ goto END;}// QueryInterface for DirectShow interfacesif(m_pGB->QueryInterface(IID_IMediaControl, (void **)&m_pMC) != NOERROR){ goto END;}if(m_pGB->QueryInterface(IID_IMediaEventEx, (void **)&m_pME) != NOERROR){ goto END;}if(m_pGB->QueryInterface(IID_IMediaSeeking, (void **)&m_pMS) != NOERROR){ goto END;}// Query for audio interfaces, which may not be relevant for video-only filesif(m_pGB->QueryInterface(IID_IBasicAudio, (void **)&m_pBA) != NOERROR){ goto END;}
0 0
- TCC89播放代码与 LOG 对应
- 代码与标准如何对应
- x264参数与代码对应
- 代码与标准如何对应
- Qt4-建立窗口与对应代码分析
- H.264代码与标准如何对应
- x264命令参数与代码对应关系
- 机器码与汇编代码对应方法
- 20.3.2 设置宏与代码文件的对应关系
- UML类图五种关系与代码的对应关系
- UML类图五种关系与代码的对应关系
- android:inputType的XML与Java代码对应关系
- 【Head First】类图关系与代码对应(Java)
- x264命令参数与相关代码对应关系
- 普通屏幕元素与代码的对应关系
- UML类图五种关系与代码的对应关系
- UML类图五种关系与代码的对应关系
- UML类图五种关系与代码的对应关系
- Linux ls 命令实现(简化版)
- Python核心编程学习笔记(一)
- 树莓派远程控制
- 耳机的正确戴法,你用错了吗?
- 更改Windows7 的远程桌面端口
- TCC89播放代码与 LOG 对应
- QPixmap 类显示图片
- WinCE 系统下移动存贮设备Storage 的拔插检测
- 面对完全看不懂的书
- WinCE Stack 异常
- Android使用Opencv
- 选择特定范围内的记录
- Apache中二级域名访问的配置
- 内存数据库