CN110213650B - 一种软件快速搜索视频码流中同步字的方法及装置 - Google Patents

一种软件快速搜索视频码流中同步字的方法及装置 Download PDF

Info

Publication number
CN110213650B
CN110213650B CN201910413953.3A CN201910413953A CN110213650B CN 110213650 B CN110213650 B CN 110213650B CN 201910413953 A CN201910413953 A CN 201910413953A CN 110213650 B CN110213650 B CN 110213650B
Authority
CN
China
Prior art keywords
address
bytes
code stream
frame
video
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910413953.3A
Other languages
English (en)
Other versions
CN110213650A (zh
Inventor
剡辰
陈敏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Verisilicon Holdings Co ltd
VeriSilicon Microelectronics Shanghai Co Ltd
VeriSilicon Microelectronics Beijing Co Ltd
VeriSilicon Microelectronics Chengdu Co Ltd
Original Assignee
Verisilicon Holdings Co ltd
VeriSilicon Microelectronics Shanghai Co Ltd
VeriSilicon Microelectronics Beijing Co Ltd
VeriSilicon Microelectronics Chengdu Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Verisilicon Holdings Co ltd, VeriSilicon Microelectronics Shanghai Co Ltd, VeriSilicon Microelectronics Beijing Co Ltd, VeriSilicon Microelectronics Chengdu Co Ltd filed Critical Verisilicon Holdings Co ltd
Priority to CN201910413953.3A priority Critical patent/CN110213650B/zh
Publication of CN110213650A publication Critical patent/CN110213650A/zh
Application granted granted Critical
Publication of CN110213650B publication Critical patent/CN110213650B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/426Internal components of the client ; Characteristics thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • H04N21/4331Caching operations, e.g. of an advertisement for later insertion during playback
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44004Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video buffer management, e.g. video decoder buffer or video display buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/8166Monomedia components thereof involving executable data, e.g. software
    • H04N21/8193Monomedia components thereof involving executable data, e.g. software dedicated tools, e.g. video decoder software or IPMP tool

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明涉及一种软件快速搜索视频码流中同步字的方法及装置,所述方法包括如下步骤:步骤1,接收并缓存视频流;步骤2,当输入buffer中缓存的视频帧的数目大于等于两帧时,开始依次搜索每一帧的同步字,其中搜索步长大于1;步骤3,当成功搜索到一帧的同步字之后,则把该同步字的起始地址写入所述硬件解码器码流地址寄存器,然后启动硬件解码器,并进行解码;解码之后的YUV图像写入输出buffer,同时更新硬件解码器码流地址寄存器,软件读取硬件解码器码流地址寄存器,并以读取到的地址为起始地址,返回步骤2搜索下一帧的同步字。本发明,克服了传统逐字节搜索方法软件开销大的缺点,同时成本较低,不影响现有硬件解码器的工作方式。

Description

一种软件快速搜索视频码流中同步字的方法及装置
技术领域
本发明涉及视频解码技术领域,具体说是一种软件快速搜索视频码流中同步字的方法及装置。
背景技术
通常,原始视频信号由于信息量巨大,导致其无法直接在网络上进行传输。为了满足在网络上进行传输的需要,可用视频编码器(简称编码器)将原始视频信号压缩编码成码流,然后将码流(视频码流)在网络上进行传输,视频解码器(简称解码器)接收码流并进行解码,从而获得与原始视频质量相近甚至相同的视频信号。这样做可以节省大量网络带宽以及存储空间。
同步字广泛应用于视频编解码技术中。在编码过程中,编码器会在码流中的特定位置插入一串特殊的字符作为同步字,这些字符可用于各种目的。例如:
对码流中不同的编码结构进行定界,这样解码器就可以通过寻找同步字从而对不同的编码结构进行解码。
视频流在网络传输中发生错误或者丢包情况,解码器可以通过寻找下一个同步字继续解码。
为了满足视频流的随机介入需求,比如视频流的切换、快进等,解码器可以通过寻找同步字来寻找视频流的随机介入点。
在编码过程中,在保证一定视频质量的情况下,不同复杂度场景需要的码率是不一样的,这导致了码率波动。码率波动不利于传输,因此,为了保证视频流在网络中稳定传输,防止出现码率的巨大波动,编码器的一个常用做法是在一帧(压缩帧)的末尾添加一些填充字节,从而保证每一帧所使用的编码字节基本保持一致。但这也对解码器提出了考验,解码器解完一帧后,需要逐字节地搜索下一帧对应的同步字。如果某一帧末尾的填充字节较多,解码器寻找下一个同步字所花费的时间成本也会随之增加。例如:
现有的解码器采用的同步字搜索技术,大都是通过软件逐字节地进行搜索,对于填充字节较少的码流来说,这种方法所带来的软件开销基本可以忽略不计。
但是,对于填充字节较多的码流来说,这种方法由于频繁访问内存,软件开销很大,导致硬件解码器的解码速率变慢,不能满足现今主流的1080P 60fps或者4K 30fps的解码速度需求。
另一方面,虽然可以通过设计专用的硬件模块去搜索同步字,但是这种方法会增加硬件解码器的设计成本,同时会增加解码芯片面积甚至增加功耗,难以大范围推广并应用,是不值得推荐的。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种软件快速搜索视频码流中同步字的方法及装置,克服了传统逐字节搜索方法软件开销大的缺点,同时成本较低,不影响现有硬件解码器的工作方式。
为达到以上目的,本发明采取的技术方案是:
一种软件快速搜索视频码流中同步字的方法,其特征在于,包括如下步骤:
步骤1,接收并缓存视频流;
在硬件解码器开始正式解码之前,软件创建输入和输出buffer,
输入buffer用于存储视频比特流即视频流,
输出buffer用于存储硬件解码器解码完每一帧视频流之后的YUV图像,
步骤2,当输入buffer中缓存的视频帧的数目大于等于两帧时,开始依次搜索每一帧的同步字,其中搜索步长大于1;
步骤3,当成功搜索到一帧的同步字之后,则把该同步字的起始地址写入所述硬件解码器码流地址寄存器,然后启动硬件解码器,并进行解码;
硬件解码器对硬件解码器码流地址寄存器中所存储的地址对应的视频帧进行解码,将解码之后的YUV图像写入输出buffer,同时更新硬件解码器码流地址寄存器,硬件解码器结束当前帧解码,
软件读取硬件解码器码流地址寄存器,并以读取到的地址为起始地址,返回步骤2搜索下一帧的同步字。
在上述技术方案的基础上,所述输入buffer接收到的视频流是通过网络传输过来的实时流,或是已经存储在磁盘上的视频流文件。
在上述技术方案的基础上,所述输入buffer接收到的视频流的封装方式,每一帧依次包括:同步字,经编码的视频数据,填充字节。
在上述技术方案的基础上,步骤3中,完成当前帧的解码之后,接收硬件解码器码流地址寄存器返回的当前帧的码流结束地址,以该地址作为起始地址并以N字节为步长搜索下一帧的同步字,其中:
当系统为32位操作系统时,N为4;当系统为64位操作系统时,N为8。
在上述技术方案的基础上,由于实际硬件解码器码流地址寄存器返回的码流结束地址不一定满足N字节对齐的条件,所以还需要判断该地址是否满足N字节对齐条件,
如果满足,则直接以该地址作为起始地址,从起始地址以N字节为步长搜索下一帧的同步字,
如果不满足,则先对该地址进行N字节的对齐操作得到对齐地址,再在该地址到所述对齐地址之间进行逐字节同步字搜索。
在上述技术方案的基础上,若所述在该地址到所述对齐地址之间进行逐字节同步字搜索成功,则将搜索到的同步字地址返回给所述硬件解码器码流地址寄存器,若不成功,则以所述对齐地址为起始地址以N字节为步长搜索下一帧的同步字。
在上述技术方案的基础上,在所述以N字节为步长搜索下一帧的同步字时,如果搜索成功,则将搜索到的同步字地址返回给所述硬件解码器码流地址寄存器,作为下一帧硬件解码的起始地址;如果搜索不成功,则对剩余字节继续以N字节为步长搜索下一帧的同步字,直到输入buffer中剩余未经搜索的字节数小于N。
在上述技术方案的基础上,当输入buffer中剩余未经搜索的字节数小于N,则进一步判断输入buffer中剩余未经搜索的字节数是否大于0,
如果剩余未经搜索的字节数大于0,则:
对于不足N字节的输入buffer中剩余未经搜索的字节,进行逐字节搜索,直至所述剩余未经搜索的字节数为零,则认为该输入buffer再无有效帧数据,
如果剩余未经搜索的字节数不大于0,则直接结束。
一种软件快速搜索视频码流中同步字的装置,其特征在于,采用上述任意之一所述软件快速搜索视频码流中同步字的方法,包括:
缓存单元,用于接收并缓存视频流;
同步字搜索单元,用于当输入buffer中缓存的视频帧的数目大于等于两帧时,开始依次搜索每一帧的同步字,其中搜索步长大于1;
解码单元,用于每当搜索到一帧的同步字之后即将该帧的同步字的地址配置给硬件解码器解码,输出相应的经解码的图像。
在上述技术方案的基础上,硬件解码器读取硬件解码器码流地址寄存器中同步字地址,完成解码后,硬件解码结束,硬件解码器将当前帧码流结束地址写入硬件解码器码流地址寄存器;
解码单元,读取硬件解码器码流地址寄存器中当前帧码流结束地址,从该地址开始,搜索下一帧的同步字,搜索到后,将同步字地址写入硬件解码器码流地址寄存器,待下一次启动硬件解码器。
本发明所述的软件快速搜索视频码流中同步字的方法及装置,克服了传统逐字节搜索方法软件开销大的缺点,同时成本较低,不影响现有硬件解码器的工作方式。
本发明所述的软件快速搜索视频码流中同步字的方法及装置,实现了视频码流中同步字的快速搜索,所述的同步字搜索方法与硬件系统相互配合完成。
附图说明
本发明有如下附图:
图1是本发明硬件解码器与输入和输出buffer的交互方式的示意图;
图2是本发明输入buffer接收到的视频流封装方式的示意图;
图3是本发明软件与硬件解码器关于视频流地址的交互流程;
图4是本发明软件快速搜索视频码流(快速搜索码流)中同步字的方法的流程图;
图5是本发明输入buffer中各重要软件参数之间的关系示意图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
如图4所示,本发明所述的软件快速搜索视频码流中同步字的方法,包括如下步骤:
步骤1,接收并缓存视频流;
在硬件解码器开始正式解码之前,软件创建输入和输出buffer,即创建输入和输出缓冲器,所述输入和输出buffer的物理内存是连续的,
输入buffer用于存储视频比特流即视频流,所述视频流的编码格式可以为HEVC,H264,MPEG2,MPEG4,AVS等,
输出buffer用于存储硬件解码器解码完每一帧视频流之后的YUV图像,
硬件解码器读取输入buffer的内容,对读取到的内容解码,将解码之后的YUV图像存储到输出buffer中,硬件解码器与输入和输出buffer的交互方式如图1所示,
所述输入buffer接收到的视频流可以是通过网络传输过来的实时流,也可以是已经存储在磁盘上的视频流文件,
所述输入buffer接收到的视频流的封装方式如图2所示,每一帧(frame)依次包括:同步字,经编码的视频数据,填充字节,图2中共包括三帧:frame n-1帧,frame n帧,frame n+1帧,其中n值为整数,
由于编码所得的I、P、B帧码率大小差别较大,其中:
I frame为帧内编码帧(I帧),I帧只包含帧内预测,其码率最大,
P frame为前向预测编码帧(P帧),B frame为双向预测内插编码帧(B帧),P、B帧以帧间预测为主,其码率较小,
为了防止传输过程中码率产生较大波动,编码器通常会在P、B帧的有效编码字节的末尾添加填充字节以保证码率的均衡;
步骤2,当输入buffer中缓存的视频帧的数目大于等于两帧时,开始依次搜索每一帧的同步字,其中搜索步长大于1;
具体的搜索步长可以为经验值;
步骤3,当成功搜索到一帧的同步字之后,则把该同步字的起始地址写入所述硬件解码器码流地址寄存器,然后启动硬件解码器,并进行解码;
硬件解码器对硬件解码器码流地址寄存器中所存储的地址对应的视频帧进行解码,将解码之后的YUV图像写入输出buffer,同时更新硬件解码器码流地址寄存器,硬件解码器结束当前帧解码,
软件读取硬件解码器码流地址寄存器,并以读取到的地址为起始地址,返回步骤2搜索下一帧的同步字。
上述软件与硬件解码器关于视频流地址的交互流程如图3所示。
启动硬件解码器,硬件解码器读取硬件解码器码流地址寄存器中同步字地址,完成解码后,硬件解码结束,硬件解码器将当前帧码流结束地址写入硬件解码器码流地址寄存器;
软件读取硬件解码器码流地址寄存器中当前帧码流结束地址,从该地址开始,软件搜索下一帧的同步字,搜索到后,软件将同步字地址写入硬件解码器码流地址寄存器,待下一次启动硬件解码器。
在上述技术方案的基础上,步骤3中,完成当前帧的解码之后,接收硬件解码器码流地址寄存器返回的当前帧的码流结束地址,以该地址作为起始地址并以N字节为步长搜索下一帧的同步字,其中:
当系统为32位操作系统时,N为4;当系统为64位操作系统时,N为8。
在上述技术方案的基础上,在实际操作中,由于实际硬件解码器码流地址寄存器返回的码流结束地址不一定满足N字节对齐的条件,所以还需要判断该地址是否满足N字节对齐条件,
如果满足,则直接以该地址作为起始地址,从起始地址以N字节为步长搜索下一帧的同步字,
如果不满足,则先对该地址进行N字节的对齐操作得到对齐地址,再在该地址到所述对齐地址之间进行逐字节同步字搜索。
在上述技术方案的基础上,若所述在该地址到所述对齐地址之间进行逐字节同步字搜索成功,则将搜索到的同步字地址返回给所述硬件解码器码流地址寄存器,若不成功,则以所述对齐地址为起始地址以N字节为步长搜索下一帧的同步字。
在上述技术方案的基础上,在所述以N字节为步长搜索下一帧的同步字时,如果搜索成功,则将搜索到的同步字地址返回给所述硬件解码器码流地址寄存器,作为下一帧硬件解码的起始地址;如果搜索不成功,则对剩余字节继续以N字节为步长搜索下一帧的同步字,直到输入buffer中剩余未经搜索的字节数小于N。
在上述技术方案的基础上,当输入buffer中剩余未经搜索的字节数小于N,则进一步判断输入buffer中剩余未经搜索的字节数是否大于0,
如果剩余未经搜索的字节数大于0,则:
对于不足N字节的输入buffer中剩余未经搜索的字节,进行逐字节搜索,直至所述剩余未经搜索的字节数为零,则认为该输入buffer再无有效帧数据,
如果剩余未经搜索的字节数不大于0,则直接结束。
通过上述实施例一,本发明克服了传统逐字节搜索方法软件开销大的缺点。
实施例二
下面通过一个具体实施例说明本发明快速搜索同步字方法的具体过程。
首先为了更方便地说明本过程,需要对所用参数进行如下说明:
search_step,同步字搜索步长;
frame_head(n),第n帧的同步字起始地址;
frame_tail(n),第n帧的有效视频流字节结束地址;
frame_tail_align(n),frame_tail(n)按search_step字节向后对齐的地址。
bytes_left(n),以frame_tail(n)为起始地址输入buffer中的视频流字节数。
stream_tail,输入buffer中视频流的结束地址。
stream_tail_align,stream_tail按search_step字节向前对齐的地址。
bytes_left_frame_tail(n),从地址frame_tail(n)到frame_tail_align(n)之间的字节数。
bytes_left_stream_tail,从地址stream_tail_align到stream_tail之间的字节数。
zero_count,计数器用于统计字节0x00的数目,初始化为0。
bytes_num,计数器用于统计字节数目,初始化为0。
参见图5,为上述各参数在输入buffer中的关系。
软件通过下述步骤101-108的操作来搜索第n帧的同步字(n>=1)。
视频解码领域中每一帧的起始位置都是以同步字为开始,其中最为常见的同步字为0x000001。此外,在使用填充字节对经编码的视频帧尾部进行字节填充时,通常使用全0或全F字节,当然,也存在少数使用随机字符填充的情况。下面,步骤101-108描述的是在以frame_tail(n-1)为起始地址,剩余字节数为bytes_left(n-1)的情况下如何在输入buffer中快速寻找frame_head(n)。
步骤101,判断frame_tail(n-1)是否以search_step字节对齐。如果frame_tail(n-1)已经以search_step字节对齐,直接转至步骤103,否则先对frame_tail(n-1)进行search_step字节对齐再进行步骤102。
步骤101中:
对于32位操作系统search_step为4;当为64位操作系统时,search_step为8。这里假设当前系统为64位操作系统。
对frame_tail(n-1)和0x7进行按位与操作得到的值如果等于0,则认为frame_tail(n-1)已经以8字节对齐,这时frame_tail_align(n-1)和frame_tail(n-1)相同。
对frame_tail(n-1)和0x7进行按位与操作得到的值如果大于0,则认为frame_tail(n-1)没有以8字节对齐,这时frame_tail_align(n-1)等于((frame_tail(n-1)&0x07)+8)。
步骤102,以frame_tail(n-1)为起始地址,以frame_tail_align(n-1)为结束地址,逐字节搜索同步字0x000001。如果搜索成功,进入步骤107;否则,进入步骤103。
步骤102中:
所述以frame_tail(n-1)为起始地址,以frame_tail_align(n-1)为结束地址,逐字节搜索同步字0x000001包括,
步骤1021,令当前指针指向frame_tail(n-1)。
步骤1022,读取当前指针所指地址对应的单个字节的值,如果该值为0x00,则将计数器zero_count加1;如果该值为0x01并且计数器zero_count的值大于或者等于2,则认为同步字搜索成功,直接进入步骤107;如果该值为其他值,则清空计数器zero_count。
步骤1023,判断当前指针是否frame_tail_align(n-1)相等。如果相等,则直接进入步骤103;否则将当前指针向右移动一个字节,返回步骤1022。
步骤103,判断frame_tail_align(n-1)与stream_tail_align是否相等。如果指针相等,则直接进入步骤105,否则进入步骤104。
步骤104,以frame_tail_align(n-1)为起始地址,以stream_tail_align为结束地址,以8字节的步长搜索同步字0x000001。如果搜索成功,进入步骤107;否则,进入步骤105。
步骤104中:
所述以frame_tail_align(n-1)为起始地址,以stream_tail_align为结束地址,以8字节的步长搜索同步字0x000001包括
步骤1041,令当前指针指向frame_tail_align(n-1)。
步骤1042,一次性读取当前指针所指地址对应的8个字节的值,如果该值为0x0000000000000000,则将计数器zero_count加8;如果该值为0xFFFFFFFFFFFFFFFF,将计数器zero_count清零,对于以上两种情况对应的操作完成之后将直接进入步骤1044。否则进入步骤1043。
步骤1043,在该值中搜索同步字0x000001。如果搜索成功则进入步骤107,否则进入步骤1044。
下面对步骤1043进行详细描述。
步骤10431,首先需要判断系统为大端还是小端系统,这会影响到8个字节从高到低的排放顺序。常见的系统为小端系统,我们以小端系统为例进行说明,大端系统同理。
我们先获取包含8个字节的变量的最低位字节,如果该值为0x00,则将计数器zero_count加1;如果该值为0x01并且计数器zero_count的值大于或者等于2,则认为同步字搜索成功,直接进入步骤107;如果该值为其他值,则清空计数器zero_count,并进入步骤10432。
步骤10432,将包含8个字节的变量右移8位,并将计数器bytes_num加1。如果计数器bytes_num小于8,则返回步骤10431;否则清空计数器bytes_num并进入步骤1044。
步骤1044,将当前指针向右移动8个字节并判断当前指针与stream_tail_align是否相等,如果相等则进入步骤105,否则返回步骤1042。
步骤105,判断stream_tail_align是否等于stream_tail。如果相等则进入步骤108;否则进入步骤106。
步骤106,以stream_tail_align为起始地址,以stream_tail为结束地址,逐字节搜索同步字0x000001。如果搜索成功,进入步骤107;否则,进入步骤108。
步骤106中:
所述以stream_tail_align为起始地址,以stream_tail为结束地址,逐字节搜索同步字0x000001包括,
步骤1061,令当前指针指向stream_tail_align。
步骤1062,读取当前指针所指地址对应的单个字节的值,如果该值为0x00,则将计数器zero_count加1;如果该值为0x01并且计数器zero_count的值大于或者等于2,则认为同步字搜索成功,直接进入步骤107;如果该值为其他值,则清空计数器zero_count。
步骤1063,判断当前指针是否与stream_tail相等。如果相等,则直接进入步骤108;否则将当前指针向右移动一个字节,返回步骤1062。
步骤107,同步字搜索成功,返回当前地址。
步骤108,同步字搜索失败,返回空指针。
实施例三
基于相同的发明构思,本发明进一步提供软件快速搜索视频码流中同步字的装置,具体包括:
缓存单元,用于接收并缓存视频流;
同步字搜索单元,用于当输入buffer中缓存的视频帧的数目大于等于两帧时,开始依次搜索每一帧的同步字,其中搜索步长大于1;
解码单元,用于每当搜索到一帧的同步字之后即将该帧的同步字的地址配置给硬件解码器解码,输出相应的经解码的图像。
更进一步,硬件解码器读取硬件解码器码流地址寄存器中同步字地址,完成解码后,硬件解码结束,硬件解码器将当前帧码流结束地址写入硬件解码器码流地址寄存器;
解码单元,读取硬件解码器码流地址寄存器中当前帧码流结束地址,从该地址开始,搜索下一帧的同步字,搜索到后,将同步字地址写入硬件解码器码流地址寄存器,待下一次启动硬件解码器。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及说明书附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

Claims (6)

1.一种软件快速搜索视频码流中同步字的方法,其特征在于,包括如下步骤:
步骤1,接收并缓存视频流;
在硬件解码器开始正式解码之前,软件创建输入和输出buffer,
输入buffer用于存储视频比特流即视频流,
输出buffer用于存储硬件解码器解码完每一帧视频流之后的YUV图像,
所述输入buffer接收到的视频流的封装方式,每一帧依次包括:同步字,经编码的视频数据,填充字节;
步骤2,当输入buffer中缓存的视频帧的数目大于等于两帧时,开始依次搜索每一帧的同步字,其中搜索步长大于1;
步骤3,当成功搜索到一帧的同步字之后,则把该同步字的起始地址写入所述硬件解码器码流地址寄存器,然后启动硬件解码器,并进行解码;
硬件解码器对硬件解码器码流地址寄存器中所存储的地址对应的视频帧进行解码,将解码之后的YUV图像写入输出buffer,同时更新硬件解码器码流地址寄存器,硬件解码器结束当前帧解码,
软件读取硬件解码器码流地址寄存器,并以读取到的地址为起始地址,以N字节为步长返回步骤2搜索下一帧的同步字,其中:当系统为32位操作系统时,N为4;当系统为64位操作系统时,N为8。
2.如权利要求1所述的软件快速搜索视频码流中同步字的方法,其特征在于:所述输入buffer接收到的视频流是通过网络传输过来的实时流,或是已经存储在磁盘上的视频流文件。
3.如权利要求1所述的软件快速搜索视频码流中同步字的方法,其特征在于:由于实际硬件解码器码流地址寄存器返回的码流结束地址不一定满足N字节对齐的条件,所以还需要判断该地址是否满足N字节对齐条件,
如果满足,则直接以该地址作为起始地址,从起始地址以N字节为步长搜索下一帧的同步字,
如果不满足,则先对该地址进行N字节的对齐操作得到对齐地址,再在该地址到所述对齐地址之间进行逐字节同步字搜索。
4.如权利要求3所述的软件快速搜索视频码流中同步字的方法,其特征在于:若所述在该地址到所述对齐地址之间进行逐字节同步字搜索成功,则将搜索到的同步字地址返回给所述硬件解码器码流地址寄存器,若不成功,则以所述对齐地址为起始地址以N字节为步长搜索下一帧的同步字。
5.如权利要求1所述的软件快速搜索视频码流中同步字的方法,其特征在于:以N字节为步长搜索下一帧的同步字时,如果搜索成功,则将搜索到的同步字地址返回给所述硬件解码器码流地址寄存器,作为下一帧硬件解码的起始地址;如果搜索不成功,则对剩余字节继续以N字节为步长搜索下一帧的同步字,直到输入buffer中剩余未经搜索的字节数小于N。
6.如权利要求5所述的软件快速搜索视频码流中同步字的方法,其特征在于:当输入buffer中剩余未经搜索的字节数小于N,则进一步判断输入buffer中剩余未经搜索的字节数是否大于0,
如果剩余未经搜索的字节数大于0,则:
对于不足N字节的输入buffer中剩余未经搜索的字节,进行逐字节搜索,直至所述剩余未经搜索的字节数为零,则认为该输入buffer再无有效帧数据,
如果剩余未经搜索的字节数不大于0,则直接结束。
CN201910413953.3A 2019-05-17 2019-05-17 一种软件快速搜索视频码流中同步字的方法及装置 Active CN110213650B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910413953.3A CN110213650B (zh) 2019-05-17 2019-05-17 一种软件快速搜索视频码流中同步字的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910413953.3A CN110213650B (zh) 2019-05-17 2019-05-17 一种软件快速搜索视频码流中同步字的方法及装置

Publications (2)

Publication Number Publication Date
CN110213650A CN110213650A (zh) 2019-09-06
CN110213650B true CN110213650B (zh) 2022-02-15

Family

ID=67787699

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910413953.3A Active CN110213650B (zh) 2019-05-17 2019-05-17 一种软件快速搜索视频码流中同步字的方法及装置

Country Status (1)

Country Link
CN (1) CN110213650B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1589014A (zh) * 2004-07-30 2005-03-02 联合信源数字音视频技术(北京)有限公司 一种视频解码控制方法及装置
CN1980392A (zh) * 2005-11-29 2007-06-13 同济大学 视频码流判断图像边界及预读图像数据的解码方法和装置
WO2008060125A1 (en) * 2006-11-17 2008-05-22 Lg Electronics Inc. Method and apparatus for decoding/encoding a video signal
CN108093258A (zh) * 2018-01-11 2018-05-29 珠海全志科技股份有限公司 码流数据的解码方法、计算机装置及计算机可读存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1589014A (zh) * 2004-07-30 2005-03-02 联合信源数字音视频技术(北京)有限公司 一种视频解码控制方法及装置
CN1980392A (zh) * 2005-11-29 2007-06-13 同济大学 视频码流判断图像边界及预读图像数据的解码方法和装置
WO2008060125A1 (en) * 2006-11-17 2008-05-22 Lg Electronics Inc. Method and apparatus for decoding/encoding a video signal
CN108093258A (zh) * 2018-01-11 2018-05-29 珠海全志科技股份有限公司 码流数据的解码方法、计算机装置及计算机可读存储介质

Also Published As

Publication number Publication date
CN110213650A (zh) 2019-09-06

Similar Documents

Publication Publication Date Title
US10489426B2 (en) Category-prefixed data batching of coded media data in multiple categories
US5963260A (en) Macroblock-level partitioned HDTV video decoder and related method
US5491480A (en) Variable length decoder using serial and parallel processing
US20060171471A1 (en) Random access in AVS-M video bitstreams
US7974307B2 (en) Methods and apparatus for data decoding/encoding and for searching for/inserting stuffing bytes
US7689047B2 (en) Reduced buffer size for JPEG encoding
CN109218822B (zh) 一种视频处理系统
US5663726A (en) High speed variable-length decoder arrangement with reduced memory requirements for tag stream buffering
US20240098310A1 (en) Encoding method, real-time communication method, apparatus, device, and storage medium
CN110213650B (zh) 一种软件快速搜索视频码流中同步字的方法及装置
US7349428B2 (en) Data alignment of the packetized elementary streams in the coded data buffer for dual decode
CN100433560C (zh) 包含cpu处理器接口的可编程变长解码器
CN101217660B (zh) 一种音视频解码方法
US6621817B1 (en) Transport packet parser
US6867715B2 (en) System, method, and apparatus for variable length decoder
US7075462B2 (en) Speeding up variable length code decoding on general purpose processors
CN108093258A (zh) 码流数据的解码方法、计算机装置及计算机可读存储介质
Ishii et al. Parallel variable length decoding with inverse quantization for software MPEG-2 decoders
US7702021B2 (en) Decoding of digital video standard material during variable length decoding
US7284072B2 (en) DMA engine for fetching words in reverse order
US9516330B2 (en) Virtual field buffer based decoding
US9508389B2 (en) System, method, and apparatus for embedding personal video recording functions at picture level
KR100713623B1 (ko) 범용 프로세서와 비디오 프로세서의 결합구조에서의 nal처리 시스템 및 방법
US11683509B1 (en) Prediction unit skip detection in encoder
US8023564B2 (en) System and method for providing data starting from start codes aligned with byte boundaries in multiple byte words

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant