用于嵌入式应用的方法和装置与流程

文档序号:16403627发布日期:2018-12-25 20:17阅读:165来源:国知局
用于嵌入式应用的方法和装置与流程

相关申请的交叉引用

本申请要求于2011年6月30日提交的、标题为“methodsandapparatusforanembeddedapplicance”的美国临时申请no.61/503,472的优先权,该申请的全部公开内容在此通过引用并入本文。

一些实施例总地涉及一种用于嵌入式应用的装置和方法。

背景技术

捕捉应需求可用的、用于时移观看的、例如课堂教学和会议的现场媒体录制的能力对于诸如大学和企业的机构已经变得是有价值的。尽管已知用于捕捉和发布现场录制的一些商业解决方案,但是这些解决方案通常在诸如个人电脑(pc)的通用器件上实现。因为这些基于pc的捕捉解决方案使用通用的组件和软件,所以它们很昂贵,难以维护,当捕捉并存储信号时效率低,容易受到安全威胁,需要特殊的技术支持,并且可能难以集成到例如智能教室环境中。因此,存在对于针对目的构建的多媒体捕捉器件的需要。



技术实现要素:

在一些实施例中,一种装置包括媒体模块和修改模块,该媒体模块和修改模块包括在嵌入式应用中。该媒体模块被配置为接收与该嵌入式应用的第一输入端口相关联的第一媒体信号和与该嵌入式应用的第二输入端口相关联的第二媒体信号。该媒体模块被配置为基于第一媒体信号识别第一媒体信号参数集。该修改模块被配置为接收与具有不同于第一媒体信号参数集的第二媒体信号参数集的会话格式相关联的修改指令。该修改模块被配置为:基于第一媒体信号参数集和修改指令来修改第一媒体信号,以生成会话格式的、具有第二媒体信号参数集的第一修改媒体信号。

附图说明

图1是示出根据实施例的通过网络与控制服务器耦合的嵌入式应用的系统框图。

图2是示出根据实施例的具有输入端口、处理器、存储器和多个模块的嵌入式应用的系统框图。

图3是显示根据实施例的媒体信号通过控制服务器的流程的框图。

图4是示出根据实施例的具有与两组模块相关联的两组输入端口、处理器和存储器的嵌入式应用的系统框图。

图5是示出根据实施例的使用嵌入式应用的方法的流程图。

图6是示出根据实施例的嵌入式应用中的与被配置为测量并测试水平同步脉冲和垂直同步脉冲的时序的软件检测模块耦合的硬件检测模块的框图。

图7是示出根据实施例的检测或识别用于嵌入式应用中所接收的信号的视频标准的方法的流程图。

图8是根据实施例的vga(视频图形阵列)同步信号的示意图。

图9是根据实施例的构成vga帧的时序的帧参数的示意图。

具体实施方式

用于多媒体捕捉的嵌入式应用(在本文中也被称为“嵌入式应用”)是专用于捕捉、处理、存储和/或发送实时媒体信号(例如,音频信号、视频信号、视觉捕捉信号、数字图像信号)的器件。嵌入式应用可以捕捉例如正在进行中的课堂演示的一个或多个实时媒体信号,所述实时媒体信号可以包括数字图像信号、视觉捕捉信号、音频信号和/或视频信号。当一个或多个媒体信号被捕捉到时,嵌入式应用可以实时地通过例如对内容进行压缩、建索引、编码、解码、同步化和/或格式化(例如,解交织、抽取、缩放、修改增益、修改音频水平和/或音频复用)内容来处理和/或以其他方式修改该一个或多个信号。嵌入式应用可以例如分布在整个网络上,并且根据时间计划表进行协调来捕捉、处理、存储和发送实时媒体信号,以最终供用户从例如控制服务器和/或被配置为例如课程管理系统的一个或多个服务器进行检索。在嵌入式应用上捕捉的媒体流可选地还可以在分发之前由控制服务器进行监视和/或进一步处理。

作为具有嵌入式环境的专用(即,特定用途)器件,嵌入式应用使用加固的操作系统(os)和处理器(例如,处理器系统)来捕捉、处理、存储和/或发送实时媒体信号。加固的os被配置为抵制安全攻击(例如,阻止未授权用户或程序访问)并且便利于仅与实时媒体信号的捕捉、处理、存储和/或发送相关的功能。换句话讲,嵌入式应用内的硬件和软件被集成到并且被专门设计用于捕捉、处理、存储和/或发送实时媒体信号。因为用于捕捉、处理、存储和/或发送实时媒体信号的硬件和软件被集成到嵌入式应用的嵌入式环境中,所以与安装、缩放、设计、部署和技术支持相关联的成本和复杂度可以低于用于通用系统的成本和复杂度。

实时媒体信号表示事件的图像和/或声音,该图像和/或声音由传感器基本上与该事件发生同时地获取,并且当被获取时在传感器与嵌入式应用之间感知不到延迟的情况下被发送。嵌入式应用捕捉、处理、存储和/或发送实时媒体信号可以在任何时间执行。在整个本说明书中,实时媒体信号也被称为媒体信号。

在一些实施例中,嵌入式应用可以包括媒体模块和修改模块。媒体模块可以被配置为从嵌入式应用的第一输入端口接收第一媒体信号并且从嵌入式应用的第二输入端口接收第二媒体信号。第一媒体信号和第二媒体信号可以是例如在嵌入式应用的音频输入端口处接收的音频信号、在嵌入式应用的视觉捕捉输入端口处接收的视觉捕捉媒体信号、在嵌入式应用的视频输入端口处接收的视频媒体信号、或者在嵌入式应用的数字图像输入端口处接收的数字图像媒体信号。

媒体模块可以被配置为基于第一媒体信号识别第一媒体信号参数集。第一媒体信号参数集可以包括,例如,第一媒体信号的分辨率、第一媒体信号的帧率、第一媒体信号的比特率、或者第一媒体信号的时钟速率。

修改模块可以被配置为接收与具有不同于第一媒体信号参数集的第二媒体信号参数集的会话格式相关联的修改指令。在一些实施例中,会话格式是一组预先定义的会话格式中的一种预先定义的会话格式,其中,该组预先定义的会话格式中的每个预先定义的会话格式与一组预先定义的媒体信号参数集之中的预先定义的媒体信号参数集相关联。在这样的实施例中,媒体模块可以被配置为从该组预先定义的媒体信号参数集识别第一媒体信号参数集。在一些实施例中,可以基于例如第一媒体信号参数集、用户选定的输出参数或者嵌入式应用的能力来从该组预先定义的会话格式选择会话格式。

此外,修改模块可以被配置为基于第一媒体信号参数集和修改指令来修改第一媒体信号以生成会话格式的、具有第二媒体信号参数集的第一修改媒体信号。在一些实施例中,修改模块可以被配置为通过对第一媒体信号执行例如解交织、抽取、重调大小、颜色空间转换、修改增益、调整音频水平或音频复用来修改第一媒体信号。

如本说明书中所使用的,单数形式“一”、“一个”和“所述”包括复数指示物,除非上下文另有明确指示。因此,例如,术语“音频输入端口”意在于表示单个音频输入端口或音频输入端口的组合。

图1是分布在整个网络110上并且与控制服务器120连接的嵌入式应用100的框图。在本实施例中,控制服务器120与被配置为例如课程管理系统的服务器130(例如,运行blackboardtmwebct和/或moodle的服务器)连接。网络110可以是在各种环境(诸如,例如,办公综合楼或大学校园)下被实现为有线或无线网络的任何类型的网络,包括局域网(lan)或广域网(wan)。嵌入式应用100可以捕捉通过电子捕捉器件或传感器(诸如麦克风、网络摄像头、摄像机、静态照相机和视频播放器)获取的实时媒体信号,包括音频信号、视觉捕捉信号、数字图像信号和/或视频信号。嵌入式应用100还可以被配置为处理、存储和/或发送(例如,通过使用实时协议(诸如rtp)的网络对信号进行流传输)所捕捉的实时媒体信号。与实时媒体信号所捕捉的内容相关联的数据也可以被处理、存储和/或发送;这样的数据可以包括,例如,捕捉时间、捕捉位置和/或扬声器的名称。

嵌入式应用100可以响应于由例如控制服务器120或嵌入式应用100产生的开始指示符和停止指示符而被提示开始和停止捕捉实时媒体信号。开始指示符和停止指示符可以根据由控制服务器120和/或每个嵌入式应用100确定和/或存储的时间计划表而产生。如果例如在大学校园环境下实现嵌入式应用100,则嵌入式应用100可以被固定在大学教室里并且经由大学通信网络连接。嵌入式应用100可以例如根据存储在嵌入式应用100上的时间计划表而被提示在特定时间从特定大学教室捕捉媒体信号。

在一些实施例中,每个嵌入式应用100所捕捉的媒体信号可以被处理、存储和发送到控制服务器120。控制服务器120接收媒体信号并将它们发送到服务器130,在服务器130中,使得这些媒体信号的内容可用于分发。在其他实施例中,尽管图1中未显示,但是嵌入式应用100可以与服务器130耦合,并且每个嵌入式应用100所捕捉的媒体信号可以不经过控制服务器120地被处理、存储和发送到服务器130。这些媒体信号的内容然后在服务器130处被使得可用于分发。

在一些实施例中,媒体信号的内容可以在控制服务器120或服务器130处被使得可用于分发给用户140。在一些实施例中,媒体信号的内容可以基本上立即(例如,实时地)被使得可用于分发给用户,可以被存储以供非实时地分发,和/或可以实时地同时提供给用户并且被存储以供以后分发。在一些实施例中,可以在使得媒体信号的内容可用于分发之前,在控制服务器120、服务器130和/或另一处理器件(图1中未显示)上执行媒体信号的进一步处理。嵌入式应用100、控制服务器120和/或服务器130可以通过例如对媒体信号进行压缩、建索引、编码、解码、同步化和/或格式化(例如,解交织、抽取、缩放、修改增益、修改音频水平和/或音频复用)来处理媒体信号。

嵌入式应用100可以响应于由例如控制服务器120或嵌入式应用100产生的开始指示符和/或停止指示符而被提示开始和停止发送经处理的实时媒体信号。开始指示符和/或停止指示符可以根据时间计划表或者根据定义的条件而产生。在一些实施例中,开始指示符和/或停止指示符可以是由控制服务器内的触发产生器产生并且被嵌入式应用内的触发接收器接收的触发信号。在申请号no.10/076,872、公开号为no.us2002/0175991a1的美国专利申请“gpitriggerovertcp/ipforvideoacquisition”中阐述了关于视频信号捕捉上下文中的触发信号的更多细节,该专利申请通过引用并入本文。

嵌入式应用100还可以被配置为在任何处理阶段之后发送媒体信号。例如,嵌入式应用100可以被配置为基于网络流量状况、音频信号和数字图像信号被编码之后这些信号的不同步部分和未格式化部分来将媒体信号发送到控制服务器120。控制服务器120可以被配置为对从嵌入式应用100接收的音频信号和数字图像信号进行同步化和格式化。

嵌入式应用100上的媒体信号的捕捉还可以由控制服务器120通过例如秘密监视信号来进行监视。在标题为“embeddedapplianceformultimediacapture”的美国专利no.序号为7,720,251中描述了秘密监视的例子,该专利的全部内容通过引用并入本文(‘251专利)。

尽管图1仅显示了在一些实施例中单个控制服务器120与多个嵌入式应用100连接,但是在其他实施例中,多于一个的控制服务器120可以与嵌入式应用100的任何组合连接。例如,两个控制服务器120可以被配置为协调嵌入式应用100所捕捉的媒体信号的捕捉、处理、存储和/或发送。嵌入式应用100可以被编程为辨识多个控制服务器120,并且可以被编程为例如将处理的媒体信号的一部分发送到控制服务器120中的一个。

更具体地讲,如以下进一步所讨论的,给定的控制服务器(例如,控制服务器120)可以被配置为产生指令(例如,修改指令、对所需的输出媒体信号的要求)并将这些指令发送到嵌入式应用100,以使得嵌入式应用100中的模块可以基于这些指令来执行信号检测、修改、编码等。单独的存储服务器可以被配置为从嵌入式应用100接收输出媒体信号,对这些输出媒体信号进行处理以使得它们可供用户使用、和/或将这些输出媒体信号分发给其他器件和用户。

产生指令并将指令发送到嵌入式应用的控制服务器可以接收规定所需的输出媒体信号的用户输入(诸如输出媒体信号的所需的特性和/或参数)。这样的用户输入可以在嵌入应用处的输入媒体信号的特定格式被知道之前或者在嵌入式应用处接收到这些媒体信号之前被接收。如以下结合图2所描述的,控制服务器可以将基于用户输入的指令发送到嵌入式应用,以使得可以在嵌入式应用内基于这些指令产生对所需的输出媒体信号的要求。可替换地,在其他实施例中,可以在嵌入式应用200处从外部资源(诸如,例如,用户(例如,经由直接控制信号)和/或任何其他类型的控制嵌入式应用的外部器件)接收对所需的输出媒体信号的要求。

图2是示出具有输入端口210、媒体模块230、修改模块232、编码模块234、处理器250和存储器260的嵌入式应用200的系统框图。嵌入式应用200可以在结构和功能上类似于参照图1显示和描述的嵌入式应用100。尽管图2描绘了处理器250经由编码模块234与媒体模块230和修改模块232耦合,但是在其他实施例中,处理器250可以直接与媒体模块230和/或修改模块232耦合。在这样的实施例中,处理器250可以经由例如总线(图2中未显示)将指令和/或控制信号直接发送到媒体模块230和/或修改模块232。

嵌入式应用200响应于由例如嵌入式应用200中的调度部件(图2中未显示)、控制服务器220中的调度部件产生的、和/或来自用户经由嵌入式应用200的用户界面(图2中未显示)的直接控制信号240的开始指示符和停止指示符,经由输入端口210从各种电子器件捕捉实时媒体信号。在一些实施例中,嵌入式应用200可以包括报警模块(图2中未显示)。在’251专利中描述了调度部件和报警模块的例子。

嵌入式应用200接收媒体信号,并使用媒体模块230、修改模块232和/或编码模块234来处理和/或修改这些媒体信号。换句话讲,嵌入式应用200可以接收原始(或原生)媒体信号,并发送和/或存储经处理的和/或修改的媒体信号(“编码的媒体信号”)。嵌入式应用200可以使用存储器260来执行上述功能中的任何一种(诸如存储经编码的媒体信号)。嵌入式应用200捕捉经编码的媒体信号,并且当被例如调度部件和/或用户提示时将所述媒体信号发送到控制服务器220。所捕捉的经编码的媒体信号可以经由嵌入式应用200的输出端口(未显示)通过网络连接被作为例如复用信号发送到控制服务器220。

输入端口210包括音频输入端口202(一个或多个)、视觉捕捉输入端口204(一个或多个)、视频输入端口206(一个或多个)以及数字图像输入端口208(一个或多个)。每个输入端口210被作为嵌入式应用200的嵌入式环境的一部分集成。输入端口210所捕捉的媒体信号可以被作为模拟信号和/或作为数字信号接收。在一些实施例中,媒体信号的一部分可以是模拟的,并且媒体信号的一部分可以是数字的。

音频输入端口202(一个或多个)用于捕捉音频信号。音频输入端口202(一个或多个)可以是例如rca(美国无线电公司)立体声音频输入端口(一个或多个)、1/4”jack立体声音频输入端口(一个或多个)、xlr(cannonx系列、latch、rubber)输入端口(一个或多个)、均衡线块(一个或多个)、hdmi(高清晰多媒体)输入端口(一个或多个)、和/或usb(通用串行总线)端口(一个或多个)。音频信号可以由能够生成音频信号的任何类型的器件(例如,独立麦克风或者与摄像机连接的麦克风)生成。嵌入式应用200可以包括更多个或更少个音频输入端口,和/或可以包括多于一种的音频输入端口格式,例如,一个rca音频输入端口和一个线块音频输入端口。

视觉捕捉输入端口204(一个或多个)通过例如vga输入端口(一个或多个)、dvi(数字视觉接口)输入端口(一个或多个)、xga(扩展图形阵列)输入端口(一个或多个)、hd(高清晰)-15输入端口(一个或多个)、hdmi输入端口(一个或多个)和/或bnc(bayonetneill-concelman)连接器端口(一个或多个)来接收数字或模拟vga信号。视觉捕捉输入端口204捕捉由例如计算机或显微镜生成的图像。与视觉捕捉输入端口204连接的电子器件还可以用于从例如经由例如vga信号发送图像的电子白板捕捉图像。嵌入式应用200可以包括更多个或更少个视觉捕捉输入端口,和/或可以包括多于一种的视觉捕捉输入端口格式,例如,一个vga视觉捕捉输入端口和一个dvi视觉捕捉输入端口。

视频输入端口206(一个或多个)经由输入端口(一个或多个)从诸如摄像机的器件接收运动视频信号,所述输入端口(一个或多个)包括,但不限于,s视频输入端口(一个或多个)、复合视频输入端口(一个或多个)、hdmi输入端口(一个或多个)和/或分量视频输入端口(一个或多个)。嵌入式应用200可以包括更多个或更少个视频输入端口,和/或可以包括多于一种的视频输入端口格式,例如,一个hdmi视频输入端口和一个复合视频输入端口。

数字图像输入端口208(一个或多个)经由输入端口(一个或多个)(诸如以太网端口(一个或多个)、dvi端口(一个或多个)和/或usb端口(一个或多个))捕捉数字图像。数字图像可以使用例如数字照相机或网络摄像头来获取。嵌入式应用200可以包括更多个或更少个数字图像输入端口,和/或可以包括多于一种的数字图像输入端口格式,例如,一个dvi数字图像输入端口和一个usb数字图像输入端口。

嵌入式应用200包括用硬件实现的硬件模块和/或软件模块,它们可包括,例如,asic(专用集成电路)、cpu(中央处理单元)、fpga(现场可编程门阵列)、模块、dsp(数字信号处理器)、处理器和/或协处理器。这些硬件模块和/或软件模块可以被配置为执行与捕捉、处理、存储和/或发送媒体信号特别相关的功能。

媒体模块230可以被实现为集成电路,诸如视频芯片、音频芯片和/或音频-视频芯片。媒体模块230可以被配置为接收媒体信号、对媒体信号进行解码、识别输入媒体信号参数和/或特性、对媒体信号进行转换、和/或将媒体信号转发给修改模块232。举例来说,媒体模块230可以是从音频输入端口202接收模拟音频信号、将该模拟音频信号转换为数字音频信号、并将该数字音频信号转发给修改模块232的音频芯片。

媒体模块230可以识别所接收的媒体信号的媒体信号参数和/或特性(参数),并且可以被配置为将所识别的输入媒体信号参数发送到修改模块232和/或处理器250。在媒体模块230识别的媒体信号参数可以包括,例如,媒体信号的分辨率、媒体信号的帧率、媒体信号的长宽比、媒体信号的比特率、媒体信号的时钟率等。举例来说,媒体模块230可以确定经由视频输入端口206接收的媒体信号是1080p24fps(每秒帧)视频信号(例如,每秒24帧的1920x1080分辨率的视频),并且可以将表示这些输入媒体信号参数的信号发送到修改模块232和/或处理器250。

在一些实施例中,媒体模块230可以被配置为通过从媒体模块230处的一组寄存器读取数字参数的值来检测和/或识别所接收的媒体信号的数字参数(例如,帧率、长宽比等)。这样的数字参数检测可以在例如媒体模块230的集成电路(例如,adv7441a芯片)处进行。此外,在一些实施例中,这样的检测可以在没有接收自控制器(例如,控制服务器220、处理器250)或用户(例如,经由直接控制信号240)的任何指令、指示、输入或命令的情况下自动地在媒体模块230执行。也就是说,媒体模块230可以被配置为响应于接收到媒体信号,在没有任何其他输入的情况下,自动地对所接收的媒体信号执行数字参数检测。

尽管图2将嵌入式应用200描绘为具有一个媒体模块230,但是在一些实施例中,嵌入式应用200可以包括更多个或更少个媒体模块。在一个这样的实施例中,嵌入式应用200可以包括视频芯片媒体模块230,并且可以包括音频芯片媒体模块230,视频芯片媒体模块230被配置为从视觉捕捉输入端口204、视频输入端口206和/或数字图像输入端口208接收视频信号、对这些视频信号进行转换并发送这些视频信号,音频芯片媒体模块230被配置为从音频输入端口202接收音频信号、对这些音频信号进行转换并发送这些音频信号。尽管图2将嵌入式应用200描绘为具有一个修改模块232和一个编码模块234,但是在一些实施例(例如,如图4所示)中,嵌入式应用200可以具有两个或更多个修改模块232与两个或更多个编码模块234,这些模块每个均提供输入信号的两个单独编码的表示,这两个表示可以具有不同的特性(例如,分辨率、帧率、比特率、长宽比等)。

修改模块232可以是例如被配置为从媒体模块230接收媒体信号、处理和/或以其他方式修改媒体信号,并将修改的媒体信号发送到编码模块234的fpga。举例来说,修改模块232可以解交织(隔行到逐行(interlacedtoprogressive))、抽取(在时间上缩放,例如,从60fps缩放到24fps)、重调大小(在高度和/或宽度上缩放,例如,向上缩放和/或向下缩放分辨率)、执行颜色空间转换(在密度上缩放)、修改增益、调整音频水平(一个或多个)、和/或执行音频复用(从一组音频信号选择音频信号或组合音频信号)。

在一些实施例中,修改模块232可以基于从处理器250接收的修改指令、从编码模块234接收的修改指令、和/或从媒体模块230接收的输入媒体信号参数来修改信号。修改指令可以在处理器250或编码模块234处基于对所需的输出媒体信号的要求(诸如输出媒体信号的所需的特性和/或参数)而产生。在一些实施例中,对所需的输出媒体信号的要求可以在嵌入式应用200内(诸如,例如,在处理器250处)产生。在其他实施例中,对所需的输出媒体信号的要求可以在嵌入式应用200从外部资源(诸如,例如,用户(例如,经由直接控制信号240)、控制服务器220、和/或控制嵌入式应用200的任何其他类型的外部器件)接收。

此外,在一些实施例中,对所需的输出媒体信号的要求(例如,输出媒体信号的所需的特性和/或参数的信息)可以在嵌入式应用200接收到输入媒体信号之前在嵌入式应用200处接收或产生。在这样的实施例中,对所需的输出媒体信号的要求可以独立于输入媒体信号(也就是说,在没有输入媒体信号的任何信息的情况下)进行定义。修改指令可以在例如处理器250处基于对所需的输出媒体信号的要求和/或输入媒体信号的信息(例如,参数)而产生。修改模块232可以被配置为实时地基于在媒体模块230识别的输入媒体信号的参数和修改指令来修改输入媒体信号,以生成所需的输出媒体信号。

例如,在第一次,处理器250可以从控制服务器220接收第一信号,第一信号指示任何输入视频信号要被修改为24fps的、分辨率为1024x768的输出视频信号。在第一次之后的第二次,修改模块232可以从媒体模块230接收媒体信号,例如,30fps的、分辨率为1920x1080的视频信号。修改模块232然后可以从处理器250和/或编码模块234接收第一修改指令,第一修改指令与将30fps的、分辨率为1920x1080的视频信号修改为24fps的、分辨率为1024x768的视频信号相关联。通过遵从该修改指令,修改模块232可以重新将视频信号的大小从1920x1080调整为1024x768,并将视频信号从30fps抽取到24fps。在该修改之后,修改模块232可以将修改的媒体信号发送到编码模块234。此外,当从处理器250接收的第二修改指令指示任何输入视频信号要被修改为不同分辨率的两个输出媒体信号(例如,通过对15fps的800x600视频输出进行第二次修改)时,第二修改模块(图2中未显示)可以实时地重新调整输入视频信号的大小并将输入视频信号抽取到那些参数,并将第二输出视频信号发送到第二编码模块(图2中未显示)。第二修改指令可以在修改模块232接收到输入视频信号之前,在处理器250处基于从用户接收(例如直接控制信号240)的指示对输出进行第二次修改的第二信号而产生。

编码模块234可以是被配置为对从修改模块232接收的修改的媒体信号进行编码的数字信号处理器。编码模块234被配置为确定媒体信号修改和相关联的修改指令,并且可以将这些修改指令发送到媒体模块230和/或修改模块232。在一些实施例中,当处理器250指示对同一输入流进行多次修改时,可以使用两个或更多个模块来提供多个输出媒体流。编码模块234还被配置为将修改的媒体信号编码(例如,压缩)为使用分辨率为1920x1080的会话格式(诸如,例如,h.264/mpeg(运动图像专家组)4avc(h.264))的编码信号。会话格式可以包括编码信号简档(例如,h.264简档)和水平(例如,h.264水平)以及诸如分辨率的其他特性。会话格式可以通过例如基于输入媒体信号参数、用户选定的(或默认的)输出参数、和/或嵌入式应用200的能力来从一组可能的会话格式选择会话格式的过程而确定。例如,在一些实施例中,控制服务器220可以基于输出参数和嵌入式应用的能力来确定会话格式,然后可以经由处理器250将表示所确定的会话格式的信号发送到编码模块234。输出参数可以是例如用户(例如,将产生媒体信号将以其为基础的内容的教授)所请求的分辨率、速度和/或文件大小。

控制服务器220可以被配置为与两个或更多个嵌入式应用200耦合,并且这些两个或更多个嵌入式应用200每个均可以具有不同的能力。嵌入式应用的能力可以是例如输入端口所支持的最大本机分辨率、内部处理能力和内部存储。控制服务器220可以通过使会话格式的确定除了基于用户为该应用选定的参数之外还基于单个嵌入式应用的能力来确定这样的异构应用环境下的会话格式。例如,给定的输出参数集的选择可以导致用于第一嵌入式应用200的第一会话格式,但是同一输出参数集的选择可以导致用于第二嵌入式应用200的不同于第一会话格式的第二会话格式。

按会话格式编码的一个或多个媒体信号可以被压缩和/或以其他方式处理到大于原生或原始信号的程度,但是仍可以被配置为通过使用第二格式被解码和/或随后通过使用第二格式被编码。这使得媒体信号可以被压缩和/或以其他方式处理到大于原生或原始信号的程度,但是还可以被压缩和/或以其他方式处理到低于或大于用会话格式编码的媒体信号的程度。举例来说,考虑存储在存储器中10个单位空间中的原始信号;基于该原始信号的被编码为会话格式的媒体信号被存储在存储器中5个单位空间中。在这个例子中,被编码为会话格式的媒体信号可以被控制服务器按第二格式解码、然后编码,并且被存储在存储器中8个单位空间中,并且可以被控制服务器按第三格式编码并被存储在存储器中3个单位空间中。如这个例子所示,会话格式可以由控制服务器选择,并且被通知给嵌入式应用,以使得嵌入式应用将原始信号压缩或以其他方式处理为适合于传输给控制服务器、随后被控制服务器处理为所需输出格式(一种或多种)的格式。在一些实施例中,使用会话格式的压缩和/或处理的程度可以确定可以从其选择随后的编码格式的最大范围的格式。以这种方式,如果用户要求高度灵活的后期捕捉,则如选定的输出参数所指示的,所确定的会话格式可以包括低程度的处理和/或压缩,从而导致文件大小较大。但是如果用户要求低程度的灵活性,则如用户选定的输出参数所指示的,所确定的会话格式可以包括高程度的处理和/或压缩,从而导致文件大小较小。指出,在这两种情况下,可以使用公共媒体格式,但是如刚才所描述的,用于媒体格式的参数和/或水平可以不同。

编码模块234可以将编码的信号发送到处理器250。在一些实施例中,编码模块234可以对从修改模块232接收的视频信号进行编码并发送该视频信号,并且可以将与该视频信号相关联的未编码的音频信号发送到处理器250。在这样的实施例中,处理器250可以对该音频信号进行编码。在其他实施例中,编码模块234可以对编码的视频信号和相关联的编码的音频信号这两个信号进行编码,并将这两个信号发送到处理器250。尽管以上参照h.264描述了编码模块234,但是编码模块234可以将媒体信号编码为其他格式(诸如,例如,mpeglayer-2格式)。编码模块234还可以将媒体信号同时压缩为多于一种的格式。例如,如果嵌入式应用200接收到数字图像信号和相关联的音频信号,则数字图像信号可以被压缩为jpeg(联合图像专家组)格式,而音频信号可以被压缩为mpegaudiolayer-3(mp3)格式。在一些实施例中,编码模块234可以将单个媒体信号同时压缩为多种格式。类似地,一个或多个媒体信号可以被压缩为单个压缩流(例如,mpeg-4)。

处理器250可以从编码模块234接收编码的媒体信号,将编码的媒体信号存储在存储器260中,和/或将编码的媒体信号发送到控制服务器220。在一些实施例中,处理器250可以将编码的媒体信号存储在存储器260中,并且可以在后来的时间(诸如,例如,在感知到嵌入式应用220与其连接的控制服务器220和/或网络的流量低的时间期间)将编码的媒体信号发送到控制服务器220。处理器250被配置为从媒体模块230和/或修改模块232接收输入媒体信号参数并且从控制服务器220和/或直接控制信号240接收用户选定参数。类似于编码模块234,处理器250还可以被配置为确定媒体信号修改和相关联的修改指令,并且可以将这些修改指令发送到媒体模块230和/或修改模块232。处理器250还被配置为确定编码格式和相关联的编码指令,并且可以将这些编码指令发送到编码模块234。处理器250被配置为将编码的媒体信号存储在存储器260中并且基本上立即地和/或非实时地基于与时间计划表相关联的发送指示符将编码的媒体信号发送到控制服务器220。

处理器250和/或编码模块234可以被配置为当输入媒体信号在捕捉会话期间改变时实时地确定要发送到媒体模块230和/或修改模块232的附加指令。举例来说,嵌入式应用200可以响应于从调度部件或用户接收的开始指示来开始捕捉媒体信号,并且可以开始以60fps接收1920x1080视频。基于用户所请求的24fps的1920x1080视频的参数集,处理器250和/或编码模块234可以将修改指令定义为仅对媒体信号执行抽取以将信号从60fps降至24fps,并将该修改指令发送到修改模块232。在该修改指令被发送之后,嵌入式应用200所接收的媒体信号可以变为30fps的1024x768视频。例如,嵌入式应用200的用户可以使特定视频器件与给定输入断开,并将不同视频器件与不同输出格式连接。处理器250和/或编码模块234可以实时地从媒体模块230和/或修改模块232接收媒体信号的输入媒体信号参数已经改变的指示,并且处理器250和/或编码模块234可以将新的修改指令定义为重新将新的媒体信号的大小调整到高达1920x1080并且对这些新的媒体信号执行抽取以将这些媒体信号的速度从30fps降至24fps,并将该新修改指令发送到修改模块232。无论何时媒体信号的格式改变和/或新的媒体信号被添加,处理器250和/或编码模块234都可以将一个或多个新的修改指令定义为保持同一修改的媒体信号被编码模块234接收,并发送该新的修改指令。

在一些实施例中,处理器250可以从控制服务器220接收表示媒体信号的编码参数(例如,会话格式)的指令、和/或用于一个或多个媒体捕捉会话的调度指令。在处理器250已经接收到输出参数和/或编码参数(例如,会话格式)并且已经接收到调度指令的实施例中,嵌入式器件200可以基于该调度或者基于来自用户的直接控制信号来捕捉媒体信号,而不管嵌入式应用200是否保持与控制服务器220连接。换句话讲,如果嵌入式应用200有意或无意地从控制服务器220断开,则嵌入式应用200可以继续操作,例如,捕捉媒体信号。在这样的实施例中,嵌入式应用200可以继续存储编码的媒体信号,直到板上存储器和/或外部存储器被填满为止。在这样的实施例中,嵌入式应用200可以被配置为用更高优先级的编码的媒体信号覆写低优先级的编码的媒体信号。

嵌入式应用200捕捉通过输入端口210接收的实时媒体信号的任何组合。每个媒体信号尽管是经由不同输入端口210收集的,但是被嵌入式应用200同步地获取。例如,即使粉笔与教室黑板摩擦的声音可以通过音频输入端口202经由麦克风接收,但是教授的手挥动粉笔的运动可以通过使用与视频输入端口206连接的摄像机来同步地接收。这些媒体信号被嵌入式应用200同步地接收和处理。

在一些实施例中,嵌入式应用200可以被配置为仅捕捉媒体信号的某些部分。嵌入式应用200可以被配置为例如捕捉并存储经由麦克风接收的声音、同时忽略静止状态和/或沉默状态。嵌入式应用200还可以被配置为例如仅当场景中的移动或大幅改变被检测到时才捕捉视频信号或数字图像信号。在许多实施例中,嵌入式应用200中所包括的每个输入端口210可以被配置为以不同的和/或变化的速率捕捉一个或多个媒体信号。例如,视频输入端口206可以被配置为以与数字图像输入端口208所接收的数字图像的帧率相比高的帧率接收视频信号。

存储器260可以是任何合适类型的固定的和/或可移动的存储器件。存储器260可以是,但不限于,磁带、数字视频盘(dvd)、数字视频盒(dvc)、随机存取存储器(ram)、固态驱动器(ssd)、闪存和/或硬盘驱动器。存储器260的大小可以根据特定应用所需的存储量而变化。例如,如果嵌入式应用200意在于捕捉以无损格式压缩的大量媒体信号,则存储器260的大小可以较高。如果嵌入式应用200意在于例如在不将所捕捉的媒体信号上传到例如控制服务器220的情况下在相对长的时间段内(例如,在网络中断时间期间)捕捉媒体信号,则存储器260的大小也可以较高。存储器260可以用于防止由于网络故障而不能被发送到例如控制服务器220的捕捉媒体信号的损失。在一些实施例中,如果必要的话,处理器250可以使用存储器260来在压缩之前缓冲经由输入端口210接收的信息。

在一些实施例中,调度部件(图2中未显示)可以被设置在嵌入式应用200中和/或控制服务器220中,并且可以产生提示嵌入式应用200例如开始和停止捕捉和/或开始和停止发送媒体信号的开始指示符和停止指示符。调度部件可以访问存储在嵌入式应用200本地上的或者存储在控制服务器220上的时间计划表。时间计划表可以包括例如特定于输入端口210的开始时间和停止时间。例如,如果教授将在四个月内每周、一周一天教一个小时的课,则调度部件可以使用调度表来提示嵌入式应用200在这四个月的时间段内每周上课那天捕捉该教授的讲课一个小时。调度部件可以被配置为根据存储在例如嵌入式应用200上的多于一个的时间计划表来捕捉或发送媒体信号。

调度部件可以产生时间计划表或者从控制服务器220接收时间计划表。例如,调度部件可以基于来自控制服务器220的指示优选发送时间的输入来产生用于发送捕捉媒体信号的时间计划表。在一些实施例中,调度部件可以访问并执行例如从控制服务器220发送并且存储在嵌入式应用200的存储器260中的时间计划表。在一些实施例中,调度部件可以用于不仅开始和停止嵌入式应用200捕捉和/或发送媒体信号,而且还可以用于开始和停止媒体信号的处理和/或存储。

不是使用时间计划表来提示媒体信号的捕捉和/或发送,调度部件而是可以基于所定义的标准来提示某些功能要被执行。例如,调度部件可以被配置为当某一量的带宽可供嵌入式应用200使用时提示从嵌入式应用200发送媒体信号。在一些实施例中,调度部件可以被作为与处理器250分开的硬件和/或软件模块包括在内。

尽管图2描绘了具有分立的媒体模块230、修改模块232、编码模块234和处理器250的嵌入式应用200,但是在一些实施例中,嵌入式应用200包括可以是被配置为在嵌入式环境下定义和/或操作的任何类型的处理器(例如,嵌入式处理器或通用处理器)的单个处理器。该单个处理器可以被配置为执行处理器250、媒体模块230、修改模块232、编码模块234所执行的功能和/或嵌入式应用200内的其他功能。在一些实施例中,这些模块和处理器每个均可以用单件硬件实施、在多件硬件上实施、和/或在共享硬件上实施。

在一些实施例中,来自调度部件的开始指示符和停止指示符可以基于诸如每个嵌入式应用200的存储和/或发送能力的变化。控制服务器220可以查询每个嵌入式应用200来确定例如每个嵌入式应用200的存储器260有多少容量可供使用。控制服务器220还可以例如从每个嵌入式应用200接收指示每个嵌入式应用200的存储器260有多少容量可供使用的信号。控制服务器220然后可以基于存储器容量的指示符来对从嵌入式应用200发送信息进行优先级排序并提示从嵌入式应用200发送信息。

图2还示出了可以通过使用来自例如用户的直接控制信号240来控制嵌入式应用200。嵌入式应用200可以包括生成控制嵌入式应用200可以执行的一些或全部功能的直接控制信号240的界面,诸如图形用户界面(gui)(图2中未显示)、物理显示器(图2中未显示)、或按钮(图2中未显示)。直接控制信号240可以例如用于例如在控制服务器220停机时修改存储在嵌入式应用200上的时间计划表、修改媒体信号的处理、排解嵌入式应用200上的错误、或者控制嵌入式应用200。直接控制信号240还可以用于例如开始和停止媒体信号的捕捉和/或发送。嵌入式应用200可以被配置为在接收经由界面(图2中未显示)从用户发送的直接控制信号240之前要求对例如用户进行认证(例如,用户名/密码)。直接控制信号240还可以通过使用例如不直接与嵌入式应用200耦合的界面(图2中未显示)而产生。在一些实施例中,可以使用控制服务器220来直接控制嵌入式应用200。

在一些实施例中,嵌入式应用200可以包括执行媒体信号的其他处理功能(诸如,例如,编码、解码、建索引、格式化和/或同步化)的其他软件和/或硬件模块。

尽管图2描绘嵌入式应用200与既控制和/或指示嵌入式应用200的操作、又从嵌入式应用200接收输出媒体信号的单个控制服务器200耦合,但是在一些实施例(如关于图1显示和描述)中,嵌入式应用200可以与分别执行不同功能的两个或多于两个的服务器器件耦合。例如,嵌入式应用200可以与控制服务器(类似于图1中的控制服务器120)和存储服务器(类似于图1中的服务器130)耦合。控制服务器可以被配置为产生指令(例如,修改指令、对所需的输出媒体信号的要求)并将指令发送到嵌入式应用200,以使得嵌入式应用200中的模块可以基于这些指令来执行信号检测、修改、编码等。存储服务器可以被配置为从嵌入式应用200接收输出媒体信号、对输出媒体信号进行处理以使得它们可供用户使用、和/或将输出媒体信号分发给其他器件和用户。

图3是显示从嵌入式应用(类似于图1和图2中的嵌入式应用100和嵌入式应用200)通过控制服务器320中的模块的媒体信号流程的框图。控制服务器320接收编码的实时的或存储的媒体信号305,这些媒体信号305按会话格式编码,并且包括编码的视频信号311和编码的音频信号313。尽管该图显示媒体信号305的每个分量通过例如互联网协议(ip)网络连接被作为复用信号接收,该复用信号被控制服务器320接收时可以被控制服务器320解复用,但是在一些实施例中,媒体信号305可以被作为一个或多个分离信号发送到控制服务器320。例如,可以在嵌入式应用将音频信号和视频信号发送到控制服务器320之前在嵌入式应用将这些信号组合为单个mpeg-2信号。此外,控制服务器320可以从多于一个的嵌入式应用接收媒体信号305,并且可以使用例如多线程处理并行地对每个媒体信号305进行处理。

控制服务器320接收的每个压缩媒体信号305被类似地处理。每个媒体信号305可以被解码模块315(例如,解码模块312a或312b)、索引模块325(例如,索引模块314a或314b)和编码模块335(例如,编码模块316a或316b)中的一个处理。在每个媒体信号305被处理(例如,被单个地处理、被作为组进行处理)之后,同步器/格式化器380对这些信号进行同步化和/或格式化。

编码的视频信号311的处理在本文中将用作压缩媒体信号305的处理的代表性例子。其余的信号305的处理可以根据这个代表性例子进行理解。

当编码的视频信号311被控制服务器320接收时,解码模块315可以将编码的视频信号311从会话格式解压缩为解码的视频信号。解码模块315可以被配置为当接收到编码的视频信号311时检测编码的视频信号311的会话格式,以使得信号311可以被适当地解码/解压缩。编码的视频信号311被转换为解码的视频信号时可以被解码为不同于会话格式的另一种格式,并且可以被控制服务器320用于继续对该信号进行处理。在一些实施例中,编码的视频信号311可以按会话格式接收,并且可以按该格式存储。在这样的实施例中,控制服务器320可以在以后的时间根据用户请求对编码的视频信号311进行解码。

解码的视频信号然后被索引模块325处理以通过例如确定并标记场景变化来对解码的视频信号建索引。执行建索引,以使得解码的视频信号以后可以被同步器/格式化器380使得适当地与其他媒体信号305同步,并且提供供例如终端用户(图3中未显示)使用的相关索引点。可以使用索引模块314b来从编码的音频信号313检测片段,而不是场景,以使得编码的音频信号313可以适当地与其他媒体信号305同步,并且提供供例如终端用户使用的相关索引点。具有索引(例如,场景变化标记)的解码的视频信号然后被编码模块316a编码为可以被同步器/格式化器380同步化和格式化的编码。

返回到图3的总体讨论,同步器/格式化器380接收通过解码模块315、索引模块325和编码模块335的处理之后的媒体信号305。同步器/格式化器380对媒体信号进行建索引、同步化和格式化,以使得用户可以经由用户界面340访问它们。在同步处理中,使来自媒体信号和音频片段中的每个的场景同步,以使得例如触及地板的掉落的笔的声音与该触及地板的笔的视频匹配。同步器/格式化器380可以将同步的媒体信号格式化为用户可以使用的一种或多种格式。举例来说,用户可以一开始请求用于编码的媒体信号的某些输出参数,导致按会话格式编码的媒体信号,但是后来请求不同格式的编码的媒体信号。例如,输出参数可以导致具有24fps的1024x768视频的编码的媒体信号;但是然后用户可以请求将该媒体格式下载到最大分辨率为800x600的便携式器件。在这样的例子中,控制服务器320可以通过解码模块315(一个或多个)、索引模块325(一个或多个)、编码模块335(一个或多个)和同步器/格式化器380发送存储的编码的媒体信号305,以重新将媒体信号305格式化为24fps的800x600视频。以这种方式,编码的视频信号可以在便携式器件上占用较少的存储器。

同步器/格式化器380可以接收附属(collateral)资料370,并且可以将附属资料370与已经被模块处理的媒体信号305组合。附属资料370可以是例如可以与处理的媒体信号组合以帮助同步处理的附加标记信息。在一些实施例中,附属资料370可以是其他多媒体捕捉器件(图3中未显示)所捕捉的要与已经显示的媒体信号305组合的附加媒体信号。尽管图3中未显示,但是控制服务器320可以包括对控制服务器320所接收的附属资料370进行解码、建索引(例如,场景/片段检测或光学字符辨识)和/或编码的单独的模块。

尽管图3显示了单独的模块执行解码、建索引、编码、同步化和格式化,但是每个模块的功能可以进一步细分和/或组合到一个或多个处理器或模块中。这些功能还可以细分和/或组合到多于一个的控制服务器上。此外,控制服务器320可以包括用于存储从一个或多个嵌入式应用接收的信息和/或缓存该信息的存储器(图3中未显示)或单独的数据库(图3中未显示)。

控制服务器320的模块和/或其他组件中的任何一个所执行的功能的任何组合都可以可替换地在嵌入式应用上执行。例如,可以在媒体信号被压缩和发送到控制服务器320之前由嵌入式应用执行建索引。

控制服务器320还可以经由用户界面340从用户接收输入信号。用户界面340可以是例如经由网络连接与控制服务器320建立接口的远程计算机,和/或可以是被集成到控制服务器320中的界面。用户界面340可以用于控制任何一个模块及其相关联的功能和/或指定用于对控制服务器320上的信息进行处理的参数。用户输入信号可以指定例如同步器/格式化器380应当将其用于在控制服务器320接收的特定组媒体信号305的格式的类型。用户界面340可以被配置为使得用户可以手动地操纵分布在网络上的嵌入式应用所接收的任何媒体信号305。

用户界面340还可以用于访问、监视和/或控制可以与控制服务器320连接并且分布在例如网络上的任何嵌入式应用(图3中未显示)。经由用户界面340对嵌入式应用和/或控制服务器320的访问可以例如受到密码保护。用户界面340可以用于定义例如嵌入式应用所使用的时间计划表、或者控制服务器320用于发送开始和停止分布式嵌入式应用进行捕捉、处理、存储和/或发送的信号的时间计划表。用户界面340可以用于查看与控制服务器320连接的嵌入式应用可产生的秘密监视信号。

用户界面340还可以用于访问控制服务器320所产生的最终的同步化/格式化的内容。多于一个的用户界面340可以分布在网络上,并且可以被配置为访问控制服务器320(例如,分布在访问控制服务器320的大学网络上的个人计算机)所生成的内容。在一些实施例中,控制服务器320将内容发送到在其上可以使得内容可供一个或多个用户通过用户界面340使用的服务器(图3中未显示)。

图4是示出根据实施例的具有与两组模块相关联的两组输入端口(输入端口410a和410b)、处理器450和存储器460的嵌入式应用400的系统框图。嵌入式应用400可以类似于嵌入式应用200(图2中),并且可以包括具有类似功能的类似元件。举例来说,嵌入式应用400的处理器450可以类似于嵌入式应用200的处理器250。然而,与嵌入式应用200不同,嵌入式应用400包括两组输入和模块,这两组输入和模块包括两组输入端口410a和410b、两个媒体模块430a和430b、两组修改模块432a和432b、两个同步模块470a和470b、以及两组编码模块434a和434b。以这种方式,嵌入式应用400可以同时对来自多个输入的多个同时信号进行处理和修改。举例来说,“a”组输入和模块可以捕捉、处理和存储使用第一会话格式的一个或多个媒体信号,而“b”组输入和模块可以捕捉、处理和现场流传输使用第二会话格式的相同的(或不同的)一个或多个媒体信号。在其他实施例中,两组输入都可以用于现场流和/或用于存储的编码的媒体信号。另外,如以上关于图2所描述的并且在图4中所示的,每个信道(“a”信道和“b”信道)可以具有一个或多于一个的修改模块(例如,修改模块432a和432b)、和/或一个或多于一个的编码模块(例如,编码模块434a和434b)。

如图4所示,嵌入式应用400包括图2中所示的嵌入式应用200中不包括的同步模块470a和470b。同步模块470a和470b使具有不同时基的输入信号集与公共时基对准。公共时基可以从一个输入信号或者从不与任何输入信号对准的参考时基推导得到。同步模块470a和470b使特定时间段期间的媒体采样(例如,音频采样、视频帧)的数量在整个捕捉或捕捉会话过程中对于例如控制服务器420所请求的采样速率而言正确地一致。在一些实施例中,同步模块470a和470b使用采样删除和采样插入来确保所有的媒体信号在编码之后都是同步的。在其他实施例中,同步模块470a和470b使用采样混合技术(例如,重采样、电视电影等)。

例如,如果控制服务器420指示处理器450以15fps捕捉视频并且以每秒44100个采样(sps)捕捉音频,则同步模块470a和470b均可以使用音频时钟作为时基。如果实际输入视频帧率理想情况为29.97fps,则修改模块432a和432b可以被配置为使用例如分子为15000、分母为29970的简单计数器来将帧从29.97fps抽取到15fps。在操作中,修改模块432a和432b可以被配置为将15000与每个输入视频帧的分子相加,并且每当分子至少等于分母时发射视频帧。然后以下一个视频帧的分母为模来减小分子。也就是说,从分子减去分母,直到分子小于分母为止。然后对下一个输入视频帧重复这样的方法。

上述方法将提供输入帧和输出帧的适当比率。然而,仅该方法本身通常没有考虑在捕捉持续时间期间变化的输入时钟,而且该方法通常也不会从输入信号的损失恢复。例如,在实践中,输入时钟不是理想的29.97fps,而是可以随着源器械(例如,源摄像机、提供显示图像的源计算机)变暖或变冷而向上或向下漂移。当涉及多个源时,它们的时钟将几乎总是从不同时基推导得到,因此应该经过处理以当它们被以理想的帧率和采样速率进行编码时保持完美的同步。如果例如在高帧率设置下使用前面的方法,则即使源之间的小量的时钟漂移也可以在数小时捕捉之后导致音频与视频之间明显的同步损失。

为了解决这个问题,可以(例如,在媒体模块430a和430b)使用采样的媒体信号(视频帧或音频块)上的时间戳和采样计数来使编码模块434a和434b对于给定数量的音频采样准确地对适当数量的视频帧进行编码。同步模块470a和470b可以被配置为保持帧在其内从修改模块432a和432b到达的时间窗口,从而允许可配置的余裕量。例如,如果同步模块470a接收太早到达的帧(也就是说,该帧的时间戳早于当前编码窗口,可能是因为输入时钟漂移并且现在比较快),则同步模块470a不将该帧发送到编码模块434a。如果同步模块470a确定当前时间窗口已经终止,则同步模块470a将前一帧发送到编码模块434a,从而导致重复帧(除非前一帧太早)。在可配置的数量的重复帧之后,同步模块470a可以切换到包含丢失的信号的指示的帧(例如,黑屏、蓝屏、具有某一文本的屏幕等)。每当帧被发送到编码模块434a时,同步模块470a就将基于时基和到目前为止编码的帧数来将其时间窗口更新为理想窗口。该方法使得所有的输入媒体采样在编码之后都可以保持同步,而不管是否被供给不同的变化的时钟。

在一些实施例中,除了同步模块470a和470b之外的模块也可以对媒体信号执行与同步功能相关的功能。例如,如上所述,媒体模块430a和430b可以被配置为确定从输入端口410a和410b接收的媒体信号的每个帧的时间戳,以使得可以在同步模块470a和470b基于这些时间戳使这些媒体信号同步。

图5是示出根据本发明的实施例的使用嵌入式应用捕捉、处理、存储和/或发送媒体信号的方法5000的流程图。根据方法5000并且参照图2,在5002,处理器250可以从控制服务器220接收表示基于输出参数和/或嵌入式应用能力的会话格式的信号。在一些实施例中,输出参数可以由用户经由上述界面直接输入到嵌入式应用200。会话格式可以是,例如,如控制服务器220的用户或者提供嵌入式应用200的直接输入的用户所指定的捕捉会话的所需格式。就这点而论,可以与捕捉会话期间将捕捉的媒体信号的格式无关地指定会话格式。换句话讲,会话格式可以由控制服务器220的用户或者提供嵌入式应用200的直接输入的用户指定,而无需用户具有对将被捕捉的媒体信号的格式或者与嵌入式应用200的输入端口210耦合的媒体捕捉器件的类型具有任何了解。

在5004处,处理器250可以接收开始捕捉会话的指示。开始捕捉会话的指示可以基于,例如,时间计划表或来自嵌入式应用200的用户的直接输入。捕捉会话可以是任何时间量,并且可以例如通过时间计划表、默认值(例如,1小时增量)来确定,或者动态地基于用户输入。在5006处,处理器250和/或编码模块234可以从媒体模块230和/或修改模块232接收输入媒体信号的第一个参数的第一个值。输入媒体信号的第一个参数的第一个值可以是例如这样的视频媒体信号的分辨率或帧率的值,该视频媒体信号在输入端口210被接收,并且当媒体模块230从输入端口210接收到该视频媒体信号时被媒体模块230自动地检测到。

在5008处,处理器250和/或编码模块234可以将基于第一个参数的第一个值和会话格式的第一修改指令发送到媒体模块230和/或修改模块232。这个第一修改指令可以例如在第一个参数的第一个值和会话格式被接收之后由处理器250和/或编码模块234计算。换句话讲,第一修改指令可以在捕捉会话期间或之后计算,而无需在捕捉会话开始之前预先确定或从预存选项列表选择。事实上,第一修改指令可以针对任何格式的媒体信号或与嵌入式应用200的输入端口210耦合的任何类型的媒体捕捉器件进行计算,并且不受媒体信号的格式或与嵌入式应用200的输入端口210耦合的媒体捕捉器件的类型限制或约束。

在5010处,处理器250可以将从编码模块234接收的编码的媒体信号存储在存储器260中和/或发送到控制服务器220。当编码的媒体信号被发送到控制服务器时,该编码的媒体信号可以被发送到最初发送表示会话格式的信号的控制服务器220、或者被指定接收该编码的媒体信号以进行可能的进一步处理以及随后分发的不同服务器。

在5012处,处理器250和/或编码模块234可以从媒体模块230和/或修改模块232接收输入媒体信号的第一个参数的第二个值。输入媒体信号的第一个参数的第二个值可以是例如这样的视频媒体信号的分辨率或帧率的值,该视频媒体信号在输入端口210被接收,并且当媒体模块230从输入端口210接收到该视频媒体信号时被媒体模块230自动地检测到。

在5014处,处理器250和/或编码模块234可以将基于第一个参数的第二个值和会话格式的第二修改指令发送到媒体模块230和/或修改模块232。类似于以上关于第一修改指令的讨论,这个第二修改指令可以在第一个参数的第二个值和会话格式被接收之后例如由处理器250和/或编码模块234计算。换句话讲,这个第二修改指令可以在捕捉会话期间或之后计算,并且无需在捕捉会话开始之前预先确定或从预存选项列表选择。事实上,第二修改指令可以针对任何格式的媒体信号或与嵌入式应用200的输入端口210耦合的任何类型的媒体捕捉器件进行计算,并且不受媒体信号的格式或与嵌入式应用200的输入端口210耦合的媒体捕捉器件的类型限制或约束。

在5016处,处理器250可以将从编码模块234接收的编码的媒体信号存储在存储器260中和/或发送到控制服务器220。当这个编码的媒体信号被发送到控制服务器时,该编码的媒体信号可以被发送到最初发送表示会话格式的信号的控制服务器220、或者被指定接收该编码的媒体信号以进行可能的进一步处理以及随后分发的不同服务器。

在5018处,处理器250可以接收基于时间计划表停止捕捉会话的指示、与该时间计划表、默认值相关联的和/或动态地基于用户输入的停止指示符。在5020,处理器250可以停止发送和/或存储编码的媒体信号。

图6是示出根据实施例的嵌入式应用中的与软件检测模块620耦合的硬件检测模块610的框图,软件检测模块620被配置为对水平同步脉冲和垂直同步脉冲的时序进行测量和测试。在一些实施例中,硬件检测模块610和软件检测模块620可以被安置在嵌入式应用中的任何地方。例如,硬件检测模块610可以是嵌入式应用的修改模块(例如,图4中的修改模块432a或432b)的一部分,软件检测模块620可以被存储在存储器中和/或在嵌入式应用的同步模块(例如,图4中的同步模块470a或470b)或编码模块(例如,图4的编码模块434a或434b)的处理器被执行。

硬件检测模块610和软件检测模块620分别可以是被共同配置为基于从例如嵌入式应用的输入端口处接收的媒体信号(例如,vga同步信号)确定帧参数的任何硬件模块和软件模块(被存储和/或被用硬件执行)。尽管图6中未显示,但是硬件检测模块610可以包括,例如,被配置为基于所接收的媒体信号确定一组度量的电路、寄存器等。软件检测模块620可以包括,例如,被配置为执行基于该组度量确定帧参数的方法(例如,图7的方法)的存储器、处理器、软件(例如,方法或处理)等。

尽管硬件检测模块610和软件检测模块620在本文中分别被描述为硬件模块和软件模块,但是,在其他实施例中,硬件检测模块610和软件检测模块620可以用任何其他组合实现,诸如,例如,都用硬件模块实现、都用软件模块实现、硬件检测模块610为软件模块、而软件检测模块620为硬件模块、等等组合。

如图6所示,硬件检测模块610可以被配置为接收与媒体信号相关联的信号,诸如垂直同步信号(vsync)、水平同步信号(hsync)、时钟信号(clock)等。在一些实施例中,在硬件检测模块610接收的同步信号可以是例如vga同步信号。

图8是根据实施例的vga同步信号的示意图。图8的上半部显示两帧过程期间的垂直同步信号(vsync801)和水平同步信号(hsync802),每个包括多个脉冲。在该图中,x轴表示时间,y轴表示信号的振幅。vsync801和hsync802分别类似于关于图6所显示的并且被描述为在硬件检测模块610接收的垂直同步信号和水平同步信号。

在图8的这个例子中,hsync802的hsync脉冲发生得太频繁以至于在图上不能从视觉上区分开。因此,图8的下半部显示扩展的垂直同步信号(expandedvsync803)和扩展的水平同步信号(expandedhsync804),expandedvsync803是围绕vsync801的一个vsync脉冲的区域的扩展,expandedhsync804包括hsync802在与expandedvsync803相同的时间帧内的五个hsync脉冲。expandedvsync803的示图还显示了其中可以发生vsync转变(例如,从低到高、从高到低)的两个有效区域(用灰色显示)。

在一些实施例中,vsync801和hsync802仅仅是包括在用于检测视频标准(例如,vga检测)的硬件检测模块(例如,图6中的硬件检测模块610)的典型输入中的两个输入信号。另外,时钟输入(例如,图6中的时钟信号(clock))可以供在硬件检测模块使用;这个时钟输入可以是具有比hsync802的最窄预期hsync脉冲短的时间段的任何稳定时钟。这样的时钟输入可以用作用于vga检测的所有的时间相关度量的时基。

返回到图6,硬件检测模块610可以被配置为基于所接收的同步信号(vsync、hsync)和时钟信号(clock)来对值进行测量。如图6所示,在硬件信号检测模块610测量的值可以包括,例如,vsync为高的时间长度(值611)、vsync为低的时间长度(值612)、hsync为高的时间长度(值613)、hsync为低的时间长度(值614)、其中vsync为高的线的数量(值615)、其中vsync为低的线的数量(值616)等。就值611-614而言,时间长度被定义为用于信号的那个阶段的输入时钟的脉冲数量。对于值615和616,硬件检测模块610的寄存器可以包含被计数的线(hsync脉冲)的实际数量。具体地讲,值615表示当vsync为高(例如,数字1)时所计数的实际线数,值616表示当vsync为低(例如,数字0)时所计数的实际线数。硬件检测模块610的所有寄存器可以是以寄存器的单次读取将返回用于完整帧的有效值的这样的方式缓冲的简单同步计数器。如图6所示,这些度量然后被软件检测模块620读取为同步度量。

软件检测模块620可以被配置为基于从硬件检测模块610接收的同步度量来确定用于识别视频标准(例如,vga标准)的帧参数集。

图9是根据实施例的表征用于vga帧的时序的帧参数的示意图。如图9所示,帧参数包括:horizontalbackporch901、horizontalactive902、horizontalfrontporch903、hsync904、verticalbackporch905、verticalactive906、verticalfrontporch907和vsync908。附加参数包括,例如,帧率、vsync极性、像素速率、hsync极性和/或其他帧参数。

返回到图6,软件检测模块620将从硬件检测模块610接收的同步度量(611-616)变换为帧参数集(例如,以上关于图9讨论的12个帧参数)。在一些实施例中,这些帧参数可以供与硬件检测模块610和软件检测模块620相关联的媒体模块(例如,图4中的媒体模块430)、修改模块(例如,图4中的修改模块423a/b)、和/或编码模块(例如,图4中的编码模块434a/b)使用。

图7是示出根据实施例的检测或识别用于信号的视频标准的方法7000的流程图。在一些实施例中,可以在嵌入式应用的媒体模块中的软件检测模块(诸如关于图6显示和描述的软件检测模块620)执行方法7000。具体地讲,方法7000使用从硬件检测模块(例如,图6中的硬件检测模块610)接收的数据,并应用复杂的软件方法或处理来推导例如vga信号的分辨率和时序。过执行方法7000,软件检测模块能够从多种可能的视频标准检测或识别用于每个视频信号的视频标准,诸如,例如,离散监视器计时(dmt)、一般计时公式(gtf)、协调视频计时(cvt)、减少消隐的协调视频计时(cvt-rb)、以及使用水平同步信号和垂直同步信号的高清晰电视(hdtv)。

如图7所示,在7001处,检测从从硬件检测模块接收表示度量的信号并对它们测试有效性开始。度量可以是图6的值611-616。通过相对于从检测的脉冲计数推导的范围对所检测的脉冲宽度进行交叉检查,度量被认为是有效的。如果度量被确定为无效的或非法的,则可以丢弃或舍弃这些度量,并且软件检测模块准备接收新的度量。

在7002处,对度量进行测试以使得与一些已知标准值(诸如,例如,用于dmt和hdtv的值)精确匹配。如果确定与已知标准(例如,dmt、hdtv)合适地匹配,则在软件检测模块产生识别或表示已知标准的结果,并将该结果返回到例如嵌入式应用的处理器。否则,如果没有进行合适的匹配,则在7003处,使用这些度量来计算对于一组其他已知标准(包括,例如,cvt、cvt-rb和/或gtf标准)估计的时序。然后对这些估计时序测试有效性,并舍弃任何无效的或非法的组合。

接着,对有效的估计时序进行测试以使得估计与该组已知标准匹配。如果确定与已知标准(例如,cvt、cvt-rb、gtf)匹配,则在软件检测模块产生包括该已知标准的结果,并将该结果返回给例如嵌入式应用的处理器。否则,如果在7003确定不与任何已知标准匹配,则在7004处,可以对度量应用最小匹配方法或处理以基于这些度量搜索最小值。这样的最小匹配方法可以类似于在7001-7003使用的方法(的一部分),除了被测值中的一个或多个被从用于最小匹配方法的匹配标准移除之外。在一些实施例中,可以使用不同的匹配标准来重复7004的步骤几次。可以继续重复7004,直到找到匹配为止,或者直到没有被测值还要被移除为止。

在一些实施例中,图7中的流程图所示的处理可以重新应用于一定范围的测量值来定义候选时序列表。然后可以对这些候选时序搜索最佳匹配。换句话讲,在软件检测模块执行的方法可以遍历一定范围的一个或多个参数循环,从而对于该范围内的每个测量值产生时序估计。当循环完成时,可以将最适方法应用于这些结果以选择最终时序。

尽管以上已经描述了各种实施例,但是应当理解它们仅仅是作为例子而给出的,而非限制。在上述方法指示按某一次序发生的某些事件的情况下,可以修改某些事件的排序。另外,某些事件在可能时可以在并行处理中同时执行,并且可以如上所述那样顺序地执行。

本文中所描述的一些实施例涉及一种具有非暂时性计算机可读介质(也可以被称为非暂时性处理器可读介质)的计算机存储产品,该非暂时性计算机可读介质上具有用于执行各种计算机实现的操作的指令或计算机代码。从计算机可读介质(或处理器可读介质)本身不包括暂时性传播信号(例如,传载关于发送介质(诸如空间或电缆)的信息的传播电磁波)的意义上来讲,它是非暂时性的。该介质和计算机代码(也可以被称为代码)可以是针对一个或多个特定目的设计和配置的那些介质和计算机代码。计算机可读介质的例子包括,但不限于:磁性存储介质,诸如硬盘、软盘和磁带;光学存储介质,诸如压缩盘/数字视频盘(cd/dvd)、压缩盘-只读存储器(cd-rom)和全息器件;磁光存储介质,诸如光学盘;载波信号处理模块;以及专门被配置为存储并执行程序代码的硬件器件,诸如专用集成电路(asic)、可编程逻辑器件(pld)、只读存储器(rom)和随机存取存储器(ram)器件。

计算机代码的例子包括,但不限于,微码或微指令、诸如由编译器生成的机器指令、用于生成web服务的代码、以及包含计算机使用解释器执行的更高级指令的文件。例如,可以使用java、c++或其他编程语言(例如,面向对象的编程语言)和开发工具来实现实施例。计算机代码的另外的例子包括,但不限于,控制信号、加密代码和压缩代码。

总之,除了其他方面之外,描述了一种用于使用嵌入式应用捕捉、处理、存储和/或发送媒体信号的装置和方法。尽管以上已经描述了本发明的各种实施例,但是应当理解,它们仅仅是作为例子而给出的,可以进行形式和细节上的各种改变。例如,嵌入式应用的处理器和/或模块可以包括在一个或多个壳体中的分开的电子板上,可以具有专用存储器(ram等)。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1