CN116491123A - 在客户端装置上解码视频流 - Google Patents

在客户端装置上解码视频流 Download PDF

Info

Publication number
CN116491123A
CN116491123A CN202180078215.3A CN202180078215A CN116491123A CN 116491123 A CN116491123 A CN 116491123A CN 202180078215 A CN202180078215 A CN 202180078215A CN 116491123 A CN116491123 A CN 116491123A
Authority
CN
China
Prior art keywords
video
stream
decoding function
operating system
decoding
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.)
Pending
Application number
CN202180078215.3A
Other languages
English (en)
Inventor
D·汉德佛德
F·夏尔巴芬
D·帕拉诺
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.)
V-Nova Ltd
Original Assignee
V-Nova 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 V-Nova Ltd filed Critical V-Nova Ltd
Publication of CN116491123A publication Critical patent/CN116491123A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/440227Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by decomposing into layers, e.g. base layer and one or more enhancement layers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/33Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the spatial domain
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • 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
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/414Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance
    • H04N21/41407Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance embedded in a portable device, e.g. video client on a mobile phone, PDA, laptop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/8166Monomedia components thereof involving executable data, e.g. software
    • H04N21/8173End-user applications, e.g. Web browser, game

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

本申请涉及在客户端装置上解码视频流。所述客户端装置上的客户端应用调用由媒体播放器库实施的解码功能,所述解码功能包含对由所述客户端装置的操作系统实施的解码功能的另一调用,且经修改以包含关于所述视频流是否使用多层译码方案编码的确定。如果是,则处理所述视频流以提取基础流和增强流,使用对由所述操作系统实施的所述解码功能的所述另一调用解码所述基础流,解码所述经编码增强流,将所述经解码增强流应用于所述经解码基础流以生成经解码视频流数据,且将所述经解码视频流数据传回到由所述媒体播放器库实施的所述解码功能。

Description

在客户端装置上解码视频流
技术领域
本发明涉及用于在客户端装置上解码视频流的方法、设备、计算机程序和计算机可读介质。
背景技术
视频内容的编码和解码是许多已知系统中的考虑因素。视频内容可经编码以供例如在数据通信网络上传输。当对此视频内容进行解码时,可能需要增加视频的质量水平和/或恢复原始视频中所含的尽可能多的信息。已经开发许多视频译码格式及其相关联编解码器,其尝试实现这些所期望的特性,但常常需要操作系统层级处的重大软件更新和/或硬件升级。此外,为了增加经解码视频内容的质量,通常需要增加编码和解码程序的复杂性,这可能增加功率使用并增加可递送视频内容的时延。
发明内容
根据本公开的第一方面,提供一种在客户端装置上解码视频流的方法。所述方法包括:从客户端装置上的客户端应用调用由客户端装置上可用的媒体播放器库实施的解码功能,由媒体播放器库实施的所述解码功能包含对由客户端装置的操作系统实施的解码功能的另一调用;修改由媒体播放器库实施的解码功能以包含关于视频流是否使用多层译码方案编码的确定;以及响应于确定视频流使用多层译码方案编码:处理视频流以提取多层译码方案的基础流和增强流;使用对由客户端装置的操作系统实施的解码功能的所述另一调用来解码基础流以生成经解码基础流;解码经编码增强流以生成经解码增强流;将经解码增强流应用于经解码基础流以生成经解码视频流数据;以及将经解码视频流数据传回到由媒体播放器库实施的解码功能。
所述客户端装置可以是装置。操作系统可以是由/>开发的操作系统,例如iOS、macOS或tvOS。媒体播放器库可以是libvlc。多层译码方案可以是MPEG-5第2部分低复杂性增强视频编码(LCEVC)。
可使用多层解码功能执行经编码增强流的解码。多层解码功能可包括相对于基础流对操作系统视频解码功能的调用,且可被配置成将增强流的经解码版本应用于对操作系统视频解码功能的调用的输出以生成经解码视频流数据。
所述方法可在支持例如LCEVC等多层译码方案的经修改视频工具箱模块内执行。经修改视频工具箱模块可经由VLCKit封装存取。经修改视频工具箱模块可通过将一个或多个补丁应用于libvlc,例如通过将一个或多个LCEVC特定补丁应用于libvlc来获得。对视频工具箱模块的修改可包括创建提供解码使用LCEVC方案编码的视频流的能力的的VTDecompressionSession对象的概括化。
方法可进一步包括创建VLCKit的例项。经编码视频流可解复用为CMSampleBuffer。方法可进一步包括确定视频流是否使用LCEVC编码。如果确定视频流使用LCEVC编码,则方法可包括从视频流提取LCEVC有效负载。LCEVC有效负载可使用VTDecompressionSession对象解码。方法可进一步包括将经解码LCEVC有效负载重排序为呈现次序。视频流中的增强流可经解码且应用于例如经解码LCEVC有效负载等经解码增强流,以生成经解码视频流。如果确定视频流不使用LCEVC编码,则方法可包括使用VTDecompressionSession对象解码视频流。在任一情况下,方法可进一步包括将经解码视频流传回为CVPixelBuffer。可确定CVPixelBuffer是否处于正确的次序。如果确定CVPixelBuffer不处于正确的次序,则CVPixelBuffer可重排序为呈现次序。方法可进一步包括将经解码视频流移出队列以供呈现。
根据本公开的第二方面,提供一种客户端装置。所述客户端装置包括:操作系统,其包括操作系统视频解码功能;客户端应用,其用于显示视频;以及媒体播放器库,其包括供客户端应用使用的媒体播放器视频解码功能,所述媒体播放器视频解码功能包括对操作系统视频解码功能的调用。媒体播放器视频解码功能经修改以包含在接收到使用多层译码方案编码的视频流后选择性地实施多层解码功能的操作系统视频解码功能的封装,所述视频流包括基础流和增强流,多层解码功能包括相对于基础流对操作系统视频解码功能的调用,所述多层解码功能被配置成将增强流的经解码版本应用于对操作系统视频解码功能的调用的输出以生成经解码视频流数据,且所述多层解码功能进一步被配置成将经解码视频流数据传回到媒体播放器视频解码功能以供客户端应用使用。
所述客户端装置可以是装置。操作系统可以是由/>开发的操作系统,例如iOS、macOS或tvOS。媒体播放器库可以是libvlc。多层译码方案可以是LCEVC。
媒体播放器视频解码功能可包含支持例如LCEVC等多层译码方案的经修改视频工具箱模块。经修改视频工具箱模块可经由VLCKit封装存取。经修改视频工具箱模块可通过将一个或多个补丁应用于libvlc,例如通过将一个或多个LCEVC特定补丁应用于libvlc来获得。对视频工具箱模块的修改可包括创建提供解码使用LCEVC方案解码的视频流的能力的的VTDecompressionSession对象的概括化。
客户端装置可进一步包括解复用器以将经编码视频流解复用为CMSampleBuffer。经修改视频工具箱模块可确定视频流是否使用LCEVC编码。如果确定视频流使用LCEVC编码,则可从视频流提取LCEVC有效负载。LCEVC有效负载可使用VTDecompressionSession对象解码。在此情况下,经修改视频工具箱模块可将经解码LCEVC有效负载重排序为呈现次序。视频流中的增强流可经解码且应用于经解码增强流,例如应用于经解码LCEVC有效负载,以生成经解码视频流。如果确定视频流并非使用LCEVC编码,则可使用VTDecompressionSession对象解码视频流。在任一情况下,经解码视频流可传回为CVPixelBuffer。可确定CVPixelBuffer是否处于正确的次序。如果确定CVPixelBuffer不处于正确的次序,则CVPixelBuffer可重排序为呈现次序。经解码视频流可移出队列以供呈现。
根据本公开的第三方面,提供一种存储指令的计算机可读存储介质,所述指令可由至少一个处理器执行以执行第一方面的方法。
从参考附图作出的仅借助于实例给出的以下描述将了解另外的特征。
附图说明
图1是用于在客户端装置上解码视频流的实例系统的示意图。
图2是根据实例在客户端装置上解码视频流的方法的流程图。
图3是根据其它实例在客户端装置上解码视频流的方法的流程图。
图4是用于解码视频的实例计算机系统层级阶层结构。
具体实施方式
数字信号的编码,也被称为压缩,是使用比用于表示原始信号(例如原始视频)的信息位少的信息位生成数字信号的表示的过程。当信息在原始信号和所生成表示之间损失时,编码过程可被描述为有损的。或者,当信息未在原始信号和所生成表示之间损失时,编码过程可被描述为无损的。例如表示视频内容的未经编码数字信号需要高数据传输速率,且因此常常经编码。
在数字视频内容的编码和解码过程中,增加的视频质量与编码和解码复杂性之间通常存在折衷。然而,随着MPEG-5第2部分低复杂性增强视频编码(LCEVC)(其细节可见于WO/2020/188273A1)以及包含2020年1月13日星期一至2020年1月17日星期五在布鲁塞尔召开的MPEG 129会议上发布的ISO/IEC DIS 23094-2低复杂性增强视频译码的草案的相关联标准规范文献(它们以引用的方式并入本文中)的出现,现有可能改进视频质量并减小编解码器的复杂性。这通过将使用基础编解码器(例如,先进视频译码(AVC)、高效视频译码(HEVC)或任何其它当前或将来的编解码器)编码的基础流与包括经译码数据的至少一个增强层级的增强流组合来实现。
将基础流与增强流组合允许以较低分辨率传输基础流,从而减小对数据通信网络的带宽要求。或者,可针对相同带宽以较高分辨率传输视频内容以产生比不将基础流与增强流组合的情况下可能实现的更高质量的视频。
尽管这实现相对于视频质量和复杂性降低的这些优点,但仍需要一种用于在客户端装置上实施LCEVC的方法,且具体地说用于将译码方案与此些装置的媒体播放器功能性和操作系统视频解码功能集成的方法。
图1是实例客户端装置100的示意图。客户端装置可以是例如任何一代的 等移动装置,或者例如膝上型计算机或台式计算机等另一计算装置。客户端装置通常包括适当的硬件组件以便于数据处理,例如一个或多个处理器、存储器、用户界面(UI)和/或至少一个图形处理单元(GPU)。
客户端装置100包括操作系统102,其是例如支持客户端装置100的基本功能性的客户端装置100的系统软件,所述基本功能性例如涉及客户端装置100的硬件和软件资源的管理。操作系统102包括用于解码经编码视频内容的操作系统视频解码功能104。操作系统视频解码功能104可被称为由操作系统实施的解码功能。因为操作系统102包括其自身的操作系统视频解码功能104,所以举例来说,操作系统102具有用于解码使用某些编解码器编码的视频流的本机支持。当客户端装置为装置时,操作系统可以是由美国库比蒂诺市的苹果公司开发的相应版本的操作系统。举例来说,当客户端装置为/>时,操作系统可以是任何版本的iOS。在另一实例中,客户端装置可以是任何/>装置,在此情况下,操作系统可以是任何版本的macOS。在另一实例中,客户端装置可以是/>TV装置,在此情况下,操作系统可以是任何版本的tvOS。
客户端装置100进一步包括用于显示视频的客户端应用106。客户端应用106可以是客户端装置100上的任何软件应用,其能够用于在联接到客户端装置100或并入在所述客户端装置内的显示器上渲染视频或以其它方式显示视频。客户端应用通常包含嵌入或以其它方式包含在应用本身内的视频内容。一个实例可以是客户端应用106内的视频辅导,其向用户阐释如何使用客户端应用106。另一实例是允许用户检视由社交媒体应用的其他用户上传的视频内容的社交媒体应用。
客户端装置100还包括媒体播放器库108,其在此实例中在客户端应用中提供至少一些资源来显示视频内容。媒体播放器库108与用于播放例如视频等媒体的操作系统102的媒体播放器相关联。
媒体播放器库108包括媒体播放器视频解码功能110,其可被称为由媒体播放器库实施的解码功能,供客户端应用106使用以解码经编码视频内容(在此情况下,结合操作系统视频解码功能102)。媒体播放器视频解码功能110包括对操作系统视频解码功能102的调用。这允许媒体播放器库108访问操作系统102的解码能力。
媒体播放器视频解码功能110经修改以包含在接收到使用多层译码方案编码的视频流后选择性地实施多层解码功能的操作系统视频解码功能104的封装。以此方式,可针对某些视频(例如使用多层译码方案编码的视频)利用多层解码功能。不同解码功能可用于其它视频。举例来说,例如对应于媒体播放器视频解码功能110而无修改的传统解码功能可用于使用与多层译码方案不同的方案编码的视频。
在实例中,使用多层译码方案编码的视频流包括基础流和增强流。基础流是例如使用基础编码器(也被称为基础压缩器)编码的且可由解码器(也被称为解压缩器)解码的下取样源信号。基础编码器可以是任何基础编码器,例如先进视频译码(AVC)、高效视频译码(HEVC)、VP9、MPEG-5基本视频译码(EVC)、通用视频译码(VVC)和AOMedia视频1(AV1)编码器。使用现有基础编码器(和解码器)作为编码(和解码)程序的一部分确保不能够解码多层视频内容的系统仍可使用现有基础编解码器解码基础流。这意味着,不需要对硬件的更新来解码使用多层译码方案编码的视频流,且也可使用将来的基础编解码器,而不必进行进一步硬件升级,条件是例如客户端装置100等系统的硬件经升级以变得与所述将来的基础编解码器兼容。
操作系统视频解码功能104被布置成解码基础流。举例来说,操作系统视频解码功能104可包括先进视频译码(AVC)、高效视频译码(HEVC)、VP9、MPEG-5基本视频译码(EVC)、通用视频译码(VVC)和AOMedia视频1(AV1)解码器中的至少一个。操作系统视频解码功能104可包括硬件解码器,使得操作系统视频解码功能104可利用硬件加速来解码基础流。这可通过将解码分担给硬件来减少由客户端装置100的中央处理单元(CPU)执行的计算的数目。硬件加速可提供一种更高效的实施例如涉及例如运动补偿和计算离散余弦逆变换等计算密集型过程的解码过程的方式。
增强流包括校正或以其它方式增强基础流的经编码残差集合。阶层式结构中可存在多个层级的增强数据。可使用被配置成从未经压缩全分辨率视频生成增强流的专用编码器编码增强流。
LCEVC增强流是使用多层译码方案编码的视频流的实例。在此情况下,视频流由LCEVC编码器编码;具体来说,基础流使用基础编码器编码,且LCEVC编码器使用基础解码器的输出来生成增强流。举例来说,可使用基础解码器解码经编码基础流,且来自经解码基础流的帧可连同原始输入帧(基础编码前)一起由LCEVC编码器访问以生成用于作为增强流的一个或多个层编码的残差数据的一个或多个层。但本文的实例还可应用于使用其它多层译码方案编码的视频流。
媒体播放器视频解码功能110经修改以包含操作系统视频解码功能104的封装。这允许媒体播放器视频解码功能110调用操作系统视频解码功能104,且利用操作系统视频解码功能104的资源。操作系统视频解码功能104的资源可由媒体播放器视频功能110使用以例如当确定所接收的经编码视频流使用多层解码功能编码时使用多层解码功能选择性地解码通过多层译码方案编码的视频流。
多层解码功能包括相对于基础流对操作系统视频解码功能104的调用。如上文所论述,操作系统视频解码功能104可操作以解码经编码基础流。来自多层解码功能的对操作系统视频解码功能104的调用因此允许解码由多层译码方案编码的视频流的基础流。换句话说,操作系统102的本机解码能力可用以解码基础流。
在实例中,多层解码功能还可操作以解码由多层译码方案编码的视频流的增强流以生成经解码版本的增强流。以此方式,修改媒体播放器视频解码功能110以包含用以选择性地实施多层解码功能的操作系统视频解码功能104的封装允许解码增强流。这例如通过允许解码使用例如多层译码方案等较先进编解码器编码的视频流而增加媒体播放器视频解码功能110的功能性。在实例中,可以此方式增加媒体播放器视频解码功能110的功能性,而不更改客户端装置100的基础硬件,方式是通过以简单且灵活的方式利用媒体播放器库108和操作系统102的现有功能性。举例来说,可直截了当地改变操作系统视频解码功能104的封装,例如使得多层解码功能可操作以解码使用不同多层解码方案编码的视频,而不改变媒体播放器库108和/或操作系统102的基础功能性。
在这些实例中,多层解码功能接着将经解码版本的增强流应用于对操作系统视频解码功能104的调用的输出以生成经解码视频流数据。这将经解码基础流与经解码版本的增强流组合为单个经解码视频流,所述经解码视频流通常具有比经解码基础流更高的质量。举例来说,经解码版本的增强流可包括添加到经解码基础流以生成输出的经解码视频流的残差数据的一个或多个层。
多层解码功能进一步被配置成将经解码视频流数据传回到媒体播放器视频解码功能110以供客户端应用106使用。举例来说,经解码视频流数据可例如使用联接到客户端装置100的显示器在客户端应用106内显示。
在一些实例中,多层解码功能将经解码基础流的帧进行重排序。这可以是经解码基础流中的帧的次序不同于相关联的未经压缩全分辨率视频的次序时的情况。这可在解码基础流致使对经解码基础流的帧进行重排序时发生。在其中缺少增强流的实例中,基础流可以是所接收视频流数据内的唯一视频流,且因此帧的重排序可以是显示视频内容之前的最终步骤。然而,在当前实例中,经解码基础流与经解码增强流组合。因此,可能有必要在基础流经解码之后对经解码基础流的帧进行重排序以确保相关联的经解码版本的增强流应用于经解码基础流以生成最终经解码视频流数据且接着以适当的次序显示。
在一实例中,操作系统视频解码功能104的至少一个内部方法不可用于客户端应用106和媒体播放器库108中的至少一个,且因此可被认为是受限的功能。举例来说,对操作系统视频解码功能104的至少一个基础例程的访问可能受操作系统102的开发者限制。然而,客户端应用106和/或媒体播放器库108可调用操作系统视频解码功能104,而与对基础例程的此访问无关。换句话说,客户端应用106和/或媒体播放器库108可访问由操作系统视频解码功能104提供的功能性(其可涉及调用操作系统视频解码功能104的内部方法),而不能够单独地访问由内部方法本身提供的功能性。
现将相对于方法200更详细地描述在例如图1中展示的客户端装置100等客户端装置内解码使用多层译码方案编码的视频流所借助的过程。
在图2的框202处,从客户端装置上的客户端应用调用客户端装置上可用的媒体播放器库实施的解码功能。如上文所描述,客户端应用可包含客户端装置的用户可见的视频内容。为了在客户端应用中显示视频内容,客户端应用包含对媒体播放器库的调用。媒体播放器库包括在客户端应用内显示视频内容所需的至少一些资源。
由媒体播放器库实施的解码功能包含对由客户端装置的操作系统实施的解码功能的另一调用。操作系统包括由操作系统实施的解码功能,其例如包括用以解码视频流的经编码基础流的资源。
在框204处,由媒体播放器库实施的解码功能经修改以包含关于视频流是否使用多层译码方案编码的确定。如上文所论述,多层译码方案可以是LCEVC方案。所述确定可涉及检测视频流的至少一个特性。举例来说,视频流可包括指示视频流使用多层译码方案编码的元数据。所述确定可替代地或另外涉及检测视频流是否包括增强流。
如果确定视频流使用多层译码方案编码,则方法200进行到框206,在该处,处理视频流以提取多层译码方案的基础流和增强流。这可使用例如专用信号提取器或形成客户端装置的另一逻辑组件的部分的信号提取器等合适的信号提取器执行。
在框208处,使用对由操作系统实施的解码功能的另一调用解码基础流。换句话说,操作系统的本机资源可用于解码基础流。
在框210处,解码增强流。增强流可由如框204处修改的媒体播放器实施的解码功能解码。经解码增强流接着应用于经解码基础流以生成经解码视频流数据。举例来说,增强流可使用对多层解码器库的调用经解码且应用于经解码基础流,所述多层解码器库包含用于解码多层视频流的合适的解码功能。框204处由媒体播放器实施的解码功能的修改例如包含修改由媒体播放器实施的解码功能以提供对多层解码器库的访问。
在框212处,将经解码视频流数据传回到由媒体播放器库实施的解码功能。客户端应用可接着在客户端应用内接收和显示经解码视频流。
然而,如果确定视频流并非使用多层译码方案编码,则方法200进行到框214。在方法200的框214处,使用对由操作系统实施的解码功能的所述另一调用解码视频流。由媒体播放器库实施的解码功能的修改不影响操作系统的解码功能解码基础流的能力。因此,如果经编码视频流并非使用例如LCEVC等多层译码方案编码,则由操作系统实施的解码功能可解码经编码视频流,如同未对由媒体播放器实施的解码功能作出修改一般。经编码视频流可接着传递到由媒体播放器实施的解码功能且经解码以获得经解码视频流。经解码视频流可因此传递到客户端应用并由客户端应用显示。因此,方法200允许解码经编码视频流,不论其使用仅基础编解码器编码还是多层译码方案编码。方法200提供例如在不改变操作系统的硬件的情况下利用操作系统内的现有功能性的解码经编码视频的有效过程。
在经解码视频流数据传回到由媒体播放器库实施的解码功能之后(例如,在图2的框212处,或在已执行图2的框214之后),由媒体播放器库实施的解码功能可对经解码视频流数据的帧进行重排序。这可以是如下情况:解码基础流或将经解码增强流应用于经解码基础流以生成经解码视频流数据致使经解码视频流中的帧的次序不同于相关联的未经压缩全分辨率视频中的帧的次序。对经解码视频流数据的帧重排序确保视频流的所显示帧在重放时以正确的次序显示。在某些情况下,或者可在图2的框208处解码基础流之后执行类似的重排序。
在一实例中,在图2的方法200的框204处修改解码功能包括将补丁应用于媒体播放器库。举例来说,所述补丁改进媒体播放器库的功能性以允许其支持使用多层译码方案(例如,使用例如由操作系统实施的解码功能等操作系统资源)编码的视频流的解码。将补丁应用于媒体播放器库可包括修改包括用于由媒体播放器库实施的解码功能的计算机程序代码的文件,以及添加用于由客户端装置的操作系统实施的解码功能的另一文件。
在某些情况下,修改由媒体播放器库实施的解码功能另外包含将封装应用于由操作系统实施的解码功能(例如,如参考图1所描述),以选择性地实施多层解码功能(例如,以执行图2的框204到212)。所述封装例如允许使用由操作系统实施的解码功能来执行多层解码功能。举例来说,所述封装可充当到由操作系统实施的解码功能的接口以便解码基础流(例如,使用由操作系统实施的解码功能)和增强流(例如,使用对多层解码器库的调用),且组合经解码基础流和经解码增强流以获得经解码视频流数据(其可使用对多层解码器库的调用或另一调用执行)。
图2的方法200可使用客户端装置的恰当配置的软件或硬件实施。或者,用以实施方法200的指令当由(例如,合适的客户端装置的)一个或多个处理器处理时可存储在计算机可读存储介质上。
图3展示方法200的实例实施方案的方法300,其中操作系统是由美国库比蒂诺市的苹果公司开发的例如iOS、macOS和tvOS等操作系统,且多层译码方案为LCEVC。方法300描述视频工具箱模块324内的过程。图3的视频工具箱模块324是经修改版本的视频工具箱功能,其经由VLCKit封装访问。视频工具箱功能是用于与具有开发的操作系统的VT视频工具包功能一起使用的媒体库功能。VLCKit是libvlc的外部接口的封装,libvlc是可与装置一起使用的VLC媒体播放器的核心库,其中libvlc可被实施为提供系统层级库的可执行文件。在未经修改的情况下,视频工具箱模块324允许使用硬件加速框架(形成开发的操作系统的部分的来自/>的视频工具包),其解码例如先前论述的基础流等经编码视频流。当前实例修改视频工具箱模块324以允许框架可被修改以支持多层译码方案(在此情况下,LCEVC)。可通过将一个或多个LCEVC特定补丁应用于libvlc,例如通过在构建VLCkit例项之前在适当的文件夹中布置补丁,来实施所述修改。这提供必需的修改以便允许视频工具箱解码LCEVC-增强视频流。
所述修改涉及创建LCEVC DecompressionSession 326,其是未经修改的视频工具箱模块中的VTDecompressionSession对象的概括化,提供解码使用LCEVC方案编码的视频流的能力。在此实例中,LCEVC DecompressionSession 326还允许解码使用其它方案(例如单层译码方案)编码的视频流。
VTDecompressionSession是管理视频数据的解压缩的视频工具箱提供的会话对象,且是内置到开发的操作系统来解码基础流的操作系统视频解码功能。在LCEVCDecompressionSession 326中,VTDecompressionSession用以解码基础流,正如未经修改的视频工具箱模块中。LCEVC DecompressionSession 326进一步包括解码LCEVC编码流所需的额外结构,且参考图3的方法300描述。
方法300涉及创建VLCKit 302的例项。在此情况下,媒体播放器为VLC,libvlc为可经由VLCKit 300封装访问的媒体播放器库。libvlc库包含媒体播放器视频解码功能。
在框304处,将所接收的经编码视频流解复用为CMSampleBuffer。CMSampleBuffer是包括用于经由媒体管线移动媒体样本数据的视频的样本的对象。视频流接着由LCEVCDecompressionSession 326模块处理。
在框306处,确定视频流是否使用LCEVC编码,类似于方法200的框204。如果确定视频流使用LCEVC编码,则方法300进行到框308,其中从视频流提取LCEVC有效负载。LCEVC有效负载是使用基础编解码器编码的LCEVC流的基础流。
在框310处,使用VTDecompressionSession对象解码基础视频流。基础视频流的解码可致使经解码基础视频流的帧的次序不同于相关联的未经编码全分辨率视频中的帧的次序。因此,方法300涉及将经解码基础视频流重排序312为呈现次序。所述呈现次序对应于最终视频内容中的帧将被显示的次序。
在框314处,解码框处308提取的使用LCEVC编码的视频流中的增强流且将其应用于经解码基础视频流以生成经解码视频流。方法300的框314例如涉及对多层解码器库的调用,如参考图4进一步论述,以访问用以实施LCEVC解码过程的至少一个合适的功能。
如果在框306处确定视频流并非使用LCEVC编码,则使用VTDecompressionSession316对象来解码视频流,如未经修改的视频工具箱模块的情况。
在框314或316之后,经解码视频流传回为CVPixelBuffer。CVPixelBuffer是将像素保持在存储器中的图像缓冲器。在框318处,确定CVPixelBuffer是否处于供显示的正确的次序。如果CVPixelBuffer不处于正确的次序,则方法300进行到框320,其中对CVPixelBuffer进行重排序使得每一帧正确地排序,使得视频流提供原始视频的表示,如未经修改的视频工具箱模块的情况。
如果在框318处确定CVPixelBuffer经正确地排序,则方法300进行到框322,其中将经解码视频流移出队列以供呈现。
在图4中展示例如图3的框314处执行的如何解码LCEVC流的实例。图4示意性地展示用于在例如图1的客户端装置100等客户端装置上显示视频内容的组件的计算机系统层级阶层结构400。最高层级处为客户端应用402。此为将在其内显示视频的软件应用。用户可在联接到客户端装置的显示器上检视视频。客户端应用402使用VLCKit 404的例项来与libvlc 406(即,VLC媒体播放器的核心库)介接。核心libvlc库可包括允许将媒体播放器功能性并入到客户端应用402中的可执行计算机程序代码。在当前情况中,修改libvlc 406以包含允许libvlc支持LCEVC解码的一个或多个补丁。此可包括修改与libvlc 406一起实施或操作的一个或多个文件和/或计算机程序代码部分。libvlc406内的经修改模块408处理与经编码视频流相关联的数据,且将视频流的相关组件供应到例如包含操作系统视频解码功能和多层解码功能(例如,由多层解码器库提供)的相应解码器410。举例来说,基础流可由操作系统视频解码功能解码(如上文所描述),而增强流可使用以所述一个或多个补丁(其例如对应于多层解码器库)修改的libvlc解码。经解码视频内容可接着由客户端应用402接收以供显示。
以上实例应理解为说明性实例。设想其它实例。应理解,关于任何一个实例所描述的任何特征可单独使用,或与所描述的其它特征结合使用,且还可与任何其它实例或任何其它实例的任何组合的一个或多个特征结合使用。此外,上文未描述的等效物和修改也可在不脱离所附权利要求书的范围的情况下采用。

Claims (15)

1.一种在客户端装置上解码视频流的方法,所述方法包括:
从所述客户端装置上的客户端应用调用所述客户端装置上可用的媒体播放器库实施的解码功能,由所述媒体播放器库实施的所述解码功能包含对由所述客户端装置的操作系统实施的解码功能的另一调用;
修改由所述媒体播放器库实施的所述解码功能以包含关于所述视频流是否使用多层译码方案编码的确定;以及
响应于确定所述视频流使用多层译码方案编码:
处理所述视频流以提取所述多层译码方案的基础流和增强流;
使用对由所述客户端装置的所述操作系统实施的所述解码功能的所述另一调用解码所述基础流以生成经解码基础流;
解码所述经编码增强流以生成经解码增强流;
将所述经解码增强流应用于所述经解码基础流以生成经解码视频流数据;以及
将所述经解码视频流数据传回到由所述媒体播放器库实施的所述解码功能。
2.根据权利要求1所述的方法,其进一步包括,响应于确定所述视频流并非使用所述多层译码方案编码,使用对由所述操作系统实施的所述解码功能的所述另一调用解码所述视频流。
3.根据权利要求1或权利要求2所述的方法,其中由所述媒体播放器库实施的所述解码功能将传回到由所述媒体播放器库实施的所述解码功能的所述经解码视频流数据的帧重排序以供显示。
4.根据权利要求1至3中任一项所述的方法,其中所述客户端装置为移动装置。
5.根据权利要求1至4中任一项所述的方法,其中由操作系统实施的所述解码功能经硬件加速。
6.根据权利要求1至5中任一项所述的方法,其中所述客户端装置的所述操作系统为iOS、macOS和tvOS中的一个。
7.根据权利要求1至6中任一项所述的方法,其中所述多层译码方案为低复杂性增强视频译码(LCEVC)方案。
8.根据权利要求1至7中任一项所述的方法,其中所述修改所述解码功能包括将补丁应用于所述媒体播放器库。
9.根据权利要求8所述的方法,其中将所述补丁应用于所述媒体播放器库包括修改包括用于由所述媒体播放器库实施的所述解码功能的计算机程序代码的文件,以及添加用于由所述客户端装置的所述操作系统实施的所述解码功能的另一文件。
10.一种客户端装置,其包括:
操作系统,其包括操作系统视频解码功能;
客户端应用,其用于显示视频;以及
媒体播放器库,其包括供所述客户端应用使用的媒体播放器视频解码功能,所述媒体播放器视频解码功能包括对所述操作系统视频解码功能的调用,
其中所述媒体播放器视频解码功能经修改以包含在接收到使用多层译码方案编码的视频流后选择性地实施多层解码功能的所述操作系统视频解码功能的封装,
所述视频流包括基础流和增强流,
所述多层解码功能包括相对于所述基础流对所述操作系统视频解码功能的调用,所述多层解码功能被配置成将所述增强流的经解码版本应用于对所述操作系统视频解码功能的所述调用的输出以生成经解码视频流数据,且
所述多层解码功能进一步被配置成将所述经解码视频流数据传回到所述媒体播放器视频解码功能以供所述客户端应用使用。
11.根据权利要求10所述的客户端装置,其中所述多层译码方案为低复杂性增强视频译码(LCEVC)方案。
12.根据权利要求10或11中任一项所述的客户端装置,其中所述多层解码功能对所述经解码基础流的帧进行重排序以供显示。
13.根据权利要求10至12中任一项所述的客户端装置,其中所述操作系统视频解码功能的内部方法不可供所述客户端应用和所述媒体播放器库中的至少一个使用。
14.根据权利要求10至13中任一项所述的客户端装置,其中所述操作系统视频解码功能经硬件加速。
15.一种存储指令的计算机可读存储介质,所述指令可由至少一个处理器执行以执行根据权利要求1至9中任一项所述的方法。
CN202180078215.3A 2020-11-27 2021-11-26 在客户端装置上解码视频流 Pending CN116491123A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB2018743.1A GB2601484A (en) 2020-11-27 2020-11-27 Decoding a video stream on a client device
GB2018743.1 2020-11-27
PCT/GB2021/053076 WO2022112780A1 (en) 2020-11-27 2021-11-26 Decoding a video stream on a client device

Publications (1)

Publication Number Publication Date
CN116491123A true CN116491123A (zh) 2023-07-25

Family

ID=74099746

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180078215.3A Pending CN116491123A (zh) 2020-11-27 2021-11-26 在客户端装置上解码视频流

Country Status (7)

Country Link
US (1) US20240022743A1 (zh)
EP (1) EP4252422A1 (zh)
JP (1) JP2023550940A (zh)
KR (1) KR20230124552A (zh)
CN (1) CN116491123A (zh)
GB (1) GB2601484A (zh)
WO (1) WO2022112780A1 (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003005190A1 (en) * 2001-07-06 2003-01-16 E-Genie Australia Pty Limited Method and system for computer software application execution
US9179144B2 (en) * 2012-11-28 2015-11-03 Cisco Technology, Inc. Fast switching hybrid video decoder
CN111210496B (zh) * 2018-11-19 2022-11-25 腾讯科技(深圳)有限公司 一种图片解码方法、装置以及设备
GB2619627B (en) 2019-03-20 2024-02-28 V Nova Int Ltd Low complexity enhancement video coding

Also Published As

Publication number Publication date
KR20230124552A (ko) 2023-08-25
JP2023550940A (ja) 2023-12-06
GB202018743D0 (en) 2021-01-13
WO2022112780A1 (en) 2022-06-02
EP4252422A1 (en) 2023-10-04
GB2601484A (en) 2022-06-08
US20240022743A1 (en) 2024-01-18

Similar Documents

Publication Publication Date Title
CN106973298B (zh) 以gpu加速的软件视频转码器
US6044397A (en) System and method for generation and interfacing of bitstreams representing MPEG-coded audiovisual objects
US9749636B2 (en) Dynamic on screen display using a compressed video stream
KR20140006778A (ko) 이미지 압축을 위한 엔트로피 코더
US20240022744A1 (en) Methods, apparatuses, computer programs and computer-readable media for scalable image coding
CN114641976A (zh) 用于数据操纵的可打补丁的远程元素
US20240022743A1 (en) Decoding a video stream on a client device
WO2023073365A1 (en) Enhancement decoding implementation and method
CN113228665A (zh) 用于处理配置数据的方法、设备、计算机程序和计算机可读介质
WO2022243672A1 (en) Secure decoder and secure decoding methods
US20140333639A1 (en) System and method for forwarding a graphics command stream
US20210409735A1 (en) Methods, apparatuses, computer programs and computer-readable media for scalable video coding and transmission
US20210385468A1 (en) Methods, apparatuses, computer programs and computer-readable media for processing configuration data
EP2804095A1 (en) A system and method for forwarding a graphics command stream
US20240129500A1 (en) Flexible encoding of components in tiered hierarchical coding
WO2024060213A1 (en) Viewport switch latency reduction in live streaming
GB2617286A (en) Enhancement decoding implementation and method
WO2023203353A1 (en) Methods, bitstreams, apparatuses, computer programs and computer-readable media

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