首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
基于S3C6400的移动多媒体广播终端设计
来源:本站整理  作者:佚名  2009-05-07 14:00:27




    (2)判断有没有音频数据,如果有,将它们都插入到音频缓冲区;
    (3)阻塞,等待数据到来;
    (4)当有数据到来时,转到第(1)步。
    音视播放器模块共有4个子模块:缓冲区管理、音视频同步、音视频解码、视频显示。
2.3.1 缓冲区管理
    一共设计2个队列,音频缓冲队列,视频缓冲队列。每帧数据放入缓冲区,成员分别为帧长,帧类型(视频有,音频无),时间戳,数据指针。帧长表示帧数据长度,帧类型里,1表示关键帧,0表示非关键帧,时间戳表示帧数据播放的时间,数据指针指向帧数据缓冲区。当有新的数据到来时,构造一个帧成员,填入各项参数,然后根据时间戳,将他插入到缓冲队列,播放时间近的放在前面。流程如下:
    (1)首先构造一个帧缓冲成员;
    (2)按照帧数据内容填充帧缓冲;
    (3)根据时间戳,按照近的在前面的原则,放入缓冲区队列。
2.3.2 音视频同步
    音视频数据始终与系统时间进行同步,起初初始化时,先在缓冲区存放1 s的数据。因为系统时间与发送的数据时间戳不一定相同,所以不用绝对时间,而是以缓冲区的第一帧时间戳为开始时间,后面的数据都以与这帧数据的时间差这个相对时间为准。
    视频和系统时间同步的流程如下:
    (1)判断缓冲队列是否为空,如果是空,休眠10 ms;
    (2)如果非空,从缓冲队列取出一帧,判断这帧数据是否已经过时,如果超过播放时间100 ms以上,则判断帧类型,如果是非关键帧,丢掉这帧数据,否则处理这帧数据,然后跳到第(1)步;
    (3)如果这帧数据刚刚超过播放时间并且超过时间不超过100 ms,则处理这帧数据,然后跳到第(1)步。
    音频和系统时间同步的处理流程如下:
    (1)判断音频缓冲区是否为空,如果是空,休眠10 ms;
    (2)如果非空,取出一帧数据,判断是否已经超过播放时间100 ms,如果是,丢弃这帧数据,跳到第(1)步;
    (3)否则,处理这帧数据,跳到第(1)步。
2.3.3 音视频解码
    数字移动电视信号目前音频采用的是AAC编码,利用开源解码库libfaad2来解码,libfaad2的使用流程如下:
    (1)首先对解码器进行配置,设置一些解码参数,例如采样率,声道数等;
    (2)然后初始化解码器;
    (3)如果有需要解码的音频帧,依次调用NeAAC—DecDecode进行解码;
    (4)当音频帧都解码完毕,需要关闭解码器。
    三星的S3C6400芯片提供了多种格式视频的硬件编解码器,简称为MFC(Multi—format Video Codec),支持的功能有:MPEG一4 Simple Profile编解码;H.264/AVC Baseline Profile编解码;H.263 P3编解码;VC一1(WMV9)Main Profile编解码;支持多任务,如同时完成1路编码和3路解码;支持多格式,如同时进行MPEG一4编码和H.264解码。理论上MFC性能可以达到全双工的720*480 30帧/s(或720*576 25帧/s)的编解码。
    MFC驱动负责直接控制MFC硬件完成实际的编解码操作,提供类似字符设备的接口;MFC API封装了底层驱动的控制接口,给上层提供函数调用的接口方式,解码器调用流程如图4所示。

2.3.4 视频显示

上一页  [1] [2] [3] [4]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:45,062.50000 毫秒