一种多媒体码流的码率调整方法

文档序号:7588997阅读:296来源:国知局
专利名称:一种多媒体码流的码率调整方法
技术领域
本发明涉及数字视频技术,特别涉及一种多媒体码流的码率调整方法。
背景技术
运动图象专家组(Motion Picture Experts GroupMPEG-2)是数字电视采用的国际标准,该标准规定了模拟视频、音频信号的压缩方式,并定义了用于视频压缩数据、音频压缩数据、控制数据及私有数据复用的数据结构,包括节目流PS(Programme Stream)及传输流TS(Transport Stream)。其中传输流是一种固定包长的数据结构,主要用于压缩码流的传输。一般为188字节或是204字节,其中第1个字节是包同步字节为0x47H;接下来的第2、3字节的低13位是包标识PID(Packet Identifier),用以标识此数据包内携带的信息类别,比如视频数据、音频数据等,其基本的包结构如图1所示。
现有技术在MPEG-2发端送出固定码率的传输流,由于传输介质的不同或接收端的对码率的要求不同,因而固定码率的传输流适应性差。如果传输码流中节目码率较低,则浪费传输带宽,如果传输码流码率过高,超过接受端承受能力,则引起丢包、无法同步等错误。

发明内容
本发明的目的在于提供一种多媒体码流的码率调整方法,以解决现有技术中固定码率的传输流适应性差的问题。
为解决上述问题,本发明提供下述方案一种多媒体码流的码率调整方法,包括下述步骤检测传输码流中数据包的包标识;
根据所述包标识判断对应的数据包是否为空包,如果不是空包,则将该数据包写入存储器,否则禁止将该空包写入存储器;当输出码率时钟有效时,判断所述存储器中是否具有一个整包的数据包,如果是则读出一个数据包并输出,否则输出一个空包。
所述的存储器为缓冲存储器。
采用现场可编程门阵列或其他可编程逻辑芯片检测数据包的包标识。
向缓存写数据包时以包为单为写入,即从该数据包的第一个字节开始。
所述缓存采用先进先出队列。
所述缓存深度至少为两个数据包的字节数。
根据所述缓存的半满中断信号是否有效来判断缓存是否具有一个整包的数据包。
本发明采用以FPGA为核心的硬件结构处理传输码流,在数据的读写、包标识PID检测、中断响应等处理具有延迟固定和处理速度快的特点,提高了处理效率和可靠性,有效的解决了码率不匹配引起的各种问题,充分的利用传输带宽。


图1为MPEG-2传输流包结构示意图;图2为本发明码率调整原理框图;图3为本发明的流程图;图4为码率调整功能框图。
具体实施例方式
本发明通过调整传输流中的空包(即包标示PID为0x1ffH的数据包)数来调整输出的传输码流码率。调整的前提是输出码率必须大于输入码率中的有效码率,即在去掉输入码流中的空包后的有效码流必须小于设定的输出码率。
参阅图2所示,本发明采用先入先出队列(FIFO)实现传输流的缓存,即图中的第一缓存,并通过FIFO的状态来确定添加空包的时机,第一缓存的深度至少为2个数据包字节长度。PID检测、FIFO控制等可以采用现场可编程门阵列FPGA(Field Programable Gate Array)或是其他的可编程逻辑芯片完成,在本实施例中采用FPGA。
参阅图3和图4,本发明具体实现步骤如下步骤10输入MPEG-2传输码流。
步骤20由FPGA检测输入码流中数据包的包标示PID,如果包标示PID为0x1ffH,则确定数据包为空包,禁止FIFO的写信号以丢弃空包,否则进行步骤30。
禁止写信号是为了保证写入FIFO的数据中没有传输流空包。
由于包标示PID字段是在传输流数据包的第2、3字节,为了保证在检测PID字段完成后数据包能够完整的写入第一缓存,在FPGA内部实现最少3个字节的第二缓存。
步骤30将数据包写入第一缓存。
为了保证以包为单位从第一缓存(FIFO)读出数据包,无论是在初始状态还是复位后重新启动都必须要从传输流数据包的第一个字节即同步字节开始写入第一缓存。
步骤40输出码率时钟有效时,检查FIFO的状态,即检查FIFO中的数据包。
在本实施例中,通过判断FIFO的半满中断信号是否有效来检查FIFO的状态,也可采用其他方式。
步骤50判断半满中断信号是否有效,如果有效则表示FIFO内部已经有超过FIFO深度一半的数据(即至少有一个数据包),进行步骤60,否则表明FIFO中数据还没有到半满,则进行步骤70。
步骤60从FIFO中同步的读出一个数据包。
步骤70从预设在FPGA内部空包存储区域同步的输出一个空包。
步骤80输出码流。
输出码率时钟根据需不同情况和需求预先设定。
本发明方法在具体应用时,由于在输入去除空包而输出重新添加空包,这样会改变的输入码流的数据包间距,影响传输流的一个基本时钟特性(ProgramClock Reference,PCR),因此需要对PCR进行调整,保证PCR信息的正确性。
权利要求
1.一种多媒体码流的码率调整方法,其特征在于包括步骤检测传输码流中数据包的包标识;根据所述包标识判断对应的数据包是否为空包,如果不是空包,则将该数据包写入存储器,否则禁止将该空包写入存储器;当输出码率时钟有效时,判断所述存储器中是否具有一个整包的数据包,如果是则读出一个数据包并输出,否则输出一个空包。
2.如权利要求1所述的方法,其特征在于,所述存储器为缓冲存储器。
3.如权利要求1所述的方法,其特征在于,采用现场可编程门阵列或其他可编程逻辑芯片检测数据包的包标识。
4.如权利要求2所述的方法,其特征在于,向缓存写数据包时以包为单为写入,即从该数据包的第一个字节开始。
5.如权利要求2所述的方法,其特征在于,所述缓存采用先进先出队列。
6.如权利要求5所述的方法,其特征在于,所述缓存深度至少为两个数据包的字节数。
7.如权利要求6所述的方法,其特征在于,根据所述缓存的半满中断信号是否有效来判断缓存是否具有一个整包的数据包。
全文摘要
本发明公开了一种多媒体码流的码率调整方法,该方法为检测传输码流中数据包的包标识;根据所述包标识判断对应的数据包是否为空包,如果不是空包,则将该数据包写入存储器,否则禁止将该空包写入存储器;当输出码率时钟有效时,判断所述存储器中是否具有一个整包的数据包,如果是则读出一个数据包并输出,否则输出一个空包。
文档编号H04L12/56GK1661985SQ20041000715
公开日2005年8月31日 申请日期2004年2月25日 优先权日2004年2月25日
发明者王展 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1