CN107710757A - 用于缓慢运动视频记录的自适应批量编码 - Google Patents

用于缓慢运动视频记录的自适应批量编码 Download PDF

Info

Publication number
CN107710757A
CN107710757A CN201580080657.6A CN201580080657A CN107710757A CN 107710757 A CN107710757 A CN 107710757A CN 201580080657 A CN201580080657 A CN 201580080657A CN 107710757 A CN107710757 A CN 107710757A
Authority
CN
China
Prior art keywords
video
frame
coding
batch
buffer
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
CN201580080657.6A
Other languages
English (en)
Other versions
CN107710757B (zh
Inventor
N.罗
C.王
B.赵
Y.熊
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN107710757A publication Critical patent/CN107710757A/zh
Application granted granted Critical
Publication of CN107710757B publication Critical patent/CN107710757B/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/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/156Availability of hardware or computational resources, e.g. encoding based on power-saving criteria
    • 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/127Prioritisation of hardware or computational resources
    • 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/177Methods 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 a group of pictures [GOP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Studio Devices (AREA)
  • Television Signal Processing For Recording (AREA)

Abstract

讨论了涉及自适应地批量化用于缓慢运动视频记录的编码任务的技术。这样的技术可以包括在缓慢运动视频记录模式中缓冲视频帧以生成编码批量,提交包括视频帧的编码批量以用于编码,以及对编码批量进行编码以生成经编码的比特流。

Description

用于缓慢运动视频记录的自适应批量编码
背景技术
在一些视频记录情境中,视频记录设备(例如视频相机或包括视频记录能力的其它设备,诸如智能电话、平板电脑或其它设备)可以记录缓慢运动中的视频(例如用于缓慢运动回放)。例如,这样的缓慢运动视频记录能力可以在移动设备中变得更加常见。在一些缓慢运动视频记录实现方式中,缓慢运动相机记录可以以适度的分辨率(例如不是图像传感器的完整分辨率)和以更高的帧捕获速率(例如如与标准视频记录相比)操作。例如,可以以720P以120fps(每秒帧数)或720以240fps等来执行某种缓慢运动视频记录。
虽然经由这样的视频记录设备实现的一些处理器可以能够实时地处置这样的缓慢运动视频记录,但是在这样的设备中功耗保持关注,因为电池寿命对于消费者而言是主要的性能度量。用于缓解这样的功耗问题的当前技术包括减少缓慢运动视频记录的每秒帧数和/或基于后期制作帧率转换的时间拉伸(例如插入新生成的帧)。然而,这样的技术可能提供用于缓慢运动回放的较低质量视频,因为减少每秒帧数减少所获得的帧的量并且从而限制可以多缓慢地提供回放,并且通过插入新生成的帧的时间拉伸可能引入不合期望的伪像等。
以低功率使用来执行高质量缓慢运动视频记录可以是有利的并且从而延长设备电池寿命。正是关于这些和其它考虑而已经需要目前的改进。这样的改进在记录高质量缓慢运动视频的期望变得更加广泛时可以变得关键。
附图说明
通过示例的方式而不是通过限制的方式在附图中图示本文所描述的材料。为了图示的简化性和清楚性,图中图示的元件未必按照比例绘制。例如,为了清楚起见,一些元件的尺寸可能相对于其它元件而被夸大。另外,在被认为适当的情况下,已经在各图中重复参考标记以指示对应或类似的元件。在图中:
图1图示了用于自适应地批量化用于缓慢运动视频记录的编码任务的示例视频流水线;
图2是图示了用于控制视频记录和视频帧的缓冲的示例过程的流程图;
图3是图示了用于检索视频帧、提交视频帧以用于编码和监视编码以释放缓冲器的示例过程的流程图;
图4是图示了用于自适应地批量化用于缓慢运动视频记录的编码任务的示例过程的流程图;
图5是用于自适应地批量化用于缓慢运动视频记录的编码任务的示例系统的说明图;
图6是示例系统的说明图;以及
图7图示了全部依照本公开的至少一些实现方式布置的示例设备。
具体实施方式
现在参考随附各图来描述一个或多个实施例或实现方式。虽然讨论具体配置和布置,但是应当理解到,这仅仅为了说明目的而做出。相关领域技术人员将认识到,可以在不脱离说明书的精神和范围的情况下采用其它配置和布置。对相关领域技术人员将明显的是,还可以在除了本文所描述的之外的各种其它系统和应用中采用本文所描述的技术和/或布置。
虽然以下描述阐述可以在诸如例如片上系统(SoC)架构之类的架构中表明的各种实现方式,但是本文所描述的技术和/或布置的实现方式不限于特定架构和/或计算系统,并且可以通过用于类似目的的任何架构和/或计算系统来实现。例如,采用例如多个集成电路(IC)芯片和/或封装和/或各种计算设备和/或消费电子(CE)设备(诸如机顶盒、智能电话等)的各种架构可以实现本文所描述的技术和/或布置。另外,虽然以下描述可能阐述众多具体细节,诸如逻辑实现方式、系统组件的类型和相互关系、逻辑划分/集成选择等,但是可以在没有这样的具体细节的情况下实践所要求保护的主题。在其它实例中,可能并未详细示出某种材料,诸如例如控制结构和完整的软件指令序列,以免使本文所公开的材料模糊。
本文所公开的材料可以实现在硬件、固件、软件或其任何组合中。本文所公开的材料还可以实现为存储在机器可读介质上的指令,所述机器可读介质可以由一个或多个处理器读取和执行。机器可读介质可以包括用于以由机器(例如计算设备)可读的形式存储或传输信息的任何介质和/或机构。例如,机器可读介质可以包括只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光学存储介质;闪速存储器设备;电学、光学、声学或其它形式的传播信号(例如载波、红外信号、数字信号等)和其它。
在说明书中对“(多个)实现方式”、“(多个)示例”、“(多个)实施例”等的引用指示所描述的实现方式、示例或实施例可以包括特定特征、结构、特性等,但是每一个实现方式、示例或实施例不必包括所述特定特征、结构或特性。而且,这样的短语不一定都是指相同的实现方式、示例或实施例。另外,当结合实现方式、示例或实施例描述特定特征、结构或特性时,主张结合其它实现方式、示例或实施例实现这样的特征、结构或特性在本领域技术人员的知识内,无论本文是否明确描述。
本文描述涉及缓慢运动视频记录、并且特别地涉及自适应地批量化缓慢运动视频记录中的编码任务的方法、设备、装置、计算平台和制品。
如本文所描述的,缓慢运动视频记录(例如记录用于缓慢运动回放的视频)可以通过以诸如以120fps或240fps等之类的相比于用于针对标准回放的记录的30fps或60fps更高的帧率的记录来执行。在一些示例中,缓慢运动视频记录还可以以如相比于经由视频记录设备的图像传感器可得到的完整分辨率而言更低的分辨率(例如以720P等)来执行。另外,实时地以高质量和低功率使用来执行这样的缓慢运动视频记录可以是合期望的。
例如,在缓慢运动视频记录中,可以执行针对记录流的高速处理(例如编码任务)而可以以正常速度处理预览流(例如经由显示器向用户实时地呈现)。从功率使用的角度来看,这样的高速处理可能是不利的,使得这样的处理可能影响设备的功率性能活动。例如,在没有本文所讨论的技术的情况下,在720P相机记录示例中,可能为每一个输入帧而唤醒图形处理单元(GPU)和中央处理单元(CPU)。在其中帧的处理花费大约3毫秒(ms)的示例中,在120fps捕获处,唤醒周期可以是大约8.3ms,使得GPU和CPU被频繁唤醒并且不具有在操作期间进入更深的睡眠状态的机会。另外,每一个编码任务可能生成2或3个中断,使得继续120fps示例,可能每秒生成240至360个中断。这样的中断可能持续地唤醒CPU和/或GPU。
在本文所讨论的一些实施例中,视频记录设备(例如相机、视频相机或包括视频记录能力的设备,诸如智能电话、平板电脑、膝上型电脑等)可以基于来自用户交互或在设备上运行的应用等的缓慢运动视频记录信号、所请求的帧捕获速率大于或等于阈值(例如120fps)等而进入缓慢运动视频记录模式。在这样的缓慢运动视频记录模式中,可以缓冲多个视频帧以生成包括所述视频帧的编码批量。编码批量可以包括批量大小(例如批量大小确定编码批量中的视频帧的数目),诸如四个视频帧等。可以经由编码器(例如经由图形处理器等实现)在连续活跃状态期间(例如没有进入睡眠状态)对编码批量进行编码以生成经编码的比特流。可以保存(例如经由容器)、向用于存储或显示的远程设备传输经编码的比特流,等等。
在缓慢运动视频记录情境中,用于编码或编码任务的这样的自适应批量化(例如自适应批量调度)可以提供大幅功率节约。例如,实现编码器的处理器(例如图形处理器)可以在这样的批量编码之间的时间期间进入低功率状态。例如,当第一编码批量完成后,实现编码器的处理器可以进入低功率状态、睡眠状态等。实现编码器的处理器可以停留在这样的睡眠状态中直到提供第二编码批量。与在没有批量化的情况下提供用于编码的每一帧形成对照,这样的编码批量可以提供更长的低功率或睡眠持续时间(例如在批量之间),这可以是有利的。另外,这样的延长的低功率或睡眠持续时间可以允许实现编码器的处理器在这样的持续时间期间进入更深的低功率或睡眠状态。例如,与在以按帧方式编码期间进入低功率或睡眠状态的间歇性机会形成对照,如本文所讨论的编码批量化可以提供编码任务之间的延长的间断,使得实现编码器的处理器可以进入更深的低功率或睡眠状态。本文所讨论的技术可以从而降低图形处理器和/或中央处理器在缓慢运动记录情境中的唤醒频率。这样的技术可以从而在缓慢运动视频记录期间节约用于视频记录设备的大量功率。尽管本文关于缓慢运动记录来讨论,但是所讨论的技术可以使用在任何高速记录情境中。
图1图示了依照本公开的至少一些实现方式布置的用于自适应地批量化用于缓慢运动视频记录的编码任务的示例视频流水线100。如图1中所示,视频流水线100可以包括模式模块102、相机框架103、媒体框架104、帧批量化模块105、媒体驱动器106和图形处理器(GPU)107。在一些示例中,模式模块102、相机框架103、媒体框架104、帧批量化模块105、媒体驱动器106或其部分可以经由中央处理器或中央处理单元等来实现。另外,GPU 107可以实现编码器以执行编码任务(请参见图5)。在一些示例中,中央处理单元、GPU 107和实现缓冲器的存储器可以实现为片上系统(SoC)设备。
如所示,视频流水线100可以经由相机框架103生成输入视频帧121和/或输入视频帧(输入帧)131以用于处理。例如,视频帧121和视频帧131可以经由可以实现相机框架103的任何合适的模块或硬件等而生成,诸如相机模块、图像预处理模块等。另外,视频帧121和视频帧131可以包括任何合适的图像或视频数据。例如,视频帧121和视频帧131可以包括YUV(例如亮度-色度-色度)数据或诸如红-绿-蓝(RGB)颜色空间等之类的任何合适的颜色空间中的数据。例如,这样的YUV数据可以包括具有针对视频帧121和视频帧131中的相关联的视频帧的每一个像素的Y值、U值和V值的三个数据通道。如所讨论的,在一些示例中,可以经由相机模块、中央处理器、图形处理器等的图像或视频处理器来预处理视频帧121和视频帧131。在一些示例中,可以经由硬件抽象层来预处理视频帧121和视频帧131,所述硬件抽象层经由GPU 107和/或中央处理器等来实现。例如,相机框架103可以经由相机模块、图像预处理器、GPU 107和中央处理器中的一个或多个来实现。
另外,视频流水线可以提供经编码的比特流125和/或经编码的比特流136。经编码的比特流125和经编码的比特流136可以包括经由任何额合适的编码标准、编码技术等编码的任何合适的比特流数据。例如,经编码的比特流125和经编码的比特流136可以是H.264高级视频编码顺从比特流、H.265高效视频编码顺从比特流等。可以使用一种或多种任何合适的技术来进一步处理经编码的比特流125和经编码的比特流136。例如,可以向媒体驱动器106和/或媒体框架104提供经编码的比特流125和经编码的比特流136,其中它们可以与经编码的音频组合以生成打包的基本流等。另外,可以将经编码的比特流125和经编码的比特流136保存到本地存储器,提供到本地或远程显示器以用于呈现,传输到远程设备以用于存储或显示等。
视频流水线100可以经由任何合适的设备实现,诸如例如个人计算机、膝上型计算机、平板电脑、平板手机、智能电话、数字相机、游戏控制台、可穿戴设备、显示设备、多合一设备、二合一设备等,或诸如移动平台等之类的平台。例如,如本文所使用的,系统、设备、计算机或计算设备可以包括任何这样的设备或平台。另外,可以在各种情境中实现或利用视频流水线100,诸如经由标准视频处理模式120的标准视频记录情境、经由缓慢运动视频处理模式130的缓慢运动视频记录情境,或经由标准视频呈现(未示出)和缓慢运动视频处理模式130(例如用于缓慢运动记录)实现的标准视频呈现和缓慢运动视频记录情境。另外,在一些情境中,缓慢运动视频处理模式130可以表征为缓慢运动模式、缓慢运动视频记录模式等。
如所示,视频流水线100可以取决于标准视频处理模式120或缓慢运动视频处理模式130之间的所选操作模式而生成视频帧121或视频帧131。例如,模式模块102可以接收帧捕获速率/模式信号(FCR/MS)111。例如,FCR/MS 111可以包括所请求的帧捕获速率(例如基于用户输入而接收或从应用等接收)、所请求的模式信号(例如基于用户输入而接收或从应用等接收)等。
例如,在所请求的帧捕获速率的情境中,模式模块102可以接收所请求的帧捕获速率并且将其与阈值帧捕获速率比较以确定是经由标准视频处理模式120还是缓慢运动视频处理模式130来处理视频帧。所接收的所请求的帧捕获速率可以是任何合适的帧捕获速率,诸如30fps、60fps、120fps、240fps等。另外,阈值帧捕获速率可以是预确定的阈值、用户提供的阈值、系统确定的阈值等。阈值帧捕获速率可以基于所接收的所请求的帧捕获速率而限定视频流水线100实现标准视频处理模式120还是缓慢运动视频处理模式130。例如,阈值帧捕获速率可以是120fps,使得如果所请求的帧捕获速率小于120fps,视频流水线100实现标准视频处理模式120,并且如果所请求的帧捕获速率是120fps或更大(例如不小于120fps),视频流水线100实现缓慢运动视频处理模式130。
在经由FCR/MS 111接收的所请求的模式信号的情境中,模式模块102可以基于所接收的信号或指示符(例如指示标准模式或缓慢运动模式)而实现标准视频处理模式120或缓慢运动视频处理模式130。如所示,模式模块102可以基于操作模式而向帧批量化模块105提供批量信号(BS)112。如所示,在标准视频处理模式120中,BS 112可以关断帧批量化模块105,使得不执行帧批量化(例如实现为1的批量大小)。在缓慢运动视频处理模式130中,BS112可以接通帧批量化模块105。另外,在缓慢运动视频处理模式130中,BS 112可以提供用于批量化用于编码的帧的批量大小。例如,批量大小可以指示要包括在每一批视频帧中的帧的数目。批量大小可以是任何合适的批量大小,诸如两帧、三帧、四帧或更多。
如所示,在标准视频处理模式120中,相机框架103可以向媒体框架104提供视频帧121。在一些示例中,在经由相机框架103的处理与经由媒体框架104的处理之间,可以在存储器中缓冲视频帧121(例如经由环形缓冲器等)。例如,视频帧121可以由相机框架103输入到帧缓冲器并且由媒体框架104从帧缓冲器检索。如所示,当经由媒体框架104检索一个或多个帧和/或完成处理时,媒体框架104可以向相机框架103释放回表面123以用于后续帧。
视频帧121可以是以任何分辨率(例如720P)和小于经由模式模块102应用的帧率阈值(如果适用的话)的任何帧率,诸如30fps、60fps等。媒体框架104可以接收视频帧121并且媒体框架可以向媒体驱动器106提供视频帧122,媒体驱动器106可以提供这样的帧以用于经由GPU 107的编码。例如,视频帧122可以以分辨率和与视频帧121的帧率相等的帧率。例如,视频帧121和视频帧122可以提供相同的数据内容,但是这样的内容的持有者可以是不同的。例如,可以以适合于提交至媒体驱动器106并且经由GPU 107进行编码的格式提供视频帧122的持有者。在一些示例中,可以在经由媒体框架104的处理与经由媒体驱动器106的处理之间在存储器中缓冲视频帧122(例如经由环形缓冲器等)。例如,视频帧122可以由媒体框架104输入到帧缓冲器并且由媒体驱动器106从帧缓冲器检索。如所示,当经由媒体驱动器106检索一个或多个帧和/或完成处理时,媒体驱动器106可以向媒体框架104释放回表面124以用于后续帧。
GPU 107可以经由媒体驱动器106接收视频帧122和用于编码的任何控制信号,并且GPU可以编码视频帧122以生成经编码的比特流125。如所讨论的,可以存储、传输、进一步处理经编码的比特流等。如所示,在标准视频处理模式120中,可以不执行帧的批量化(例如帧批量化模块105可以关断,将批量大小设定到一,等)。
在缓慢运动视频处理模式130中,相机框架103可以向媒体框架104提供视频帧131。如所示,视频帧131可以具有关于视频帧121的更高帧率。如关于视频帧121所讨论的,在一些示例中,可以在经由相机框架103的处理与经由媒体框架104的处理之间在存储器中缓冲视频帧131(例如经由环形缓冲器等)。例如,视频帧131可以由相机框架103输入到帧缓冲器,并且由媒体框架104从帧缓冲器检索。如所示,当经由媒体框架104检索一个或多个帧和/或完成处理时,媒体框架104可以向相机框架103释放回表面134以用于后续帧。例如,表面134可以在完成批量处理之后作为批量返回(例如如本文进一步讨论的)。
视频帧131可以是以任何分辨率(例如720P)和大于或等于经由模式模块102应用的帧率阈值(如果适用的话)的任何帧率,诸如120fps、240fps等。媒体框架104可以接收视频帧131,并且媒体框架可以向媒体驱动器106提供批量的视频帧132、133。例如,帧批量化模块105可以实现为媒体框架104、实现为对媒体框架104的插件,或者实现为与媒体框架104分离的模块以基于视频帧131而生成批量的视频帧132、133。在一些示例中,批量的视频帧132、133可以基于经由批量信号122实现的批量大小而包括帧131中的多个帧。在所图示的示例中,批量大小为四帧。然而,如所讨论的,可以使用任何合适的批量大小。
如所示,媒体框架104和/或帧批量化模块105可以提供批量的视频帧132、133以用于经由GPU 107的编码。例如,批量的视频帧132、133中的帧可以以与视频帧131的分辨率相等的分辨率,但是可以修改帧率,使得以帧批量速率提供等于批量大小的数个帧。在所图示的示例中,可以以30帧批量每秒提供四帧的编码批量(例如以30批每秒的4×720P)。如关于视频帧121所讨论的,视频帧121和批量的视频帧132、133中的视频帧可以提供相同的数据内容,但是这样的内容的持有者可以是不同的。例如,可以以适合于提交至媒体驱动器106并且经由GPU 107进行编码的格式提供批量的视频帧132、133中的视频帧的持有者。
在一些示例中,可以在经由媒体框架104和/或帧批量化模块105的处理与经由媒体驱动器106的处理之间在存储器中缓冲批量的视频帧132、133(例如经由环形缓冲器等)。例如,批量的视频帧132、133可以由媒体框架104和/或帧批量化模块105输入到帧缓冲器并且由媒体驱动器106从帧缓冲器检索。如所示,当经由媒体驱动器106检索一个或多个帧和/或完成处理时,媒体驱动器106可以向媒体框架104和/或帧批量化模块105释放回表面135以用于后续帧。如所示,在一些示例中,可以在具有与批量的视频帧132、133中的帧的数目相同的表面数目的批量中释放表面135。在其它示例中,可以在每帧的基础上释放表面135。
GPU 107可以接收批量的视频帧132、133和用于经由媒体驱动器106的编码的任何控制信号,并且GPU 107可以编码批量的视频帧132、133以生成经编码的比特流136。例如,GPU 107可以在连续活跃状态期间编码批量的视频帧132。GPU 107可以在编码批量的视频帧132的完成后进入睡眠状态,并且GPU 107可以在接收到批量的视频帧133后从睡眠状态唤醒。另外,GPU 107可以在编码批量的视频帧133的完成后进入睡眠状态,并且以此类推。在一些示例中,经编码的比特流136可以表征为经缓慢运动视频编码的比特流、经高帧率视频编码的比特流等。如所讨论的,可以存储、传输、进一步处理经编码的比特流等。可以使用任何合适的一种或多种技术来编码批量的视频帧132、133。如所讨论的,批量的视频帧132、133中的每一个可以在突发模式中通过批量化视频帧并且在GPU 107的连续活跃状态中进行编码。在一些示例中,可以串行地编码批量的视频帧132、133(例如在每帧的基础上)。在其它示例中,可以并行地编码批量的视频帧132、133中的两个或更多个。如所示,在缓慢运动视频处理模式130中,可以执行帧的批量化(例如帧批量化模块105可以接通,并且可以具有诸如四帧等之类的批量大小设定)。
如所讨论的,可以在缓慢运动视频处理模式130或标准视频处理模式120中操作视频流水线100。在一些示例中,可以在缓慢运动视频处理模式130和标准视频呈现模式中操作视频流水线100。例如,可以经由显示器向用户呈现视频帧121等而同时生成针对缓慢运动视频的经编码的比特流136。
另外,视频流水线100可以实现阈值帧捕获速率(例如经由模式模块102使得如果所请求的帧捕获速率不小于阈值帧捕获速率则应用缓慢运动视频处理模式130)和批量大小(例如限定针对批量的视频帧132、133的帧的数目)。这样的参数可以是预设的和/或可以在视频流水线100的实现期间修改它们。例如,修改这样的参数可以提供经由视频流水线100的自适应批量优化。如所讨论的,阈值帧捕获速率(例如记录帧率阈值)可以用于区分缓慢运动视频记录和常见的或标准视频记录。如所讨论的,在一些示例中,可以针对缓慢运动视频记录而启用本文所讨论的批量机制。
另外,批量大小参数可以确定或限定在每一个按批量的提交中传递至GPU 107的帧的数目。如所讨论的,批量大小可以是任何合适数目的帧,诸如四个等。例如,在120fps缓慢运动记录示例中,相机记录流(例如视频帧131)可以以120fps输出帧,并且帧批量化模块105(例如提供为插件等)可以缓冲帧(例如视频帧131)并且以每1/30秒一批(例如四帧)的节奏做出向媒体驱动器106和GPU 107的按批量提交。在这样的示例中,GPU 107可以以每秒30批接收720P的四帧的编码任务。
图2是图示了依照本公开的至少一些实现方式布置的用于控制视频记录和视频帧的缓冲的示例过程200的流程图。过程200可以包括如图2中图示的一个或多个操作201-208。过程200可以由设备或系统(例如系统500、系统600、设备700或本文所讨论的任何其它设备、系统或子系统)执行,或者可以执行过程200的部分以控制视频记录和缓冲视频帧。过程200或其部分可以针对任何数目的视频记录会话等重复。另外,过程200可以结合过程300执行以执行如本文所讨论的视频记录。
图3是图示了依照本公开的至少一些实现方式布置的用于检索视频帧、提交用于编码的视频帧和监视编码以释放缓冲器的示例过程300的流程图。过程300可以包括一个或多个操作301-309,如图3中所图示的。过程300可以由设备或系统(例如系统500、系统600、设备700或本文所讨论的任何其它设备、系统或子系统)执行,或者可以执行过程200的部分以检索视频帧,提供用于编码的视频帧,并且监视编码以释放缓冲器。过程300或其部分可以针对任何数目的视频帧批量等重复。
如所讨论的,过程200和过程300可以一起执行以提供如本文所讨论的视频记录。例如,过程200可以提供主线程,并且过程300可以提供用于提供视频记录的工作者线程。在一些实施例中,可以经由中央处理器等来提供主线程和工作者线程。在一些示例中,过程200和过程300可以实现为对现有系统过程的插件、扩展等。另外,过程200和过程300可以提供用于标准模式和缓慢运动模式二者中的记录,如本文所讨论的。
返回到图2,过程200可以在操作201“创建视频记录会话”处开始,其中可以创建视频记录会话。可以使用任何合适的一种或多种技术来创建视频记录会话。例如,视频记录会话可以通过由用户接收的输入(例如经由诸如触摸屏等之类的输入设备)或通过过程或应用等发起。
处理可以在决策操作202“缓慢运动视频记录模式”处继续,其中可以做出关于处理在缓慢运动视频记录模式还是标准视频记录模式中继续的确定。可以使用任何合适的一种或多种技术做出这样的确定。在一些实施例中,用户、过程、应用等可以提供缓慢运动或标准记录等之间的模式选择。在一些实施例中,用户、过程、应用等可以请求帧捕获速率(例如提供所请求的帧捕获速率),并且在操作202处,可以比较所请求的帧捕获速率与阈值(例如阈值帧捕获速率)以确定处理是在缓慢运动视频记录模式还是标准视频记录模式中继续。例如,如果所请求的帧捕获速率不小于阈值帧捕获速率,处理可以在缓慢运动视频记录模式中继续,并且如果所请求的帧捕获速率小于阈值帧捕获速率,处理可以在标准记录模式中继续。
如果选择标准视频记录(例如不选择缓慢运动视频记录),处理可以在操作204“关断批量和/或将批量深度设定到一”处继续,其中可以关断批量处理和/或可以将批量深度设定到一(例如设定batch_depth=1)。例如,关断批量处理可以实际上将批量深度设定到一,因为在标准视频记录模式中可以单独提交帧以用于编码(例如具有为一的批量深度)。
如果在决策操作202处选择缓慢运动视频记录,处理可以在操作203“接通批量并且设定批量深度”处继续,其中可以接通批量处理和/或可以将批量深度设定到大于一的值(例如设定batch_depth=4等)。如所讨论的,批量深度可以是任何合适的值,诸如两个或更多。例如,批量深度可以确定提交至编码器的编码批量中的帧的数目。
过程200可以从操作203或操作204在操作205“清除缓冲器计数器”处继续,其中可以清除缓冲器计数器。例如,缓冲器计数器可以维持当前在缓冲器中的帧数目的计数。例如,过程200可以清除和/或递增缓冲器计数器,并且如本文进一步讨论的,过程300可以读取缓冲器计数器(并且清除缓冲器计数器)。例如,实现过程200的主线程可以对缓冲器计数器进行写入,并且实现过程300的工作者线程可以读取缓冲器计数器(并且清除缓冲器计数器)。
处理可以在操作206“接收新的输入帧”处继续,其中可以接收或检索新的输入视频帧。例如,可以在当前视频记录会话期间从相机、相机模块等接收新的输入帧。如所讨论的,输入视频帧可以是经预处理的视频帧,并且输入视频帧可以包括任何合适的图像或视频数据,诸如YUV数据等。
处理可以在操作207“使缓冲器计数器递增”处继续,其中可以基于新的输入帧而使缓冲器计数器递增。如所讨论的,缓冲器计数器可以维持当前在缓冲器中的帧的数目的计数,使得可以读取缓冲器计数器,如关于过程300所讨论的。
处理可以在操作208“向缓冲器添加输入帧”处继续,其中可以将经由操作206接收的输入帧添加到缓冲器或中间池等。可以使用任何合适的一种或多种技术将输入帧添加到缓冲器或中间池。在一些示例中,缓冲器可以实现为经由存储器实现的环形缓冲器等。另外,过程200可以针对所接收的输入帧重复操作206-208。例如,操作206-208可以缓冲一个视频帧(例如当在标准记录模式中时)或多个视频帧(例如当在缓慢运动视频记录模式中时)以用于提交以用于经由过程300的编码。另外,如关于过程300所讨论的,当开始视频帧序列的提交时,可以经由操作302清除缓冲器计数器。
如所讨论的,过程200和过程300可以一起执行以提供视频记录。现在转向图3,过程300可以在决策操作301“缓冲器计数器=批量深度”处开始,其中可以做出关于缓冲器计数器是否等于批量深度的确定。例如,可以读取在操作203处确定的批量深度和如关于过程200讨论的那样提供的缓冲器计数器。可以比较批量深度和缓冲器计数器以确定它们是否相等(例如buffer_counter=batch_depth)。如果不是,过程300可以在决策操作301处继续直到缓冲器计数器达到批量深度。如所讨论的,批量深度可以是任何数目,诸如一(例如批量化关断)或二或更大(例如批量化接通)。
如果缓冲器计数器等于批量深度,处理可以在操作302“清除缓冲器计数器”处继续,其中可以清除缓冲器计数器。例如,操作303-305可以提供提交视频序列,其中可以提交一个视频帧(例如当在标准记录模式中时)或多个视频帧的编码批量(例如当在缓慢运动视频记录模式中时)以用于编码。
处理可以在操作303“从缓冲器提取帧”处继续,其中可以从如关于过程200的操作208讨论的缓冲器或中间池提取或检索帧。可以使用任何合适的一种或多种技术来提取或检索帧。例如,可以从经由存储器实现的环形缓冲器等来提取或检索帧。
处理可以在操作304“提交帧以用于编码”处继续,其中可以提交经由操作303提取或检索的帧以用于编码。可以使用任何合适的一种或多种技术来提交帧以用于编码。例如,可以经由编码器提交帧以用于编码,所述编码器经由图形处理器实现。在一些实施例中,可以经由诸如媒体驱动器106之类的媒体驱动器提交帧以用于编码。
处理可以在决策操作305“提交=批量深度”处继续,其中可以做出关于当前提交(例如如经由计数器等实现的)是否等于批量深度的确定。如果是这样,处理可以在如以下进一步讨论的操作306处继续。如果不是,处理可以在操作303-305处继续直到提取和提交当前批量的所有帧以用于编码。例如,在标准视频记录模式中,在过程300移动到操作306之前可以经由操作303-305提取和提交一个帧。在缓慢运动视频记录模式中,操作303-305可以提取和提交具有等于批量深度的视频帧数目的视频帧的编码批量。操作303-305可以顺序地提取和提交这样的视频帧(例如以相对快速的接续),如所讨论的,或者可以一起提取、持有和提交这样的编码批量以用于编码。
可以经由如本文所讨论的编码器来执行这样的帧的编码。可以经由操作306监视这样的编码,例如如本文进一步讨论的。可以在缓冲另一后续编码批量以用于处理的同时执行这样的编码。例如,可以至少部分地在当前编码批量的编码期间经由操作206-208生成后续编码批量。另外,当当前编码批量完成后,处理器(例如图形处理器等)可以进入睡眠状态。如所讨论的,缓慢运动视频记录模式中的所提供的批量化可以为处理器提供空闲时间的更长连续持续时间,这可以允许处理器进入更深的睡眠状态。这样的更深的睡眠状态持续时间可以提供更低的功率使用。
基于所缓冲的后续批量和/或时序信号,可以从其睡眠状态唤醒处理器以用于后续批量的处理。例如,可以在帧率之上的批量深度的时序处完全缓冲后续批量(例如,对于4的批量深度和120fps的帧率的示例,4/120秒),使得每33.3ms向编码器提供新的编码批量。另外,如果编码器要求少于大约10ms以编码每一个批量,提供编码的处理器可以在超过大约23ms内进入睡眠状态(例如帧率之上的批量深度小于用于该批量的编码持续时间)。
处理可以在操作306“查询编码任务状态”处继续,其中可以查询和/或监视编码批量的编码任务状态。可以使用任何合适的一种或多种技术来监视编码任务状态,诸如经由媒体驱动器106等监视如由GPU 107实现的编码器的任务完成。
处理可以在决策操作307“批量中的任何帧完成”处继续,其中可以做出关于当前批量中的任何帧是否已经完成编码的确定。如果没有,处理可以在操作306和307处继续,直到帧完成编码。
如果是这样,处理可以在操作308“输出经编码的帧并且释放缓冲器”处继续,其中可以输出完成的经编码的帧,并且可以释放与完成的帧相关联的表面或缓冲器部分等。例如,完成的经编码的帧可以作为经编码的比特流输出以经由存储器存储、传输等。在一些示例中,可以向视频容器等添加完成的帧。另外,经编码的比特流可以随后被解码以用于在本地(例如在实现过程200和300的相同设备上)或远程地(例如经由远程设备)向用户呈现。可以释放与完成的帧相关联的缓冲器部分或帧或表面等,使得后续视频帧可以占用它。例如,可以将存储器的缓冲器部分释放回相机、相机模块、媒体框架、相机框架等。
处理可以在决策操作309“批量中的所有帧完成”处继续,其中可以做出关于当前批量中的所有帧是否已经完成编码的确定。如果没有,处理可以在操作306-309处继续,直到所有帧完成编码。在标准视频记录的示例中,由于批量大小为一,因此决策操作307和决策操作309可以提供相同的结果,并且可以可选地跳过决策操作309。
如果是这样,处理可以在如本文所讨论的决策操作301处继续。例如,在操作302处清除的缓冲器计数器可能已经在接收到一个或多个帧(例如经由操作206)并且将其添加到输入帧缓冲器(例如经由操作208)时经由过程200的操作207而递增,请参考图2。
如所讨论的,过程200和300可以提供用于缓慢运动视频记录的编码任务的自适应批量化和用于标准视频记录的编码任务的单批(例如批量化关断)处理。过程200和300可以同时和/或顺序地执行以提供这样的视频记录处理。另外,过程200或过程300或二者的一些部分可以并行执行以提供这样的视频记录处理。在一些示例中,可以分别将过程200和300提供为经由中央处理器实现的主线程和工作者线程以控制视频记录。
本文所讨论的技术可以提供大量功率节约。例如,在没有所描述的批量化的情况下,以120fps的720P帧的示例缓慢运动记录可能大约每8.3ms(例如1/120fps占空比)向实现编码器的处理器(例如GPU)提供工作载荷。在每一个8.3ms占空比中,720P编码的一帧可以在大约3ms中完成,从而允许处理器在其余5.3ms内空闲。另外,这样的处理可能不允许处理器的不同引擎上的编码任务之间的并发性。
通过使用本文所讨论的自适应批量化技术并且继续以120fps的720P帧的缓慢运动记录的示例,可以针对每四个(例如批量深度)连续帧批量化编码器处理器工作载荷。另外,可以为经批量化的帧中的两个或更多个提供并行处理,并且并发性可以发生在处理器的引擎之间的这样的编码任务上。例如,对于每四个连续的帧,编码任务可以在大约<10ms内完成,从而为处理器提供>23ms的空闲时间。表1图示了经由本文所讨论的技术提供的处理器驻留性益处。
GPU C状态驻留性 没有批量化 具有批量化
渲染器C0 59.9% 40.4%
渲染器C1 3.8% 4.2%
渲染器C6 36.2% 55.1%
媒体CO 41.0% 27.6%
媒体C1 4.0% 4.9%
媒体C6 64.9% 77.2%
表1 来自720P,120fps视频记录中的批量化的GPU驻留益处
如表1中所示,如相比于没有批量化的操作,实现编码的处理器(例如GPU 107等)可以在大幅更低的时间百分比(例如如相比于59.9%,40.4%)内驻留在功率状态(例如C状态)渲染器C0中,并且在大幅更大的时间百分比(例如如相比于36.2%,55.1%)内驻留在深度睡眠功率状态渲染器C6中。类似地,如相比于没有批量化的操作,处理器可以在大幅更低的时间百分比(例如如相比于41.0%,27.6%)内驻留在功率状态媒体C0中并且在大幅更大的时间百分比(例如如相比于64.9%,77.2%)内驻留在深度睡眠功率状态媒体C6中。这样的驻留性数据证明处理器和因而实现本所讨论的批量化的设备的大幅功耗改进。
图4是图示了依照本公开的至少一些实现方式布置的用于自适应地批量化用于缓慢运动视频记录的编码任务的示例过程400的流程图。过程400可以包括如图4中图示的一个或多个操作401-403。过程400可以形成缓慢运动视频记录过程的至少部分。作为非限制性示例,过程400可以形成如由如本文所讨论的任何设备或系统执行的视频合成过程的至少部分。另外,在本文中将参考图5的系统500来描述过程400。
图5是依照本公开的至少一些实现方式布置的用于自适应地批量化用于缓慢运动视频记录的编码任务的示例系统500的说明图。如图5中所示,系统500可以包括中央处理器501、图形处理器502、存储器503、显示器504和传输器505。同样如所示,中央处理器501可以包括或实现模式模块102、相机框架103、媒体框架105、帧批量化模块105和媒体驱动器106,图形处理器502可以包括或实现编码器521,并且存储器503可以包括帧缓冲器531。在系统500的示例中,存储器503还可以存储视频数据或相关内容,诸如像素数据、控制数据和/或如本文所讨论的任何其它数据。
如所示,在一些示例中,模式模块102、相机框架103、媒体框架104、帧批量化模块105和媒体驱动器106可以经由中央处理器501实现。在其它示例中,模式模块102、相机框架103、媒体框架104、帧批量化模块105和媒体驱动器106中的一个或多个或部分可以经由图形处理器502或另一处理单元实现。另外,如所示,在一些示例中,编码器521可以经由图形处理器502实现。在其它示例中,编码器521或其部分可以经由中央处理器501或另一处理单元实现。
图形处理器502可以包括可以提供如本文所讨论的操作的任何数目和类型的图形处理单元。这样的操作可以经由软件或硬件或其组合实现。例如,图形处理器502可以包括专用于操纵从存储器503获取的视频帧、视频数据、图像数据等的电路。中央处理器501可以包括可以提供用于系统500的控制和其它高级功能和/或提供如本文所讨论的任何操作的任何数目和类型的处理单元或模块。存储器503可以是任何类型的存储器,诸如易失性存储器(例如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)等)或非易失性存储器(例如闪速存储器等)等等。在非限制性示例中,存储器503可以通过高速缓存存储器实现。
在实施例中,编码器521或其部分可以经由图形处理器502的执行单元(EU)实现。EU可以包括例如可以提供各种各样的可编程逻辑功能的可编程逻辑或电路,诸如一个或多个逻辑核。在实施例中,编码器521或其部分可以经由专用硬件实现,诸如固定功能电路等。固定功能电路可以包括专用逻辑或电路,并且可以提供可以映射到专用逻辑以用于固定目的或功能的一组固定功能入口点。
返回到图4的讨论,过程400可以在操作401“缓冲视频帧以生成编码批量”处开始,其中,在缓慢运动视频记录模式中,可以缓冲多个视频帧以生成包括所述多个视频帧的编码批量。例如,如经由中央处理器501实现的帧批量化模块105可以将所述多个输入帧存储到如经由存储器503实现的帧缓冲器531以生成包括所述多个视频帧的编码批量。
在一些示例中,在操作401之前,过程400可以包括基于所请求的帧捕获速率和阈值帧捕获速率而进入缓慢运动视频记录模式。例如,可以基于所请求的帧捕获速率不小于阈值帧捕获速率而进入缓慢运动视频记录模式。例如,如经由中央处理器501实现的模式模块102可以基于所请求的帧捕获速率和阈值帧捕获速率而确定缓慢运动视频记录模式。在其它示例中,进入缓慢运动视频记录模式可以是基于缓慢运动视频记录请求信号。例如,如经由中央处理器501实现的模式模块102可以基于所接收的缓慢运动视频记录请求信号而确定缓慢运动视频记录模式。
另外,在一些示例中,在操作401之前,过程400可以包括设定与编码批量相关联的批量大小,其中批量大小可以确定所述多个视频帧中的视频帧的数目。如所讨论的,批量大小可以包括任何数目的视频帧,诸如四个视频帧等。例如,用户选择或应用等可以生成批量大小的指示,可以经由模式模块102或中央处理器501的另一模块来检测和设定所述批量大小的指示。
处理可以在操作402“提交编码批量以用于编码”处继续,其中可以提交包括所述多个视频帧的编码批量以用于编码。例如,可以经由如经由图形处理器502实现的编码器521由如经由处理器501实现的媒体驱动器106提交编码批量以用于编码。可以使用任何合适的一种或多种技术来提交编码批量以用于编码。例如,可以顺序地提交编码的多个视频帧,或者可以一起提交它们。
处理可以在操作403“对编码批量进行编码以生成经编码的比特流”处继续,其中可以对编码批量进行编码以生成经编码的比特流。例如,如经由图形处理器502实现的编码器521可以对编码批量进行编码以生成经编码的比特流。可以串行或并行地对编码批量的多个帧进行编码。例如,可以并行地编码多个帧中的两个或更多个。另外,可以在图形处理器502的连续活跃状态期间对编码批量的多个帧进行编码(例如图形处理器502在多个帧的编码期间可以不进入睡眠状态)。
在一些示例中,在操作403之前或作为操作403的部分,实现编码器521的处理器(例如图形处理器502)可以从睡眠状态唤醒。例如,过程400可以基于编码批量而将图形处理器502从睡眠状态唤醒。图形处理器502可以从任何合适的睡眠状态(诸如C6睡眠状态等)唤醒到任何活跃状态(诸如C0活跃状态等)。另外,在一些示例中,实现编码器521的处理器(例如图形处理器502)可以在编码批量的完成后进入睡眠状态(例如C6睡眠状态等)。例如,实现编码器521的处理器(例如图形处理器502)可以基于后续编码批量而从睡眠状态唤醒,基于后续编码批量的完成而进入到睡眠状态中等等。
另外,如本文所讨论的,在操作403期间或至少部分地在操作403期间,可以如关于操作401所讨论的那样缓冲后续编码批量。例如,在开始当前编码批量的编码之后,可以在当前编码批量的编码已经完成之前或在当前编码批量的编码已经完成之后缓冲后续编码批量的后续第一帧。这样的缓冲可以继续(例如在实现编码器521的处理器处于睡眠状态中的同时),直到满足批量大小。然后可以提交后续编码批量以用于编码,并且可以将实现编码器521的处理器带到活跃状态以在处理器的连续活跃状态期间编码后续编码批量。
如本文所讨论的,在一些实施例中,过程400可以包括实现主线程以提供所述多个视频帧的缓冲以生成包括所述多个视频帧的编码批量。例如,主线程可以经由中央处理器501实现。在一些示例中,主线程可以向缓冲器添加视频帧中的每一个以生成编码批量并且基于添加视频帧中的每一个而增加缓冲器计数器,如本文关于过程200所讨论的。
另外,过程400可以包括实现工作者线程以提供包括所述多个视频帧的编码批量的提交以用于编码,并且监视编码批量的编码。例如,工作者线程可以经由中央处理器501实现。在一些示例中,工作者线程可以基于缓冲器计数器达到与编码批量相关联的批量深度而从缓冲器提取视频帧,向图形处理器提供视频帧以用于编码,并且当视频帧中的第一帧完成编码后,释放与第一帧相关联的缓冲器的缓冲器部分,如本文关于过程300所讨论的。
过程400可以针对任何数目的编码操作、视频帧、视频帧批量、视频记录会话等而串行或并行地重复任何次数。如所讨论的,过程400可以提供用于自适应地批量化用于缓慢运动视频记录的编码任务。例如,用于批量化编码任务的所讨论的技术可以提供计算上高效且低功率的缓慢运动视频记录。
本文所描述的系统的各种组件可以实现在软件、固件和/或硬件和/或其任何组合中。例如,视频流水线100、系统500、系统600或设备700的各种组件可以至少部分地由计算片上系统(SoC)的硬件提供,诸如可以在计算系统中找到的那样,诸如例如智能电话。本领域技术人员可以认识到,本文所描述的系统可以包括并未在对应图中描绘的附加组件。例如,本文所讨论的系统可以包括为了清楚起见而并未描绘的诸如比特流复用器或解复用器模块等之类的附加组件。
虽然本文所讨论的示例过程的实现方式可以包括以所图示的次序示出的所有操作的着手进行,但是本公开在这方面不受限,并且在各种示例中,本文中的示例过程的实现方式可以仅包括所示操作的子集、以与所图示的不同的次序执行的操作或附加的操作。
此外,本文所讨论的操作中的任何一个或多个可以响应于由一个或多个计算机程序产品提供的指令而着手进行。这样的程序产品可以包括提供指令的信号承载介质,所述指令在由例如处理器执行时可以提供本文所描述的功能。可以以一个或多个机器可读介质中的任何形式提供计算机程序产品。因此,例如,包括一个或多个图形处理单元或处理器核的处理器可以响应于由一个或多个机器可读介质传送至处理器的程序代码和/或指令或指令集而着手进行本文中的示例过程的块中的一个或多个。一般而言,机器可读介质可以以程序代码和/或指令或指令集的形式传送软件,所述软件可以使得本文所描述的任何设备和/或系统实现过程200、过程300、过程400或本文所讨论的任何操作和/或视频流水线100、系统500、系统600或设备700或如本文所讨论的任何其它模块或组件的任何部分。
如本文所描述的任何实现方式中所使用的,术语“模块”是指配置成提供本文所描述的功能的软件逻辑、固件逻辑、硬件逻辑和/或电路的任何组合。软件可以体现为软件包、代码和/或指令集或指令,并且“硬件”,如本文所描述的任何实现方式中所使用的,可以单个地或以任何组合地包括硬连线的电路、可编程的电路、状态机电路、固定功能电路、执行单元电路和/或存储由可编程的电路执行的指令的固件。模块可以集体地或单独地体现为形成更大系统的部分的电路,所述更大系统例如集成电路(IC)、片上系统(SoC)等等。
图6是依照本公开的至少一些实现方式布置的示例系统600的说明图。在各种实现方式中,系统600可以是媒体系统,尽管系统600不限于该情境。例如,系统600可以合并到个人计算机(PC)、膝上型计算机、超级膝上型计算机、平板电脑、触摸垫、便携式计算机、手持计算机、掌上计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、电视、智能设备(例如智能电话、智能平板电脑或智能电视)、移动互联网设备(MID)、消息传递设备、数据通信设备、相机(例如傻瓜相机、大变焦相机、数字单反(DSLR)相机)等等。
在各种实现方式中,系统600包括耦合到显示器620的平台602。平台602可以从诸如(多个)内容服务设备630或(多个)内容递送设备640之类的内容设备或者其它类似内容源接收内容。包括一个或多个导航特征的导航控制器650可以用于与例如平台602和/或显示器620交互。以下更加详细地描述这些组件中的每一个。
在各种实现方式中,平台602可以包括芯片集605、处理器610、存储器612、储存614、图形子系统615、应用616和/或无线电设备618的任何组合。芯片集605可以提供处理器610、存储器612、储存614、图形子系统615、应用616和/或无线电设备618之间的相互通信。例如,芯片集605可以包括能够提供与储存614的相互通信的存储适配器(未描绘)。
处理器610可以实现为复杂指令集计算机(CISC)或精简指令集计算机(RISC)处理器、x86指令集兼容处理器、多核或任何其它的微处理器或中央处理单元(CPU)。在各种实现方式中,处理器610可以包括(多个)双核处理器、(多个)双核移动处理器等等。
存储器612可以实现为易失性存储器设备,诸如但不限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)或静态RAM(SRAM)。
储存614可以实现为非易失性存储设备,诸如但不限于磁盘驱动器、光盘驱动器、带驱动器、内部存储设备、附接存储设备、闪速存储器、备有电池的SDRAM(同步DRAM)和/或网络可访问存储设备。在各种实现方式中,储存614可以包括用于当例如包括多个硬盘驱动器时增加针对有价值数字媒体的存储性能增强保护的技术。
图形子系统615可以执行诸如静止图像之类的图像或视频的处理以用于显示。图形子系统615可以是例如图形处理单元(GPU)或视觉处理单元(VPU)。模拟或数字接口可以用于通信耦合图形子系统615和显示器620。例如,接口可以是高清晰度多媒体接口、显示端口、无线HDMI和/或无线HD顺从技术中的任一个。图形子系统615可以集成到处理器610或芯片集605中。在一些实现方式中,图形子系统615可以是通信耦合到芯片集605的独立设备。
本文描述的图形和/或视频处理技术可以实现在各种硬件架构中。例如,图形和/或视频功能可以集成在芯片集内。可替换地,可以使用分立的图形和/或视频处理器。作为又一实现方式,图形和/或视频功能可以由包括多核处理器的通用处理器来实现。在另外的实施例中,功能可以实现在消费电子设备中。
无线电设备618可以包括能够使用各种适合的无线通信技术发射和接收信号的一个或多个无线电设备。这样的技术可以涉及跨一个或多个无线网络的通信。示例性无线网络包括(但不限于)无线局域网(WLAN)、无线个域网(WPAN)、无线城域网(WMAN)、蜂窝网络和卫星网络。在跨这样的网络进行通信时,无线电设备618可以依照以任何版本出现的一个或多个适用标准进行操作。
在各种实现方式中,显示器620可以包括任何电视类型监视器或显示器。显示器620可以包括例如计算机显示屏、触摸屏显示器、视频监视器、电视类设备和/或电视。显示器620可以是数字和/或模拟的。在各种实现方式中,显示器620可以是全息显示器。显示器620还可以是可接收视觉投影的透明表面。这样的投影可以传达各种形式的信息、图像和/或对象。例如,这样的投影可以是用于移动增强现实(MAR)应用的视觉叠加。在一个或多个软件应用616的控制之下,平台602可以在显示器620上显示用户接口622。
在各种实现方式中,(多个)内容服务设备630可以由任何国家、国际和/或独立服务来托管且因此经由例如因特网而对平台602来说可访问。(多个)内容服务设备630可以耦合到平台602和/或显示器620。平台602和/或(多个)内容服务设备630可以耦合到网络660以向网络660和从网络660传送(例如发送和/或接收)媒体信息。(多个)内容递送设备640也可以耦合到平台602和/或显示器620。
在各种实现方式中,(多个)内容服务设备630可以包括有线电视盒、个人计算机、网络、电话、能够递送数字信息和/或内容的支持因特网的设备或器具、以及能够在内容提供商与平台602和/或显示器620之间经由网络660或直接地单向或双向传送内容的任何其它类似设备。将领会到,内容可以经由网络660而被单向和/或双向地传送到系统600中的任一个组件和内容提供商以及从其传送。内容的示例可以包括任何媒体信息,包括例如视频、音乐、医疗和游戏信息等等。
(多个)内容服务设备630接收包括媒体信息、数字信息和/或其它内容的诸如有线电视节目之类的内容。内容提供商的示例可以包括任何有线或卫星电视或者无线电或因特网内容提供商。所提供的示例并不意在以任何方式限制依照本公开的实现方式。
在各种实现方式中,平台602可以从具有一个或多个导航特征的导航控制器650接收控制信号。控制器650的导航特征可以用于例如与用户接口622交互。在各种实现方式中,导航控制器650可以是定点设备,其可以是允许用户将空间(例如连续且多维的)数据输入到计算机中的计算机硬件组件(特别地,人类接口设备)。诸如图形用户接口(GUI)之类的许多系统以及电视和监视器允许用户使用身体姿势控制数据并向计算机或电视提供数据。
控制器650的导航特征的移动可以通过在显示器上显示的指针、光标、聚焦环或其它视觉指示器的移动而被回送在显示器(例如显示器620)上。例如,在软件应用616的控制之下,位于导航控制器650上的导航特征可以被映射到在例如用户接口622上显示的虚拟导航特征。在各种实施例中,控制器650可能不是分离的组件,而是被集成到平台602和/或显示器620中。然而,实施例不限于本文示出或描述的元素或者不被限制在本文示出或描述的情境中。
在各种实现方式中,驱动器(未示出)可以包括使用户能够例如在初始启动之后(在被启用时)利用按钮触摸来即时开启和关闭像电视之类的平台602的技术。甚至当平台被“关闭”时,程序逻辑可以允许平台602将内容流送到媒体适配器或(多个)其它内容服务设备630或(多个)内容递送设备640。此外,芯片集605可以包括针对例如5.1环绕声音频和/或高清晰度7.1环绕声音频的硬件和/或软件支持。驱动器可以包括用于集成图形平台的图形驱动器。在各种实施例中,图形驱动器可以包括高速外围组件互连(PCI)图形卡。
在各种实现方式中,可以集成系统600中示出的任何一个或多个组件。例如,可以集成平台602和(多个)内容服务设备630,或者可以集成平台602和(多个)内容递送设备640,或者例如可以集成平台602、(多个)内容服务设备630和(多个)内容递送设备640。在各种实施例中,平台602和显示器620可以是集成单元。例如,可以集成显示器620和(多个)内容服务设备630,或者可以集成显示器620和(多个)内容递送设备640。这些示例不意在限制本公开。
在各种实施例中,系统600可以实现为无线系统、有线系统或这二者的组合。当实现为无线系统时,系统600可以包括适于通过无线共享介质进行通信的组件和接口,诸如一个或多个天线、发射器、接收器、收发器、放大器、滤波器、控制逻辑等等。无线共享介质的示例可以包括无线频谱的部分,诸如RF频谱等等。当实现为有线系统时,系统600可以包括适于通过有线通信介质进行通信的组件和接口(诸如输入/输出(I/O)适配器)、将I/O适配器与对应的有线通信介质连接的物理连接器、网络接口卡(NIC)、盘控制器、视频控制器、音频控制器等等。有线通信介质的示例可以包括导线、线缆、金属引线、印刷电路板(PCB)、背板、开关结构、半导体材料、双绞线、同轴线缆、光纤等等。
平台602可以建立一个或多个逻辑或物理信道来传送信息。信息可以包括媒体信息和控制信息。媒体信息可以指代表示意在针对用户的内容的任何数据。内容的示例可以包括例如来自语音对话的数据、视频会议、流送视频、电子邮件(“电邮”)消息、语音邮件消息、字母数字符号、图形、图像、视频、文本等等。来自语音对话的数据可以是例如话音信息、静默时段、背景噪声、舒适噪声、音调等等。控制信息可以指代表示意在针对自动化系统的命令、指令或控制字的任何数据。例如,控制信息可以用于将媒体信息路由通过系统或者指示节点以预定的方式处理媒体信息。然而,实施例不限于图6中示出或描述的元素或者不被限制在图6中示出或描述的上下文中。
如以上所描述的,系统600可以以变化的物理样式或形状因子体现。图7图示了依照本公开的至少一些实现方式布置的示例小形状因子设备700。在一些示例中,系统600可以经由设备700实现。在其它示例中,视频流水线100、系统500或其部分可以经由设备700实现。在各种实施例中,例如,设备700可以实现为具有无线能力的移动计算设备。例如,移动计算设备可以指代具有处理系统和诸如一个或多个电池之类的移动功率源或供给的任何设备。
移动计算设备的示例可以包括个人计算机(PC)、膝上型计算机、超膝上型计算机、平板电脑、触摸垫、便携式计算机、手持式计算机、掌上计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、智能设备(例如智能电话、智能平板电脑或智能移动电视)、移动互联网设备(MID)、消息传递设备、数据通信设备、相机等等。
移动计算设备的示例还可以包括布置成由人穿戴的计算机,诸如手腕计算机、手指计算机、戒指计算机、眼镜计算机、腰带扣计算机、臂章计算机、鞋子计算机、衣物计算机以及其它可穿戴计算机。在各种实施例中,例如,移动计算设备可以实现为能够执行计算机应用以及语音通信和/或数据通信的智能电话。尽管一些实施例可以通过作为示例而被实现为智能电话的移动计算设备加以描述,但是可以领会到,也可以使用其它无线移动计算设备来实现其它实施例。实施例在该上下文中不受限。
如图7中所示,设备700可以包括具有前部701和后补702的外壳。设备700包括显示器704、输入/输出(I/O)设备706以及集成天线708。设备700还可以包括导航特征712。I/O设备706可以包括用于将信息录入到移动计算设备中的任何适合的I/O设备。I/O设备706的示例可以包括字母数字键盘、数字键区、触摸垫、输入键、按钮、开关、麦克风、扬声器、语音识别设备和软件等等。还可以通过麦克风(未示出)将信息录入到设备700中,或者可以通过语音识别设备对信息进行数字化。如所示,设备700可以包括相机705(例如包括镜头、光圈和成像传感器以及集成到设备700的背部702(或其它地方)中的闪光灯710。在其它示例中,相机705和闪光灯710可以集成到设备700的前部701中或者可以提供前部和背部相机二者。相机705和闪光灯710可以是引起被处理成输出到显示器704和/或从设备700例如经由天线708远程传送的流送视频的图像数据的相机模块的组件。
可以使用硬件元件、软件元件或这二者的组合来实现各种实施例。硬件元件的示例可以包括处理器、微处理器、电路、电路元件(例如晶体管、电阻器、电容器、电感器等等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片集等等。软件的示例可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。确定是否使用硬件元件和/或软件元件来实现实施例可以依照任何数目的因素而变化,诸如期望的计算速率、功率水平、耐热性、处理循环预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和其它设计或性能约束。
至少一个实施例的一个或多个方面可以通过存储在机器可读介质上的代表指令实现,其表示处理器内的各种逻辑,所述指令当被机器读取时使该机器构造执行本文所描述的技术的逻辑。称作IP核的这样的表示可以存储在有形、机器可读介质上且供给到各种客户或制造设施以加载到实际上制作逻辑或处理器的制造机器中。
虽然已经参考各种实现方式描述了本文所阐述的某些特征,但是该描述不旨在以限制性含义来解释。因而,本文所描述的实现方式的各种修改,以及对本公开所关于的领域中的技术人员清楚的其它实现方式被视为处于本公开的精神和范围内。
在一个或多个第一实施例中,一种用于自适应地批量化用于缓慢运动视频记录的编码任务的方法包括:在缓慢运动视频记录模式中缓冲多个视频帧以生成包括所述多个视频帧的编码批量,提交包括所述多个视频帧的编码批量以用于编码,以及对编码批量进行编码以生成经编码的比特流。
对第一实施例进一步地,方法还包括至少部分地在编码批量的编码期间,缓冲第二多个视频帧以生成包括所述第二多个视频帧的第二编码批量。
对第一实施例进一步地,对编码批量进行编码包括经由图形处理器对编码批量进行编码,并且方法还包括基于编码批量而将图形处理器从睡眠状态唤醒,其中对编码批量进行编码包括在图形处理器的连续活跃状态期间进行编码。
对第一实施例进一步地,对编码批量进行编码包括经由图形处理器对编码批量进行编码,并且方法还包括基于编码批量而将图形处理器从睡眠状态唤醒,其中对编码批量进行编码包括在图形处理器的连续活跃状态期间进行编码,至少部分地在编码批量的编码期间缓冲第二多个视频帧以生成包括所述第二多个视频帧的第二编码批量,当编码批量的完成后使图形处理器进入到第二睡眠状态中,以及基于第二编码批量而将图形处理器从第二睡眠状态唤醒,其中对第二编码批量进行编码包括在图形处理器的第二连续活跃状态期间进行编码。
对第一实施例进一步地,方法还包括基于所请求的帧捕获速率不小于阈值帧捕获速率而进入缓慢运动视频记录模式。
对第一实施例进一步地,方法还包括基于缓慢运动视频记录请求信号而进入缓慢运动视频记录模式。
对第一实施例进一步地,方法还包括设定与编码批量相关联的批量大小,其中批量大小确定所述多个视频帧中的视频帧的数目。
对第一实施例进一步地,方法还包括基于所请求的帧捕获速率不小于阈值帧捕获速率而进入缓慢运动视频记录模式,或者基于缓慢运动视频记录请求信号而进入缓慢运动视频记录模式,和/或设定与编码批量相关联的批量大小,其中批量大小确定所述多个视频帧中的视频帧的数目。
对第一实施例进一步地,方法还包括实现主线程以提供所述多个视频帧的缓冲以生成包括所述多个视频帧的编码批量,以及实现工作者线程以提供包括所述多个视频帧的编码批量的提交以用于编码并且以监视编码批量的编码。
对第一实施例进一步地,方法还包括实现主线程以提供所述多个视频帧的缓冲以生成包括所述多个视频帧的编码批量,以及实现工作者线程以提供包括所述多个视频帧的编码批量的提交以用于编码并且以监视编码批量的编码,其中主线程向缓冲器添加视频帧中的每一个以生成编码批量并且基于添加视频帧中的每一个而增加缓冲器计数器。
对第一实施例进一步地,方法还包括实现主线程以提供所述多个视频帧的缓冲以生成包括所述多个视频帧的编码批量,以及实现工作者线程以提供包括所述多个视频帧的编码批量的提交以用于编码并且以监视编码批量的编码,其中主线程向缓冲器添加视频帧中的每一个以生成编码批量并且基于添加视频帧中的每一个而增加缓冲器计数器,并且工作者线程基于缓冲器计数器达到与编码批量相关联的批量深度而从缓冲器提取视频帧并且向图形处理器提供视频帧以用于编码。
对第一实施例进一步地,方法还包括实现主线程以提供所述多个视频帧的缓冲以生成包括所述多个视频帧的编码批量,以及实现工作者线程以提供包括所述多个视频帧的编码批量的提交以用于编码并且以监视编码批量的编码,其中主线程向缓冲器添加视频帧中的每一个以生成编码批量并且基于添加视频帧中的每一个而增加缓冲器计数器,并且工作者线程基于缓冲器计数器达到与编码批量相关联的批量深度而从缓冲器提取视频帧并且向图形处理器提供视频帧以用于编码,其中工作者线程还在视频帧中的第一帧完成编码后释放与第一帧相关联的缓冲器的缓冲器部分。
对第一实施例进一步地,方法还包括实现主线程以提供所述多个视频帧的缓冲以生成包括所述多个视频帧的编码批量,以及实现工作者线程以提供包括所述多个视频帧的编码批量的提交以用于编码并且以监视编码批量的编码,其中主线程向缓冲器添加视频帧中的每一个以生成编码批量并且基于添加视频帧中的每一个而增加缓冲器计数器和/或其中工作者线程基于缓冲器计数器达到与编码批量相关联的批量深度而从缓冲器提取视频帧并且向图形处理器提供视频帧以用于编码。
对第一实施例进一步地,提交编码批量包括顺序地提交编码批量的所述多个视频帧。
对第一实施例进一步地,对编码批量进行编码包括并行地编码所述多个视频帧中的两个或更多个。
在一个或多个第二实施例中,一种用于自适应地批量化用于缓慢运动视频记录的编码任务的系统包括:包括用于存储视频帧的缓冲器的存储器、耦合到存储器的中央处理器,中央处理器在缓慢运动视频记录模式中向缓冲器存储多个视频帧以生成包括所述多个视频帧的编码批量,以及图形处理器,所述图形处理器在图形处理器的连续活跃状态期间对编码批量进行编码以生成经编码的比特流。
对第二实施例进一步地,中央处理器还至少部分地在编码批量的编码期间向缓冲器存储第二多个视频帧以生成包括所述第二多个视频帧的第二编码批量。
对第二实施例进一步地,中央处理器还至少部分地在编码批量的编码期间向缓冲器存储第二多个视频帧以生成包括所述第二多个视频帧的第二编码批量,并且图形处理器还在编码批量的完成后进入睡眠状态,并且基于第二编码批量而从睡眠状态唤醒。
对第二实施例进一步地,中央处理器还基于所请求的帧捕获速率不小于阈值帧捕获速率而进入缓慢运动视频记录模式。
对第二实施例进一步地,中央处理器还基于缓慢运动视频记录请求信号而进入缓慢运动视频记录模式。
对第二实施例进一步地,中央处理器还设定与编码批量相关联的批量大小,其中批量大小确定所述多个视频帧中的视频帧的数目。
对第二实施例进一步地,中央处理器还实现主线程以向缓冲器添加视频帧以生成包括所述多个视频帧的编码批量,并且实现工作者线程以向图形处理器提交包括所述多个视频帧的编码批量并且以监视编码批量的编码。
对第二实施例进一步地,中央处理器还实现主线程以向缓冲器添加视频帧以生成包括所述多个视频帧的编码批量,并且实现工作者线程以向图形处理器提交包括所述多个视频帧的编码批量并且以监视编码批量的编码,其中中央处理器还经由主线程,基于视频帧中的每一个的添加而增加缓冲器计数器,并且经由工作者线程,基于缓冲器计数器达到与编码批量相关联的批量深度而从缓冲器提取视频帧。
对第二实施例进一步地,中央处理器还实现主线程以向缓冲器添加视频帧以生成包括所述多个视频帧的编码批量,并且实现工作者线程以向图形处理器提交包括所述多个视频帧的编码批量并且以监视编码批量的编码,其中中央处理器还经由主线程,基于视频帧中的每一个的添加而增加缓冲器计数器,并且在所述多个视频帧中的第一帧的编码完成后释放与第一帧相关联的缓冲器的缓冲器部分,并且经由工作者线程,基于缓冲器计数器达到与编码批量相关联的批量深度而从缓冲器提取视频帧。
对第二实施例进一步地,中央处理器还实现主线程以向缓冲器添加视频帧以生成包括所述多个视频帧的编码批量并且基于视频帧中的每一个的添加而增加缓冲器计数器,并且中央处理器还实现工作者线程以向图形处理器提交包括所述多个视频帧的编码批量,监视编码批量的编码,并且基于缓冲器计数器达到与编码批量相关联的批量深度而从缓冲器提取视频帧。
对第二实施例进一步地,图形处理器并行地编码编码批量的所述多个视频帧中的两个或更多个。
对第二实施例进一步地,中央处理器和图形处理器包括片上系统。
在一个或多个第三实施例中,一种用于自适应地批量化用于缓慢运动视频记录的编码任务的系统包括:用于在缓慢运动视频记录模式中缓冲多个视频帧以生成包括所述多个视频帧的编码批量的部件,用于提交包括所述多个视频帧的编码批量以用于编码的部件,以及用于对编码批量进行编码以生成经编码的比特流的部件。
对第三实施例进一步地,系统还包括用于至少部分地在编码批量的编码期间,缓冲第二多个视频帧以生成包括所述第二多个视频帧的第二编码批量的部件。
对第三实施例进一步地,系统还包括用于基于编码批量而将用于编码的部件从睡眠状态唤醒的部件,其中用于编码的部件包括用于在连续活跃状态期间对编码批量进行编码的部件。
对第三实施例进一步地,用于基于编码批量而将用于编码的部件从睡眠状态唤醒的部件,其中用于编码的部件包括用于在连续活跃状态期间对编码批量进行编码的部件,用于至少部分地在编码批量的编码期间缓冲第二多个视频帧以生成包括所述第二多个视频帧的第二编码批量的部件,用于当编码批量的完成后使用于编码的部件进入到第二睡眠状态中的部件,以及用于基于第二编码批量而将用于编码的部件从第二睡眠状态唤醒的部件。
对第三实施例进一步地,系统还包括用于基于所请求的帧捕获速率不小于阈值帧捕获速率而进入缓慢运动视频记录模式的部件。
对第三实施例进一步地,系统还包括用于基于缓慢运动视频记录请求信号而进入缓慢运动视频记录模式的部件。
对第三实施例进一步地,系统还包括用于设定与编码批量相关联的批量大小的部件,其中批量大小确定所述多个视频帧中的视频帧的数目。
对第三实施例进一步地,系统还包括用于实现主线程以向用于缓冲的部件提供编码批量的部件,以及用于实现工作者线程以向用于编码的部件提交编码批量并且监视编码批量的编码的部件。
对第三实施例进一步地,系统还包括用于实现主线程以向用于缓冲的部件提供编码批量的部件,以及用于实现工作者线程以向用于编码的部件提交编码批量并且监视编码批量的编码的部件,其中主线程向用于缓冲的部件添加视频帧中的每一个以生成编码批量并且基于添加视频帧中的每一个而增加缓冲器计数器。
对第三实施例进一步地,系统还包括用于实现主线程以向用于缓冲的部件提供编码批量的部件,以及用于实现工作者线程以向用于编码的部件提交编码批量并且监视编码批量的编码的部件,其中主线程向用于缓冲的部件添加视频帧中的每一个以生成编码批量并且基于添加视频帧中的每一个而增加缓冲器计数器,并且其中工作者线程基于缓冲器计数器达到与编码批量相关联的批量深度而从用于缓冲的部件提取视频帧并且向用于编码的部件提供视频帧。
对第三实施例进一步地,系统还包括用于实现主线程以向用于缓冲的部件提供编码批量的部件,以及用于实现工作者线程以向用于编码的部件提交编码批量并且监视编码批量的编码的部件,其中主线程向用于缓冲的部件添加视频帧中的每一个以生成编码批量并且基于添加视频帧中的每一个而增加缓冲器计数器,并且其中工作者线程基于缓冲器计数器达到与编码批量相关联的批量深度而从用于缓冲的部件提取视频帧,向用于编码的部件提供视频帧,并且在视频帧中的第一帧完成编码后释放与第一帧相关联的用于缓冲的部件的缓冲器部分。
对第三实施例进一步地,用于提交编码批量的部件包括用于顺序地提交编码批量的所述多个视频帧的部件。
对第三实施例进一步地,用于对编码批量进行编码的部件包括用于并行地编码所述多个视频帧中的两个或更多个的部件。
在一个或多个第四实施例中,至少一个机器可读介质包括多个指令,所述多个指令响应于在计算设备上执行,使得计算设备通过以下来自适应地批量化用于缓慢运动视频记录的编码任务:在缓慢运动视频记录模式中缓冲多个视频帧以生成包括所述多个视频帧的编码批量,提交包括所述多个视频帧的编码批量以用于编码,以及对编码批量进行编码以生成经编码的比特流。
对第四实施例进一步地,机器可读介质还包括指令,所述指令响应于在计算设备上执行,使得计算设备通过以下来自适应地批量化用于缓慢运动视频记录的编码任务:基于编码批量而将图形处理器从睡眠状态唤醒,其中对编码批量进行编码包括在图形处理器的连续活跃状态期间进行编码。
对第四实施例进一步地,机器可读介质还包括指令,所述指令响应于在计算设备上执行,使得计算设备通过以下来自适应地批量化用于缓慢运动视频记录的编码任务:基于编码批量而将图形处理器从睡眠状态唤醒,其中对编码批量进行编码包括在图形处理器的连续活跃状态期间进行编码,至少部分地在编码批量的编码期间缓冲第二多个视频帧以生成包括所述第二多个视频帧的第二编码批量,当编码批量的完成后使图形处理器进入到第二睡眠状态中,以及基于第二编码批量而将图形处理器从第二睡眠状态唤醒,其中对第二编码批量进行编码包括在图形处理器的第二连续活跃状态期间进行编码。
对第四实施例进一步地,机器可读介质还包括指令,所述指令响应于在计算设备上执行,使得计算设备通过以下来自适应地批量化用于缓慢运动视频记录的编码任务:实现主线程以提供所述多个视频帧的缓冲以生成包括所述多个视频帧的编码批量,以及实现工作者线程以提供包括所述多个视频帧的编码批量的提交以用于编码并且以监视编码批量的编码。
对第四实施例进一步地,机器可读介质还包括指令,所述指令响应于在计算设备上执行,使得计算设备通过以下来自适应地批量化用于缓慢运动视频记录的编码任务:实现主线程以提供所述多个视频帧的缓冲以生成包括所述多个视频帧的编码批量,以及实现工作者线程以提供包括所述多个视频帧的编码批量的提交以用于编码并且以监视编码批量的编码,其中主线程向缓冲器添加视频帧中的每一个以生成编码批量并且基于添加视频帧中的每一个而增加缓冲器计数器,并且其中工作者线程基于缓冲器计数器达到与编码批量相关联的批量深度而从缓冲器提取视频帧并且向图形处理器提供视频帧以用于编码。
在一个或多个第五实施例中,至少一个机器可读介质可以包括多个指令,所述多个指令响应于在计算设备上执行,使得计算设备执行根据以上实施例中的任何一个的方法。
在一个或多个第六实施例中,一种装置可以包括用于执行根据以上实施例中的任何一个的方法的部件。
将认识到,实施例不限于如此描述的实施例,而是可以利用修改和更改来实践而不脱离随附权利要求的范围。例如,以上实施例可以包括特征的特定组合。然而,以上实施例在这方面不受限,并且在各种实现方式中,以上实施例可以包括仅着手进行这样的特征的子集、着手进行这样的特征的不同次序、着手进行这样的特征的不同组合,和/或着手进行除明确列出的那些特征之外的附加特征。因此应当参考随附权利要求连同这样的权利要求被授予的等同物的完整范围来确定实施例的范围。

Claims (42)

1.一种用于自适应地批量化用于缓慢运动视频记录的编码任务的系统,包括:
包括用于存储视频帧的缓冲器的存储器;
耦合到存储器的中央处理器,中央处理器在缓慢运动视频记录模式中向缓冲器存储多个视频帧以生成包括所述多个视频帧的编码批量;以及
图形处理器,所述图形处理器在图形处理器的连续活跃状态期间对编码批量进行编码以生成经编码的比特流。
2.权利要求1所述的系统,其中中央处理器还至少部分地在编码批量的编码期间向缓冲器存储第二多个视频帧以生成包括所述第二多个视频帧的第二编码批量。
3.权利要求2所述的系统,其中图形处理器还在编码批量的完成后进入睡眠状态,并且基于第二编码批量而从睡眠状态唤醒。
4.权利要求1所述的系统,其中中央处理器还基于所请求的帧捕获速率不小于阈值帧捕获速率而进入缓慢运动视频记录模式。
5.权利要求1所述的系统,其中中央处理器还基于缓慢运动视频记录请求信号而进入缓慢运动视频记录模式。
6.权利要求1所述的系统,其中中央处理器还设定与编码批量相关联的批量大小,其中批量大小确定所述多个视频帧中的视频帧的数目。
7.权利要求1所述的系统,其中中央处理器还实现主线程以向缓冲器添加视频帧以生成包括所述多个视频帧的编码批量,并且实现工作者线程以向图形处理器提交包括所述多个视频帧的编码批量并且以监视编码批量的编码。
8.权利要求7所述的系统,其中中央处理器还经由主线程,基于视频帧中的每一个的添加而增加缓冲器计数器,并且经由工作者线程,基于缓冲器计数器达到与编码批量相关联的批量深度而从缓冲器提取视频帧。
9.权利要求8所述的系统,其中中央处理器还经由主线程,在所述多个视频帧中的第一帧的编码完成后释放与第一帧相关联的缓冲器的缓冲器部分。
10.权利要求1所述的系统,其中图形处理器并行地编码编码批量的所述多个视频帧中的两个或更多个。
11.权利要求1所述的系统,其中中央处理器和图形处理器包括片上系统。
12.一种用于自适应地批量化用于缓慢运动视频记录的编码任务的方法,包括:
在缓慢运动视频记录模式中缓冲多个视频帧以生成包括所述多个视频帧的编码批量;
提交包括所述多个视频帧的编码批量以用于编码;以及
对编码批量进行编码以生成经编码的比特流。
13.权利要求12所述的方法,还包括:
至少部分地在编码批量的编码期间,缓冲第二多个视频帧以生成包括所述第二多个视频帧的第二编码批量。
14.权利要求12所述的方法,其中对编码批量进行编码包括经由图形处理器对编码批量进行编码,所述方法还包括:
基于编码批量而将图形处理器从睡眠状态唤醒,其中对编码批量进行编码包括在图形处理器的连续活跃状态期间进行编码。
15.权利要求14所述的方法,还包括:
至少部分地在编码批量的编码期间缓冲第二多个视频帧以生成包括所述第二多个视频帧的第二编码批量;
当编码批量的完成后使图形处理器进入到第二睡眠状态中;以及
基于第二编码批量而将图形处理器从第二睡眠状态唤醒,其中对第二编码批量进行编码包括在图形处理器的第二连续活跃状态期间进行编码。
16.权利要求12所述的方法,还包括:
基于所请求的帧捕获速率不小于阈值帧捕获速率而进入缓慢运动视频记录模式。
17.权利要求12所述的方法,还包括:
基于缓慢运动视频记录请求信号而进入缓慢运动视频记录模式。
18.权利要求12所述的方法,还包括:
设定与编码批量相关联的批量大小,其中批量大小确定所述多个视频帧中的视频帧的数目。
19. 权利要求12所述的方法,还包括:
实现主线程以提供所述多个视频帧的缓冲以生成包括所述多个视频帧的编码批量;以及
实现工作者线程以提供包括所述多个视频帧的编码批量的提交以用于编码并且以监视编码批量的编码。
20.权利要求19所述的方法,其中主线程向缓冲器添加视频帧中的每一个以生成编码批量并且基于添加视频帧中的每一个而增加缓冲器计数器。
21.权利要求20所述的方法,其中工作者线程基于缓冲器计数器达到与编码批量相关联的批量深度而从缓冲器提取视频帧并且向图形处理器提供视频帧以用于编码。
22.权利要求21所述的方法,其中工作者线程还在视频帧中的第一帧完成编码后释放与第一帧相关联的缓冲器的缓冲器部分。
23.权利要求12所述的方法,其中提交编码批量包括顺序地提交编码批量的所述多个视频帧。
24.权利要求12所述的方法,其中对编码批量进行编码包括并行地编码所述多个视频帧中的两个或更多个。
25.一种用于自适应地批量化用于缓慢运动视频记录的编码任务的系统,包括:
用于在缓慢运动视频记录模式中缓冲多个视频帧以生成包括所述多个视频帧的编码批量的部件;
用于提交包括所述多个视频帧的编码批量以用于编码的部件;以及
用于对编码批量进行编码以生成经编码的比特流的部件。
26.权利要求25所述的系统,还包括:
用于至少部分地在编码批量的编码期间,缓冲第二多个视频帧以生成包括所述第二多个视频帧的第二编码批量的部件。
27.权利要求25所述的系统,还包括:
用于基于编码批量而将用于编码的部件从睡眠状态唤醒的部件,其中用于编码的部件包括用于在连续活跃状态期间对编码批量进行编码的部件。
28.权利要求27所述的系统,还包括:
用于至少部分地在编码批量的编码期间缓冲第二多个视频帧以生成包括所述第二多个视频帧的第二编码批量的部件;
用于当编码批量的完成后使用于编码的部件进入到第二睡眠状态中的部件;以及
用于基于第二编码批量而将用于编码的部件从第二睡眠状态唤醒的部件。
29.权利要求25所述的系统,还包括:
用于基于所请求的帧捕获速率不小于阈值帧捕获速率而进入缓慢运动视频记录模式的部件。
30.权利要求25所述的系统,还包括:
用于基于缓慢运动视频记录请求信号而进入缓慢运动视频记录模式的部件。
31.权利要求25所述的系统,还包括:
用于设定与编码批量相关联的批量大小的部件,其中批量大小确定所述多个视频帧中的视频帧的数目。
32. 权利要求25所述的系统,还包括:
用于实现主线程以向用于缓冲的部件提供编码批量的部件;以及
用于实现工作者线程以向用于编码的部件提交编码批量并且监视编码批量的编码的部件。
33.权利要求32所述的系统,其中主线程向用于缓冲的部件添加视频帧中的每一个以生成编码批量并且基于添加视频帧中的每一个而增加缓冲器计数器。
34.权利要求33所述的系统,其中工作者线程基于缓冲器计数器达到与编码批量相关联的批量深度而从用于缓冲的部件提取视频帧并且向用于编码的部件提供视频帧。
35.权利要求34所述的系统,其中工作者线程还在视频帧中的第一帧完成编码后释放与第一帧相关联的用于缓冲的部件的缓冲器部分。
36.权利要求25所述的系统,其中用于提交编码批量的部件包括用于顺序地提交编码批量的所述多个视频帧的部件。
37.权利要求25所述的系统,其中用于对编码批量进行编码的部件包括用于并行地编码所述多个视频帧中的两个或更多个的部件。
38.至少一个机器可读介质,包括多个指令,所述多个指令响应于在计算设备上执行,使得计算设备通过以下来自适应地批量化用于缓慢运动视频记录的编码任务:
在缓慢运动视频记录模式中缓冲多个视频帧以生成包括所述多个视频帧的编码批量;
提交包括所述多个视频帧的编码批量以用于编码;以及
对编码批量进行编码以生成经编码的比特流。
39.权利要求38所述的机器可读介质,还包括指令,所述指令响应于在计算设备上执行,使得计算设备通过以下来自适应地批量化用于缓慢运动视频记录的编码任务:
基于编码批量而将图形处理器从睡眠状态唤醒,其中对编码批量进行编码包括在图形处理器的连续活跃状态期间进行编码。
40.权利要求38所述的机器可读介质,还包括指令,所述指令响应于在计算设备上执行,使得计算设备通过以下来自适应地批量化用于缓慢运动视频记录的编码任务:
至少部分地在编码批量的编码期间缓冲第二多个视频帧以生成包括所述第二多个视频帧的第二编码批量;
当编码批量的完成后使图形处理器进入到第二睡眠状态中;以及
基于第二编码批量而将图形处理器从第二睡眠状态唤醒,其中对第二编码批量进行编码包括在图形处理器的第二连续活跃状态期间进行编码。
41. 权利要求38所述的机器可读介质,还包括指令,所述指令响应于在计算设备上执行,使得计算设备通过以下来自适应地批量化用于缓慢运动视频记录的编码任务:
实现主线程以提供所述多个视频帧的缓冲以生成包括所述多个视频帧的编码批量;以及
实现工作者线程以提供包括所述多个视频帧的编码批量的提交以用于编码并且以监视编码批量的编码。
42.权利要求41所述的机器可读介质,其中主线程向缓冲器添加视频帧中的每一个以生成编码批量并且基于添加视频帧中的每一个而增加缓冲器计数器,并且其中工作者线程基于缓冲器计数器达到与编码批量相关联的批量深度而从缓冲器提取视频帧并且向图形处理器提供视频帧以用于编码。
CN201580080657.6A 2015-06-04 2015-06-04 用于缓慢运动视频记录的自适应批量编码 Active CN107710757B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2015/080772 WO2016192079A1 (en) 2015-06-04 2015-06-04 Adaptive batch encoding for slow motion video recording

Publications (2)

Publication Number Publication Date
CN107710757A true CN107710757A (zh) 2018-02-16
CN107710757B CN107710757B (zh) 2021-08-10

Family

ID=57439873

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580080657.6A Active CN107710757B (zh) 2015-06-04 2015-06-04 用于缓慢运动视频记录的自适应批量编码

Country Status (4)

Country Link
US (1) US10484690B2 (zh)
CN (1) CN107710757B (zh)
DE (1) DE112015006587T5 (zh)
WO (1) WO2016192079A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114079820A (zh) * 2020-08-19 2022-02-22 安霸国际有限合伙企业 在摄像机设备上借助于神经网络输入的以感兴趣的事件/对象为中心的间隔拍摄视频生成

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107959845B (zh) * 2017-11-13 2020-09-08 北京小鸟看看科技有限公司 图像数据传输的方法、装置、客户端装置及头戴显示设备
CN110868560B (zh) * 2018-08-27 2022-04-15 青岛海信移动通信技术股份有限公司 一种基于双目相机的录像方法及终端设备
CN109729424A (zh) * 2018-12-29 2019-05-07 北京新奥特智慧体育创新发展有限公司 一种基于联机模式的慢动作播放方法
CN109788318A (zh) * 2018-12-29 2019-05-21 北京新奥特智慧体育创新发展有限公司 一种慢动作播放联机系统
CN109743590A (zh) * 2018-12-29 2019-05-10 北京新奥特智慧体育创新发展有限公司 一种慢动作播放混合系统
CN109803155A (zh) * 2018-12-29 2019-05-24 北京新奥特智慧体育创新发展有限公司 一种慢动作播放单机系统
US11438502B2 (en) 2020-05-14 2022-09-06 Qualcomm Incorporated Image signal processor resource management

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040158878A1 (en) * 2003-02-07 2004-08-12 Viresh Ratnakar Power scalable digital video decoding
US20080092168A1 (en) * 1999-03-29 2008-04-17 Logan James D Audio and video program recording, editing and playback systems using metadata
CN101179727A (zh) * 2007-12-13 2008-05-14 北京中星微电子有限公司 压缩编码控制电路和压缩编码的控制方法
CN101647278A (zh) * 2006-12-12 2010-02-10 梵提克斯公司 用于视频编码标准的改进的视频速率控制
CN101699857A (zh) * 2009-10-21 2010-04-28 南京邮电大学 机顶盒和计算机之间跨平台可视电话系统的实现方法
CN102263889A (zh) * 2010-05-25 2011-11-30 株式会社尼康 摄像装置
CN103067702A (zh) * 2012-12-06 2013-04-24 新疆公众信息产业股份有限公司 一种用于具有静止画面视频的视频浓缩方法
CN103210418A (zh) * 2010-11-23 2013-07-17 杜比实验室特许公司 高动态范围图像的内容元数据增强
US20140282753A1 (en) * 2013-03-12 2014-09-18 Guoqing Li Techniques for Transmitting Video Content to a Wirelessly Docked Device Having a Display
US8861591B2 (en) * 2007-05-11 2014-10-14 Advanced Micro Devices, Inc. Software video encoder with GPU acceleration

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW303570B (zh) * 1995-09-29 1997-04-21 Matsushita Electric Ind Co Ltd
US6543053B1 (en) * 1996-11-27 2003-04-01 University Of Hong Kong Interactive video-on-demand system
JP3350482B2 (ja) * 1999-06-04 2002-11-25 松下電送システム株式会社 算術符号化装置および算術復号化装置
EP1342375A1 (en) * 2000-12-13 2003-09-10 The Chinese University Of Hong Kong Method and system for delivering media selections through a network
JP4680166B2 (ja) * 2006-10-30 2011-05-11 ソニー株式会社 撮像装置および撮像方法
US8477143B2 (en) 2008-03-04 2013-07-02 Apple Inc. Buffers for display acceleration
EP2383648B1 (en) 2010-04-28 2020-02-19 Telefonaktiebolaget LM Ericsson (publ) Technique for GPU command scheduling
WO2012046435A1 (ja) 2010-10-04 2012-04-12 パナソニック株式会社 画像処理装置、画像符号化方法および画像処理方法
EP2611158B1 (en) 2011-12-29 2019-12-18 Swisscom AG Method and system for optimized delta encoding
CN104604241B (zh) * 2012-07-09 2018-06-01 Vid拓展公司 用于功率感知视频解码的方法和移动设备
CN105940388A (zh) 2014-02-20 2016-09-14 英特尔公司 用于图形处理单元的工作负荷批量提交机制
EP3041233A1 (en) * 2014-12-31 2016-07-06 Thomson Licensing High frame rate-low frame rate transmission technique
CN105224410A (zh) 2015-10-19 2016-01-06 成都卫士通信息产业股份有限公司 一种调度gpu进行批量运算的方法及装置
JP6819042B2 (ja) * 2016-01-14 2021-01-27 ソニー株式会社 撮像制御装置、撮像制御方法、プログラム

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080092168A1 (en) * 1999-03-29 2008-04-17 Logan James D Audio and video program recording, editing and playback systems using metadata
US20040158878A1 (en) * 2003-02-07 2004-08-12 Viresh Ratnakar Power scalable digital video decoding
CN101647278A (zh) * 2006-12-12 2010-02-10 梵提克斯公司 用于视频编码标准的改进的视频速率控制
US8861591B2 (en) * 2007-05-11 2014-10-14 Advanced Micro Devices, Inc. Software video encoder with GPU acceleration
CN101179727A (zh) * 2007-12-13 2008-05-14 北京中星微电子有限公司 压缩编码控制电路和压缩编码的控制方法
CN101699857A (zh) * 2009-10-21 2010-04-28 南京邮电大学 机顶盒和计算机之间跨平台可视电话系统的实现方法
CN102263889A (zh) * 2010-05-25 2011-11-30 株式会社尼康 摄像装置
CN103210418A (zh) * 2010-11-23 2013-07-17 杜比实验室特许公司 高动态范围图像的内容元数据增强
CN103067702A (zh) * 2012-12-06 2013-04-24 新疆公众信息产业股份有限公司 一种用于具有静止画面视频的视频浓缩方法
US20140282753A1 (en) * 2013-03-12 2014-09-18 Guoqing Li Techniques for Transmitting Video Content to a Wirelessly Docked Device Having a Display

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
吴清红: "用于缓慢运动视频记录的自适应批量编码", 《静止和活动图像一体化压缩技术研究》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114079820A (zh) * 2020-08-19 2022-02-22 安霸国际有限合伙企业 在摄像机设备上借助于神经网络输入的以感兴趣的事件/对象为中心的间隔拍摄视频生成

Also Published As

Publication number Publication date
CN107710757B (zh) 2021-08-10
DE112015006587T5 (de) 2018-05-24
WO2016192079A1 (en) 2016-12-08
US20180131941A1 (en) 2018-05-10
US10484690B2 (en) 2019-11-19

Similar Documents

Publication Publication Date Title
CN107710757A (zh) 用于缓慢运动视频记录的自适应批量编码
CN104782136B (zh) 在云中处理视频数据
CN103577269B (zh) 媒体工作负荷调度器
CN106446797B (zh) 图像聚类方法及装置
CN103959235B (zh) 在操作系统初始化过程中显示多媒体数据的技术
CN104541308B (zh) 使用多边形的3d网格和对应纹理对图像进行编码的方法和装置
CN107258086A (zh) 针对汇显示器的静态帧图像质量改进
CN104050040A (zh) 媒体重放工作负荷调度器
CN104781827B (zh) 用于加速对象检测的硬件卷积预过滤
CN107113423A (zh) 重放用于隐藏视频解码错误的旧分组和基于无线链路状况的视频解码等待时间调整
CN104035540B (zh) 在图形渲染期间降低功耗
CN104781845B (zh) 处理视频内容
CN103997687B (zh) 用于向视频增加交互特征的方法及装置
CN107925777A (zh) 用于视频译码的帧重新排序的方法和系统
CN108235058A (zh) 视频质量处理方法、存储介质和终端
CN103179393B (zh) 降低运动补偿和显示刷新中的功耗的dram压缩方案
CN108702480A (zh) 电子设备和用于驱动其显示器的方法
CN110268707A (zh) 用于捕捉图像的传感器及其控制方法
CN107079192A (zh) 使用压缩视频流的动态屏幕上显示
CN103222261B (zh) 视频系统中基于语义的特技模式播放的方法
CN105830429B (zh) 用于处理被相机运动损坏的视频帧的方法和系统
CN107004253A (zh) 用于增强的图像处理并行性的具有等价类的基于图形的应用程序编程接口架构
CN106664412A (zh) 包括目标比特率的视频编码速率控制和质量控制
CN107430503A (zh) 音频传输系统的信号同步和等待时间抖动补偿
CN107211126A (zh) 编码器中的无线带宽降低

Legal Events

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