新闻中心

EEPW首页>嵌入式系统>设计应用> 基于S3C6400的移动多媒体广播终端设计

基于S3C6400的移动多媒体广播终端设计

作者: 时间:2009-05-07 来源:网络 收藏

主界面完成的具体工作包含:搜索可用的电视频点;选择收看的电视频道;检测当前的信号强度;读取接收到的音视频数据;对接收到的音视频数据进行解码;播放解码后的音视频数据;对当前播放的节目进行录像;调节音量大小;静音功能。
主界面利用调用泰合电视接收模块SDK,通过SPI驱动程序读写数据,并将接收到的CMMB复用子帧解析成H.264格式的视频数据,AAC格式的音频数据和其他数据。然后调用播放器模块,将H.264格式的视频数据和AAC格式的音频数据解码并播放。
2.2 电视接收模块SDK
电视接收模块SDK提供对CMMB电视信号的控制,包括:电视芯片的初始化,设置频点,扫描频点;得到频道信息,设置频道;接收及停止音视频数据;测试电视信号强度大小。
该模块主要由数据处理模块及信号控制模块2个子模块组成。
数据处理子模块在打开引擎时,会生成一个线程,这个线程用来读取CMMB信号,并进行分析、处理,其流程如图3所示。

本文引用地址://m.amcfsurvey.com/article/152507.htm

这个子模块是一个死循环,在循环中,先通过一个标志进行判断,如果需要处理数据,首先读取一帧数据,如果没有数据,则阻塞在这儿。然后对这帧数据进行分析,分别放入音频,视频,其他数据的缓冲区,最后,调用回调函数对各种数据进行处理,将音视频数据发送给音视频播放模块来播放。
另一个子模块,信号控制模块主要是提供控制接口让上层调用,以完成对CMMB信号的处理。该子模块主要包含以下功能接口函数:引擎的初始化:创建读数据线程,启动初始化;引擎的打开:对电视芯片初始化;设置频点:设置当前频点;得到ESG信息:从信号中提取ESG信息并分析;关闭引擎:清除用到的资源,硬件重置位;得到频道信息列表:发送请求,分析频道信号;设置频道:设置当前频道;得到参数:能得到信号强度,当前频道等参数。
2.3 音视频播放模块
音视频播放由3个线程来完成。这3个线程分别为视频处理线程、音频处理线程、数据接收线程。
视频处理线程:
(1)先判断缓冲区队列有没有视频数据,如果没有,休眠10 ms;
(2)有数据的话,因为视频数据是根据时间戳顺序作为队列放在缓冲区的,取出第一帧,判断是否已经过时,如果是很老的数据,已经错过了播放时间,则判断帧类型,如果是关键帧,则解码并显示,否则,丢掉这一帧,然后转到第(1)步;
(3)否则,判断这一帧是否到了播放时间,如果是,则将这帧数据解码并显示,然后转到第(1)步;
(4)如果没有到播放时间,则休眠10 ms。然后转到第(1)步。
音频处理线程:
(1)先判断缓冲区队列有没有音频数据,如果没有,休眠10 ms;
(2)有数据的话,因为音频数据是根据时间戳顺序作为队列放在缓冲区的,取出第一帧,判断是否已经过时,如果是很老的数据,已经错过了播放时间,则丢弃,然后转到第(1)步;
(3)否则,判断是否到了播放时间,如果是,则将这帧数据解码并播放,然后转到第(1)步;
(4)如果没有到播放时间,则休眠10 ms。然后转到第(1)步。
数据接收线程:数据接收线程不属于播放器模块,它是电视接收模块的一部分。
(1)如果有数据到来,判断有没有视频数据,如果有,将它们全部插入到视频缓冲区;

linux操作系统文章专题:linux操作系统详解(linux不再难懂)


评论


相关推荐

技术专区

关闭