Broadcom Nexus学习 (三) Audio Decoder
来源:互联网 发布:tf idf算法python实现 编辑:程序博客网 时间:2024/05/17 02:56
先前介绍了Graphics以及AudioPlayback方面的概念,今天介绍AudioDecoder.
先从Interface层面看看AudioDecoder思路:
要播放本地文件(例如:本地MP3文件),需要的Interface互联路径如下:
Sam的感觉是:Pid Channel就像一条路,把输入和解码器(Audio Decoder)联系起来。 Audio Decoder解码后,则将未加密的数字信息传送给Audio Mixer, Mixer将多路信号合并起来,送入Audio DAC去播放出来。
现在先看AudioDecoder具体实现:
1. NEXUS_Playpump_Open()
open一个新的PlayPump Interface。
Sam理解PlayPump就是一个本地播放源。否则Pid Channel就只能用数字电视信号源来作为Audio输入了。
2. NEXUS_Playback_Create()
创建一个PlayBack实例。请注意,上图Interface中并未包含Playback。
NEXUS_Playback_GetSettings(playback, &playbackSettings);
3. NEXUS_FilePlay_OpenPosix()
打开指定文件(音频文件)
4.NEXUS_AudioDecoder_Open()
打开一个Audio Decoder。可以认为它就是一个解码器。可以设置送给它的数据格式是什么。
5. NEXUS_Playback_OpenPidChannel(playback, 1, &pidSettings)
之前建立的Playback(参数1) 实例打开了一个Pid channel. 此Pid Channel的设置如下:
pidSettings.pidSettings.pidType = NEXUS_PidType_eAudio;
pidSettings.pidSettings.pidTypeSettings.audio.codec = NEXUS_AudioCodec_eMp3;
pidSettings.pidTypeSettings.audio.primary = pcmDecoder;
也就是说:此Pid Channel是个Audio Pid Channel. 送出的Audio Data是MP3格式,同时,送给的Decoder是上面步骤4所建立的AudioDecoder。
6. NEXUS_AudioDecoder_GetDefaultStartSettings(&audioProgram);
设置AudioDecoder,
audioProgram.codec = NEXUS_AudioCodec_eMp3;
audioProgram.pidChannel = 步骤5建立的Pid Channel Handle。
注意: 此时Pid Channnel的pidTypeSettings.audio.primary设置为 AudioDecoder。
AudioDecoder的pidChannel 则设置为刚Open 的PidChannel。有点像双向联表。
7. NEXUS_AudioOutput_AddInput(
Audio DAC 与 AudioDecoder连接起来。
此时,从MP3 文件 到playpump,到pid channel, 到AudioDecoder,到AudioDac的路全通了。
8.
NEXUS_Playback_Start(playback, file, &playbackStartSettings);
NEXUS_AudioDecoder_Start(pcmDecoder, &audioProgram);
Playback开始播放,参数2为数据文件。
AudioDecoder开始解码。
9.播放完成后:
另外,如果想将AudioDecoder连接到Auido Mixer,则与之前的AudioPlayback连到Audio Mixer一样:
NEXUS_AudioMixer_AddInput(gMixer, NEXUS_AudioDecoder_GetConnector(gPCMDecoder, NEXUS_AudioDecoderConnectorTyp
- Broadcom Nexus学习(三):Audio Decoder
- Broadcom Nexus学习 (三) Audio Decoder
- Broadcom Nexus学习(二):Audio
- Broadcom Nexus学习 (二) Audio
- Broadcom Nexus学习(四):Video Decoder
- Broadcom Nexus学习 (四) Video Decoder
- Broadcom Nexus学习(一):Graphics
- Broadcom Nexus学习 (一) Graphics,Display
- Broadcom Nexus学习(五)系统结构
- Broadcom Nexus学习 (一) Graphics
- dtplayer如何添加audio decoder
- (三)Maven学习笔记----Nexus
- Netty4学习笔记(三) 自定义Encoder/Decoder进行对象传递
- 创建ffdshow Audio Decoder失败的原因
- Maven学习(三):maven私服nexus
- maven学习笔记【三】私服Nexus使用
- 学习libopus(2) Decoder解码器
- 深度学习笔记:encoder-decoder
- 构造函数与析构函数
- js小结
- 基于CSerialPort修改类的串口调试助手编写过程中遇到的问题总结
- 利用JAVAMail发取和发送gmail邮件
- mysql排序
- Broadcom Nexus学习 (三) Audio Decoder
- PHP基础加强(第十二天)
- Command模式
- 判断一个点是否在多边形内
- MyEclipse Cannot connect to VM socket closed
- 【总结】C#中的Regex的使用心得和注意事项
- C++:对象切片及拷贝构造函数
- 亚特兰大峰会精彩看点:软件吞噬世界,OpenStack是变革核心
- easyUI 前后端的数据传输问题