CN114443513A - 一种视频数据读写方法及相关装置 - Google Patents

一种视频数据读写方法及相关装置 Download PDF

Info

Publication number
CN114443513A
CN114443513A CN202210362953.7A CN202210362953A CN114443513A CN 114443513 A CN114443513 A CN 114443513A CN 202210362953 A CN202210362953 A CN 202210362953A CN 114443513 A CN114443513 A CN 114443513A
Authority
CN
China
Prior art keywords
components
fifo
component
line
read
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.)
Granted
Application number
CN202210362953.7A
Other languages
English (en)
Other versions
CN114443513B (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.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology 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 Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202210362953.7A priority Critical patent/CN114443513B/zh
Publication of CN114443513A publication Critical patent/CN114443513A/zh
Application granted granted Critical
Publication of CN114443513B publication Critical patent/CN114443513B/zh
Priority to PCT/CN2022/119382 priority patent/WO2023193405A1/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Color Television Systems (AREA)

Abstract

本申请公开了一种视频数据读写方法,包括:根据压缩格式,采用相应的写入策略,将Y分量、U分量与V分量写入FIFO阵列;FIFO阵列包括十六个FIFO队列;FIFO队列的宽度至少为32比特;根据压缩格式,采用相应的读出策略,从FIFO阵列读出每组数据块;其中,从FIFO阵列读出每组数据块时,每次从FIFO队列读出多个分量;每次从FIFO队列读出U分量与V分量时,缓存读出的U分量与V分量。该方法能够提高视频处理速度,减少FIFO容量,避免因FIFO容量过大而引起的时序约束、封装制造困难等难题。本申请还公开了一种视频数据读写装置、设备及计算机可读存储介质,均具有上述技术效果。

Description

一种视频数据读写方法及相关装置
技术领域
本申请涉及视频处理技术领域,特别涉及一种视频数据读写方法;还涉及一种视频数据读写装置、设备以及计算机可读存储介质。
背景技术
参考图1所示,一种传统的视频处理方式是:主机端的视频数据通过PCIe传递到基板管理控制芯片后,通过基板管理控制芯片中的色彩空间转换模块(图1中所示的RGB2YUV)将原始的RGB格式的视频数据转换为YUV格式的数据,然后将Y、U、V分量用片内的存储资源(图1中所示FIFO(First Input First Output,先入先出队列))进行缓存。按照block即数据块格式转换的需求(支持YUV444/YUV422/YUV420压缩格式),需要16个Y_FIFO(用于存储Y分量的FIFO)、16个U_FIFO(用于存储U分量的FIFO)与16个V_FIFO(用于存储V分量的FIFO)。在最大分辨率(1920*1200)下,FIFO的深度为16384,宽度为8bits,才能满足FIFO不会出现满的情况。
然而,上述视频处理方式需要占用较大的片内资源。对于芯片项目而言,片内的RAM(Random Access Memory,随机存取存储器)资源是很珍贵的,同时数量、容量很大的RAM对于芯片的时序约束,后端设计,封装制造等都是很大的难题。并且上述视频处理方式的处理速度较慢,一个时钟周期只能读一个分量,在一定程度上影响了视频处理的速度,进而影响芯片的整体性能。
有鉴于此,如何提高视频处理速度,减少FIFO容量,避免因FIFO容量过大而引起的时序约束、封装制造困难等难题已成为本领域技术人员亟待解决的技术问题。
发明内容
本申请的目的是提供一种视频数据读写方法,能够提高视频处理速度,减少FIFO容量,避免因FIFO容量过大而引起的时序约束、封装制造困难等难题。本申请的另一个目的是提供一种视频数据读写装置、设备以及计算机可读存储介质,均具有上述技术效果。
为解决上述技术问题,本申请提供了一种视频数据读写方法,包括:
根据压缩格式,采用相应的写入策略,将Y分量、U分量与V分量写入FIFO阵列;所述FIFO阵列包括十六个FIFO队列;所述FIFO队列的宽度至少为32比特;
根据所述压缩格式,采用相应的读出策略,从所述FIFO阵列读出每组数据块;其中,从所述FIFO阵列读出每组所述数据块时,每次从所述FIFO队列读出多个分量;
每次从所述FIFO队列读出所述U分量与所述V分量时,缓存读出的所述U分量与所述V分量。
可选的,所述根据压缩格式,采用相应的写入策略,将Y分量、U分量与V分量写入FIFO阵列包括:
当所述压缩格式为YUV420时,将视频像素点的第0行至第0+16*n行的数据依次写入第0个所述FIFO队列;其中,将第0行至第0+16*n行的各列的Y分量写入第0个所述FIFO队列,将第0行至第0+16*n行的偶数列的U分量与V分量写入第0个所述FIFO队列,n为正整数;
将第i行至第i+16*n行的Y分量依次写入第i个所述FIFO队列,i为小于等于15的奇数;
将第j行至第j+16*n行的数据依次写入第j个所述FIFO队列;其中,将第j行至第j+16*n行的各列的Y分量写入第j个所述FIFO队列,将第j行至第j+16*n行的偶数列的U分量与V分量依次写入第j个所述FIFO队列,j为小于等于14的偶数。
可选的,所述根据压缩格式,采用相应的写入策略,将Y分量、U分量与V分量写入FIFO阵列包括:
当所述压缩格式为YUV422时,将第m行至第m+16*n行的数据依次写入第m个所述FIFO队列;其中,将第m行至第m+16*n行的各列的Y分量写入第m个所述FIFO队列,将第m行至第m+16*n行的偶数列的U分量与V分量依次写入第m个所述FIFO队列,n为正整数,m的取值为0至15。
可选的,所述根据压缩格式,采用相应的写入策略,将Y分量、U分量与V分量写入FIFO阵列包括:
当所述压缩格式为YUV444时,将第p行至第p+8*q行的Y分量、U分量与V分量依次写入第p个所述FIFO队列,p的取值为0至7,q为正整数。
可选的,所述根据所述压缩格式,采用相应的读出策略,从所述FIFO阵列读出每组数据块包括:
当所述压缩格式为YUV420时,从第0个所述FIFO队列中读出16个所述Y分量与8个所述U分量以及8个所述V分量;
从第i个所述FIFO队列中读出16个所述Y分量,i为小于等于15的奇数;
从第j个所述FIFO队列中读出16个所述Y分量与8个所述U分量以及8个所述V分量,j为小于等于14的偶数。
可选的,所述根据所述压缩格式,采用相应的读出策略,从所述FIFO阵列读出每组数据块包括:
当所述压缩格式为YUV422时,从第m个所述FIFO队列中读出16个所述Y分量与8个所述U分量以及8个所述V分量,m的取值为0至15。
可选的,所述根据所述压缩格式,从所述FIFO队列中读出每组数据块包括:
当所述压缩格式为YUV444时,从第p个所述FIFO队列中读出8个所述Y分量与8个所述U分量以及8个所述V分量,p的取值为0至7。
为解决上述技术问题,本申请还提供了一种视频数据读写装置,包括:
写入模块,用于根据压缩格式,采用相应的写入策略,将Y分量、U分量与V分量写入FIFO阵列;所述FIFO阵列包括十六个FIFO队列;所述FIFO队列的宽度至少为32比特;
读出模块,用于根据所述压缩格式,采用相应的读出策略,从所述FIFO阵列读出每组数据块;其中,从所述FIFO阵列读出每组所述数据块时,每次从所述FIFO队列读出多个分量;
缓存模块,用于每次从所述FIFO队列读出所述U分量与所述V分量时,缓存读出的所述U分量与所述V分量。
为解决上述技术问题,本申请还提供了一种视频数据读写设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上任一项所述的视频数据读写方法的步骤。
为解决上述技术问题,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项所述的视频数据读写方法的步骤。
本申请所提供的视频数据读写方法,包括:根据压缩格式,采用相应的写入策略,将Y分量、U分量与V分量写入FIFO阵列;所述FIFO阵列包括十六个FIFO队列;所述FIFO队列的宽度至少为32比特;根据所述压缩格式,采用相应的读出策略,从所述FIFO阵列读出每组数据块;其中,从所述FIFO阵列读出每组所述数据块时,每次从所述FIFO队列读出多个分量;每次从所述FIFO队列读出所述U分量与所述V分量时,缓存读出的所述U分量与所述V分量。
可见,相较于采用16个Y_FIFO、16个U_FIFO以及16个V_FIFO,且FIFO的宽度为8比特的传统技术方案,本申请所提供的视频数据读写方法,利用16个FIFO存储数据,且FIFO的宽度至少为32比特。根据压缩格式的不同,本申请采取不同的写入与读出策略进行视频数据读写,能够在保证写入速度与传统方案一致的基础上,极大的提高读出速度,提升基板管理控制芯片的性能。读出速度加快,由此可以极大的减少数据在FIFO中的缓存时间,可以减少FIFO的容量,降低成本,并且降低了因FIFO容量过大而引起的时序约束、封装困难等导致项目失败的风险。
本申请所提供的视频数据读写装置、设备以及计算机可读存储介质均具有上述技术效果。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一种传统的视频处理方式的示意图;
图2为本申请实施例所提供的一种视频数据读写方法的流程示意图;
图3为本申请实施例所提供的一种FIFO阵列的示意图;
图4为本申请实施例所提供的一种视频数据读写装置的示意图;
图5为本申请实施例所提供的一种视频数据读写设备的示意图。
具体实施方式
本申请的核心是提供一种视频数据读写方法,能够提高视频处理速度,减少FIFO容量,避免因FIFO容量过大而引起的时序约束、封装制造困难等难题。本申请的另一个核心是提供一种视频数据读写装置、设备以及计算机可读存储介质,均具有上述技术效果。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参考图2,图2为本申请实施例所提供的一种视频数据读写方法的流程示意图,参考图2所示,该方法主要包括:
S101:根据压缩格式,采用相应的写入策略,将Y分量、U分量与V分量写入FIFO阵列;所述FIFO阵列包括十六个FIFO队列;所述FIFO队列的宽度至少为32比特;
参考图3所示,本申请实施例中,FIFO阵列由16个FIFO队列组成。FIFO队列可同时写入Y分量、U分量以及V分量。FIFO队列的宽度至少为32比特。Y分量、U分量以及V分量均为8比特,FIFO队列的宽度至少为32比特,意味着从FIFO队列中读分量时,每次可以多个分量。
不同的压缩格式对应不同的写入策略,在基板管理控制芯片将原始的RGB格式的视频数据转换为YUV格式的数据后,基板管理控制芯片根据压缩格式,采用相应的写入策略将视频像素点各行的数据写入FIFO阵列。
在一些实施例中,当压缩格式为YUV420时,将视频像素点各行的数据写入FIFO阵列的方式为:
当所述压缩格式为YUV420时,将视频像素点的第0行至第0+16*n行的数据依次写入第0个所述FIFO队列;其中,将第0行至第0+16*n行的各列的Y分量写入第0个所述FIFO队列,将第0行至第0+16*n行的偶数列的U分量与V分量写入第0个所述FIFO队列,n为正整数;
将第i行至第i+16*n行的Y分量依次写入第i个所述FIFO队列,i为小于等于15的奇数;
将第j行至第j+16*n行的数据依次写入第j个所述FIFO队列;其中,将第j行至第j+16*n行的各列的Y分量写入第j个所述FIFO队列,将第j行至第j+16*n行的偶数列的U分量与V分量依次写入第j个所述FIFO队列,j为小于等于14的偶数。
具体而言,压缩格式为YUV420时,将视频像素点的第0行、第16行、第32行、第48行……第0+16*n行中的数据依次写入YUV_FIFO_0即第0个FIFO队列。其中,将第0行、第16行、第32行、第48行……第0+16*n行中全部列的Y分量写入YUV_FIFO_0。将第0行、第16行、第32行、第48行……第0+16*n行中的偶数列的U分量与V分量写入YUV_FIFO_0。YUV_FIFO_0的存储格式为{Y,U,V,Y,Y,U,V,Y……}。
将视频像素点的第1行、第17行、第33行、第49行……第1+16*n行的数据依次写进YUV_FIFO_1即第1个FIFO队列。其中,将第1行、第17行、第33行、第49行……第1+16*n行的Y分量写入第1个FIFO队列,舍弃第1行、第17行、第33行、第49行……第1+16*n行的U分量与V分量。第1个FIFO队列的存储格式为{Y,Y,Y,Y……}。
将视频像素点的第2行、第18行、第34行、第49行……第2+16*n行中的数据依次写入YUV_FIFO_2即第2个FIFO队列。其中,将第2行、第18行、第34行、第49行……第2+16*n行中全部列的Y分量写入YUV_FIFO_2。将第2行、第16行、第34行、第49行……第2+16*n行中的偶数列的U分量与V分量写入YUV_FIFO_2。YUV_FIFO_0的存储格式为{Y,U,V,Y,Y,U,V,Y……}。
以此类推,将视频像素点的第14行、第30行、第46行、第62行……第14+16*n行中的数据依次写入YUV_FIFO_14即第14个FIFO队列。其中,将第14行、第30行、第46行、第62行……第14+16*n行中全部列的Y分量写入YUV_FIFO_14。将第2行、第16行、第34行、第49行……第2+16*n行中的偶数列的U分量与V分量写入YUV_FIFO_14。YUV_FIFO_14的存储格式为{Y,U,V,Y,Y,U,V,Y……}。
将视频像素点的第15行、第31行、第47行、第63行……第15+16*n行的数据依次写进YUV_FIFO_15即第15个FIFO队列。其中,将第15行、第31行、第47行、第63行……第15+16*n行的Y分量写入第15个FIFO队列,舍弃第15行、第31行、第47行、第63行……第15+16*n行的U分量与V分量。第15个FIFO队列的存储格式为{Y,Y,Y,Y……}。
在一些实施例中,当压缩格式为YUV422时,将视频像素点各行的数据写入FIFO阵列的方式为:
当所述压缩格式为YUV422时,将第m行至第m+16*n行的数据依次写入第m个所述FIFO队列;其中,将第m行至第m+16*n行的各列的Y分量写入第m个所述FIFO队列,将第m行至第m+16*n行的偶数列的U分量与V分量依次写入第m个所述FIFO队列,n为正整数,m的取值为0至15。
具体而言,将视频像素点的第0行、第16行、第32行、第48行……第0+16*n行的数据依次写入YUV_FIFO_0即第0个FIFO队列。其中,将第0行、第16行、第32行、第48行……第0+16*n行中全部列的Y分量写入YUV_FIFO_0。将第0行、第16行、第32行、第48行……第0+16*n行中的偶数列的U分量与V分量写入YUV_FIFO_0。YUV_FIFO_0的存储格式为{Y,U,V,Y,Y,U,V,Y……}。
将视频像素点的第1行、第17行、第33行、第49行……第1+16*n行的数据依次写入YUV_FIFO_1即第1个FIFO队列。其中,将第1行、第17行、第33行、第49行……第1+16*n行中全部列的Y分量写入YUV_FIFO_1。将第1行、第17行、第33行、第49行……第1+16*n行中的偶数列的U分量与V分量写入YUV_FIFO_1。YUV_FIFO_1的存储格式为{Y,U,V,Y,Y,U,V,Y……}。
以此类推,将视频像素点的第15行、第31行、第47行、第63行……第14+16*n行的数据依次写入YUV_FIFO_15即第15个FIFO队列。其中,将第15行、第31行、第47行、第63行……第15+16*n行中全部列的Y分量写入YUV_FIFO_15。将第15行、第31行、第47行、第63行……第15+16*n行中的偶数列的U分量与V分量写入YUV_FIFO_15。YUV_FIFO_15的存储格式为{Y,U,V,Y,Y,U,V,Y……}。
上文中,n的取值与视频的分辨率相关。若视频的分辨率为1024*768,那么共1024列,768行,n=768/16=48。
在一些实施例中,当压缩格式为YUV444时,将视频像素点各行的数据写入FIFO阵列的方式为:
当所述压缩格式为YUV444时,将第p行至第p+8*q行中的Y分量、U分量与V分量依次写入第p个所述FIFO队列,p的取值为0至7,q为正整数。
具体而言,将第0行、第8行、第16行、第24行……第0+8*q行中全部列的Y分量、U分量与V分量依次写入YUV_FIFO_0即第0个FIFO队列。YUV_FIFO_0的存储格式为{Y,U,V,Y,U,V…}。
将第1行、第9行、第17行、第25行……第1+8*q行中全部列的Y分量、U分量与V分量依次写入YUV_FIFO_1即第1个FIFO队列。YUV_FIFO_1的存储格式为{Y,U,V,Y,U,V…}。
以此类推,将第7行、第15行、第23行、第31行……第7+8*q行中全部列的Y分量、U分量与V分量依次写入YUV_FIFO_7即第7个FIFO队列。YUV_FIFO_7的存储格式为{Y,U,V,Y,U,V…}。
同样,q的取值与视频的分辨率相关。若视频的分辨率为1024*768,那么共1024列,768行,q=768/16=48。
S102:根据所述压缩格式,采用相应的读出策略,从所述FIFO阵列读出每组数据块;其中,从所述FIFO阵列读出每组所述数据块时,每次从所述FIFO队列读出多个分量;
S103:每次从所述FIFO队列读出所述U分量与所述V分量时,缓存读出的所述U分量与所述V分量。
不同的压缩格式对应不同的读出策略,在基板管理控制芯片根据压缩格式,采用相应的写入策略将视频像素点各行的数据写入FIFO阵列后,当需从FIFO队列中读数据块时,根据压缩格式,采用相应的读出策略从FIFO队列中读出每组数据块。读FIFO队列时,当读出U分量与V分量时,首先将读出的U分量与V分量暂时缓存起来,待将读出的Y分量发送给如图1中所示的Video CMP后,再将缓存起来的U分量与V分量发送给Video CMP,以便进行后续处理。
在一些实施例中,当压缩格式为YUV420时,从所述FIFO队列中读出每组数据块的方式为:
当所述压缩格式为YUV420时,从第0个所述FIFO队列中读出16个所述Y分量与8个所述U分量以及8个所述V分量;
从第i个所述FIFO队列中读出16个所述Y分量,i为小于等于15的奇数;
从第j个所述FIFO队列中读出16个所述Y分量与8个所述U分量以及8个所述V分量,j为小于等于14的偶数。
压缩模式为YUV420时,一组数据块包括一个16*16的Y分量数据块,一个8*8的U分量数据块以及一个8*8的V分量数据块。因此读出一个数据块需读出16*16个Y分量,8*8个U分量以及8*8个V分量。
以第一组数据块为例,从第0个所述FIFO队列中读出16个所述Y分量,即从第0个FIFO队列中读出第0行的前16个Y分量。同时从第0个FIFO队列中读出8个U分量以及8个V分量。读出的U分量与V分量暂时缓存起来。
从第1个FIFO队列中读出16个Y分量,即从第1个FIFO队列中读出第1行的前16个Y分量。
从第2个所述FIFO队列中读出16个所述Y分量,即从第2个FIFO队列中读出第2行的前16个Y分量。同时从第2个FIFO队列中读出8个U分量以及8个V分量。读出的U分量与V分量暂时缓存起来。
从第3个FIFO队列中读出16个Y分量,即从第3个FIFO队列中读出第3行的前16个Y分量。
以此类推,从第15个FIFO队列中读出16个Y分量,即从第15个FIFO队列中读出第15行的前16个Y分量。
缓存U分量与V分量只需64个8比特的片上空间即可。
依次循环读FIFO阵列,即可读出全部的数据块。读出每个数据块所需读取的次数与FIFO队列的宽度相关。
当FIFO队列的宽度为32比特即一次可以读出4个分量时,读出一组数据块需要读取的次数为96次,即需要96个时钟周期。
以第一组数据块为例,读YUV_FIFO_0八次,从第0个所述FIFO队列中读出16个所述Y分量,即从第0个FIFO队列中读出第0行的前16个Y分量。同时从第0个FIFO队列中读出8个U分量以及8个V分量。读出的U分量与V分量暂时缓存起来。
读YUV_FIFO_1四次,从第1个FIFO队列中读出16个Y分量,即从第1个FIFO队列中读出第1行的前16个Y分量。
读YUV_FIFO_2八次,从第2个所述FIFO队列中读出16个所述Y分量,即从第2个FIFO队列中读出第2行的前16个Y分量。同时从第2个FIFO队列中读出8个U分量以及8个V分量。读出的U分量与V分量暂时缓存起来。
读YUV_FIFO_3四次,从第3个FIFO队列中读出16个Y分量,即从第3个FIFO队列中读出第3行的前16个Y分量。
以此类推,读YUV_FIFO_15八次,从第15个FIFO队列中读出16个Y分量,即从第15个FIFO队列中读出第15行的前16个Y分量。
如此,读出第一组数据块需要8*8+4*8=96个时钟周期。传统技术方案读出一组数据块需要16*16+8*8+8*8=384个时钟周期。可见,当FIFO队列的宽度为32比特且压缩格式为YUV420时,本申请实施例读出一组数据块的速度是传统技术方案的4倍。
在一些实施例中,当压缩格式为YUV422时,从所述FIFO队列中读出每组数据块的方式可以为:
当所述压缩格式为YUV422时,从第m个所述FIFO队列中读出16个所述Y分量与8个所述U分量以及8个所述V分量,m的取值为0至15。
压缩模式为YUV422时,一组数据块包括一个16*16的Y分量数据块,一个16*8的U分量数据块以及一个16*8的V分量数据块。因此读出一个数据块需读出16*16个Y分量,16*8个U分量以及16*8个V分量。
以第一组数据块为例,从第0个所述FIFO队列中读出16个所述Y分量,即从第0个FIFO队列中读出第0行的前16个Y分量。同时从第0个FIFO队列中读出8个U分量以及8个V分量。读出的U分量与V分量暂时缓存起来。
从第1个所述FIFO队列中读出16个所述Y分量,即从第1个FIFO队列中读出第1行的前16个Y分量。同时从第1个FIFO队列中读出8个U分量以及8个V分量。读出的U分量与V分量暂时缓存起来。
以此类推,从第15个所述FIFO队列中读出16个所述Y分量,即从第15个FIFO队列中读出第15行的前16个Y分量。同时从第15个FIFO队列中读出8个U分量以及8个V分量。读出的U分量与V分量暂时缓存起来。
依次循环读FIFO阵列,即可读出全部的数据块。读出每个数据块所需读取的次数FIFO队列的宽度相关。
当FIFO队列的宽度为32比特时,读出一组数据块需要读取的次数为128次,即需要128个时钟周期。
以第一组数据块为例,读YUV_FIFO_0八次,从第0个所述FIFO队列中读出16个所述Y分量,即从第0个FIFO队列中读出第0行的前16个Y分量。同时从第0个FIFO队列中读出8个U分量以及8个V分量。读出的U分量与V分量暂时缓存起来。
读YUV_FIFO_1八次,从第1个所述FIFO队列中读出16个所述Y分量,即从第1个FIFO队列中读出第1行的前16个Y分量。同时从第1个FIFO队列中读出8个U分量以及8个V分量。读出的U分量与V分量暂时缓存起来。
读YUV_FIFO_2八次,从第2个所述FIFO队列中读出16个所述Y分量,即从第2个FIFO队列中读出第2行的前16个Y分量。同时从第2个FIFO队列中读出8个U分量以及8个V分量。读出的U分量与V分量暂时缓存起来。
以此类推,读YUV_FIFO_15八次,从第15个所述FIFO队列中读出16个所述Y分量,即从第15个FIFO队列中读出第15行的前16个Y分量。同时从第15个FIFO队列中读出8个U分量以及8个V分量。读出的U分量与V分量暂时缓存起来。
如此,读出一组数据块需要8*16=128个时钟周期。传统技术方案读出一组数据块需要16*16+16*8+16*8=512个时钟周期。可见,当FIFO队列的宽度为32比特且压缩格式为YUV422时,本申请实施例读出一组数据块的速度是传统技术方案的4倍。
在一些实施例中,当压缩格式为YUV444时,从所述FIFO队列中读出每组数据块的方式可以为:
当所述压缩格式为YUV444时,从第p个所述FIFO队列中读出8个所述Y分量与8个所述U分量以及8个所述V分量,p的取值为0至7。
压缩模式为YUV422时,一组数据块包括一个8*8的Y分量数据块,一个8*8的U分量数据块以及一个8*8的V分量数据块。因此读出一个数据块需读出8*8个Y分量,8*8个U分量以及8*8个V分量。
以第一组数据块为例,从第0个所述FIFO队列中读出8个所述Y分量,即从第0个FIFO队列中读出第0行的前8个Y分量。同时从第0个FIFO队列中读出8个U分量以及8个V分量。读出的U分量与V分量暂时缓存起来。
从第1个所述FIFO队列中读出8个所述Y分量,即从第1个FIFO队列中读出第1行的前8个Y分量。同时从第1个FIFO队列中读出8个U分量以及8个V分量。读出的U分量与V分量暂时缓存起来。
以此类推,从第7个所述FIFO队列中读出8个所述Y分量,即从第7个FIFO队列中读出第7行的前8个Y分量。同时从第7个FIFO队列中读出8个U分量以及8个V分量。读出的U分量与V分量暂时缓存起来。
依次循环读FIFO阵列,即可读出全部的数据块。读出每个数据块所需读取的次数与FIFO队列的宽度相关。
当FIFO队列的宽度为32比特时,可以读YUV_FIFO_0八次,从第0个所述FIFO队列中读出8个所述Y分量,即从第0个FIFO队列中读出第0行的前8个Y分量。同时从第0个FIFO队列中读出8个U分量以及8个V分量。
读YUV_FIFO_1八次,从第1个所述FIFO队列中读出8个所述Y分量,即从第1个FIFO队列中读出第1行的前8个Y分量。同时从第1个FIFO队列中读出8个U分量以及8个V分量。
以此类推,读YUV_FIFO_7八次,从第7个所述FIFO队列中读出8个所述Y分量,即从第7个FIFO队列中读出第7行的前8个Y分量。同时从第7个FIFO队列中读出8个U分量以及8个V分量。
如此,读出一组数据块需要8*8=64个时钟周期。传统技术方案读出一组数据块需要192个时钟周期。可见,当FIFO队列的宽度为32比特且压缩格式为YUV444时,本申请实施例读出一组数据块的速度是传统技术方案的3倍。
可以明白的是,当FIFO队列的宽度为32比特时,上述实施例分别读YUV_FIFO_0~YUV_FIFO_7八次而读出第一组数据块,表征压缩格式为YUV444的时候,本实施例只使用了低24比特进行存储,读取时虽然一次可以读32比特,但由于只有低24比特存储了分量,高8比特为空,因此读取一次可以读出3个分量。
综上所述,本申请所提供的视频数据读写方法,利用16个FIFO存储数据,且FIFO的宽度至少为32比特。根据压缩格式的不同,本申请采取不同的写入与读出策略进行视频数据读写,能够在保证写入速度与传统方案一致的基础上,极大的提高读出速度,提升基板管理控制芯片的性能。读出速度加快,由此可以极大的减少数据在FIFO中的缓存时间,可以减少FIFO的容量(FIFO的宽度为32比特时,在最高分辨率1920*1200下,需要的FIFO深度是4096,FIFO的总容量可由传统方案下的768KB减少为16*4096*32/8=256KB,即减少为原来的1/3),降低了成本,并且降低了因FIFO容量过大而引起的时序约束、封装困难等导致项目失败的风险。
本申请还提供了一种视频数据读写装置,下文描述的该装置可以与上文描述的方法相互对应参照。请参考图4,图4为本申请实施例所提供的一种视频数据读写装置的示意图,结合图4所示,该装置包括:
写入模块10,用于根据压缩格式,采用相应的写入策略,将Y分量、U分量与V分量写入FIFO阵列;所述FIFO阵列包括十六个FIFO队列;所述FIFO队列的宽度至少为32比特;
读出模块20,用于根据所述压缩格式,采用相应的读出策略,从所述FIFO阵列读出每组数据块;其中,从所述FIFO阵列读出每组所述数据块时,每次从所述FIFO队列读出多个分量;
缓存模块30,用于每次从所述FIFO队列读出所述U分量与所述V分量时,缓存读出的所述U分量与所述V分量。
在上述实施例的基础上,作为一种具体的实施方式,写入模块10具体用于:
当所述压缩格式为YUV420时,将视频像素点的第0行至第0+16*n行的数据依次写入第0个所述FIFO队列;其中,将第0行至第0+16*n行的各列的Y分量写入第0个所述FIFO队列,将第0行至第0+16*n行的偶数列的U分量与V分量写入第0个所述FIFO队列,n为正整数;
将第i行至第i+16*n行的Y分量依次写入第i个所述FIFO队列,i为小于等于15的奇数;
将第j行至第j+16*n行的数据依次写入第j个所述FIFO队列;其中,将第j行至第j+16*n行的各列的Y分量写入第j个所述FIFO队列,将第j行至第j+16*n行的偶数列的U分量与V分量依次写入第j个所述FIFO队列,j为小于等于14的偶数。
在上述实施例的基础上,作为一种具体的实施方式,写入模块10具体用于:
当所述压缩格式为YUV422时,将第m行至第m+16*n行的数据依次写入第m个所述FIFO队列;其中,将第m行至第m+16*n行的各列的Y分量写入第m个所述FIFO队列,将第m行至第m+16*n行的偶数列的U分量与V分量依次写入第m个所述FIFO队列,n为正整数,m的取值为0至15。
在上述实施例的基础上,作为一种具体的实施方式,写入模块10具体用于:
当所述压缩格式为YUV444时,将第p行至第p+8*q行的Y分量、U分量与V分量依次写入第p个所述FIFO队列,p的取值为0至7,q为正整数。
在上述实施例的基础上,作为一种具体的实施方式,读出模块20具体用于::
当所述压缩格式为YUV420时,从第0个所述FIFO队列中读出16个所述Y分量与8个所述U分量以及8个所述V分量;
从第i个所述FIFO队列中读出16个所述Y分量,i为小于等于15的奇数;
从第j个所述FIFO队列中读出16个所述Y分量与8个所述U分量以及8个所述V分量,j为小于等于14的偶数。
在上述实施例的基础上,作为一种具体的实施方式,读出模块20具体用于:
当所述压缩格式为YUV422时,从第m个所述FIFO队列中读出16个所述Y分量与8个所述U分量以及8个所述V分量,m的取值为0至15。
在上述实施例的基础上,作为一种具体的实施方式,读出模块20具体用于:
当所述压缩格式为YUV444时,从第p个所述FIFO队列中读出8个所述Y分量与8个所述U分量以及8个所述V分量,p的取值为0至7。
本申请所提供的视频数据读写装置,利用16个FIFO存储数据,且FIFO的宽度至少为32比特。根据压缩格式的不同,本申请采取不同的写入与读出策略进行视频数据读写,能够在保证写入速度与传统方案一致的基础上,极大的提高读出速度,提升基板管理控制芯片的性能。读出速度加快,由此可以极大的减少数据在FIFO中的缓存时间,可以减少FIFO的容量,降低成本,并且降低了因FIFO容量过大而引起的时序约束、封装困难等导致项目失败的风险。
本申请还提供了一种视频数据读写设备,参考图5所示,该设备包括存储器1和处理器2。
存储器1,用于存储计算机程序;
处理器2,用于执行计算机程序实现如下的步骤:
根据压缩格式,采用相应的写入策略,将Y分量、U分量与V分量写入FIFO阵列;所述FIFO阵列包括十六个FIFO队列;所述FIFO队列的宽度至少为32比特;根据所述压缩格式,采用相应的读出策略,从所述FIFO阵列读出每组数据块;其中,从所述FIFO阵列读出每组所述数据块时,每次从所述FIFO队列读出多个分量;每次从所述FIFO队列读出所述U分量与所述V分量时,缓存读出的所述U分量与所述V分量。
对于本申请所提供的设备的介绍请参照上述方法实施例,本申请在此不做赘述。
本申请还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现如下的步骤:
根据压缩格式,采用相应的写入策略,将Y分量、U分量与V分量写入FIFO阵列;所述FIFO阵列包括十六个FIFO队列;所述FIFO队列的宽度至少为32比特;根据所述压缩格式,采用相应的读出策略,从所述FIFO阵列读出每组数据块;其中,从所述FIFO阵列读出每组所述数据块时,每次从所述FIFO队列读出多个分量;每次从所述FIFO队列读出所述U分量与所述V分量时,缓存读出的所述U分量与所述V分量。
该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory ,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
对于本申请所提供的计算机可读存储介质的介绍请参照上述方法实施例,本申请在此不做赘述。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、设备以及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的视频数据读写方法、装置、设备以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围。

Claims (10)

1.一种视频数据读写方法,其特征在于,包括:
根据压缩格式,采用相应的写入策略,将Y分量、U分量与V分量写入FIFO阵列;所述FIFO阵列包括十六个FIFO队列;所述FIFO队列的宽度至少为32比特;
根据所述压缩格式,采用相应的读出策略,从所述FIFO阵列读出每组数据块;其中,从所述FIFO阵列读出每组所述数据块时,每次从所述FIFO队列读出多个分量;
每次从所述FIFO队列读出所述U分量与所述V分量时,缓存读出的所述U分量与所述V分量。
2.根据权利要求1所述的视频数据读写方法,其特征在于,所述根据压缩格式,采用相应的写入策略,将Y分量、U分量与V分量写入FIFO阵列包括:
当所述压缩格式为YUV420时,将视频像素点的第0行至第0+16*n行的数据依次写入第0个所述FIFO队列;其中,将第0行至第0+16*n行的各列的Y分量写入第0个所述FIFO队列,将第0行至第0+16*n行的偶数列的U分量与V分量写入第0个所述FIFO队列,n为正整数;
将第i行至第i+16*n行的Y分量依次写入第i个所述FIFO队列,i为小于等于15的奇数;
将第j行至第j+16*n行的数据依次写入第j个所述FIFO队列;其中,将第j行至第j+16*n行的各列的Y分量写入第j个所述FIFO队列,将第j行至第j+16*n行的偶数列的U分量与V分量依次写入第j个所述FIFO队列,j为小于等于14的偶数。
3.根据权利要求1所述的视频数据读写方法,其特征在于,所述根据压缩格式,采用相应的写入策略,将Y分量、U分量与V分量写入FIFO阵列包括:
当所述压缩格式为YUV422时,将第m行至第m+16*n行的数据依次写入第m个所述FIFO队列;其中,将第m行至第m+16*n行的各列的Y分量写入第m个所述FIFO队列,将第m行至第m+16*n行的偶数列的U分量与V分量依次写入第m个所述FIFO队列,n为正整数,m的取值为0至15。
4.根据权利要求1所述的视频数据读写方法,其特征在于,所述根据压缩格式,采用相应的写入策略,将Y分量、U分量与V分量写入FIFO阵列包括:
当所述压缩格式为YUV444时,将第p行至第p+8*q行的Y分量、U分量与V分量依次写入第p个所述FIFO队列,p的取值为0至7,q为正整数。
5.根据权利要求1所述的视频数据读写方法,其特征在于,所述根据所述压缩格式,采用相应的读出策略,从所述FIFO阵列读出每组数据块包括:
当所述压缩格式为YUV420时,从第0个所述FIFO队列中读出16个所述Y分量与8个所述U分量以及8个所述V分量;
从第i个所述FIFO队列中读出16个所述Y分量,i为小于等于15的奇数;
从第j个所述FIFO队列中读出16个所述Y分量与8个所述U分量以及8个所述V分量,j为小于等于14的偶数。
6.根据权利要求1所述的视频数据读写方法,其特征在于,所述根据所述压缩格式,采用相应的读出策略,从所述FIFO阵列读出每组数据块包括:
当所述压缩格式为YUV422时,从第m个所述FIFO队列中读出16个所述Y分量与8个所述U分量以及8个所述V分量,m的取值为0至15。
7.根据权利要求1所述的视频数据读写方法,其特征在于,所述根据所述压缩格式,从所述FIFO队列中读出每组数据块包括:
当所述压缩格式为YUV444时,从第p个所述FIFO队列中读出8个所述Y分量与8个所述U分量以及8个所述V分量,p的取值为0至7。
8.一种视频数据读写装置,其特征在于,包括:
写入模块,用于根据压缩格式,采用相应的写入策略,将Y分量、U分量与V分量写入FIFO阵列;所述FIFO阵列包括十六个FIFO队列;所述FIFO队列的宽度至少为32比特;
读出模块,用于根据所述压缩格式,采用相应的读出策略,从所述FIFO阵列读出每组数据块;其中,从所述FIFO阵列读出每组所述数据块时,每次从所述FIFO队列读出多个分量;
缓存模块,用于每次从所述FIFO队列读出所述U分量与所述V分量时,缓存读出的所述U分量与所述V分量。
9.一种视频数据读写设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述的视频数据读写方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的视频数据读写方法的步骤。
CN202210362953.7A 2022-04-08 2022-04-08 一种视频数据读写方法及相关装置 Active CN114443513B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210362953.7A CN114443513B (zh) 2022-04-08 2022-04-08 一种视频数据读写方法及相关装置
PCT/CN2022/119382 WO2023193405A1 (zh) 2022-04-08 2022-09-16 一种视频数据读写方法及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210362953.7A CN114443513B (zh) 2022-04-08 2022-04-08 一种视频数据读写方法及相关装置

Publications (2)

Publication Number Publication Date
CN114443513A true CN114443513A (zh) 2022-05-06
CN114443513B CN114443513B (zh) 2022-07-05

Family

ID=81359630

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210362953.7A Active CN114443513B (zh) 2022-04-08 2022-04-08 一种视频数据读写方法及相关装置

Country Status (2)

Country Link
CN (1) CN114443513B (zh)
WO (1) WO2023193405A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115086668A (zh) * 2022-07-21 2022-09-20 苏州浪潮智能科技有限公司 一种视频压缩方法、系统、设备及计算机可读存储介质
WO2023193405A1 (zh) * 2022-04-08 2023-10-12 苏州浪潮智能科技有限公司 一种视频数据读写方法及相关装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1124531A (zh) * 1993-04-16 1996-06-12 数据翻译公司 在计算机显示器上显示二次抽样视频图象
CN104021097A (zh) * 2013-03-01 2014-09-03 中兴通讯股份有限公司 数据传输方法、装置及直接存储器存取
CN112822386A (zh) * 2019-11-15 2021-05-18 合肥美亚光电技术股份有限公司 数据的采集方法及系统
CN114189687A (zh) * 2021-10-18 2022-03-15 江苏集萃智能集成电路设计技术研究所有限公司 一种显示屏过驱动控制器

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5452235A (en) * 1993-11-01 1995-09-19 Intel Corp. Planar/packed video data FIFO memory device
CN107547904B (zh) * 2017-09-05 2020-09-18 苏州浪潮智能科技有限公司 一种基于FPGA的视频压缩中YUV数据8x8block转换方法及装置
CN113068042A (zh) * 2021-03-19 2021-07-02 浪潮(北京)电子信息产业有限公司 一种视频压缩方法、系统及装置
CN113709489B (zh) * 2021-07-26 2024-04-19 山东云海国创云计算装备产业创新中心有限公司 一种视频压缩方法、装置、设备及可读存储介质
CN114443513B (zh) * 2022-04-08 2022-07-05 苏州浪潮智能科技有限公司 一种视频数据读写方法及相关装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1124531A (zh) * 1993-04-16 1996-06-12 数据翻译公司 在计算机显示器上显示二次抽样视频图象
CN104021097A (zh) * 2013-03-01 2014-09-03 中兴通讯股份有限公司 数据传输方法、装置及直接存储器存取
CN112822386A (zh) * 2019-11-15 2021-05-18 合肥美亚光电技术股份有限公司 数据的采集方法及系统
CN114189687A (zh) * 2021-10-18 2022-03-15 江苏集萃智能集成电路设计技术研究所有限公司 一种显示屏过驱动控制器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张海涛等: "基于小波变换芯片ADV611的数字视频压缩系统的设计研究", 《军民两用技术与产品》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023193405A1 (zh) * 2022-04-08 2023-10-12 苏州浪潮智能科技有限公司 一种视频数据读写方法及相关装置
CN115086668A (zh) * 2022-07-21 2022-09-20 苏州浪潮智能科技有限公司 一种视频压缩方法、系统、设备及计算机可读存储介质
CN115086668B (zh) * 2022-07-21 2023-01-10 苏州浪潮智能科技有限公司 一种视频压缩方法、系统、设备及计算机可读存储介质

Also Published As

Publication number Publication date
WO2023193405A1 (zh) 2023-10-12
CN114443513B (zh) 2022-07-05

Similar Documents

Publication Publication Date Title
CN114443513B (zh) 一种视频数据读写方法及相关装置
US20230054884A1 (en) Data read-write method and apparatus and circular queue
US8774535B2 (en) Method and apparatus for compression of multi-sampled anti-aliasing color data
CN114501024B (zh) 一种视频压缩系统、方法、计算机可读存储介质及服务器
US9894371B2 (en) Video decoder memory bandwidth compression
CN113709489B (zh) 一种视频压缩方法、装置、设备及可读存储介质
CN107886466B (zh) 一种图形处理器图像处理单元系统
CN103914404A (zh) 一种粗粒度可重构系统中的配置信息缓存装置及压缩方法
CN114466196B (zh) 视频数据处理方法、系统、装置及计算机可读存储介质
CN115209145A (zh) 一种视频压缩方法、系统、装置及可读存储介质
CN102572207B (zh) 一种适于jpeg图像的颜色空间转换方法
CN109089120B (zh) 分析辅助编码
KR101228111B1 (ko) 움직임 보상을 위한 더블 레지스터 어레이 버퍼
CN114422801A (zh) 优化视频压缩控制逻辑的方法、系统、设备和存储介质
WO2021237513A1 (zh) 数据压缩存储的系统、方法、处理器及计算机存储介质
CN114390292A (zh) 一种视频压缩系统及服务器
CN108876703B (zh) 数据存储方法
US8064709B2 (en) Method and apparatus for buffering output pixel data of a joint photographic experts group image
KR100846791B1 (ko) 비디오 데이터 저장 방법 및 장치
CN114359029B (zh) 图像处理方法及其装置、系统、存储介质
CN110727402B (zh) 一种高速fc数据实时接收不丢帧存储方法
CN112966813B (zh) 一种卷积神经网络输入层装置及其工作方法
CN112995745B (zh) 图像储存方法与电路系统
CN212873459U (zh) 一种用于数据压缩存储的系统
CN112073726B (zh) 压缩方法及装置、计算机可读存储介质及电子设备

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