CN106464930B - 将多个编码视频组合以经由视频解码器解码的方法和系统 - Google Patents

将多个编码视频组合以经由视频解码器解码的方法和系统 Download PDF

Info

Publication number
CN106464930B
CN106464930B CN201580022233.4A CN201580022233A CN106464930B CN 106464930 B CN106464930 B CN 106464930B CN 201580022233 A CN201580022233 A CN 201580022233A CN 106464930 B CN106464930 B CN 106464930B
Authority
CN
China
Prior art keywords
frame
data flow
video
output
code
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
CN201580022233.4A
Other languages
English (en)
Other versions
CN106464930A (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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of CN106464930A publication Critical patent/CN106464930A/zh
Application granted granted Critical
Publication of CN106464930B publication Critical patent/CN106464930B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/02Editing, e.g. varying the order of information signals recorded on, or reproduced from, record carriers
    • 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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • 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/174Methods 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 slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/20Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
    • H04N19/23Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding with coding of regions that are present throughout a whole video segment, e.g. sprites, background or mosaic
    • 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
    • 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/436Methods 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 using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/23424Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving splicing one content stream with another content stream, e.g. for inserting or substituting an advertisement
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/236Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
    • H04N21/2365Multiplexing of several video streams
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/08Systems for the simultaneous or sequential transmission of more than one television signal, e.g. additional information signals, the signals occupying wholly or partially the same frequency band, e.g. by time division
    • H04N7/0806Systems for the simultaneous or sequential transmission of more than one television signal, e.g. additional information signals, the signals occupying wholly or partially the same frequency band, e.g. by time division the signals being two or more video signals
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/02Editing, e.g. varying the order of information signals recorded on, or reproduced from, record carriers
    • G11B27/031Electronic editing of digitised analogue information signals, e.g. audio or video signals
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • 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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/20Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
    • H04N19/27Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding involving both synthetic and natural picture components, e.g. synthetic natural hybrid coding [SNHC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/14Systems for two-way working
    • H04N7/15Conference systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/14Systems for two-way working
    • H04N7/15Conference systems
    • H04N7/152Multipoint control units therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本文所描述的方法和系统提供用于使用单个解码器来对多个视频流进行解码。示例方法可以包括接收表示第一视频的编码帧的第一数据流以及接收均表示相应视频的编码帧的一个或多个附加数据流。对于所接收的第一数据流的每个编码帧,该方法进一步可以包括:将所述一个或多个附加数据流中的每个数据流的相应帧与编码第一帧组合,使得第一视频的每个编码帧包括第一视频的相应帧和所述一个或多个附加数据流中的每个数据流的相应帧。然后,该方法可以包括将第一数据流的每个所组合的帧解码。该方法还可以包括提供所解码的帧以用于显示。

Description

将多个编码视频组合以经由视频解码器解码的方法和系统
技术领域
本申请要求2014年5月1日提交的美国专利申请号14/267,486以及2015年4月9日提交的美国专利申请号14/682,864的优先权,其特此通过引用全部并入本文。
背景技术
除非本文中另外指示,否则此部分中所描述的材料不是本申请中的权利要求的现有技术,也不被承认是通过包括在此部分中而成为现有技术。
诸如视频和音频的媒体常常被压缩以减少表现该媒体所需的数据量(通常称作比特率)。通过降低比特率,可以需要较少量的数据存储来存储视频,并且可以需要较小的带宽来通过网络传送视频。众多的视频编解码器(编码器/解码器)作为使得能够对数字视频进行压缩或解压缩的硬件和/或软件组件而存在。为了将压缩的视频解码,许多类型的计算设备具有硬件和/或软件解码单元。
对视频——特别是对于如1080p的较高分辨率的视频——进行解码能够是CPU密集型任务,。因此,尽管视频解码器在许多情形下可以被实现为在通用处理器上执行的软件模块,专用硬件解码器可以更高效和/或更有能力的,尤其是关于对较高分辨率的视频进行解码而言。诸如移动计算设备的一些低功率设备可以配备有通用处理器,其可能难以实时地和/或在可接受功率包络内解码高分辨率视频。为了协助解码这样的视频,诸如智能电话和平板计算机的一些移动计算设备可以配备有被配置为对压缩的视频进行解码的一个或多个硬件视频解码器。
发明内容
在一个示例中,提供一种方法,其包括由处理器接收表示第一视频的编码帧的第一数据流以及接收表示第二视频的编码帧的第二数据流。对于所接收的第一数据流的每个帧,该方法进一步包括在帧的报头中定义该帧是相应输出帧的第一片。并且,对于所接收的第二数据流的每个帧,该方法包括在帧的报头中定义该帧是相应输出帧的第二片并且定义该第二片被垂直地堆叠在相应输出帧中的第一片下面。然后,该方法包括生成输出数据流,该输出数据流被配置为将第一视频的编码帧表示为编码输出帧的相应第一片并且将第二视频的编码帧表示为编码输出帧的相应第二片,使得相应输出帧被划分为相应第一片和相应第二片。该方法还包括将所生成的输出数据流发送至解码器。
在另一示例中,提供一种具有存储在其上的指令的计算机可读存储存储器,所述指令在由处理器执行时使得所述处理器执行功能。所述功能包括:接收表示第一视频的编码帧的第一数据流以及接收均表示相应视频的编码帧的一个或多个附加数据流。对于所接收的第一数据流的每个编码帧,所述功能进一步包括:将所述一个或多个附加数据流中的每个数据流的相应帧与编码第一帧组合,使得每个编码第一帧包括第一视频的相应帧和所述一个或多个附加数据流中的每个数据流的相应帧。所述功能进一步包括:由特定解码器将第一数据流的每个所组合的帧解码为输出表面格式,所述输出表面格式表示第一视频的帧以及所述一个或多个附加数据流的视频中的每个视频的帧。所述功能还包括提供第一视频的解码帧以及所述一个或多个附加数据流的视频中的每个视频的解码帧以用于同时显示。
在另一示例中,提供一种设备,其包括一个或多个处理器以及被配置为存储指令的数据储存器,所述指令在由所述一个或多个处理器执行时使得所述设备执行功能。所述功能包括:接收表示第一视频的编码帧的第一数据流,其中第一视频的每个编码帧被划分为相应的第一宏块阵列;以及接收表示第二视频的编码帧的第二数据流,其中第二视频的每个编码帧被划分为相应的第二宏块阵列。所述功能还包括:将所接收的第一数据流和所接收的第二数据流组合成被配置为表示编码输出帧的输出数据流。每个编码输出帧包括被垂直地连结至第一视频的相应编码帧的第一宏块阵列的第二视频的相应编码帧的第二宏块阵列。所述功能进一步包括:将输出数据流解码为输出表面格式,该输出表面格式包括在相应非重叠区域中的第一视频的解码帧和第二视频的解码帧;以及提供第一视频的解码帧和第二视频的解码帧以用于显示。
在另一示例中,提供了一种系统,其包括:用于接收表示第一视频的编码帧的第一数据流的装置以及用于接收均表示相应视频的编码帧的一个或多个附加数据流的装置。对于所接收的第一数据流的每个编码帧,所述系统进一步包括:用于将所述一个或多个附加数据流中的每一个的相应帧与第一视频的编码帧组合的装置,使得每个编码帧包括第一视频的相应帧以及所述一个或多个附加数据流中的每个数据流的相应帧。所述系统进一步包括:用于由特定解码器将第一数据流的每个所组合的帧解码为输出表面格式的装置,所述输出表面格式表示第一视频的帧以及所述一个或多个附加数据流的视频中的每个视频的帧。所述系统进一步包括:用于提供第一视频的解码帧以及所述一个或多个附加数据流中的视频中的每个视频的解码帧以用于显示的装置。
这些以及其它方面、优点、和替选方案通过在适当的情况下参照附图来阅读以下具体实施方式,对于本领域的普通技术人员将变得显而易见。
附图说明
图1图示了可以实现示例方法的示例计算设备。
图2图示了示例计算设备的示例组件。
图3是图示了将多个编码视频流组合以用于同时解码的示例方法的流程图。
图4A图示了示例视频数据流的示例组件。
图4B图示了示例视频数据流的示例子分量或子部分。
图5A图示了视频数据流的示例帧。
图5B图示了视频数据流的示例片。
图5C图示了所组合的视频数据流的示例帧。
图6图示了示例经排序的数据流以及表示该示例经排序的数据流的所组合的流。
图7图示了另一所组合的视频数据流的示例帧。
图8图示了另一所组合的视频数据流的示例帧。
图9图示了示例片以及对示例片进行组合的示例输出帧。
图10表示具有不同帧速率的示例有序数据流以及表示该示例有序数据流的所组合的流。
具体实施方式
以下具体实施方式参照附图描述了所公开的系统和方法的各个特征和功能。在附图中,除非上下文另外指示,否则相似的附图标记标识相似的组件。本文所描述的说明性系统和方法的实施例并不意图进行限制。可以容易地理解,所公开的系统和方法的某些方面能够以广泛多种不同的配置来布置和组合,其中全部为本文中可以设想到的。
给定计算设备可以具有协助计算设备对编码的视频进行解码的视频解码器。在一些情况下,视频解码器可在计算设备内被实现为专用硬件,其被配置成执行用作解码视频的特定代码算法。专用硬件可以支持同时对特定数目的视频流进行解码。例如,专用硬件可以包括总共两个硬件解码器单元,其中的每个解码器单元可以支持一次对一个视频解码。
同时,一些应用可以提供同时显示比专用硬件能够同时解码的更多的视频。例如,支持同时与多个计算设备的群组聊天的视频聊天应用可以提供同时显示来自每个计算设备的视频流。作为另一示例,新闻馈送应用可以提供在多个新闻项的新闻馈送中在每个新闻项旁边对预览视频的显示。当应用提供对比给定计算设备在硬件上所支持的更多的视频流的同时显示时,计算设备可以使用软件解码器来对所述视频流中的一个或多个进行解码。然而,在通用处理器上以软件来解码通常不如在硬件解码器上解码有效率。在一些情况下,软件解码器正在其上执行的通用处理器的速度可能不足以对一个或多个视频流实时解码。此外,在一些情况下,以软件解码可以显著增大处理器利用,这可能以各种方式对用户体验带来负面影响,(诸如通过致使UI令人感觉缓慢或没有响应)。在一些情况下,与使用专用硬件对视频进行解码所使用的电池电量相比,以软件来对视频进行解码还可能使用相对更多的电池电量。作为利用软件解码器解码的替选方式,制造者可以在其计算设备中包括附加解码单元。然而,此方案可能增加计算设备的成本和电力消耗。
在示例内,提供了方法和系统以用于经由单个视频解码器对多个经压缩的视频源进行解码以供同时显示。例如,处理器可以接收两个或更多数据流,其均表示编码视频。然后,处理器可以将所述两个或更多数据流组合成输出数据流,其表示具有来自所述两个或更多数据流中的每个数据流的内容的帧。然后,处理器可以将该输出数据流作为输入提供给视频解码器,该视频解码器可以提供包括来自两个或更多视频流中的每个视频流的内容的解码的帧。然后,处理器可以将所输出的帧划分为它们的分量视频。
应当理解,本文所述的布置仅出于示例目的。因此,本领域技术人员将领会到,能够使用其它布置和其它元件(例如,机器、接口、功能、顺序、和功能的分组等)作为替代,并且可以根据所期望的结果来将一些元件完全省略。此外,所描述的元件中的许多是可以被实现为功能实体,所述功能实体可以被实现为分立或分布式的组件或者可以与其它组件结合、以任何合适的组合和位置来被实现,或者被描述为独立结构的其它结构元件可以被组合。
现在参照附图,图1图示了通过其可以实现示例方法的示例计算设备100。计算设备100可以包括由硬件106执行的应用102a和102b以及操作系统104。尽管示例计算设备100是智能电话,然而本公开的方面适用于诸如PC、膝上型计算机、平板计算机等的其它计算设备。
应用102a和102b中的每个应用可以包括指令,所述指令在被执行时致使计算设备100执行特定任务或功能。应用102a和102b可以是本地应用(即,由计算设备100的制造者和/或操作系统104的制造者安装),或者可以是由计算设备100的用户在购买计算设备之后安装的第三方应用。示例应用的不全面列表包括:媒体播放器应用,其接受媒体文件作为输入并且向输出设备生成对应视频和/或音频;视频库应用;视频通信应用(例如,视频聊天或视频呼叫应用);电子阅读器应用,其接受电子文档(书、杂志等)作为输入并且经由输出设备呈现文档的内容;馈送阅读器,其接受通过互联网递送的馈送(例如,RSS馈送和/或来自社交网站的馈送)作为输入并且经由输出设备呈现馈送;地图应用,其经由输出设备显示地图;笔记记录应用、书签应用、以及文字处理、电子表格、和/或演示应用,其接受特定格式的文件作为输入并且经由输出设备呈现它们以用于查看和/或编辑。
操作系统104可以与硬件106交互并且管理硬件106以向应用102a和102b提供服务。例如,应用102a可以请求操作系统104指令硬件106的集成相机捕获视觉图像并且请求硬件106将该图像存储到存储器。
例如,硬件106可以包括中央处理单元(CPU)、图形处理器(GPU)、存储器、输入/输出(I/O)接口、用户输入设备、和输出设备。硬件106的组件可以由应用102a和102b以及操作系统104中所包含的指令来控制。
中央处理单元(CPU)可以是可操作以通过执行存储在存储器或盘储存器中的指令来实现计算设备100的操作。这样的指令可以包括操作系统104以及应用102a和102b。例如,CPU可以包括单核或多核处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、和/或任何其它合适的电路。
图形处理器可以是可操作以基于从CPU接收的指令和/或数据来生成视频流以用于输出至屏幕。即,与将要显示在屏幕上的图像相对应的数据结构可以由CPU存储到存储器或盘储存器以及从其读取。CPU可以经由标准化的应用编程接口(API)来将这样的数据结构传送至图形处理器,所述标准化API(诸如例如标准微件工具箱(SWT)、DirectX视频加速API、视频解码加速框架API、或者其它合适的API)。
存储器可以包括程序存储器和运行时存储器。例如,存储器可以包括非易失性存储器、易失性存储器、只读存储器(ROM)、随机存取存储器(RAM)、闪速存储器、磁储存器和/或任何其它合适的存储器。程序存储器可以存储可由CPU执行以实现操作系统104以及应用102a和102b的操作的指令。运行时存储器可以存储在操作系统104或者应用102a和102b的执行期间生成或使用的数据。
输入/输出(I/O)接口可以是可操作以从输入设备接收信号,并且将对应的信号提供给CPU和/或图形处理器。
例如,输入设备可以包括鼠标、触摸板、运动传感器、轨迹球、语音识别设备、键盘、或者使得用户能够与计算设备100交互的任何其它合适的输入设备。
例如,输出设备可以包括屏幕和扬声器。例如,屏幕可以是液晶显示器(LCD)屏幕、OLED屏幕、电子墨水屏幕、和/或用于呈现图形用户界面的任何其它合适的设备。
图2图示除了别的示例以外的、诸如图1中的示例计算设备100的示例计算设备的示例组件。在一些示例中,图2所图示的一些组件可以跨多个计算设备分布。然而,为了示例起见,组件作为一个示例设备200的部分被示出并描述。设备200可以是或者可包括移动设备、台式计算机、膝上型计算机、电子邮件/消息设备、平板计算机、或者可被配置为执行本文所描述的功能的相似设备。
在一些实现方式中,设备200可包括可以被配置成多层的Linux平台的设备平台(未示出)。设备平台可以包括不同的应用和应用框架,以及各种内核、库、和运行时实体。在其它示例中,其它格式或系统也可以操作设备200。
设备200可以包括接口202、无线通信组件204、蜂窝无线电通信组件206、传感器208、数据储存器210、和处理器212。图2中所图示的组件可以通过通信链路216来被链接在一起。设备200还可包括实现设备200内的通信以及设备200与诸如服务器实体的另一计算设备(未示出)之间的通信的硬件。例如,该硬件可以包括发射器、接收器、和天线。
接口202可以被配置为允许设备200与诸如服务器的另一计算设备(未示出)通信。因此,接口202可以被配置为从一个或多个计算设备接收输入数据,并且也可以被配置为将输出数据发送至一个或多个计算设备。在一些示例中,接口202还可以保持和管理由设备200接收和发送的数据的记录。在其它示例中,数据的记录可以由设备200的其它组件来保持和管理。接口202还可以包括接收器和发射器以接收和发送数据。在其它示例中,接口202还可以包括诸如键盘、麦克风、触摸屏等的用户接口以也接收输入。
无线通信组件204可以是被配置为促进根据一个或多个无线通信标准的设备200的无线数据通信的通信接口。例如,无线通信组件204可以包括Wi-Fi通信组件,其被配置为促进根据一个或多个IEEE802.11标准的无线数据通信。作为另一实例,无线通信组件204可以包括蓝牙通信组件,其被配置为促进根据一个或多个蓝牙标准的无线数据通信。其它示例也是可能的。
蜂窝无线电组件206可以是被配置为根据一个或多个蜂窝无线电标准来促进无线数据通信的通信接口。例如,蜂窝无线电组件206可以包括被配置为根据一个或多个蜂窝标准促进无线数据通信的蜂窝无线电,所述蜂窝标准(诸如全球移动通信系统(GSM)、码分多址、长期演进(LTE)、全球微波互联接入(WiMax)等)。
传感器210可以包括一个或多个传感器,或者可以表示包括在客户端设备200内的一个或多个传感器。示例传感器包括加速度计、陀螺仪、计步器、光传感器、麦克风、相机、或者其它位置和/或情景感知传感器。
数据存储设备212可以存储能够由处理器212访问和执行的程序逻辑218。数据存储设备210还可以存储数据220,其可以包括由无线通信组件204、蜂窝无线电通信组件206、GPS 208、以及任何传感器210中的任一者接收的数据。例如,数据储存器212可以存储表示视频的一个或多个数据流。
处理器212可以是可以访问程序逻辑218的通用处理器,所述程序逻辑218能够由处理器212检索和执行。处理器可以包括可以被配置成对经编码视频进行解码的一个或多个解码器222。可以由一个或多个解码器222处理的示例视频编解码器的不全面列表包括:MPEG(例如,H.264/MPEG-4 AVC和H.265/MPEG-H HEVC)、Windows媒体视频(WMV)、On2(例如,VP8和VP9)、Sorenson、Dirac、Cinepak、和RealVideo。
设备200被示出为包括图形处理单元(GPU)214。GPU 214可以被配置为控制设备200的其它方面,其(包括设备200的显示或输出)。除了别的示例以外,GPU 214可以包括一个或多个解码器224,其可以被配置为对使用以上所引用的视频编解码器中的一个或多个所压缩的视频进行解码。
通信链路216被示出为有线连接;然而,也可以使用无线连接。例如,除了其他可能性以外,通信链路216可以是诸如通用串行总线的有线串行总线或并行总线、或者使用例如短程无线无线电技术、IEEE 802.11(包括任何IEEE 802.11修订)中所描述的通信协议、或者蜂窝技术的无线连接。
本文中所描述的示例方法可由设备200的组件单独地执行,或者由设备200的组件中的一个或全部组合来执行。在一个实例中,例如,设备200的部分可以处理数据并且在设备200中向处理器212内部地提供输出。在其它实例中,设备200的部分可以处理数据并且向其它计算设备外部地提供输出。
图3是根据本文所描述的至少一些实施例的、提供经由视频解码器对多个压缩的视频源进行解码以用于同时显示的示例方法300的框图。除了其他示例以外,图3所示的方法300呈现了例如可以与诸如图1中的计算设备100或者图2中的设备200的计算设备一起使用的方法的实施例。方法300可以包括如302–308中的一个或多个框所图示的一个或多个操作、功能、或动作。尽管以依次的顺序图示所述框,这些框在一些实例中可以并行地、和/或以与本文所描述的那些顺序不同的顺序来执行。此外,基于所期望的实施方式,各个框可以被组合成更少的框、被划分为额外的方框、和/或被去除。
另外,对于方法300以及本文所公开的其它处理和方法,流程图示出本发明实施例的一个可能的实施方式的功能和操作。在这方面,每个框可以表示模块、片段、或者程序代码的一部分,其包括可由处理器执行以用于实现过程中的特定逻辑功能或步骤的一个或多个指令。例如,程序代码可以被存储在任何类型的计算机可读介质上,诸如包括盘或硬盘驱动器的存储设备。例如,计算机可读介质可以包括非暂时性计算机可读介质,诸如在短时间段内存储数据的计算机可读介质,如寄存器存储器、处理器高速缓存、和随机存取存储器(RAM)。例如,计算机可读介质也可以包括诸如二级存储或持久性长期存储的非暂时性介质,如只读存储器(ROM)、光盘或磁盘、压缩盘只读存储器(CD-ROM)。计算机可读介质也可以是任何其它易失性或非易失性存储系统。例如,计算机可读介质可以被视为计算机可读存储介质、有形存储设备、或者其它制品。例如,程序代码(或者代码的数据)也可以被存储或被提供在包括通信介质的其它介质上,诸如无线通信介质。
此外,对于本文所公开的方法300以及其它过程和方法而言,图3中的每个框可以表示被连线以执行过程中的特定逻辑功能的电路。
方法300的功能可以完全由计算设备的处理器执行,或者可以跨计算设备的多个组件分布。在一些示例中,方法300的功能可以跨多个计算设备和/或服务器分布。
在方框302,方法300包含接收表示第一视频的编码帧的第一数据流并且接收表示第二视频的编码帧的第二数据流。尽管本文中将接收第一数据流和接收第二数据流的功能作为一个功能来讨论,然而它们可以被实现为可以以不同的方式执行的单独的功能。此外,尽管以示例的方式描述了第一数据流和第二数据流,然而本方法可以包含接收诸如第三数据流和第四数据流的多个数据流。
例如,图2中的设备200的处理器212可以接收第一数据流和第二数据流。在一些示例中,例如,处理器212可以经由接口202和通信链路216从另一计算设备接收第一数据流和第二数据流。在其它示例中,处理器212可以经由通信链路216从数据储存器210接收第一数据流和第二数据流。当经由接口202接收第一数据流和第二数据流时,计算设备200可以在数据储存器210中临时地存储(即,缓冲)第一数据流和第二数据流。替选地,计算设备200可以将第一数据流和第二数据流作为视频文件存储在数据储存器210中。其它示例也是可能的。
视频可以包括图像(也称作帧)的序列。如上所指出,第一数据流可以表示第一视频的编码帧,第二数据流可表示第二视频的编码帧。例如,任何合适的计算设备可以使用视频编解码器将第一视频的一个或多个帧编码为第一数据流。此外,任何合适的计算设备可以将第二视频的一个或多个帧编码为第二数据流。任何合适的视频编解码器可以被用于对帧进行编码,包括但不限于MPEG开发的编解码器(例如,H.264/MPEG-4 AVC和H.265/MPEG-HHEVC)、Windows媒体视频(WMV)、On2编解码器(例如,VP8和VP9)、Sorenson、Dirac、Cinepak、或RealVideo。尽管处理器可以接收第一视频和第二视频作为编码数据流,然而对第一视频和/或第二视频进行编码不是本发明的方面所必需的。
取决于被用于对第一视频进行编码的视频编解码器,第一数据流和第二数据流可以被布置成不同的格式。如上所指出,在一些情形下,可以使用H.264/MPEG-4 AVC(H.264)编解码器将视频编码为H.264比特流。适当编码的H.264比特流包含足够的信息以使用解码器来对编码帧解码。视频的H.264编码帧通常被称作画面;然而,为了简单,本说明书将使用术语“帧”来一般地指代视频的H.264视频的帧和画面。H.264比特流被划分为被称作网络抽象层(NAL)分组的分组。其它编解码器也可以将数据流格式化为分组,或者可以使用替选的数据格式。
图4A图示了示例NAL分组400。如图所示,NAL分组400被划分为报头402和有效载荷406。报头402可以指示分组的类型。NAL分组的类型可以包括帧数据(例如,片数据)或报头数据(例如,参数集合)等。基于分组的类型,则有效载荷可以包含不同类型的数据。
然后,图4B图示了包括不同类型的NAL分组的序列的示例H.264比特流420。如图所示,比特流420包括两个代表性片数据分组428和430,并且可以包括附加片数据分组。H.264比特流的帧被划分为表示帧的内容的一个或多个片。尽管H.264比特流可以将帧划分为两个或多个片,然而H.264比特流也可以将每个帧的内容中的全部表示为一个相应片。
比特流420包括两种类型的头:序列参数集(SPS)422和画面参数集(PPS)424。序列参数集422包含指代NAL分组的序列(例如,表示视频的帧的片分组的序列)的信息。SPS 422可以指示关于序列的多种信息,诸如序列所表示的帧的高度和宽度。画面参数集(PPS)424包含指代一个或多个帧的信息。
比特流420也包括即时解码刷新(IDR)分组426。IDR分组包含将一个帧解码所需的信息。一些H.264比特流使用预测性编码,其包含参照其它分组中的信息来对帧进行编码或解码。解码器可以通过参照IDR分组来对比特流中的一个或多个后续帧进行解码。IDR分组也可以被称作关键帧或I帧。
再参照代表性片数据分组428和430,与其它NAL分组一样,每个片数据分组可以包括片报头和数据。片数据分组428通过示例方式被示出为包括片报头440和数据442。数据442被进一步划分为宏块阵列460。如图所示,宏块阵列460包括至少一个宏块462,但是可以包括多个宏块。H.264格式将片划分为被称作宏块的处理单元。许多视频编解码器使用某些类型的处理单元。本说明书中使用术语宏块来指代H.264宏块以及其它MPEG编解码器中的宏块、H.265编解码器中的代码化树单元、VP8/9编解码器中的巨型块(megablock)、以及任何编解码器中的帧的任何其它相似或等同部分。
在H.264编解码器中,片报头包含关于片的信息。例如,除了其他参数以外,片报头可以指示片中的第一宏块的地址。在H.264下,以光栅扫描顺序(即,左至右、上至下)来对帧中的宏块编址。其它编解码器可以以不同的方式对帧的分量部分编址,其中的全部都在本文中设想到。片报头也可以指示分组属于帧的哪个片,诸如第一片或第二片。
图5A图示了示例帧502a和504a,其分别为第一视频和第二视频的示例帧。帧502a和504a的内容中的全部被表示成一个片。图5B图示了分别表示示例帧502a和504a的示例片502b和504。示例片502b和504b均被划分为16个宏块,所述宏块以光栅扫描顺序从0至15编址。
尽管图5B以光栅扫描顺序示出片502a和504b的宏块,在比特流中,每个片的宏块可以是宏块阵列的顺序元素,如图4B的阵列460所例示的。通过参照报头中的数据——诸如片的高度和宽度以及片中的第一宏块的地址,解码器能够将宏块的序列布置成帧。例如,片502b具有4宏块的高度、4宏块的宽度,并且片中的第一宏块在地址0处。因此,在光栅扫描排序(左至右、上至下)下,片502b的第一宏块在帧的左上角的地址0处,如图5B所示。由于片的宽度为4宏块,所以如图所示,第一行包括帧的前四个宏块,被编址为宏块1、2和3)。又如图所示,第二行包括接下来的四个宏块,第三行包括之后接下来的四个宏块,并且第四行包括最后四个宏块。如上所指出,片的高度为4宏块,并且因此阵列中有四行宏块。
尽管通过示例方式描述了H.264比特流,本公开可以设想到由其它编解码器使用的不同格式。贯穿本说明书在描述H.264的组件中所使用的术语旨在指代H.264组件以及其它编解码器中的任何等同结构。例如,“报头”指代诸如序列参数集、画面参数集、和每个片报头的H.264报头。并且,“报头”一般也指代包含关于数据流的信息的数据流的任何部分。“帧”指点H.264画面或帧,并且一般也指示任何其它编解码器中的对应结构。“宏块”具体指代H.264并且一般指代由其它编解码器使用的帧的子分量。在本说明书内使用的其它术语通常也旨在指代其它编解码器。
在框304处,方法300包含将所接收的第一数据流和所接收的第二数据流组合成输出数据流。输出数据流可以表示第一视频的编码帧和第二视频的编码帧,使得解码器可以将该输出数据流解码为表示该第一视频和该第二视频二者的输出格式。
输出数据流可以被配置为表示已编码的输出帧。处理器可以将来自第一数据流的帧和来自第二数据流的帧组合成以编码的输出帧。图5C图示了包括第一片502c和第二片504c的示例输出帧500。处理器可以将来自第一数据流的帧(例如,由片502b表示的帧502a)和来自第二数据流的帧(例如,由片504b表示的帧504a)组合成已编码的输出帧500。
处理器可以将来自所接收的数据流的帧组合成不同的布置。在一些实施例中,处理器可以将来自所接收的数据流的帧布置成垂直堆栈。例如,图5C的片502c被垂直地堆叠在片504c上。在其它实施例中,处理器可以将来自所接收的数据流的帧布置成网格。
为了通过特定解码器来解码,处理器可以将所接收的数据流的帧配置成不同的布置。例如,一些解码器可以支持对不宽于最大帧宽度的帧进行解码。另外,一些解码器所支持的最大帧宽度可能够相对窄,使得帧的一些水平布置可能超过最大帧宽度。为了针对这样的解码器来布置来自所接收的数据流的帧,所述帧可以被垂直地彼此堆叠,创建相对高且窄的帧。图6图示了包括处于垂直堆叠的配置的片602、604、606、和608的示例帧600。此外,一些解码器可以支持至多对相对窄的最大帧高度的帧进行解码,当一定数目的帧被垂直地堆叠时可能超过该最大帧高度。在这样的情形下,处理器可以将帧布置成网格。图7图示了片702、704、706、和708被布置成矩形网格的示例帧700。
处理器可以逐帧地将来自第一数据流和第二数据流的帧组合。如上所指出,第一视频和第二视频可以分别由序列中的第一帧和序列中的第二帧表示。帧的每个序列可以包括第一帧、第二帧、第三帧等。处理器可以将第一数据流的第一帧和第二数据流的第一帧组合成输出数据流的第一输出帧。处理器也可以将第一数据流的第二帧和第二数据流的第二帧组合成输出数据流的第二输出帧。处理器可以重复该过程直到该过程到达任一数据流的最后一帧。
图8图示了示例数据流802(即,第一数据流)和示例数据流804(即,第二数据流)。数据流802表示第一视频的八个帧的序列。如图所示,序列中的每个帧被标记有从0至7的其在序列中的位置。类似地,如图所示,数据流804表示第二视频的八个帧的序列并且序列中的每个帧被标记有从0至7的其在序列中的位置。数据流806(即,输出数据流)表示数据流802和数据流804的组合。类似数据流802和804,数据流806表示视频的八个帧的序列并且序列中的每个帧被标记有从0至7的其在序列中的位置。处理器已经将数据流802和804组合成数据流806。位置0处的数据流806的帧表示位置0处的数据流802的帧和位置0处的数据流804的帧。类似地,位置1处的数据流806的帧表示位置1处数据流802的帧和位置1处的数据流804的帧。并且,位置2-7处的数据流806的帧分别表示位置2-7处的数据流802的帧和位置2-7处的数据流804的帧。
处理器可以使用各种技术来将第一数据流和第二数据流组合成输出数据流。例如,处理器可以将数据流解码、将视频组合成输出视频、并且然后将该输出视频编码为输出数据流。替选地,处理器可以将第一数据流和第二数据流组合成输出数据流,而无需对第一数据流和第二数据流完全解码。例如,处理器可以生成输出流并且将编码帧布置在输出流内。替选地,处理器可以修改第一数据流以包括第二数据流。其它示例也是可能的。
如上所指出,在一些实施例中,在处理器将第一数据流的帧与第二数据流的帧组合之前,解码器可以将第一数据流和第二数据流解码。例如,在诸如智能电话或平板计算机的移动计算设备上执行的应用可以向服务器请求第一视频和第二视频,该服务器可通过诸如互联网的网络来访问。然后,服务器可以将第一视频和第二视频作为第一数据流和第二数据流来分别发送至具有一个或多个视频编码器/解码器和至少一个处理器的中间计算设备(例如,服务器)。所述一个或多个视频编码器/解码器可以将第一数据流和第二数据流解码为第一和第二视频。然后,中间计算设备的处理器可以将第一视频的帧与第二视频的帧组合成输出视频。然后,所述一个或多个视频编码器/解码器可以将输出视频编码为输出数据流。然后,中间计算设备可以将输出数据流发送至移动计算设备,该移动计算设备可以使用其解码器将输出数据流解码。
在一些实施例中,将所接收的数据流组合成输出数据流可以包含在每个所接收的数据流的一个或多个报头中定义由所接收的数据流表示的帧是输出数据流的分量部分。例如,再参照图5A至图5C,第一视频的帧502a可以由第一数据流的片502b表示。在第一数据流内,片502b可以是片数据类型的特定NAL分组。片数据分组可以具有包含一个或多个参数的报头,所述参数向解码器指示片502b(并且进而,帧502a)是第一数据流的一部分。片504b也可以具有它自己的报头,其指示片504b(并且因此帧504a)是第二数据流的一部分。当解码器对片数据分组进行解码时,解码器可以参照所述一个或多个参数来确定片数据分组是在哪个数据流中的。相同数据流的NAL分组在它们各自的报头中均可以具有相同的指示,其在被解码时可以将分组聚集到相同视频中。
处理器可以使用这样的参数来将第一数据流和第二数据流组合成输出数据流。对于所接收的第一数据流的每个帧,处理器可以从第一数据流的报头解码(或解析)一个或多个参数,其指示该帧是第一数据流的片。然后,处理器可以定义(或重新定义)所述一个或多个参数以指示该帧是相应输出帧的第一片。并且,对于所接收的第二数据流的每个帧,处理器可以从第二数据流的报头解码一个或多个参数,其指示该帧是相应输出帧的第二片。例如,处理器可以在片502b的报头中定义片502b是帧500的片502c,并且也在片504b的报头中定义片504b是帧500的片504c。然后,例如,当帧500被解码时,解码器将帧502a的内容布置作为输出数据流的帧500的片502c,而非作为第一数据流的片502b。并且,解码器将帧504a的内容布置作为输出数据流的帧500的片504c。
报头中被用于指示该帧是输出帧的片的特定参数可以基于被用于对所接收的数据流进行编码的编解码器而变化。在一些情况下,一个或多个参数可以明确地将该帧定义为输出帧的片。在其它情况下,所述一个或多个参数可以隐含地将帧定义为输出帧的片。例如,改变报头中的地址可以将帧定义为输出帧的片。
为了生成输出数据流,处理器可以创建定义该输出数据流的报头。例如,对H.264而言,处理器可以创建SPS分组。输出数据流的报头可以指示输出帧是输出数据流的一部分。处理器还可以在报头中定义输出数据流的多种参数,诸如输出帧高度和输出帧宽度。参数中的一些可以基于第一数据流和/或第二数据流的方面。例如,处理器可以从第一数据流和第二数据流解码(或解析)第一帧高度和第二帧高度,其可以分别指示第一数据流和第二数据流的帧的高度。然后,在垂直地堆叠帧时,处理器可以在报头中将输出帧的高度定义为第一帧高度与第二帧高度之和。例如,在将片502b和504b组合成帧500时,处理器可以将输出数据流的帧高度定义为8个宏块,将帧宽度定义为4个宏块,因为两个片均为4宏块高和4宏块宽。
替选地,为了生成输出数据流,处理器可以将第一数据流定义为输出流,并且然后将来自其它所接收的数据流的帧连结(concatenate)到第一数据流。处理器还可以从第一数据流的一个或多个报头解码参数,并且在必要时重新定义所述一个或多个参数。例如,处理器可以解析出第一数据流的帧高度,并且将帧高度重新定义为第一数据流的帧的帧高度和与第一数据流组合的每个附加数据流的帧的高度之和。
为了在输出帧内布置第一数据流的帧和第二数据流的帧,处理器可定义(或重新定义)包含在所接收的数据流的一个或多个报头内或者输出数据流的报头中的各种参数。如上所指出,片报头可以包含片中的第一宏块的地址的指示。例如,当将片502b和504b组合成帧500时(即,垂直堆叠的配置),处理器可以将片504c的第一宏块的地址定义为地址16。地址16从第一片的最后一个宏块的地址(即地址15,指示片502c的第十六宏块)增量了一个宏块。作为另一实例,参照图6,为了如图所示将片602、604、606、和608布置成垂直堆叠的配置,处理器可以将第一片(片602)的第一宏块的地址定义为0。处理器还可以将片604、606、和608的第一宏块的地址分别定义为16、32、和48。这些地址中的每个从前一片的最后一个宏块的地址增量一个宏块。通过以此方式定义片604、606和608的片中的第一宏块的位置,处理器可以将每个片的每个宏块阵列垂直地连结至前一阵列。
处理器还可以使用这样的技术来将每个所接收的数据流的相应帧组合成具有网格布局的输出帧。例如,考虑处理器接收第一数据流、第二数据流、第三数据流、和第四数据流。每个所接收的数据流表示相应视频的帧。每个视频的帧在数据流中被表示为一个四乘四片,其被划分为十六宏块的阵列。通过示例的方式,图7的片702、704、706、和708可以表示这样的片。为了将片702、704、706、和708布置成图7的矩形网格布置,处理器可以将片702、704、706、和708的第一宏块的地址定义为地址0、地址4、地址32、和地址36。以这种方式,片704中的宏块的阵列被水平地连结到片702中的宏块的阵列。并且,片706中的宏块的阵列被垂直地连结到片702中的宏块的阵列,片708中的宏块的阵列被水平地连结到片706中的宏块的阵列。
如上所指出,一些解码器可以具有最大帧高度和/或最大帧宽度限制。在一些情况下,处理器可以使用网格布局来避免这些限制。例如,如果两个帧中的每个帧的相应帧高度之和小于或等于特定解码器的最大帧高度,则处理器可以将两个帧布置成垂直堆叠的配置。并且,如果两个帧中的每个帧的相应帧高度之和大于特定解码器的最大帧高度,则处理器可以将两个帧水平地布置。这样的配置可以指示对于帧的垂直堆叠的配置的优选。一些实施例可以优选帧的不同配置。
一些编解码器需要按照解码顺序(例如,光栅扫描顺序)来排列帧的分量部分(例如,片和宏块)。然而,将所接收的数据流的帧组合为输出帧的一些组合可以导致到达解码器的每个片的宏块的阵列不具有解码顺序。然后,处理器和解码器可以不按顺序来对片进行解码。例如,H.264包括被称作任意片排序的特征,其允许解码器以任何顺序接收输出帧的片。对于每个片,处理器可以将指示片的片长度(即,宏块阵列中的元素的数量)和片中的第一宏块的宏块地址的一个或多个参数解码。然后,处理器使用所述一个或多个解码的参数来将每个片单独发送至解码器。然后,解码器可以在其接收到帧的片中的全部之后将帧解码,或者解码器可以按照它们到达解码器的顺序来对片进行解码。
一些解码器可能需要输出数据流的编码帧具有一致的帧宽度。在示例内,处理器可以从第一数据流的报头解码出指示第一数据流的编码帧的宽度的第一帧宽度。处理器还可以从第二数据流的报头解码出指示第二数据流的编码帧的宽度的第二帧宽度。然后,处理器可以确定第一帧宽度等于第二帧宽度。然后,在某一点处——诸如在生成输出数据流期间,处理器可以在输出数据流的报头中定义编码输出帧具有等于所述编码帧的宽度。
然而,在一些情况下,第一数据流的编码帧和第二数据流的编码帧可以具有不同的帧宽度。在一些示例中,则该方法还可以包含对所接收的数据流中的一个数据流的帧进行填充以使帧宽度相等。例如,参照图9,片902a和904a可以分别表示第一数据流的帧和第二数据流的帧。片902a和904a分别具有4宏块和3宏块的帧宽度。处理器可以确定片904a的帧宽度小于片902a的帧宽度。然后,处理器可以利用附加宏块数据来填充片904a,使得片904a的宽度等于片902b的宽度。然后,处理器可以将片902a和片904a组合成输出帧900。在输出帧900被解码之后,处理器可以提供用于在没有附加宏块数据的情况下显示第二数据流的帧。
在一些情况下,第一视频(由第一数据流表示)和第二视频(由第二数据流表示)可以具有不同的帧速率。例如,参照图10,数据流1002可以表示具有第一帧速率的第一视频,该第一帧速率是数据流1004所表示的第二视频的第二帧速率的三倍。在示例内,处理器可以将帧插入第二数据流以使得数据流的帧速率相等。例如,处理器可以在第二数据流的每个帧之后将两个帧插入数据流1004中。然后,数据流1002和数据流1004以相同的帧速率被组合成数据流1006。为了使得第二视频的内容不被改变,每个所插入的帧的内容可表示第二数据流中与所插入的帧相邻的帧的内容。例如,由P_SKIP宏块组成的被称作P帧的一种帧可以被插入帧中,使得所插入的帧的内容表示前面的帧的内容。P帧使用来自先前帧的数据来对P帧中的内容进行解码。
此外,当所接收的数据流被组合时,一些编解码器可能需要所接收的数据流的关键帧间隔相等以便将输出数据流解码。关键帧(也称作I帧)不需要其它视频帧来解码。处理器可插入帧来使所接收的数据流的关键帧间隔相等。例如,当第二视频具有低于第一视频的帧速率时,处理器可在第二数据流中的每个关键帧之后插入特定数目的帧。在一些示例中,所插入的帧可以是由P_SKIP宏块组成的P帧。如上所指出,帧的所述特定数目可以与所接收的数据流的帧速率之差成比例。
其它编解码器可以许可不同的关键帧间隔。对于这样的编解码器,处理器可以将不同类型的帧类型组合以用于由与该编解码器兼容的解码器解码。例如,处理器可以将来自第一数据流的I帧与来自第二数据流的P帧组合。
在框306处,该方法包含将输出数据流解码为输出表面格式,其包括在相应非重叠区域的第一视频的解码帧和第二视频的解码帧。例如,图2的处理器212可以使用作为处理器212的组件的解码器222来对输出数据流进行解码。替选地,处理器212可以将输出数据流提供给诸如GPU 214的不同的处理器,该不同的处理器可以使用解码器224对输出数据流进行解码。作为另一示例,处理器212可以将输出数据流经由接口202发送至诸如移动计算设备的另一计算设备上的解码器。
例如,输出表面格式可以将输出数据流的每个帧表示为像素数据的阵列。像素数据的每个阵列可以表示不同的区域中的第一视频的帧和第二视频的帧。然后,处理器可以从所述不同的区域采样以将输出表面格式划分为第一视频和第二视频。
在框308处,该方法包含提供第一视频的解码帧和第二视频的解码帧以用于显示。例如,处理器212可以将解码帧提供给接口202。如上所述,接口202可以包括诸如触摸屏的屏幕,当每个视频的解码帧被处理器提供给接口202时所述屏幕可以显示它们。
在一些示例中,处理器212可以提供第一视频和第二视频以用于在不同时间显示。例如,在第一呈现时间,处理器212可以从输出表面格式采样第一视频并且提供该第一视频以用于显示。在第二呈现时间,处理器212可从输出表面格式采样第二视频并且提供该第二视频以用于显示。
在其它示例中,处理器212可以提供第一视频和第二视频以用于同时显示。第一视频和第二视频的同时显示可以包含将每个视频的解码帧置于显示器上的相应任意定位的位置。第一视频和第二视频的同时显示可以具有多种应用。作为一个示例,第一视频(被表示在第一数据流中)和第二视频(被表示在第二数据流中)可以分别表示来自第一设备的视频呼叫和来自第二设备的视频呼叫。通过将来自两个设备的视频呼叫组合并且将视频呼叫解码为组合的输出数据流,这两个视频呼叫可以同时被硬件解码,这可以实现视频聊天应用的各种各样的特征。例如,视频聊天应用可以支持在单个群组聊天中更大数目的并发用户或者在群组聊天期间以更高的帧速率显示视频呼叫。
在一些示例中,第一视频和第二视频可以表示相应视频的视频预览。例如,新闻馈送应用可以提供在每个新闻项旁边显示视频预览。通过应用本发方法,处理器可将视频预览组合在输出数据流中,并且然后通过对所述输出数据流进行解码来将它们一起解码。这可以实现新闻馈送应用的多种特征。例如,两个或更多的视频预览可同时播放。替选地,视频库应用可以使用视频预览来指示库中的每个视频。其它应用也是可能的。
在示例内,处理器可以将所接收的数据流划分为集合。然后,处理器可以将集合中的数据流组合为输出数据流。处理器可以基于数据流的特性来针对每个群组选择特定数据流。例如,如上所指出,一些解码器可能需要所组合的数据流的关键帧间隔相等。从所接收的数据流,处理器可以解析指示该数据流的关键帧间隔的一个或多个参数。然后,处理器可以选择具有相同关键帧间隔的特定数据流作为集合。类似地,处理器可以选择具有相同帧宽度的帧的特定数据流作为集合。基于诸如帧速率的其它参数的选择也是可能的。
尽管本文中已经公开了多个方面和实施例,但是其它方面和实施例对于本领域技术人员将是显而易见的。本文所公开的多个方面和实施例是处于说明性目的并且不意图进行限制,其中由所附权利要求书指示真正的范围连同这样的权利要求所享有的等同物的全部范围。还应当理解,本文所使用的术语仅为了描述特定实施例,并且不意图进行限制。

Claims (13)

1.一种用于将编码视频组合的方法,包括:
接收表示第一视频的第一数据流,其中,所述第一数据流包括帧的第一序列,所述帧的第一序列包括第一帧内代码化的帧;
接收表示第二视频的第二数据流,其中,所述第二数据流包括帧的第二序列,所述帧的第二序列包括第二帧内代码化的帧,其中所述第一视频具有第一帧速率,所述第一帧速率高于所述第二视频的第二帧速率;
在所述第二数据流的第二帧内代码化的帧之后,将特定数目的帧插入所述第二数据流中,其中,所述特定数目的帧与所述第一帧速率与所述第二帧速率之间的差成比例;
将所接收的第一数据流和所接收的第二数据流组合,以获得编码输出帧的输出数据流,使得编码输出帧包括所述第一序列的相应帧和所述第二序列的相应帧,并且使得第一帧内代码化的帧与相应第二帧内代码化的帧被组合在所述输出流内的相应编码输出帧中;以及
将所述输出数据流发送到解码器,以将所述输出数据流解码为所述第一视频和所述第二视频。
2.根据权利要求1所述的方法,其中,将所接收的第一数据流和所接收的第二数据流组合成编码输出帧的输出数据流进一步包括:
将所述第一数据流的第一帧间代码化的帧与所述第二数据流的相应第二帧间代码化的帧组合。
3.根据权利要求1所述的方法,其中,所述第一帧内代码化的帧被划分为相应的第一代码化单元阵列,并且其中,所述第二帧内代码化的帧被划分为相应的第二代码化单元阵列,并且其中,将所接收的第一数据流和所接收的第二数据流组合包括:将给定的第一代码化单元阵列与给定的第二代码化单元阵列组合,以获得编码输出帧。
4.根据权利要求1所述的方法,进一步包括:
由解码器将编码输出帧的所述输出数据流解码为输出表面格式,所述输出表面格式包括所述第一视频的解码帧和所述第二视频的解码帧。
5.根据权利要求1所述的方法,其中,所述第一数据流和所述第二数据流中的每个表示以下中的一个:视频预览、视频广告、或者视频呼叫。
6.一种具有存储在其上的指令的非暂时性计算机可读介质,所述指令在被处理器执行时使得所述处理器执行操作,所述操作包括:
接收表示第一视频的第一数据流,其中,所述第一数据流包括帧的第一序列,所述帧的第一序列包括第一帧内代码化的帧;
接收表示第二视频的第二数据流,其中,所述第二数据流包括帧的第二序列,所述帧的第二序列包括第二帧内代码化的帧,其中所述第一视频具有第一帧速率,所述第一帧速率高于所述第二视频的第二帧速率;
在所述第二数据流的第二帧内代码化的帧之后,将特定数目的帧插入所述第二数据流中,其中,所述特定数目的帧与所述第一帧速率与所述第二帧速率之间的差成比例;
将所接收的第一数据流和所接收的第二数据流组合,以获得编码输出帧的输出数据流,使得编码输出帧包括所述第一序列的相应帧和所述第二序列的相应帧,并且使得第一帧内代码化的帧与相应第二帧内代码化的帧被组合在所述输出流内的相应编码输出帧中;以及
将所述输出数据流发送到解码器,以将所述输出数据流解码为所述第一视频和所述第二视频。
7.根据权利要求6所述的计算机可读介质,其中,将所接收的第一数据流和所接收的第二数据流组合成编码输出帧的输出数据流进一步包括:
将所述第一数据流的第一帧间代码化的帧与所述第二数据流的相应第二帧间代码化的帧组合。
8.根据权利要求6所述的计算机可读介质,其中,所述第一帧内代码化的帧被划分为相应的第一代码化单元阵列,并且其中,所述第二帧内代码化的帧被划分为相应的第二代码化单元阵列,并且其中,将所接收的第一数据流和所接收的第二数据流组合包括:将给定的第一代码化单元阵列与给定的第二代码化单元阵列组合,以获得编码输出帧。
9.根据权利要求6所述的计算机可读介质,其中,所述操作进一步包括:
由解码器将编码输出帧的所述输出数据流解码为输出表面格式,所述输出表面格式包括所述第一视频的解码帧和所述第二视频的解码帧。
10.根据权利要求6所述的计算机可读介质,其中,所述第一数据流和所述第二数据流中的每个表示以下中的一个:视频预览、视频广告、或者视频呼叫。
11.一种用于将编码视频组合的设备,包括:
一个或多个处理器;以及
被配置成存储指令的数据储存器,所述指令在被所述一个或多个处理器执行时使得所述设备:
接收包括第一编码帧的序列的第一数据流,其中,每个第一编码帧被划分为相应的第一代码化单元阵列;
接收包括第二编码帧的序列的第二数据流,其中,每个第二编码帧被划分为相应的第二代码化单元阵列,其中所述第一数据流表示具有第一帧速率的第一视频,并且其中,所述第二数据流表示具有低于所述第一帧速率的第二帧速率的第二视频;
在所述第二数据流的第二帧内代码化的帧之后,将特定数目的帧插入所述第二数据流中,其中,所述特定数目的帧与所述第一帧速率与所述第二帧速率之间的差成比例;
将所接收的第一数据流和所接收的第二数据流组合成编码输出帧的输出数据流,使得编码输出帧包括第一代码化单元阵列和第二代码化单元阵列,其中,所述第一代码化单元阵列与所述第二代码化单元阵列组合;以及
将所述输出数据流发送到解码器,以将所述输出数据流解码为所述第一视频和所述第二视频。
12.根据权利要求11所述的设备,其中,所述指令进一步使得所述设备:
由解码器将编码输出帧的所述输出数据流解码为输出表面格式,所述输出表面格式包括所述第一视频的解码帧和所述第二视频的解码帧。
13.根据权利要求11所述的设备,其中,将所接收的第一数据流和所接收的第二数据流组合包括:将给定的第一代码化单元阵列与给定的第二代码化单元阵列连结,以获得编码输出帧。
CN201580022233.4A 2014-05-01 2015-04-28 将多个编码视频组合以经由视频解码器解码的方法和系统 Active CN106464930B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US14/267,486 2014-05-01
US14/267,486 US9031138B1 (en) 2014-05-01 2014-05-01 Method and system to combine multiple encoded videos for decoding via a video docoder
US14/682,864 US9866860B2 (en) 2014-05-01 2015-04-09 Method and system to combine multiple encoded videos into an output data stream of encoded output frames
US14/682,864 2015-04-09
PCT/US2015/028036 WO2015168150A1 (en) 2014-05-01 2015-04-28 Method and system to combine multiple encoded videos for decoding via a video decoder

Publications (2)

Publication Number Publication Date
CN106464930A CN106464930A (zh) 2017-02-22
CN106464930B true CN106464930B (zh) 2019-05-03

Family

ID=53038265

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580022233.4A Active CN106464930B (zh) 2014-05-01 2015-04-28 将多个编码视频组合以经由视频解码器解码的方法和系统

Country Status (4)

Country Link
US (2) US9031138B1 (zh)
EP (1) EP3138289B1 (zh)
CN (1) CN106464930B (zh)
WO (1) WO2015168150A1 (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105554500B (zh) * 2015-12-15 2018-08-21 华中科技大学 基于rcm译码符号不等分配的视频传输方法及系统
US20170332096A1 (en) * 2016-05-11 2017-11-16 Advanced Micro Devices, Inc. System and method for dynamically stitching video streams
JP6387511B2 (ja) * 2016-06-17 2018-09-12 株式会社アクセル 画像データ処理方法
WO2018023553A1 (en) * 2016-08-04 2018-02-08 SZ DJI Technology Co., Ltd. Parallel video encoding
JP6732337B2 (ja) * 2016-12-09 2020-07-29 株式会社アクセル 画像データ処理方法
WO2018105515A1 (ja) * 2016-12-09 2018-06-14 株式会社アクセル 画像データ処理方法
JP6723173B2 (ja) * 2017-02-10 2020-07-15 富士フイルム株式会社 画像処理装置、方法およびプログラム
US10397594B2 (en) * 2017-04-28 2019-08-27 Hewlett Packard Enterprise Development Lp Real-time processing of IoT data
US10976984B2 (en) * 2017-06-08 2021-04-13 T1V, Inc. Multi-group collaboration system and associated methods
CN109963185B (zh) * 2017-12-26 2022-09-02 杭州海康威视数字技术股份有限公司 视频数据发送方法、视频显示方法、装置、系统及设备
CN109218655A (zh) * 2018-11-13 2019-01-15 宁波启拓电子设备有限公司 无纸化多媒体会议方法、无纸化多媒体会议系统
CN113302928B (zh) * 2018-12-29 2023-01-10 浙江大华技术股份有限公司 传输多视频流的系统和方法
CN110248221A (zh) * 2019-06-18 2019-09-17 北京物资学院 一种视频广告动态插入方法及装置
CN112449190A (zh) * 2019-09-05 2021-03-05 曙光网络科技有限公司 一种并发视频会话ipb帧图像组的解码方法
US11082473B1 (en) * 2020-03-15 2021-08-03 Tfi Digital Media Limited Method for complexity reduction in video coding by coding parameters reuse
CN113453026B (zh) * 2020-03-26 2023-03-24 阿里巴巴集团控股有限公司 视频数据处理方法、装置、电子设备及计算机存储介质
EP4017001A1 (en) * 2020-12-17 2022-06-22 Axis AB Method and digital video camera for forming a combined image frame of a combined video stream
CN113115073B (zh) * 2021-04-12 2022-09-02 宜宾市天珑通讯有限公司 可降干扰的图像编码方法、系统、设备及介质
US20220337855A1 (en) * 2021-04-20 2022-10-20 Samsung Electronics Co., Ltd. Operation of video decoding engine for evc

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5691768A (en) * 1995-07-07 1997-11-25 Lucent Technologies, Inc. Multiple resolution, multi-stream video system using a single standard decoder
CN101106447A (zh) * 2007-06-15 2008-01-16 北京创毅视讯科技有限公司 一种移动多媒体广播系统及其单频网系统和单频网适配器
CN101682764A (zh) * 2007-05-31 2010-03-24 高通股份有限公司 用于图像代码转换的位速率降低技术

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5453780A (en) * 1994-04-28 1995-09-26 Bell Communications Research, Inc. Continous presence video signal combiner
JP2001069474A (ja) 1999-08-25 2001-03-16 Nec Corp 多地点制御装置及びそれに用いる映像表示方法
US20040022202A1 (en) 2002-08-05 2004-02-05 Chih-Lung Yang Method and apparatus for continuously receiving images from a plurality of video channels and for alternately continuously transmitting to each of a plurality of participants in a video conference individual images containing information concerning each of said video channels
AU2002351218A1 (en) 2001-12-04 2003-06-17 Polycom, Inc. Method and an apparatus for mixing compressed video
US7898951B2 (en) * 2003-08-13 2011-03-01 Jones Farm Technology 2, Llc Encoding and transmitting variable bit streams with utilization of a constrained bit-rate channel
KR20090004658A (ko) * 2007-07-02 2009-01-12 엘지전자 주식회사 디지털 방송 시스템 및 데이터 처리 방법
KR20100036330A (ko) * 2007-08-02 2010-04-07 소니 주식회사 화상 처리 장치
US8457214B2 (en) * 2007-09-10 2013-06-04 Cisco Technology, Inc. Video compositing of an arbitrary number of source streams using flexible macroblock ordering
US8214857B2 (en) * 2008-05-29 2012-07-03 International Business Machines Corporation Generating a combined video stream from multiple input video streams
AU2010206977B2 (en) * 2009-01-26 2016-02-25 Interdigital Vc Holdings, Inc. Frame packing for video coding
US8213506B2 (en) * 2009-09-08 2012-07-03 Skype Video coding
US9596504B2 (en) 2010-07-23 2017-03-14 Unify Gmbh & Co. Kg Method for encoding of a video stream
EP2727340A4 (en) * 2011-06-29 2015-05-27 Rockstar Consortium Us Ip METHOD AND DEVICE FOR VIDEO CODING FOR PLAYBACKING MULTIPLE SPEEDS
US9277228B2 (en) * 2011-07-18 2016-03-01 Qualcomm Incorporated Adaptation parameter sets for video coding
US9485294B2 (en) * 2012-10-17 2016-11-01 Huawei Technologies Co., Ltd. Method and apparatus for processing video stream

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5691768A (en) * 1995-07-07 1997-11-25 Lucent Technologies, Inc. Multiple resolution, multi-stream video system using a single standard decoder
CN101682764A (zh) * 2007-05-31 2010-03-24 高通股份有限公司 用于图像代码转换的位速率降低技术
CN101106447A (zh) * 2007-06-15 2008-01-16 北京创毅视讯科技有限公司 一种移动多媒体广播系统及其单频网系统和单频网适配器

Also Published As

Publication number Publication date
US9031138B1 (en) 2015-05-12
WO2015168150A1 (en) 2015-11-05
EP3138289A1 (en) 2017-03-08
EP3138289B1 (en) 2019-12-18
US20150319452A1 (en) 2015-11-05
US9866860B2 (en) 2018-01-09
CN106464930A (zh) 2017-02-22

Similar Documents

Publication Publication Date Title
CN106464930B (zh) 将多个编码视频组合以经由视频解码器解码的方法和系统
CN107209693B (zh) 缓冲器优化
US9918094B2 (en) Compressing and representing multi-view video
US11677987B2 (en) Joint termination of bidirectional data blocks for parallel coding
US10432930B2 (en) Multi-video decoding with input switching
CN103581665A (zh) 转码视频数据
EP3767477A1 (en) Artificial intelligence processor and method of performing neural network operation thereof
WO2016045356A1 (zh) 屏幕共享方法和装置
CN104410857A (zh) 一种图像显示控制方法及相关设备
CN103843352A (zh) 用于在编码的比特流之间动态切换的技术
US20220286736A1 (en) Dynamic processing and display of multi-stream video content
CN106162174B (zh) 一种视频多分辨率编码方法和装置
CN102761739A (zh) 用来动态地调整视频译码复杂度的装置与方法
CN102770827A (zh) 用于在终端的屏幕上显示多媒体内容的方法
US20170163990A1 (en) Video transcoding method and system
US20200186580A1 (en) Dynamic rotation of streaming protocols
US20160142723A1 (en) Frame division into subframes
CN112565818B (zh) 二三维一体化的操作站平台构建方法和电子设备
US9361860B2 (en) Display apparatus, image post-processing apparatus and method for image post-processing of contents
US9092790B1 (en) Multiprocessor algorithm for video processing
KR102377449B1 (ko) 다중 코덱 기반의 전방위 몰입형 비디오에 대한 디코딩 방법 및 디코딩 장치
US20170188035A1 (en) Transcoding method and electronic apparatus
CN116916071A (zh) 视频画面显示方法、系统、装置、电子设备以及存储介质
CN115643410A (zh) 一种视频转码方法、装置、设备及计算机可读存储介质
KR101280227B1 (ko) 멀티미디어 데이터 디코딩 장치 및 방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: American California

Applicant after: Google limited liability company

Address before: American California

Applicant before: Google Inc.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant