CN110636309A - 数据处理系统 - Google Patents

数据处理系统 Download PDF

Info

Publication number
CN110636309A
CN110636309A CN201910519995.5A CN201910519995A CN110636309A CN 110636309 A CN110636309 A CN 110636309A CN 201910519995 A CN201910519995 A CN 201910519995A CN 110636309 A CN110636309 A CN 110636309A
Authority
CN
China
Prior art keywords
data
processing unit
video
location
encoded
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
CN201910519995.5A
Other languages
English (en)
Other versions
CN110636309B (zh
Inventor
O·弗洛达尔
J·费赖斯
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.)
ARM Co Ltd
Original Assignee
ARM 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 ARM Co Ltd filed Critical ARM Co Ltd
Publication of CN110636309A publication Critical patent/CN110636309A/zh
Application granted granted Critical
Publication of CN110636309B publication Critical patent/CN110636309B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/0007Image acquisition
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/02Handling of images in compressed format, e.g. JPEG, MPEG
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2350/00Solving problems of bandwidth in display systems
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/125Frame memory handling using unified memory architecture [UMA]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Human Computer Interaction (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • Acoustics & Sound (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

数据处理系统。视频数据处理系统包括视频处理单元,该视频处理单元产生视频数据的帧序列以供视频处理系统的消费者处理单元使用。该系统还包括:存储由视频处理单元产生的视频数据的帧序列的存储器(30)。视频处理单元将帧编码为编码数据块,将第一帧的特定编码块存储在存储器的第一位置(32),并存储第一位置的指示(34)。视频处理单元将第二帧的对应编码块存储在第二位置(33),并将指示(34)更新到第二位置。

Description

数据处理系统
技术领域
本发明涉及数据处理系统,并且更具体地,涉及在(例如视频)数据处理系统中产生和消费编码数据块。
背景技术
在数据处理系统中,“生产者(producer)”处理单元可以产生(生成)数据流,然后由数据处理系统的一个或更多个其他“消费者”处理单元使用(例如,处理)该数据流。这种情况的示例是视频编码或解码。例如,在视频编码系统中,视频编码器可以编码(“产生”)表示已由视频摄像头捕获或已由图形处理器生成的、待显示的视频帧序列的比特流。然后,编码的比特流可以由显示处理器“消费”,例如,出于显示视频帧序列的目的。
在这种布置中,生产者处理单元通常将其正在产生的数据流存储在与要使用所述数据流的消费者(consumer)处理单元共享(以及访问)的适当存储器中,然后消费者处理单元从存储器中读取所述数据流以供使用。
通过允许消费者处理单元读取和处理由生产者处理单元(例如,作为数据流的一部分)产生的数据输出(该数据输出正在被产生并写入共享存储器),可以最小化向共享存储器写入数据和从共享存储器读取数据所引起的延迟。在图形或视频处理中,这种布置被称为“前置缓冲(front buffer)”渲染。例如,这与生产者处理单元完全写入诸如帧之类的数据输出之后消费者处理单元才能够开始使用数据输出的布置相反。
然而,在这种布置中可能出现这样的情况:消费者处理单元试图读取尚未完全写入存储器的数据输出(的一部分)的数据。然后,消费者处理单元可以从存储器读取数据输出的新版本和旧版本(例如,在现有数据输出之上写入新数据输出的情况下)并尝试以某种方式组合它们。
使用旧版本和新版本的数据输出的混合可能导致数据处理系统出现许多问题。例如,当消费者处理单元输出(例如用于显示)这种数据的混合时,可以造成不希望的伪影(artefacts)。在图形和视频处理系统中,这种效应被称为“撕裂”。
当以逐块编码(例如,压缩)形式生成数据输出时,这些问题可能会更糟,使得消费者处理单元只有在具有数据输出的整个块的所有数据时才能处理数据输出的(块)的元素。在这种情况下,如果消费者处理单元试图仅读取部分写入的块,这可能在使用数据输出时引起更显著的伪影或错误(例如,损坏)。它还可能导致消费者处理单元陷入死结(deadlock)。
因此,申请人认为,对于数据处理系统中生产处理单元与消费处理单元之间共享的数据输出的处理仍存在改进余地,特别是在该数据输出是通过共享存储器而被处理和消费时。
发明内容
当从第一方面看时,本发明提供了一种操作视频处理系统的方法,其中,所述视频处理系统的视频处理单元能够进行工作而产生视频数据的帧序列,以供所述视频处理系统的一个或更多个消费者处理单元使用,所述方法包括以下步骤:
所述视频处理单元对视频数据的帧序列进行编码,各个帧被编码为一个或更多个编码数据块,并且将各个帧的编码数据块依次存储在存储器区域中,所述消费者处理单元将从所述存储器区域读取编码数据块以进行处理,与此同时,所述视频处理单元正在将所述帧的其他编码数据块存储在该存储区域中;
该方法还包括以下步骤:
所述视频处理单元:
将所述帧序列中的第一帧的特定编码数据块存储在所述存储器区域中的第
一位置;以及
针对所述特定编码数据块存储所述第一位置的指示,以供所述消费者处理单
元在读取特定数据块时使用;以及
所述视频处理单元在存储所述帧序列中与所述第一帧的特定编码数据块相对应的第二帧的编码数据块时,将所述第二帧的编码数据块存储在所述存储器区域中不同于所述第一位置的第二位置;以及
将所述存储器区域中的编码块的位置的指示更新为所述第二位置。
当从第二方面看时,本发明提供了一种视频数据处理系统,该视频数据处理系统包括:
视频处理单元,该视频处理单元能够进行工作而产生视频数据的帧序列,以供所述视频处理系统的一个或更多个消费者处理单元使用;以及
存储器,该存储器存储由所述视频处理单元产生的视频数据的帧序列;
其中,所述视频处理单元包括处理电路,该处理电路能够进行工作以:
将视频数据的帧序列编码,各个帧被编码为一个或更多个编码数据块;以及将各帧的所述编码数据块依次存储在存储器区域中,其他编码数据块存储在该存储器区域中的同时,所述消费者处理单元将从该存储器区域读取编码数据块以进行处理,与此同时,所述视频处理单元正在将所述帧的其他编码数据块存储在该存储区域中;
其中,所述处理电路还能够进行工作以:
将所述帧序列中的第一帧的特定编码数据块存储在所述存储器区域中的第一位置;以及
针对所述特定编码数据块存储第一位置的指示,以供所述消费者处理单元在读取特定数据块时使用;
其中,所述处理电路还能够进行工作而在存储所述帧序列中与所述第一帧的特定编码数据块相对应的第二帧的编码数据块时,将所述第二帧的编码数据块存储在所述存储器区域中不同于所述第一位置的第二位置;以及
将所述存储器区域中的编码块的位置的指示更新为所述第二位置。
本发明涉及使用视频数据处理系统的视频处理单元对视频(图像)数据进行编码和存储。视频数据被生成为帧序列,其中每个视频帧被分成一个或更多个(优选地是多个)数据块(例如,帧的像素的块)。各个块被单独编码(然后,例如,单独解码)。视频数据的帧序列由视频处理单元产生,以供(例如,视频数据处理系统的)一个或更多个消费者处理单元使用。
视频处理单元将帧序列的编码数据块存储在视频数据处理系统的存储器区域中。该存储器区域被视频数据处理系统用于存储(写入)帧的编码数据块,并同时被消费者处理单元用于读取已存储在该存储器区域中的帧的(其他)编码数据块。
因此,存储器区域以“前置缓冲区”的方式使用并且优选地包括“前置缓冲区”,“前置缓冲区”在视频处理单元与一个或更多个消费者处理单元之间共享并且可以由视频处理单元和一个或更多个消费者处理单元同时访问。这允许消费者处理单元可以在视频处理单元完成将整个帧写入存储器区域之前从同一存储器区域读取同一帧的编码数据块,从而允许在消费者处理单元读取帧的编码块的同时,将相同(或后续)帧的其他块写入相同的存储器区域。
例如,这种“前置缓冲区”渲染使得能够通过视频处理单元将视频数据的帧序列中的编码数据块连续写入存储器区域的同时,还允许消费者处理单元从相同的存储器区域开始连续读取已存储的编码数据块。这有助于减少产生和消费视频数据帧的延迟,例如,与此相对的系统是图像数据的整个帧在能够被提交到“前置”缓冲区(在该处图像数据帧可用于消费)之前,首先会被提交到“后置”缓冲区(生产者和消费者不能同时访问这种前置、后置缓冲区以便从中存储和读取数据。)
本发明的方法和系统允许以下述方式使用存储器区域:由于与先前存储的来自帧序列中的另一(第一帧)的编码数据块相对应的(第二)帧中的编码数据块,将编码数据块存储至与先前存储的数据块(其存储在第一位置)不同的(第二)位置,而不是在存储器中覆盖该编码数据块的先前版本。因此,帧序列中的连续(对应)数据块被存储在存储器的相同区域的不同位置中。
这允许在正在使用(读取)先前编码和存储的数据块的同时,将新编码的数据块存储至(写入)存储器区域,同时在该存储器区域中保留有效的编码数据块以供消费者处理单元使用,例如,直到新的编码数据块(例如,被完全写入存储器并且)可供使用。
视频处理单元还在存储器区域中存储对特定编码块的(第一)位置的指示。针对第二帧(以及例如后续帧)更新该指示,以提供该帧的相应块在存储器区域中的新的不同位置。
将序列中的连续帧中的编码数据块存储在存储器区域中的不同位置,并且提供编码块的最新(例如,完全存储)版本在存储器区域中的位置具有以下效果:尝试使用编码数据块的消费者处理单元能够(使用所述指示)在存储器区域中定位可用的编码块的版本,并且至少在优选的实施方式中,对于它们总是存在可用的“完整”(例如“有效”)的编码块的版本,即,消费者处理单元仅使用最新版本的位置指示来定位已经存储在存储器区域中的编码块的最新版本。由于避免了消费者处理单元试图读取尚未完全存储在存储器区域中的编码数据块,这有助于确保消费者处理单元能够将编码块成功解码(尽管如果块的新版本尚未写入共享的存储器区域,则所使用的块的可解码版本可能是来自前一帧)。
由于使用了特定块的最新有效版本的位置指示,确保仅读取有效的编码数据块以供一个或更多个消费者处理单元使用,这有助于克服先前尝试使用来自存储位置的部分更新的数据块时所遇到的问题以及由此产生的不需要的伪影。在产生和消费编码数据块的系统中实现这一点也有助于在尝试使用来自存储器位置的部分更新的编码数据块时,克服数据损坏和一个或更多个消费者处理单元的潜在死锁的问题。
视频处理单元所编码的视频数据的帧序列可以按照任何合适和期望的方式生成,例如,由视频处理单元生成。在一个实施方式中,视频数据的帧序列由视频摄像头捕获。在一个实施方式中,视频数据的帧序列由图形处理单元生成(例如,实时渲染)。
优选地,(例如,通过视频摄像头或图形处理单元)将已经生成的视频数据的帧序列存储(例如,在存储器中),以供视频处理单元在将视频数据帧编码为一个或更多个编码块时使用。
视频数据的帧序列可以是任何合适的和期望的视频帧序列。在源视频帧的序列中将存在至少两个帧,但是优选地,在源视频帧的序列中存在多于两个帧。
在帧序列中由视频处理单元编码的第一帧和第二帧可以是帧序列中的任何合适和期望的视频数据帧。优选地,第一帧和第二帧由视频处理单元连续编码,即,第二帧是在第一帧之后下一个被编码的帧。因此,所编码和存储的第一帧和第二帧可以是所生成的帧序列中的相邻帧和/或要被消费(例如,显示)的帧序列中的相邻帧。然而,情况可能并非总是如此,例如,取决于编码帧序列所使用的编码格式。
优选地,以表示视频数据的帧序列的输入帧数据流的形式提供要编码的帧序列,然后以本发明的方式对该视频数据的帧序列进行编码以提供一个或更多个编码数据块(例如,作为编码的数据比特流),然后将编码数据块存储在存储器区域中。然后,编码数据块可以(优选地)被发送和解码(例如,通过从存储器区域读取编码块的消费者处理单元),以提供输出视频帧序列,例如,(优选地)用于显示目的。
因此,优选地,该方法包括(并且视频处理单元能够进行工作而)接收要编码的视频数据的帧序列,并以本发明的方式对帧进行编码以产生一个或更多个编码数据块,然后将编码数据块存储在存储器区域中。
逐块地对视频帧进行编码,例如,将编码的视频数据的各个帧分成表示视频帧的各个区域(范围)的各个像素块(采样位置),然后将这些块分别被单独编码为编码数据块(例如,在编码的视频数据比特流内)。这样,一个或更多个消费者处理单元可以从存储在存储器中的编码视频数据使用(例如,识别和解码)各个单独的块。
因此,优选地,该方法包括(并且视频处理单元能够进行工作而)处理视频数据帧,以将视频帧划分为用于编码的块。
可以使用任何合适和期望的编码(压缩)技术(例如,使用申请人的专利US 8,542,939 B2、US 9,014,496 B2、US 8,990,518 B2和US 9,116,790 B2中描述的帧缓冲压缩技术)将视频数据帧编码(压缩)为一个或更多个块。
为了编码处理而将视频帧细分成的数据块可以是视频帧的任何合适和期望的块。优选地,数据块是矩形的,例如,正方形。矩形块可以采用任何合适的和期望的大小。优选地,各矩形块的大小在4×4像素至64×64像素之间并且包括4×4像素和64×64像素,优选地,矩形块的各边缘的大小为2n个像素,其中,n是整数(例如,介于2至6之间并且包括2和6)。
在一个实施方式中,视频数据帧被(例如,由图形处理单元)生成(例如,渲染)为单独的数据块。在这种“基于拼块的”渲染中,优选地,所生成的数据块包括“拼块”,例如,在帧的范围内进行细分,并且由视频处理单元使用(即编码)以产生编码数据块(其优选地对应于所生成的数据块)。
视频数据的第一帧中的特定编码数据块可以按照任何合适和期望的方式对应于视频数据的第二帧中的对应编码数据块。优选地,对应块占据视频数据的第二帧中与第一帧中的特定块相同的位置(例如,拼块)(包含相同的数据元素集合)。当(例如,各个)帧被编码为多个数据块时,优选地,第二帧中的各个编码数据块对应于第一帧中的相应编码数据块。优选地,帧序列中的各个帧被编码为相同的块集合(例如,拼块)。
视频处理单元用于存储帧序列的编码数据块的(并且是一个或更多个消费者处理单元在读取编码数据块时所使用的)存储器区域可以是任何合适和期望的存储器区域,该存储器区域可由视频处理单元和一个或更多个消费者处理单元同时访问(例如,在视频处理单元与一个或更多个消费者处理单元之间共享)。因此,存储编码数据块的存储器可以是视频处理系统的任何期望和合适的存储器,例如(优选地)是所讨论的处理单元的主存储器(例如,在所讨论的处理单元存在单独的存储系统的情况下),和/或视频处理系统的主存储器,其与诸如视频处理系统的主处理器(CPU)之类的其他元件共享。
存储器可以在所讨论的处理单元外部(例如,片外)。在优选实施方式中,存储器是外部DRAM。当然,其他安排也是可能的。
存储器区域可以以任何合适和期望的方式布置。优选地,存储器区域包括(帧)缓冲区,该(帧)缓冲区可以由视频处理单元和一个或更多个消费者处理单元同时访问(例如,在视频处理单元与一个或更多个消费者处理单元之间共享)。
存储器区域是同时由视频处理单元用于存储编码数据块并且由一个或更多个消费者处理单元用于读取编码数据块。因此,优选地,存储器区域包括(例如,单个)前置缓冲区。
优选地,相同的存储器区域被视频处理单元用于存储帧的一个或更多个编码数据块中的所有编码数据块,并且优选地用于以这种方式编码和存储的帧序列中的所有帧。类似地,优选地,相同的存储器区域随后被一个或更多个消费者处理单元用于一个或更多个消费者处理单元要使用的一个或更多个编码数据块中的所有编码数据块,并且优选地用于一个或更多个消费者处理单元要使用的帧序列中的所有帧。
在该存储器区域内,视频数据的第一帧中的编码数据块存储在第一位置,然后视频数据的第二帧中的对应(即更新版本)数据块存储在同一存储器区域中不同的第二位置。由于使用存储器区域中的不同(第二)位置来存储编码数据块的较新版本(即来自第二帧的编码块),因此当在第二位置存储对应(第二)编码数据块时,存储在第一位置的特定编码数据块(即来自第一帧的编码块)不应该并且(优选地)不会被覆盖。
存储器区域中的第一位置和第二位置可以以任何合适和期望的方式设置,以避免来自第一帧的编码数据块被来自第二帧的对应编码数据块覆盖。优选地,存储器区域具有存储(第一)帧的所有编码块(即,每帧的整个数据输出)的容量以及以存储另一(例如,后续(第二))帧的一个或更多个编码块的一些附加的“超容量(over-capacity)”。
这允许存储器区域能够在任何一个时间存储帧的所有编码块(例如,完整和可解码的版本),使得它们可供消费者处理单元使用,例如,当相应数据块的新版本存储在存储器区域中的不同位置时,确保存储器区域中存在“超容量”以提供可用的“第二”位置以存储来自第二帧的编码块,而不是覆盖来自第一帧的对应编码数据块。
这意味着可以保留来自第一帧的一个或更多个编码数据块(供一个或更多个消费者处理单元使用),同时将相应块的新版本写入存储器,例如,直到编码数据块的完整新版本对一个或更多个消费者处理单元来说可用为止。然后,旧版本可以被(例如,后续帧的对应编码块)覆盖。
存储器区域的超容量的大小可以取决于视频处理单元在任何一个时间能够处理(例如,编码和存储)的数据块(即,“即时(in flight)”的块)的数量(例如,最大数量)。在存储器区域中提供一定(例如,有限)量的超容量可以有助于最小化需要提供和管理的存储器区域的大小。然而,这可能需要对存储器区域中可用于存储新编码的数据块的位置进行跟踪,例如,通过确定存储先前编码块的位置何时可被覆盖。
因此,在一个优选实施方式中,存储器区域具有(例如,至少)存储第一帧的所有编码块和第二帧的所有编码块(即,两帧的整个数据输出)的容量。这有助于确保始终存在用于存储新编码数据块的可用位置,同时保留来自先前帧的对应编码数据块以供消费者处理单元使用,直到新的块完全被存储为止。
存储器区域可以以任何合适和期望的方式布置,以存储两个帧(第一帧和第二帧)的所有编码块。在优选实施方式中,存储器区域包括两个单独的存储器子区域(例如,第一存储器子区域和第二存储器子区域),它们优选地是同一(前置)缓冲区的两个单独部分。
因此,优选地,该方法包括(并且视频处理单元能够进行工作而)将来自第一帧的特定编码数据块存储在存储器区域的第一子区域中,并且将来自第二帧的对应编码数据块存储在存储器区域的第二子区域中(例如,视频处理单元交替地将一个帧的块存储一个子区域并将后续帧的块存储到另一个子区域)。第一位置是第一存储器子区域中的位置,第二位置是第二存储器子区域中的位置(即,正被处理的第一帧和第二帧中的每一个都具有可供视频处理单元存储这些帧的编码块的相应子区域)。
以这种方式提供单独的(例如,圈定的(delineated))存储器子区域,其中第一帧的编码数据块(优选地是所有编码块)存储在这些子区域中的一个子区域中,第二帧的相应块(优选地是所有编码块)存储在另一个子区域中,这有助于确保提供不同的(第二)位置以存储较新的编码数据块。它还有助于避免必须(正确)识别与第一位置不同的第二位置(例如,在同一个存储器区域中可能需要),使得在第二位置存储编码块时不会覆盖第一位置中的编码块。
相反,在优选实施方式中,这正是所完成的,当视频处理单元存储第一帧和第二(且优选地,后续)帧中的对应编码数据块时,可以简单地在两个存储器子区域之间交替(“往复(ping-pong)”),将相应的交替帧的编码数据块存储在交替的存储器子区域中。
当存储编码数据块的存储器区域包括两个单独的存储器子区域时,(由于是同一存储器区域的一部分)这些子区域仍然可由一个或更多个消费者处理单元(例如,在任何一个时间)读取,而其他编码数据块存储在存储器区域中(例如,存储器区域中的任一个或每个子区域中)。因此,优选地,两个单独的子区域能够进行工作而由一个或更多个消费者处理单元(例如,连续地)读取,同时编码数据块被存储在该子区域中,使得它们可以同时由视频处理单元和由消费者处理单元进行访问。这与以下存储系统形成对比:具有前置缓冲区和后置缓冲区,数据仅被写入后置缓冲区并从前置缓冲区读取。
类似地,一个或更多个消费者处理单元(例如每个)可以内部进行工作而在从存储器区域读取视频数据帧时,(例如,在任何给定时间)读取两个单独的存储器子区域。如下面将讨论的,一个或更多个消费者处理单元简单地使用编码数据块的存储位置的指示并访问存储器区域的相关位置(可以在任一子区域中)。
两个单独的存储器子区域可以以任何合适和期望的方式布置,例如,取决于帧序列被编码为数据块的方式。在一个实施方式中,使用申请人的专利US 8,542,939 B2、US 9,014,496 B2、US 8,990,518 B2和US 9,116,790 B2中描述的帧缓冲区压缩技术对数据块进行编码。使用这些技术,数据帧被编码为存储在“主体(body)”缓冲区中的一个或更多个(“有效载荷”)数据块。“头部(header)”缓冲区存储“头部”数据,头部数据表示(例如指向)主体缓冲区中存储编码数据块的位置。
因此,优选地,两个单独的存储器子区域中的每一个存储器子区域包括主体缓冲区。因此,优选地,存储器区域包括两个单独的主体缓冲区,例如,作为同一前缓冲区的一部分。
优选地,特定帧的所有数据块都存储在同一子区域中,例如,第一帧的编码块都存储在第一子区域中,第二帧的编码块都存储在第二子区域中。因此,优选地,每个子区域具有(例如至少)存储帧的所有编码块(例如,帧的整个数据输出)的容量。因此,当视频数据帧被编码为多个编码数据块并且存储器区域包括两个单独的存储器子区域时,优选地,该方法包括(并且视频处理单元能够进行工作而)将视频数据的第一帧的全部多个编码数据块存储在第一存储器子区域中,并且将视频数据的第二帧的全部多个编码数据块存储在第二存储器子区域中。
在这种情况下,对于由视频处理单元编码的数据帧,帧的所有编码块将被写入一个存储器子区域。对于序列中的下一帧,所有编码块将被写入另一个子区域,然后对于再下一帧,所有编码块都被写入第一个子区域,依此类推,即,视频处理单元在存储编码帧时在两个子区域之间“往复”存储。
应当理解,将帧的所有编码块存储在同一子区域中(然后将后续帧的所有编码块存储在另一子区域中)是更易于管理的系统(例如,与逐块决定将编码块存储在存储器中的位置的系统相比较)。这是因为视频处理单元仅需要知道(或被告知或选择)哪个子区域来存储第一帧的编码块。然后,对于帧序列中的后续帧,视频处理单元可以逐帧地在两个子区域之间交替,从而确保第二帧的对应编码块被存储在不同于第一帧的特定编码块(其存储在第一子区域中)的位置(即,在第二子区域中)。
可以按照任何合适和期望的方式确定和设置存储了任何特定编码数据块(或特定帧的数据块)的存储器子区域。在一个实施方式中,用于帧的子区域由视频处理单元的驱动器进行设置。因此例如,优选地,驱动器被配置为设置帧的状态信息,该状态信息用于(向视频处理单元)指示将帧的(例如,所有)编码块存储到哪个子区域。
除了将特定编码数据块存储在存储器区域的第一位置之外,视频处理单元还存储该第一位置的指示。以相同的方式存储第二位置的指示,例如,优选地,对于给定编码块,更新关于其存储位置的指示,使得仅存在与给定编码数据块相对应的一个有效位置指示。这允许一个或更多个消费者处理单元能够定位(然后使用)编码数据块。
编码数据块的位置的(例如更新的)指示可以存储在系统的任何合适和期望的部分中。优选地,编码数据块的位置的指示与编码数据块一起存储在同一存储器区域中。编码数据块的位置的指示可以存储在存储器区域的任何合适和期望的部分中。优选地,存储器区域包括(例如,另一)存储器子区域,以存储编码数据块的位置的指示(并且优选地,存储编码数据块的位置的所有这些指示)。优选地,子区域包括头部缓冲区。因此,在特别优选的实施方式中,存储器区域包括存储编码数据块的两个单独的子区域(例如“主体”缓冲区)以及存储编码数据块的位置的指示的单独的子区域(例如“头部”缓冲区)。
可以按照任何合适和期望的格式存储编码数据块的位置的指示。优选地,编码数据块的位置的指示包括头部数据。优选地,编码数据块的指示包括指向存储编码数据块的位置的指针。在存储器区域包括两个单独的存储器子区域的实施方式中,优选地,编码数据块的位置的指示包括指向存储编码视频数据块的存储器子区域的指针。
因此,在优选实施方式中,例如,使用申请人的专利US 8,542,939 B2、US 9,014,496 B2、US 8,990,518 B2和US 9,116,790 B2中描述的帧缓冲压缩技术,视频处理单元能够进行工作而将编码视频数据块存储在(例如,两个)“主体”缓冲区,并将头部的集合存储在“头部”缓冲区中,其中每个头部指向主体缓冲区中的相应编码块。
除了编码数据块的位置(例如以指针的形式)之外,头部数据还可以包括任何合适和期望的信息。在一个实施方式中,编码数据块的头部数据包括以下信息中的一个或更多个(优选地,全部):关于编码块大小的信息(例如,被存储为压缩数据的字节大小)、关于块中的数据如何被压缩的信息、关于再细分的压缩块的大小(例如,存储为字节大小)的信息(例如,对于视频编码格式,可能仅解码编码数据块的一部分)。
可以由视频处理单元以任何合适和期望的方式存储(更新)第一位置和第二位置的指示。在优选实施方式中,只有完全存储了相应的编码视频数据块,(例如,才)会存储(更新)指示,使得它至少可供一个或更多个消费者处理单元使用。
这可以是当编码数据块已经完全存储在存储器区域(例如,在主存储器中)中时。然而,在编码块(例如,首先)被存储在共享的高速缓存(可由消费者处理单元访问)中的情况下,当编码块已经完全被存储在高速缓存中时,该指示会被存储(更新)。当这样的高速缓存包括高速缓存层次结构时,可以在编码块到达高速缓存中的特定级别(即,消费者处理单元可以从该级别访问编码块)时存储(更新)该指示。因此,在一些实施方式中,可以在编码块到达其(例如,在存储器区域中的)最终位置之前存储(更新)编码块的指示。例如,在一些实施方式中,可以首先(例如,在片上存储器中)临时存储位置指示,同时存储编码数据块。然后,可以将位置指示(例如,在存储器区域中)进行存储(更新),使得一旦已经完全存储了编码数据块(例如,当已经接收到已经存储的编码数据块的确认时(如下所述)),消费者处理单元就可以读取该位置指示。
这有助于允许一个或更多个消费者处理单元仅知道“有效”(完全存储)的视频数据编码块,从而有助于防止一个或更多个消费者处理单元尝试使用任何尚未完全存储在存储器区域中编码视频数据块。一旦存储(更新)了对编码块的指示,一个或更多个消费者处理单元就能够使用所述指示表示的位置处的编码块,知道它是有效且已准备好被使用而不会引起任何问题。以这种方式存储(更新)编码视频数据块的位置的指示还减少了在视频处理单元与一个或更多个消费者处理单元之间所需的同步。
在优选实施方式中,该方法包括(并且存储器系统能够进行工作而)确认(例如,向视频处理单元)已经(例如,完全)存储了编码数据块,使得它至少可供一个或更多个消费者处理单元使用。因此,在一些实施方式中,可以在已经完全存储编码数据块时提供确认,如上所述,例如,当使用共享的高速缓存时。
提供这样的写确认允许视频处理单元(例如,只有)在已经(例如完全)存储了编码数据块时才存储编码数据块的位置的指示。因此,优选地,该方法包括(并且视频处理单元能够进行工作而)一旦存储系统已经确认(并且优选地,响应于存储器系统的确认)编码数据块已经(例如,完全)存储(例如)在记忆区域,则存储(例如,更新)编码数据块的(第一或第二)位置的指示。
在这些实施方式中,一旦存储了对应编码数据块的第二位置的指示被更新,使得存储器区域现在存储了完整(“有效”)的编码数据块,那么在第一位置存储的特定编码数据块就可以被覆盖。这是因为存储器区域现在包含了完全存储的编码数据块的新版本,其通过其位置的指示可供一个或更多个消费者处理单元使用,使得编码数据块的旧版本可能不再需要被一个或更多个消费者处理单元访问(即,因为该指示已被更新至第二位置)。
在一些实施方式中,使用(存储了用于被(例如,后续版本的)编码数据块覆盖的旧版本编码数据块的)存储器区域中的位置可能需要在视频处理单元和一个或更多个消费者处理单元之间的(隐式或显式)同步,以确认覆盖该位置是安全的。例如,当消费者处理单元已高速缓存了旧的位置指示(例如,以定位旧版本的编码数据块时),可能需要这样做。
虽然通过在不同的存储位置提供使旧(第一)版本的指示无效(和使新(第二)版本)的指示有效而将指示更新到新存储的编码数据块的新(第二)位置,在一个优选实施方式中,通过将第二位置的指示存储在存储器区域中与第一位置的指示相同的位置(例如,覆盖),更新(第二位置的)指示。这允许消费者处理单元在希望使用编码数据块时,可以使用该指示简单地查找其位置,使得它将被引导到它可以读取的编码块的最新(例如完全写入)版本。当较新版本的编码块可用时,再次更新指示,使得消费者处理单元可以访问编码块的较新版本。
当视频数据的帧被编码为多个数据块时,各个编码数据块的位置的指示将存储在(例如,视频处理器和一个或更多个消费者处理单元已知的)特定位置,并且每次在各个编码数据块被存储在存储器区域中时更新(例如覆盖),以便(向一个或更多个消费者处理单元)显示各个编码数据块的新版本的位置。
一个或更多个消费者处理单元可以按照任何合适和期望的方式使用存储在存储器区域中的一个或更多个编码数据块。最基本地,一个或更多个消费者处理单元能够读取存储在存储器区域中的视频数据帧的一个或更多个编码数据块,并使用存储器区域中的块的位置的指示来定位这些数据块。因此,一旦一个或更多个块的位置的指示已经存储在存储器区域中,一个或更多个消费者处理单元就能够使用视频数据帧的一个或更多个编码块。
在优选实施方式中,该方法包括以下步骤:消费者处理单元(在希望使用特定编码数据块时):
读取编码数据块位置的指示;
从存储器区域中由编码数据块的位置的指示所指示的位置读取编码数据块;以及
消费(例如,显示和/或以其他方式处理)编码数据块。
相应地,优选地,视频数据处理系统包括一个或更多个消费者处理单元,(例如每个)消费者处理单元包括处理电路以(在消费者处理单元希望使用特定编码数据块时)能够进行工作以:
读取编码数据块的位置的指示;
从存储器区域中由编码数据块的位置指示所指示的的位置读取编码数据块;以及
消费(例如,显示和/或以其他方式处理)编码数据块。
优选地,消费者处理单元对其希望使用的帧序列中的帧的每个编码块(例如,在适当时)执行这些(以及任何其他可选的或优选的)步骤。
优选地,该方法包括(并且一个或更多个消费者处理单元能够进行工作而)解码视频数据帧的一个或更多个编码数据块。
由于存储编码数据块的存储器区域被配置成,使得消费者处理单元能够从存储器区域读取编码数据块而同时视频处理单元正在该存储器区域中存储其他编码数据块,优选地,该方法包括(并且视频处理单元和消费者处理单元的处理电路能够进行工作而):
消费者处理单元从存储器区域读取帧的一个或更多个编码数据块,同时视频处理单元正在同一存储器区域中存储(写入)该帧的一个或更多个其他编码数据块。
由视频处理单元存储的其他编码数据块可以是由消费者处理单元读取的(后续帧中)与特定数据块相对应的数据块,或者它可以是同一帧或后续帧中的另一数据块。因此,在视频数据帧被完全存储于存储器区域中之前,例如,在同一帧的其他编码数据块正在被存储在同一存储器区域中的同时,消费者处理单元可以从该存储器区域读取编码数据块。
优选地,在视频处理单元正在将编码数据块存储在存储器区域中的同时,所述一个或更多个消费者处理单元(例如,每个)能够进行工作而访问(例如,整个)存储器区域(以从其读取编码数据块)。
类似地,当存储器区域包括两个单独的子区域(例如,主体缓冲区)时,消费者处理单元可以从其中一个子区域中读取编码数据块,与此同时,视频处理单元正在将其他编码数据块存储在同一子区域中(例如,在读取与正在存储的其他块的同一帧中的块的情况下),或者消费者处理单元可以从其中一个子区域读取编码数据块,与此同时,视频处理单元正在将其他编码数据块存储在另一个子区域中(例如,在读取与正在存储的其他块不同的前一帧中的块的情况下)。
当存储器区域包括存储编码数据块的两个子区域时,优选地,一个或更多个消费者处理单元(例如,每个)能够进行工作而在任何给定时间访问两个存储器子区域中的任一个。
一个或更多个消费者处理单元可包括任何合适和期望类型的处理单元,例如,在编码数据块被编码并存储在存储器区域之后使用该编码数据块的任何处理单元。在一个实施方式中,消费者处理单元能够进行工作而进一步处理编码的视频数据块,例如,将视觉效果应用于视频数据。因此,一个或更多个消费者处理单元可以包括一个或更多个图形处理单元。
然而,在优选实施方式中,一个或更多个消费者处理单元包括一个或更多个显示处理单元,其中显示处理单元可能够进行工作而(例如,使用编码视频数据块以)显示编码视频数据块,例如显示视频数据的帧序列。
尽管给定帧的编码数据块可以存储在各种不同的地方,例如,在存储器区域的两个子区域(例如,主体缓冲区)中的任一个子区域中,一个或更多个消费者处理单元仅使用编码数据块的位置的指示来定位该块,如上所述。因此,希望使用编码数据块的消费者处理单元(例如,在访问数据之前)不需要知道存储器区域是如何被组织的,或者一个或更多个编码数据块被存储于存储器区域中的何处。
在一些实施方式中,一个或更多个消费者处理单元(例如,每个)能够进行工作而从存储器预取(例如,旁路转换缓冲(translation lookaside buffer))数据。当存储编码数据块的存储器区域具有超容量时,优选地,一个或更多个消费者处理单元(例如每个)会被告知存储器区域的布置(例如,当存储器区域包括两个单独的子区域时),以使消费者处理单元可预取所有必要信息。因此,优选地,一个或更多个消费者处理单元(例如,每个)能够进行工作而预取两个单独的存储器子区域(例如旁路转换缓冲)的数据。
优选地,一个或更多个消费者处理单元(例如,每个)被(例如,软件开关,例如状态信息中的标志)设置为使用两个存储器子区域以访问存储在两个子区域中的编码数据块(并且对数据进行预取)。或者,硬件块可以被配置为:将一个或更多个消费者处理单元设置为使用两个存储器子区域以访问存储在两个存储器子区域中的编码数据块(并且对数据进行预取)。因此,在这些实施方式中,优选地,一个或更多个消费者处理单元知道存在可能存储了编码数据块的两个存储器子区域。
可能仅存在使用编码数据块的一个消费者处理单元,但是在优选实施方式中,可存在(优选地)使用(同一)编码数据块的多于一个(多个)消费者处理单元。在多个消费者处理单元正在读取并使用同一编码数据块的情况下,优选地,每个消费者处理单元按照本发明的方式进行操作(独立于其他消费者处理单元)。
在优选实施方式中,例如在将视频数据帧(例如每个)编码为多个数据块时,对帧中的每个数据块执行本发明,即,将第一帧中的每个块编码和存储在一个位置(带有相关指示),然后将第二帧的对应块编码和存储在不同位置,并相应地更新所存储的编码块的位置的指示。
类似地,优选地,对帧序列中的多个视频数据帧执行本发明,即,将视频数据的一个帧中的多个块编码和存储在与前一帧的相应块不同的位置,对帧序列中的每个连续帧(相对于前一帧)重复该操作,并更新所存储的编码块的位置的指示。
虽然已经主要参考视频处理系统描述了上述方面和实施方式,但是应当理解,本发明可以在任何合适和期望的数据处理系统中实现,在该数据处理系统中“负责生产的”处理单元将生成并存储编码数据块,以供一个或更多个“负责消费的”处理单元使用。因此,除了视频处理系统之外,本发明还可以用在其他数据处理系统中,例如图像处理系统和图形处理系统。
因此,当从另一方面来看时,本发明提供了一种操作数据处理系统的方法,其中,所述数据处理系统的生产者处理单元能够进行工作而产生数据输出序列,以供所述数据处理系统的一个或更多个消费者处理单元使用,所述方法包括以下步骤:
生产者处理单元对数据输出序列中的第一数据输出进行编码,每个数据输出被编码为一个或更多个编码数据块,并且将各数据输出的编码数据块依次存储在存储器区域中,消费者处理单元将从该存储器区域读取编码数据块以进行处理,与此同时,所述视频处理单元将所述数据输出的其他编码数据块存储在该存储器区域中;
所述方法还包括以下步骤:
所述生产者处理单元:
将所述数据输出序列中的第一数据输出的特定编码数据块存储在所述存储
器区域中的第一位置;以及
针对所述特定编码数据块,存储第一位置的指示,以供所述消费者处理单元
在读取特定数据块时使用;以及
所述生产者处理单元在存储所述数据输出序列中与所述第一数据输出的特定编码数据块相对应的第二数据输出的编码数据块时,将所述第二数据输出的编码数据块存储在所述存储器区域中不同于所述第一位置的第二位置;以及
将所述存储器区域中的编码块的位置的指示更新为所述第二位置。
从另一方面来看,本发明提供了一种数据处理系统,该数据处理系统包括:
生产者处理单元,该生产者处理单元能够进行工作而产生数据输出的序列,以供所述数据处理系统的一个或更多个消费者处理单元使用;以及
存储器,该存储器存储由所述生产者处理单元产生的数据输出序列,
其中,所述生产者处理单元包括处理电路,该处理电路能够进行工作以:
将数据输出序列编码,每个数据输出被编码为一个或更多个编码数据块;以及
将每个数据输出的编码数据块依次存储在存储器区域中,消费者处理单元将从该存储器区域读取编码数据块以进行处理,与此同时,所述生产者处理单元将所述数据输出的其他编码数据块存储在该存储器区域中,
其中,所述处理电路还能够进行工作以:
将所述第一数据输出的特定编码数据块存储在所述存储器区域中的第一位置;以及
针对所述特定编码数据块,存储第一位置的指示,以供所述消费者处理单元在读取特定数据块时使用,
其中,所述处理电路还能够进行工作而在存储所述数据输出序列中与所述第一数据输出的特定编码数据块相对应的第二数据输出的编码数据块时,将所述第二数据输出的编码数据块存储在所述存储器区域中不同于所述第一位置的第二位置;以及
将所述存储器区域中的编码块的位置的指示更新为所述第二位置。
如本领域技术人员将理解的,本发明的这些方面可以(优选地)适当包括:本文所讨论的本发明中所有的或者一个或更多个的优选和可选特征。特别地,参考视频数据帧描述的特征优选同样适用于数据实例;参考视频处理单元描述的特征优选同样适用于生产者处理单元;并且参考一个或更多个消费者处理单元描述的特征优选同样适用于一个或更多个消费者处理单元。例如,优选地,序列中的(例如每个)数据输出包括数据阵列,例如视频数据的帧。
本发明的任何一个或更多个或所有处理单元可以具体实施为处理单元电路,例如,以一个或更多个固定功能单元(硬件)(处理电路)的形式,和/或以可被编程以执行所需操作的可编程处理电路的形式。同样地,本发明的任何一个或更多个或所有处理单元和处理单元电路可以作为单独的电路元件提供给任何一个或更多个其他处理单元或处理单元电路,和/或任何一个或更多个或者所有处理单元和处理单元电路可以至少部分地由共享处理电路形成。
处理单元可以是适当的整体处理器的一部分,例如视频处理器(视频处理单元)或图形处理器(图形处理单元)。
本文在任何方面或实施方式中描述的处理单元和/或数据处理系统可以包括片上系统(SoC)、或者可以是片上系统(SoC)、或者可以形成片上系统(SoC)的一部分。
除了特定处理单元之外,本发明的数据或视频处理系统还可以包括数据(例如视频)处理系统可以包括的任何合适和期望的元件和单元等。因此,在优选实施方式中,数据处理系统还包括主(例如中央)处理器。例如,主处理器可以执行需要由系统数据处理系统的处理单元进行数据(例如视频)处理的应用程序。
主处理器可以向处理单元发送适当的命令和数据,以控制它们执行数据处理操作,并生成和/或使用在主处理器上执行的应用程序所需的一个或更多个数据流。为此,主处理器可以执行用于处理单元的一个或更多个驱动器和/或可以执行一个或更多个编译器,以用于编译将由处理单元的可编程执行单元执行的程序。
在实施方式中,处理单元或系统可以包括:存储本文描述的数据的一个或更多个存储器和/或存储器设备,和/或存储用于执行本文描述的过程的软件;和/或,处理单元或系统可以与存储本文描述的数据的一个或更多个存储器和/或存储器设备进行通信,和/或与存储用于执行本文描述的过程的软件进行通信。处理单元或系统可以包括用于基于数据流显示图像的显示器,和/或可以与用于基于数据流显示图像的显示器进行通信。处理单元或系统可以包括生成数据元素阵列的摄像头,和/或可以与生成数据元素阵列的摄像头进行通信。
本发明可以在任何合适的系统中实现,例如适当配置的计算机或基于微处理器的系统。在优选实施方式中,本发明在基于计算机和/或微处理器的系统中实现。
本发明的各种功能可以以任何期望和合适的方式实施。例如,根据需要,本发明的步骤和功能可以用硬件或软件实现。因此,例如,除非另有说明,否则本发明的各种电路、功能元件、阶段、单元和“装置”可包括合适的一个或更多个处理器、一个或更多个控制器、功能单元、电路、处理逻辑、微处理器布置等,以被操作用于执行各种步骤或功能等,例如适当的专用硬件元件(处理电路)和/或可编程的硬件元件(处理电路)可被编程为以所需方式进行操作。
可以在给定处理器上并行地复制和/或执行本发明的各种步骤或功能等。同样地,如果需要,各种处理单元等可以共享处理电路等。
根据执行上述特定步骤或功能等所需的任何硬件,系统可以另外包括数据(例如视频)处理系统所包括的任何一个或更多个或所有常用功能单元等。
在特别优选的实施方式中,本发明的各种功能在生成并输出所讨论的数据流的单个数据(例如视频)处理平台上执行。
本领域技术人员还将理解,本发明的所有描述的实施方式可以适当包括,并且在实施方式中确实包括,本文描述的任何一个或更多个或所有特征。
根据本发明的方法可以至少部分地使用软件(例如,计算机程序)实现。因此,本发明的其他实施方式包括:计算机软件,所述计算机软件特别适于在被安装在数据(例如视频)处理器上时执行本文所述的方法;计算机程序元素,其包括在程序元素在数据(例如视频)处理器上运行时执行本文所述方法的计算机软件代码部分;以及包括代码的计算机程序,所述代码适于在程序在数据(例如视频)处理器上运行时执行本文所述的一个或更多个方法的所有步骤。数据(例如视频)处理器可以是微处理器系统、可编程FPGA(现场可编程门阵列)等。
本发明还可扩展到包括这种软件的计算机软件载体,当该计算机软件载体用于操作包括数据(例如视频)处理器的数据(例如视频)处理装置或系统时,使所述装置或系统结合所述数据(例如视频)处理器执行本发明方法的步骤。这样的计算机软件载体可以是物理存储介质,例如ROM芯片、CD ROM、RAM、闪存或盘,或者可以是信号,例如电线上的电子信号、光信号或诸如到卫星等的无线电信号。
还应当理解,并非本发明方法的所有步骤都需要通过计算机软件来执行,因此在其他实施方式中需要包括计算机软件,这种计算机软件被安装在计算机软件载体上以执行本文提出方法的至少一个步骤。
因此,本发明可以适当地体现为与计算机系统一起使用的计算机程序产品。这样的实现可以包括一系列计算机可读指令,该计算机可读指令被固定在以下诸如计算机可读介质这样的有形的非暂时性介质上中的任一个上,例如磁盘、CD、DVD、ROM、RAM、闪存或硬盘。它还可以包括一系列计算机可读指令,该计算机可读指令可经由调制解调器或其他接口设备、通过有形介质(包括但不限于光学或模拟通信线路)或无形地使用无线技术(包括但不限于微波、红外线或其他传输技术)被传输到计算机系统。该一系列计算机可读指令体现了此前描述的全部或部分功能。
本领域技术人员将理解,这种计算机可读指令可以用许多编程语言编写,以与许多计算机体系结构或操作系统一起使用。此外,这些指令可以使用现有或未来的任何存储器技术(包括但不限于半导体、磁性或光学)来存储,或者使用现有或未来的任何通信技术(包括但不限于光学、红外或微波)来传输。可以预期,这样的计算机程序产品可以作为(附带有打印文档或电子文档(例如,压缩打包软件、预装有计算机系统)的)可移动介质来分发,例如,到系统ROM或固定盘上,或者通过网络(例如,因特网或万维网)从服务器或电子公告板分发。
附图说明
现在将仅通过示例并参考附图来描述本发明的各种实施方式,其中:
图1示出了本发明的实施方式的概述示意图;
图2示意性地示出了可以根据本发明的实施方式操作的数据处理系统;
图3示意性地示出了可以在本发明的实施方式中使用的存储器系统;
图4是显示了本发明的实施方式中视频处理单元的操作的流程图;
图5示意性地示出了使用本发明的实施方式编码的两个视频数据帧;以及
图6是示出了本发明实施方式中的显示处理单元的操作的流程图;
(在适当处)相似的附图标记用于附图中的相似特征。
附图示出了与本发明的实施方式相关的视频处理装置和系统的元件。如本领域技术人员将理解的,视频处理装置和系统的其他元件可能未在附图中示出。此处还应注意,附图仅是示意性的,例如,即使所示元件在附图中被示意性地示作单独元件,在实践中它们也可以共享重要的硬件电路。
具体实施方式
现在将在生成和显示编码的视频图像数据的背景下描述本发明的实施方式。
图1示出了本发明实施方式的基本操作,其显示了数据流。
如图1所示,图形处理器1生成压缩像素(图像)数据。将被用于形成视频图像数据帧的压缩像素数据由图形处理器1编码(压缩)并以压缩像素数据块的形式写入存储器系统2。存储器系统2在图形处理器1与显示处理器3之间共享,并且能够由图形处理器1和显示处理器3访问。
显示处理器3能够从存储器系统2读取编码像素数据块,使得编码像素数据可以用于显示视频图像数据帧。
存储器系统2被配置为一旦压缩像素数据块被图形处理器1写入存储系统2,就提供写确认,这将在下面更详细地描述。
图2示意性地示出了数据处理系统10,在数据处理系统10中可以使用和实现本实施方式(例如,图1中所示的布置)。
如图2所示,数据处理系统10包括片上系统(SoC)11形式的数据处理装置。系统10还包括片外(主)存储器12、显示设备13和视频摄像头14。
SoC 11包括中央处理单元(CPU)15、图形处理单元(GPU)16、视频处理器17、显示控制器18、互连19和存储器控制器20。
例如,图2的系统10中所示的GPU 16或视频处理器17可以按照与图1中所示的图形处理器1等同的方式使用。例如,显示控制器18可以等同于图1中所示的图形处理器1。例如,主存储器12和存储器控制器20可以等同于图1中所示的存储器系统2。
如图2所示,CPU 15、GPU 16、视频处理器17和显示控制器18经由互连19彼此通信,并且经由互连19和存储控制器20与存储器12通信。显示控制器18还与显示设备13通信。视频摄像头14还经由互连19与SoC 11通信。
视频处理器17可以从存储器12和/或从视频摄像头14读取(例如,由GPU 16生成的或由视频摄像头14捕获的)图像数据,以块的方式对图像数据进行编码,然后输出编码的图像数据,例如,存储在存储器12中或流式传输到另一设备。例如,编码的图像数据稍后可以由视频处理器17取得和解码,或由另一设备接收和解码。例如,可以通过显示控制器18或另一设备将解码的图像数据输出至显示设备13进行显示。
在本实施方式中,假设视频处理器17处理视频图像数据的帧和/或部分给定视频帧,以产生编码的图像(像素)数据块。然后将编码块以压缩形式存储在片外存储器12内的帧缓冲区中,使得它们可以由显示控制器18解码并显示在显示设备13上。
图3示意性地示出了用于本发明实施方式的存储器30的布局。例如,可以在如图1和图2所示的数据处理系统中实现的存储器30(因此可以等同于图1中所示的存储器系统2或图2中所示的片外存储器12)包括存储压缩像素(图像)数据的前置缓冲区。例如,压缩像素数据可以由图1所示的图形处理器1产生或由图2所示的视频处理器17编码。然后,例如,所存储的数据可以由图1所示的显示处理器3或
图2中所示的显示控制器18消费。
图3中所示的存储器30的前置缓冲区包括头部缓冲区31和两个主体缓冲区32、33。主体缓冲区32、33用于存储(例如,由如图1所示的图形处理器1或者由图2所示的视频处理器17编码)产生的压缩像素(“有效载荷”)数据。头部缓冲区31用于存储指向主体缓冲区32、33中的压缩像素数据的指针34。
例如,头部缓冲区31中的指针34由图1中所示的显示处理器3或图2中所示的显示控制器18使用,以识别待显示的压缩像素数据在主体缓冲区32、33中的一个缓冲区中的位置。因此,在操作中,显示处理器3或显示控制器18读取头部缓冲区31中的指针34,遵循指向主体缓冲区32、33中的一个主体缓冲区中的位置的指针34,并读取主体缓冲区32、33中该位置处的压缩像素数据。
现在将参考图4和图6中所示的流程图以及图5中所示的两个视频数据帧的布局来描述图1、图2、图3中所示系统的操作。首先,将描述产生(渲染、压缩、写入)图像数据的帧的过程。
图4示出了根据本发明实施方式的详细说明用于产生压缩像素数据并将压缩像素数据写入存储器的步骤的流程图。
当要产生视频图像数据的帧序列时,图形处理器1(图1中所示的)或GPU 16(图2中所示的)开始渲染像素数据(步骤101,图4)。像素数据的生产者(例如,图形处理器1(如图1所示)或将对由GPU 16渲染的像素数据进行编码的视频处理器17(如图2所示))首先被(驱动器)设置为将压缩像素数据写入(如图3所示的)主体缓冲区“0”32(步骤102,图4)。
现在将参考图5描述产生和写出帧的压缩像素数据的过程。图5示意性地示出了使用本发明的实施方式编码的帧序列中的两个视频数据帧40、50。
在该实施方式中,将各个帧40、50渲染、压缩并且按“拼块(tile)”写出(将帧分成较小子区域)。如图5所示,将帧序列中的第一帧40分成四个拼块41、42、43、44,并且将第二帧50分成相应的四个拼块51、52、53、54(通常,一个视频数据帧将包括多于四个拼块;然而,为清楚起见,图5中所示的各个帧中仅示出四个拼块)。各个拼块包括采样位置(像素)的块(阵列),并且拼块可以是任何合适的和期望的尺寸,但通常是16×16采样位置的块。可以理解,帧40、50的多个拼块41、42、43、44、51、52、53、54可以并行处理,例如,在适当时,在GPU16和/或视频处理器17的多个处理核上进行处理。
对于帧中的给定拼块(例如,图5中所示的第一帧40中的拼块“A”41),产生过程开始于(步骤103,图4)由图形处理器1(图1中所示的)或GPU 16(图2中所示的)渲染拼块并将所渲染的拼块写入内部存储器(步骤104,图4)。然后,图形处理器1(图1中所示的)或视频处理器17(图2中所示的)压缩拼块(步骤105,图4)。可以根据任何合适的期望压缩或编码技术对所渲染的拼块像素数据进行压缩。在申请人的专利US 8,542,939 B2、US 9,014,496 B2、US 8,990,518 B2和US 9,116,790 B2中描述了一种这样的帧缓冲压缩技术。
然后,将拼块的压缩像素(“有效载荷”)数据写入(例如,如图1中所示的存储系统2或片外存储器12的)存储器30中的主体缓冲区“0”32(如图3中所示)中(步骤106,图4)。当拼块的所有压缩像素(“有效载荷”)数据已被写入主体缓冲区“0”32时,存储器系统2向压缩像素数据的生产者发送确认(如图2所示)。
压缩像素数据的生产者等待来自存储器系统2的确认(步骤107,图4),然后将相应的头部数据写入(如图2中所示的)头并缓冲区31中(步骤108,图4)。拼块的压缩像素数据块的头部数据例如包括:关于块的大小的信息、关于如何压缩像素数据的信息以及压缩像素数据的位置。如图3所示,使用从头部缓冲区31到主体缓冲区“0”32的指针34来提供拼块的压缩像素数据在主体缓冲区“0”32中的位置。
针对帧中的各个拼块执行上述处理。例如,可以使用多核处理器彼此并行地渲染、压缩和写出不同的拼块。一旦帧中的所有拼块都被渲染、压缩并写入至主体缓冲区“0”32(步骤109,图4),就对帧序列中的下一帧执行相同的处理。
然而,在对下一帧执行处理之前,像素数据的生产者(例如,(图1中所示的)图形处理器1或(图2中所示的)视频处理器17)首先被(驱动器)设置为将新帧的压缩像素数据的写入切换至另一主体缓冲区,即(图3中所示的)主体缓冲区“1”33(步骤111,图4)。
将新帧的压缩像素数据写入到另一主体缓冲区“1”33避免了在主体缓冲区“0”32中的当前帧的多个拼块的压缩像素数据(其具有从头部缓冲区31指向它们的指针34)被覆盖掉。这使得能够将当前帧的拼块作为该数据的完整数据块(例如,通过显示处理器3(图1中所示)或显示控制器18(图2中所示),并遵循头部指针34)来读取,从而避免任何“撕裂”伪影或数据损坏的问题(应当理解,一旦新帧的压缩像素数据已被写入另一主体缓冲区(主体缓冲区“1”33),并且头部缓冲区31中的头部数据已被更新,则在主体缓冲区“0”32中的压缩像素数据不再具有指向该数据的头部指针34,因此后续的帧可以安全地将其覆盖。)
因此,按照与第一帧相同的方式,对下一帧执行渲染、压缩并将多个拼块的压缩图像数据写入到主体缓冲区“1”33并且将头部数据写入头部缓冲区31的过程。例如,对于图5中所示的第二帧50,与第一帧40中的拼块A 41对应的拼块A'51的视频数据被编码并存储在主体缓冲区“1”33中,并将其头部数据存储在头部缓冲区31中。
当新帧的头部数据被写入至头部缓冲区31时,新帧中的编码拼块的头部覆盖前一帧中相应拼块的相应头部数据(例如,图5所示的指向第二帧50中的拼块A'51的编码数据的头部覆盖指向第一帧40中的拼块A 41的编码数据的头部)。因此(如下面将参考图6所述),当要读取新帧的压缩像素数据时,从头部缓冲区31读取新的头部数据,并且遵循指针34以到达主体缓冲区“1”33中的压缩像素。
针对每个帧切换写入压缩像素数据的主体缓冲区,以相同的方式重复产生具有多个拼块的压缩像素数据的帧的过程(步骤111,图4)。在各帧产生之后,检查是否已经生成并写出待渲染的帧序列中的所有帧(步骤110,图4)。当帧序列已经完成时,过程结束(步骤112,图4)。
现在将描述消费(读取、解压缩、显示)所产生的图像数据帧的过程。在图像数据帧正在被写入单个前置缓冲区(尽管已分成两个单独的主体缓冲区32、33)时,图像数据帧能够在其被产生的同时被消费掉,如将要描述的那样。
图6示出了详细说明根据本发明实施方式的消费所产生的像素数据的步骤的流程图。
总体来说,当渲染的拼块被编码并存储在存储器中时,它们被显示处理器3或显示控制器18解码并重新组合,以提供输出帧(例如,用于显示)。
当要显示视频图像数据的帧序列时,在产生视频图像数据的帧序列的同时(步骤201,图6),如上面参考图4所述,像素数据的消费者(例如,将解码压缩的像素数据的显示处理器3(如图1所示)或显示控制器18(如图2所示))被(软件开关)设置,以从存储器30中的前置缓冲区读取压缩像素数据,即通过使用头部缓冲区31中的头部数据来确定压缩像素数据在适当的主体缓冲区32、33中的位置,如图3所示(步骤202,图6)。
按照渲染、压缩像素数据并存储为拼块的相同方式,将压缩像素数据读取、解压缩并显示为拼块,以便显示在待显示的帧序列中的各个帧。因此,如将要描述的,将压缩像素数据读取、解压缩并显示为拼块的过程对于视频图像数据帧中的所有拼块来说是相同的并且被重复。
对于帧中的给定拼块,消费过程开始(步骤203,图6)于显示处理器3(图1中所示)或显示控制器18(图2中所示)读取头部缓冲区31(图3中所示)中的头部数据(步骤204,图6)。显示处理器3或显示控制器18解析它读取的头部数据,以确定拼块的头部数据中的信息,例如,拼块的大小(通常存储为压缩数据的字节大小)、像素数据如何被压缩以及压缩像素数据的位置(步骤205,图6)。
利用显示处理器1或显示控制器18已从头部数据确定的拼块的压缩像素数据的位置,显示处理器1或显示控制器18从适当的主体缓冲区32、33中读取拼块的压缩像素“有效载荷”数据(步骤206,图6)。
应当理解,由于在将所有有效载荷数据存储在适当的主体缓冲区32、33中之后才将头部数据写入头部缓冲区31的方式,显示处理器3或显示控制器18仅能够读取有效且完整的编码像素数据块。在最坏的情况下,例如,当块的新版本正在被写入另一主体缓冲区32、33时,显示处理器3或显示控制器18将会读取编码数据块的旧版本,但至少该块将是有效的。视频处理器17能够在显示处理器3或显示控制器18正在从存储器12读取前一帧的相应数据块的同时,将编码数据块写入存储器12,并且这并不会引发问题,因为新的编码数据块不会覆盖先前存储的相应数据块。相反,它们会被写入另一个主体缓冲区32、33。
一旦已经从适当的主体缓冲区32、33读取了拼块的压缩像素数据,显示处理器1或显示控制器18就使用头部数据中的信息(例如,拼块的大小以及压缩像素数据的方式)来解压缩拼块的像素数据(步骤207,图6)。
然后,由显示处理器1或显示控制器18发送解压缩的拼块的像素数据,以便显示在,例如,图2所示的显示设备13上(步骤208,图6)。
针对帧中的各个拼块执行上述处理。例如,使用多核显示处理器,可以彼此并行地读取、解压缩和显示不同的拼块。一旦帧中的所有拼块都已经被读取、解压缩和显示(步骤209,图6),就对帧序列中的下一帧执行相同的处理。类似地,对帧序列中的各个帧重复该过程,直到序列中的所有帧均已被显示(步骤210,图6)。
如果需要,可以对本发明的上述实施方式进行许多变化、修改和替换。
本实施方式可以用在任何所需和合适的数据处理系统中,该数据处理系统中“生成”处理单元将生成并存储编码数据块以供一个或更多个“消费”处理单元使用。因此,除了视频处理系统之外,本实施方式还可以用在其他数据处理系统中,例如图像处理系统和图形处理系统。
由上述可见,本发明在其优选实施方式中至少提供了一种改进的机制,该机制用于在使用“前置缓冲区”布置时编码和存储作为编码数据块的视频数据帧序列,其中在该“前置缓冲区”布置中可以在存储编码块的同时从相同的存储器区读取其他编码块。在本发明的优选实施方式中,至少通过视频处理单元实现这一点,该视频处理单元存储来自存储器中不同位置的(例如连续的)数据帧的编码数据块,并指示每个编码块的位置,在后续帧中的数据块被存储在存储器区域中时,各编码块的位置指示也被同时存储和更新。然后,消费者处理单元使用编码块的位置指示,访问编码数据块以供后续使用(例如,显示)。

Claims (24)

1.一种操作视频处理系统的方法,其中,所述视频处理系统的视频处理单元能够进行工作而产生视频数据的帧序列,以供所述视频处理系统的一个或更多个消费者处理单元使用,所述方法包括以下步骤:
所述视频处理单元对视频数据的帧序列进行编码,每个帧被编码为一个或更多个编码数据块,并且所述视频处理单元将各个帧的编码数据块依次存储在存储器区域中,所述消费者处理单元将从所述存储器区域读取编码数据块以进行处理,与此同时,所述视频处理单元将所述帧的其他编码数据块存储在所述存储器区域中;
该方法还包括以下步骤:
所述视频处理单元将所述帧序列中的第一帧的特定编码数据块存储在所述存储器区域中的第一位置;以及
所述视频处理单元针对所述特定编码数据块存储所述第一位置的指示,以供所述消费者处理单元在读取所述特定编码数据块时使用;以及
所述视频处理单元在存储所述帧序列中与所述第一帧的所述特定编码数据块相对应的第二帧的编码数据块时,将所述第二帧的该编码数据块存储在所述存储器区域中不同于所述第一位置的第二位置;以及
将所述存储器区域中的编码数据块的位置指示更新为所述第二位置。
2.根据权利要求1所述的方法,所述方法还包括以下步骤:
当将所述视频数据的所述第二帧的对应编码数据块存储至所述第二位置时,不覆盖存储在所述第一位置的、所述视频数据的所述第一帧的所述特定编码数据块。
3.根据权利要求1或2所述的方法,其中,所述存储器区域包括单独的第一存储器子区域和第二存储器子区域,并且所述方法包括以下步骤:
将所述第一帧的所述特定编码数据块存储在所述第一存储器子区域中,并将所述第二帧的对应编码数据块存储在所述第二存储器子区域中。
4.根据权利要求3所述的方法,所述方法包括以下步骤:
将所述视频数据的所述第一帧的全部多个编码数据块存储在所述第一存储器子区域中,并且将所述视频数据的所述第二帧的全部多个编码数据块存储在所述第二存储器子区域中。
5.根据权利要求1或2所述的方法,其中,所述存储器区域包括存储编码数据块的位置指示的头部缓冲区。
6.根据权利要求1或2所述的方法,其中,编码数据块的位置指示包括指向存储该编码数据块的位置的指针。
7.根据权利要求1或2所述的方法,所述方法包括以下步骤:
所述存储器向所述视频处理单元确认已存储了编码数据块,使得该编码数据块至少能够由所述消费者处理单元使用。
8.根据权利要求7所述的方法,所述方法包括以下步骤:
一旦所述存储器确认已存储了编码数据块,就存储该编码数据块的位置指示。
9.根据权利要求1或2所述的方法,所述方法包括以下步骤:
由所述消费者处理单元读取编码数据块的位置指示;
由所述消费者处理单元从所述存储器区域中由所述编码数据块的位置指示所指示的位置读取编码数据块;以及
由所述消费者处理单元消费所述编码块数据。
10.根据权利要求1或2所述的方法,所述方法还包括以下步骤:
所述消费者处理单元从所述存储器区域读取一个或更多个编码数据块,与此同时,所述视频处理单元将一个或更多个其他编码数据块存储在同一存储器区域中。
11.一种视频数据处理系统,该视频数据处理系统包括:
视频处理单元,该视频处理单元能够进行工作而产生视频数据的帧序列,以供所述视频处理系统的一个或更多个消费者处理单元使用;以及
存储器,该存储器存储由所述视频处理单元产生的视频数据的帧序列,
其中,所述视频处理单元包括处理电路,该处理电路能够操作以:
对视频数据的帧序列进行编码,每个帧被编码为一个或更多个编码数据块;以及
将各个帧的编码数据块依次存储在存储器区域中,所述消费者处理单元将从所述存储器区域读取编码数据块以进行处理,与此同时,所述视频处理单元将所述帧的其他编码数据块存储在所述存储器区域中,
其中,所述处理电路还能够操作以:
将所述帧序列中的第一帧的特定编码数据块存储在所述存储器区域中的第一位置;以及
针对所述特定编码数据块,存储所述第一位置的指示,以供所述消费者处理单元在读取所述特定数据块时使用,
其中,所述处理电路还能够进行工作而在存储所述帧序列中与所述第一帧的所述特定编码数据块相对应的第二帧的编码数据块时,将所述第二帧的该编码数据块存储在所述存储器区域中不同于所述第一位置的第二位置;以及
将所述存储器区域中的编码块的位置的指示更新为所述第二位置。
12.根据权利要求11所述的视频数据处理系统,其中,所述处理电路能够进行工作而在将所述视频数据的第二帧的对应编码数据块存储至所述第二位置时,不覆盖存储在所述第一位置的、所述视频数据的所述第一帧的所述特定编码数据块。
13.根据权利要求11或12所述的视频数据处理系统,其中,所述存储器区域包括单独的第一存储器子区域和第二存储器子区域,并且所述处理电路能够进行工作而将所述第一帧的特定编码数据块存储在所述第一存储器子区域中,并将所述第二帧的对应编码数据块存储在所述第二存储器子区域中。
14.根据权利要求13所述的视频数据处理系统,其中,所述处理电路能够进行工作而将所述视频数据的第一帧的全部多个编码数据块存储在所述第一存储器子区域中,并且将所述视频数据的第二帧的全部多个编码数据块存储在所述第二存储器子区域中。
15.根据权利要求11或12所述的视频数据处理系统,其中,所述存储器区域包括存储编码数据块的位置指示的头部缓冲区。
16.根据权利要求11或12所述的视频数据处理系统,其中,编码数据块的位置指示包括指向存储该编码数据块的位置的指针。
17.根据权利要求11或12所述的视频数据处理系统,其中,所述存储器向所述视频处理单元确认已存储了编码数据块,使得该编码数据块至少能够由所述消费者处理单元使用。
18.根据权利要求17所述的视频数据处理系统,其中,所述处理电路能够进行工作而一旦所述存储器确认已经存储了编码数据块,就存储该编码数据块的位置指示。
19.根据权利要求11或12所述的视频数据处理系统,所述视频数据处理系统包括一个或更多个消费者处理单元,所述消费者处理单元包括处理电路,所述处理电路能够进行工作以:
读取所述编码数据块的位置指示;
从所述存储器区域中由所述编码数据块的位置指示所指示的位置读取所述编码数据块;以及
消费所述编码块数据。
20.根据权利要求11或12所述的视频数据处理系统,所述视频数据处理系统包括一个或更多个消费者处理单元,所述消费者处理单元包括处理电路,所述处理电路能够操作以:
从所述存储器区域读取一个或更多个编码数据块,与此同时,所述视频处理单元将一个或更多个其他编码数据块存储在同一存储器区域中。
21.一种操作数据处理系统的方法,其中,所述数据处理系统的生产者处理单元能够进行工作而产生数据输出序列,以供所述数据处理系统的一个或更多个消费者处理单元使用,所述方法包括以下步骤:
所述生产者处理单元对数据输出序列中的第一数据输出进行编码,每个数据输出被编码为一个或更多个编码数据块,并且所述生产者处理单元将各个数据输出的编码数据块依次存储在存储器区域中,所述消费者处理单元将从所述存储器区域读取编码数据块以进行处理,与此同时,所述生产者处理单元将所述数据输出的其他编码数据块存储在所述存储器区域中;
所述方法还包括以下步骤:
所述生产者处理单元将所述数据输出序列中的第一数据输出的特定编码数据块存储在所述存储器区域中的第一位置;
所述生产者处理单元针对所述特定编码数据块存储第一位置的指示,以供所述消费者处理单元在读取所述特定数据块时使用;以及
所述生产者处理单元在存储所述数据输出序列中与所述第一数据输出的所述特定编码数据块相对应的第二数据输出的编码数据块时,将所述第二数据输出的该编码数据块存储在所述存储器区域中不同于所述第一位置的第二位置;以及
将所述存储器区域中的编码数据块的位置指示更新为所述第二位置。
22.一种数据处理系统,该数据处理系统包括:
生产者处理单元,该生产者处理单元能够进行工作而产生数据输出序列,以供所述数据处理系统的一个或更多个消费者处理单元使用;以及
存储器,该存储器存储由所述生产者处理单元产生的数据输出序列,
其中,所述生产者处理单元包括处理电路,该处理电路能够操作以:
对数据输出序列进行编码,每个数据输出被编码为一个或更多个编码数据块;以及
将各个数据输出的编码数据块依次存储在存储器区域中,所述消费者处理单元将从所述存储器区域读取编码数据块以进行处理,与此同时,所述生产者处理单元将所述数据输出的其他编码数据块存储在所述存储器区域中,
其中,所述处理电路还能够操作以:
将所述数据输出序列中的第一数据输出的特定编码数据块存储在所述存储器区域中的第一位置;以及
针对所述特定编码数据块存储第一位置的指示,以供所述消费者处理单元在读取所述特定数据块时使用,
其中,所述处理电路还能够进行工作而在存储所述数据输出序列中与所述第一数据输出的所述特定编码数据块相对应的第二数据输出的编码数据块时,将所述第二数据输出的该编码数据块存储在所述存储器区域中不同于所述第一位置的第二位置;以及
将所述存储器区域中的编码块的位置的指示更新为所述第二位置。
23.一种计算机可读存储介质,该计算机可读存储介质存储有计算机软件代码,在视频处理系统上执行所述计算机软件代码时,执行根据权利要求1至10中任一项所述的方法。
24.一种计算机可读存储介质,该计算机可读存储介质存储有计算机软件代码,当在数据处理系统上执行所述计算机软件代码时,执行根据权利要求21所述的方法。
CN201910519995.5A 2018-06-22 2019-06-17 数据处理系统 Active CN110636309B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1810266.5 2018-06-22
GB1810266.5A GB2575030B (en) 2018-06-22 2018-06-22 Data processing systems

Publications (2)

Publication Number Publication Date
CN110636309A true CN110636309A (zh) 2019-12-31
CN110636309B CN110636309B (zh) 2024-09-24

Family

ID=

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112822494A (zh) * 2020-12-30 2021-05-18 稿定(厦门)科技有限公司 双缓冲编码系统及其控制方法

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5822504A (en) * 1992-10-08 1998-10-13 Fujitsu Isotec Limited Font packing device and font unpacking device
US20020009149A1 (en) * 1999-12-14 2002-01-24 Rodriguez Arturo A. System and method for adaptive video processing with coordinated resource allocation
US20040005145A1 (en) * 2002-07-04 2004-01-08 Kuan-Chou Chen DVD-ROM controller and MPEG decoder with shared memory controller
US20070279422A1 (en) * 2006-04-24 2007-12-06 Hiroaki Sugita Processor system including processors and data transfer method thereof
US20140063030A1 (en) * 2012-09-06 2014-03-06 Imagination Technologies Limited Systems and methods of partial frame buffer updating
US20140281279A1 (en) * 2013-03-15 2014-09-18 Eun Chu Oh Nonvolatile memory device and data management method thereof
US20160012856A1 (en) * 2014-07-14 2016-01-14 NFL Enterprises LLC Video replay systems and methods
US9342859B2 (en) * 2013-10-22 2016-05-17 American Megatrends, Inc. GPU based parallel image processing at thin client
US20170347044A1 (en) * 2016-05-25 2017-11-30 Gopro, Inc. Warp processing for image capture
CN108093292A (zh) * 2016-11-21 2018-05-29 阿里巴巴集团控股有限公司 用于管理缓存的方法、装置及系统

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5822504A (en) * 1992-10-08 1998-10-13 Fujitsu Isotec Limited Font packing device and font unpacking device
US20020009149A1 (en) * 1999-12-14 2002-01-24 Rodriguez Arturo A. System and method for adaptive video processing with coordinated resource allocation
US20040005145A1 (en) * 2002-07-04 2004-01-08 Kuan-Chou Chen DVD-ROM controller and MPEG decoder with shared memory controller
US20070279422A1 (en) * 2006-04-24 2007-12-06 Hiroaki Sugita Processor system including processors and data transfer method thereof
US20140063030A1 (en) * 2012-09-06 2014-03-06 Imagination Technologies Limited Systems and methods of partial frame buffer updating
US20140281279A1 (en) * 2013-03-15 2014-09-18 Eun Chu Oh Nonvolatile memory device and data management method thereof
US9342859B2 (en) * 2013-10-22 2016-05-17 American Megatrends, Inc. GPU based parallel image processing at thin client
US20160012856A1 (en) * 2014-07-14 2016-01-14 NFL Enterprises LLC Video replay systems and methods
US20170347044A1 (en) * 2016-05-25 2017-11-30 Gopro, Inc. Warp processing for image capture
CN108093292A (zh) * 2016-11-21 2018-05-29 阿里巴巴集团控股有限公司 用于管理缓存的方法、装置及系统

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112822494A (zh) * 2020-12-30 2021-05-18 稿定(厦门)科技有限公司 双缓冲编码系统及其控制方法

Also Published As

Publication number Publication date
GB2575030B (en) 2020-10-21
US11308570B2 (en) 2022-04-19
US20190392546A1 (en) 2019-12-26
GB201810266D0 (en) 2018-08-08
GB2575030A (en) 2020-01-01
KR20200000353A (ko) 2020-01-02

Similar Documents

Publication Publication Date Title
US11308570B2 (en) Video data processing system for storing frames of video data
US8988443B2 (en) Methods of and apparatus for controlling the reading of arrays of data from memory
US11023152B2 (en) Methods and apparatus for storing data in memory in data processing systems
US9881401B2 (en) Graphics processing system
US9996363B2 (en) Methods of and apparatus for displaying windows on a display
US6407741B1 (en) Method and apparatus for controlling compressed Z information in a video graphics system that supports anti-aliasing
JP5835879B2 (ja) メモリからのデータの配列の読み込みを制御する方法および装置
US10896536B2 (en) Providing output surface data to a display in data processing systems
CN110121072B (zh) 用于数据元素阵列或数据元素阵列流的编码的装置和方法
US20210216464A1 (en) Cache operations in data processing systems
US10466915B2 (en) Accessing encoded blocks of data in memory
US11789867B2 (en) Cache arrangement for data processing systems
US20240078186A1 (en) Cache systems
US20230195638A1 (en) Cache systems
CN110636309B (zh) 数据处理系统
US11205243B2 (en) Data processing systems
US11954038B2 (en) Efficient evict for cache block memory
US11586554B2 (en) Cache arrangements for data processing systems
US20230196624A1 (en) Data processing systems
KR102704848B1 (ko) 데이터 프로세싱 시스템을 위한 캐시 배열
GB2614069A (en) Cache systems
GB2614071A (en) Cache systems
GB2614073A (en) Cache systems

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