保护基本流内容的制作方法

文档序号:7639062阅读:146来源:国知局

专利名称::保护基本流内容的制作方法保护基本流内容背景媒体中心通常去除承载媒体内容的受保护传输流中的加密以将传输流(TS)多路分解为用于后续再加密的基本流(ES),并通过网络连接传递给媒体订户(消费者、客户机等)。媒体中心进行的这种解密和再加密操作可损害安全性,因为被解密的内容易被盗版及其它安全破坏。"媒体内容"与"内容"和"媒体信号"同义,可包括视频、音频内容、图片、动画、文本等中的一个或多个。诸如机顶盒(STB)、数字媒体接收器(DMR)和个人计算机(PC)的媒体订户通常从媒体中心或内容源接收受保护的媒体内容。受保护的媒体内容包括通过网络连接传送或从存储媒介下载的经加密的音频/视频数据。为处理该经加密的媒体内容(例如,用于编写索引),媒体订户通常需要去除媒体内容保护(即,解密媒体内容)。这种解密操作通常消耗大量设备资源并降低设备性能,因而会损害设备的响应和功能。概要本概要被提供用于以简化的形式介绍概念集合,这些内容将在以下的详细描述中进一步叙述。本概要并非旨在确定请求保护的主题的关键特征或基本特征,也并非旨在用于帮助确定请求保护的主题的范围。鉴于上述,描述了基本流(ES)媒体内容的保护。在一个方面中,标识ES内容的媒体访问单元(MAU)。每个MAU包括表示单个视频或音频帧的一个或多个数据段。为每个MAU选择加密边界。这些加密边界基于与各MAU相关联的一个或多个数据段。每个MAU的诸部分基于相应的加密边界被加密。将每个MAU映射到MAU有效负载格式。MAU有效负载格式允许媒体消费者与任何不同的ES无关地处理与ES内容相关联的每个ES。MAU有效负载格式还允许媒体消费者与任何其它MAU无关地处理ES中的每个MAU。附图简述参考附图叙述以下详细描述。图1示出了根据一个实施例的保护ES内容的示例性计算机系统。图2示出了根据一个实施例的示例性联网环境,其中可实现保护通过传输流承载的ES内容的示例性实施例。图3示出了使用计数器(counter)模式的高级加密标准来加密ES媒体内容的操作的示例性方面。图4示出了根据一个实施例的用于连同受保护ES内容一起插入传输流的示例性加密方法(TAG)分组。图5示出了根据一个实施例的发送方保护传输流内的ES的示例性过程。图6示出了根据一个实施例的示例性通用加扰传输流。图7示出了根据一个实施例的媒体访问单元(MAU)有效负载格式(MPF)头部的示例性高级结构。图8示出了根据一个实施例的图7的MPF头部的示例性细节。图9示出了根据一个实施例的使用MPF的三个实时传输分组(RTP)分组的示例性序列。图10示出了根据一个实施例的将单个媒体访问单元(MAU)分成同一RTP分组中的三个片段(fragment)的示例。图11示出了标准12字节RTP头部。图12示出了MPF的位字段3的示例性布局(layout)。图13示出了根据一个实施例的MPF头部的扩展字段的示例性布局。图14示出了根据一个实施例的保护ES内容的示例性过程。详细描述综述描述了通过基于媒体内容专用属性选择加密边界来保护ES内容的系统和方法。更具体地,这些系统和方法加密(例如使用MPEG-2等)ES的媒体访问单元(MAU)的诸部分。每个MAU是单个视频或音频帧(基本流帧)以及相关联的头部。一MAU包括一个或多个数据段。每个数据段是应用同一组内容加密参数的MAU的连续区段。一数据段被完全加密或完全明文(即不加密)。ES可不从TS产生。但是,这些ES保护操作与应用于TS流的通用加扰操作兼容。如果TS保护受保护的ES内容,该TS被多路分解成ES同时保留现有加密(即,TS不被解密)。该ES被映射到MAU有效负载格式(MPF)以将ES的MAU封装入一传输协议(即,实时传输协议(RTP)),用于后续通信传输给媒体消费者,诸如PC和机顶盒。将每个MAU映射到MPF向媒体消费者提供了足以与任何其它ES无关地处理(例如,多路分解、编写索引、存储等)每个ES,以及与任何其它MAU无关地处理每个MAU的信息。这些技术与传统的系统不同,传统的系统不通过将加密应用于由一个或多个数据段构成的MAU部分来保护ES内容。现在参考图1到14更详细地描述用于保护ES内容的系统和方法的这些及其它方面。示例性装置尽管不需要但为了讨论,在由诸如个人计算机的计算设备执行的计算机可执行指令的通用环境中描述ES内容的保护。程序模块通常包括执行特殊任务或实现特殊抽象数据类型的例程、程序、对象、组件、数据结构等。虽然在前述环境中描述系统和方法,但以下描述的动作和操作也可以硬件实现。图1示出了用于保护ES内容的示例性系统100。系统100包括通用计算设备102。计算设备102代表任何类型的计算设备,诸如个人计算机、膝上型、服务器、手持或移动计算设备等。计算设备102包括与计算机可读媒体106耦合的处理器104。计算机可读媒体106可以是可由计算设备102访问的任何可用媒体,包括易失性和非易失性媒体(例如,只读存储器(ROM)和随机存取存储器(RAM))、可移动和不可移动媒体。计算机可读媒体106的RAM部分包括可由处理器104即刻访问和/或目前正操作的程序模块和程序数据。作为示例而非限制,计算机可读媒体106包括程序模块108和程序数据110。程序模块108例如包括ES保护模块112、受保护ES内容映射模块114和其它程序模块116(例如操作系统)。ES保护模块112通过基于媒体内容专用属性选择加密边界来保护ES内容。更具体地,ES保护模块112加密(例如使用MPEG-2等)ES内容118以生成受保护的ES内容120。为此,ES保护模块112将加密应用于包括媒体访问单元(MAU)包含ES的那些部分。在一种实现中,加密操作是计数器模式的高级加密标准(AES)。每个MAU是单个视频或音频帧(基本流帧),其随后与头部(例如起始码和填塞位)相关联。每个MAU包括一个或多个数据段。每个数据段是ES保护模块112应用同一组内容加密参数的MAU的连续区段。ES保护模块112或者完全加密该数据段,或者令该数据段完全不加密。ES可不源自TS。但是,这些ES保护操作与应用于TS流的通用加扰操作兼容(例如,参见"其它数据"122)。受保护的ES内容映射模块114("映射模块114")将受保护的ES内容120映射到MAU有效负载格式(MPF),用于封装入传输分组124。MPF允许MAU的多个部分不加密(保持为明文)传递。MPF还提供足以允许诸如个人计算机或机顶盒的媒体消费者(例如,参见图2)与任何其它ES无关地处理每个受保护的ES120,以及与任何其它MAU无关地处理受保护ES中的每个MAU的信息。以下参考标题为"为传输协议封装映射受保护ES"的部分更详细地描述MPF。在一种实现中,传输分组对应于基于实时传输协议(RTP)的分组。在一个实施例中,ES内容(例如,ES内容118)不源自媒体内容传输流。在另一实施例中,例如如以下参考图2所描述的,ES内容源自传输流。此外,尽管示例性系统100示出了受保护ES内容映射模块114与ES保护模块112在同一计算设备中实现,但映射模块114可以在与实现保护模块112的计算设备不同的计算设备中实现。以下将参考图2描述这种替换实现,其中保护模块112的操作由内容源实现,而映射模块114的操作由媒体中心实现。示例性系统图2示出了根据一个实施例的用于保护ES内容的示例性系统200,其中ES内容源自传输流。传输流封装媒体内容。系统200例如包括通过网络206与一个或多个媒体订户208耦合的内容源202和媒体中心204。内容源100可与视频游戏服务器、网站、视频服务器、音乐服务器、软件存档、数据库、电视网络等相关联。内容源202的TS加扰模块210加密传输流。在一个实现中,传输流加密210对传输流进行通用加扰。通用加扰允许被加密的传输流在不需要解密流中被加密部分的情况下被处理(例如,多路分解、编写索引等)。TS加扰模块210保护源于传输流的ES内容,如以上相对于图1的ES保护模块112所描述的,因为模块的关联操作与应用于TS流的通用加扰操作兼容。媒体中心204是位于中间的计算设备,它可以直接或经由网络206耦合到内容源202,例如使用传输控制协议/因特网协议(TCP/IP)或其它标准通信协议。网络206的示例包括IP网络、有线电视(CATV)网络和直播卫星(DBS)网络。媒体中心204包括多路分解和映射模块212。尽管被示作单个计算机程序模块,但模块212可用任意数量的计算机程序模块实现。程序模块212的多路分解操作将TS多路分解成各ES,而不需解密该TS的加密部分。按照图1的受保护ES内容映射模块114的所述操作,程序模块212的映射操作将被多路分解的受保护ES内容映射到MPF,以便后续封装入传输分组以用于通信传输给媒体消费者。如上所述,MPF允许MAU的数据段在被封装入传输分组时保持为明文。MPF还提供足以允许媒体订户208与任何其它ES无关地处理接收到的受保护ES,以及与任何其它MAU无关地处理受保护ES中的每个相关联的MAU的信息。以下参考标题为"为传输协议封装映射受保护ES"的部分更详细地描述MPF。在一个实现中,传输分组对应于基于实时传输协议(RTP)的分组。媒体中心204通过网络206将封装的受保护ES内容通信传输给一个或多个订户208,其中PC214禾口/或STB216接收媒体内容。PC214处理并演示的媒体内容可显示于与PC214相关联的监视器;且STB216上处理并演示的媒体信号可显示于电视(TV)218或类似的显示设备。在一个实现中,TV218具有集成在其中的STB216的能力。传输流通用加扰分析在一个实现中,ES内容由传输流承载。在这种情况中,内容源202的TS加扰模块210为通用加扰分析该传输流。具体地,根据在该传输流被加密后所要经受的至少一个进程的数据需要来分析传输流。如果基于与一个或多个进程相对应的统计模型作出判断,则可对具有最广泛(即阈值)数据需要的特定进程确定阈值数据需要。该分析被执行以确定传输流的哪些部分将不加密地传递。通用加扰分析可结合传输流中包含任何头部信息的任何分组将不加密地传递的确认。以下参考图6给出这种分组和头部信息的描述。包含PES头部信息的任何部分或"额外头部数据"的任何部分的分组将不加密地传递。此外,包含完整的或部分的流标志(StreamMark)的分组将不加密地传递。表1指示数据将保持不加密的示例性标志流标志起始码字节序列最大数据有效负载长度序列头部^000001B312字节GOP头部0000018字节图片头部00000001006字节私密数据B2000001B2107字节参考表l,在该实现中要保持为明文的数据量对应于流标志的长度加上最大数据有效负载长度。注意,只要流标志和最大数据有效负载长度的组合长度例如不超过两个连续TS分组有效负载的长度,则明文区段可在流标志前开始并在该组合长度之后结束。例如,发送方(例如,图2的内容源202等)可为表示序列头部的流标志在16和368字节之间保持为明文(用于流标志的4个字节加上用于最大数据有效负载长度的12个字节)。在流标志出现在当前MAU的起始处附近的情况下,也可以使来自前一MAU的某一数据量保持为明文。在一个实现中,当明文区段的长度不超过368字节时,这是允许的。由于传输流的任一部分可不加密地传递,如果其中包含的数据不被用于在不解扰的情况下处理传输流,进一步的替换实施例可涉及帧头部和PES头部上被应用通用加扰。加密图3是示出使用计数器模式的高级加密标准(AES)加密ES媒体内容的操作的示例性方面的框图。以下参考图3描述的各种数据和操作代表图1的ES保护模块112的示例性操作以及图2的TS加扰模块210的示例性操作。尽管数据段可基于受保护内容的类型而具有不同的定义,但当加密ES时,包括任何数量数据段的MAU代表了视频或音频的单个帧。参考图3,计数器模式的AES基于传输流的各数据段创建字节流。该字节流与内容的任何明文文本字节进行异或运算,以创建被加密的内容。密钥流生成器使用一AES轮次(round)以一次生成16字节块的密钥流。对AES轮次的输入是内容加密密钥(KC)以及新数据段内的数据段ID和块ID的128位级联。密钥流生成器的输出被逐字节地与来自数据段的相应块(i)的数据进行异或运算。在数据段并非均匀地可由16字节划分的情况下,仅来自最后块的数据段的剩余字节与密钥流进行异或运算且被保留用于插入的被加密的数据。MAU和相关联的头部代表更多的数据段。图4示出了用于插入承载受保护ES的传输流中的示例性加密方法(TAG)分组。参考图4:adaptation—field—control(自适应字段控制)位被设为10b(仅自适应字段,无有效负载),因此不需要递增连续性计数器。AF头部包括四个字节以符合MPEG规范O第1字节=自适应字段长度o第2字节=自适应字段存在标记(私密数据=0x02)o第3字节=私密数据长度(DRM长度)o第4字节=版本号(当前0x00)DrmGuid包括被设置为{B0AA4966-3B39-400A-AC35-44F41B46C96B}的GUID。base—counter(基本计数器)为之后的被加密分组再同步AES计数器。SM字节(流标志)指示之后的分组包括流标志的开始部分,从中可能丢失最初的若干字节。oSM=0—下一个分组承载PES头部的开始部分或整个PES头部。oSM=1—下一个分组包括流标志的开始部分。oSM=2—下一个分组包括流标志的开始部分,从中丢失第一个字节(00)。oSM=3—下一个分组包括流标志的开始部分,从中丢失最初的两个字节(0000)。oSM=4—下一个分组包括流标志的开始部分,从中丢失最初的三个字节(000001)。oSM=其它一被保留。Private—DRM_parameters(私密DRM参数)包含数据段描述符,它包括用相应的密钥ID值设定的密钥ID扩展。AES128初始化矢量扩展不存在,因为数据段ID在TAG分组的base—counter(基础计数器)区段中指示。用0xFF填塞(padding)该分组。因此,TAG分组是具有密钥标识符(KID)的单个TS分组,该KID被插于每个受保护PES单元之前。在该实现中,当内容被传递给媒体消费者时,TAG分组被用于检索匹配的数字权利管理(DRM)许可证。该内容保护层包括计数器模式的AES128位密钥,其中应用以下需要该128位计数器被分成两个64位字段:基础计数器(MSB)和次要计数器(LSB)。基础计数器和次要计数器等效于上述数据段ID和块ID。TAG分组可提供传输流的被加密部分上使用的加密算法的标识,提供授权解密器推出解密密钥所需的数据,以及标识传输流中未加密或加密地传递的那些部分。TAG分组还可包括标识被加密流的哪些部分被用于各处理(为特技模式(trickmode)或縮略图提取进行多路分解或编写索引)的数据。此外,按照多路复用的传输流来插入TAG分组。TAG分组可对应于传输流的所有加密部分生成。或者,加密方法分组可对应于被加密PES有效负载数据的各分组或字节生成。因此,TAG分组可对应于传输流中的每个PES头部、对应于传输流中的预定数量的PES头部或者对应于对其它进程不加密地传递的分组的预定模式生成。图5示出了根据一个实施例的用于保护传输流内的ES内容的发送方的示意性操作流程(与ES内容不由传输流承载时相比)。以下列表描绘了图5的诸方面。scr-如果当前的TS分组将要被通用加扰,则该变量被设定为"是",否则设为"否"。key_Sync-如果发送方正更新AES密钥,则该变量被设定为"是",否则设为"否"。PID(13位)-选定基本流的PID值。base—counter(基础计数器)-贯穿发送方的使用期限该64位字段由发送方唯一地定义。在一个实现中,位0-50表示区段计数器,位51-63为PID保留。Section—counter(区段计数器)(51位)-为scr状态变量的每一次从否到是的转变递增的一循环计数器。minor—counter(次要计数器)-为16个经加扰字节的每个区块递增的一64位计数器。i-为每个经加扰字节递增的一4位计数器。scramble16(加扰16)-AESKEY[base—counter|minor—counter].在发生替换AES密钥事件后,发送方立刻停止对所有PID进行的加扰直到它与每一PES组件重新同步。该过渡保证了来自同一程序的所有PID用相同的密钥加扰。在定义scr状态时,如果任何以下条件适用,则发送方为每一接收到的TS分组将scr状态变量设定为"否"key一sync=是TS分组包括全部或部分的ES头部。TS分组包括以下列表中列出的一个或多个流标志的全部或部分。流标志由MPEG起始码及其接着的数据有效负载构成,如以上表1所示。图6示出了根据一个实施例的实例性传输流。发送方将一TAG分组插于保持为明文的任何TS分组之前。如图6所示,以下两个可能的情况将发生。情况A:一TAG分组被插于包含全部或部分PES头部的分组之前。情况B:TAG分组被插于包含全部或部分流标志的分组之前。此外,许多实施例不需要将TAG分组插入传输流。由于在解密时刻之前不需要TAG分组,TAG分组可带内或带外地发送到处理器(例如,通过私密表),只要它在解密时刻之前由处理器接收到。此外,TAG分组可被发送到一内容使用许可证,该内容使用许可证随后将带内或带外地发送到处理器。将受保护ES映射到MAU有效负载格式将受保护的ES映射到MPF,以使被通用加扰的传输流中的MAU的区段保持为明文。该映射允许媒体消费者独立地处理每一个MAU。在一个实现中,诸如内容源202的发送方实现这些映射操作。传统RTP头部的语法在RFC-3550中定义并在图11中示出。连同该RTP头部,图1的系统100和图2的系统200将受保护的ES内容(例如,图l的受保护ES内容120)映射到一MAU有效负载格式(MPF)。然而,多媒体演示中的所有媒体流不需要使用同一MPF,且可以使用不同的有效负载格式。现在,将描述如何将MAU封装入MPF。图7示出了根据一个实施例的MPF头部的示例性高级结构。相对于标准RTP头部示出该头部。该MPF头部由发送方(例如,图l的计算机102和/或图2的媒体中心204)插于传输分组中的每一MAU或其片段之前。如图7所示,该实例性实现中的MPF头部被分成三个区段。每一区段以一个字节的位字段开始,且紧接着是一个或多个任选字段。在某些情况中,可从MPF头部中省略多达两个完整区段。因此,MPF头部可小到仅为一个字节。在MPF头部之后是"有效负载"。该有效负载包括完整的MAU或其片段。该有效负载可包含部分MAU,允许较大的MAU在多个传输分组中的多个有效负载上被分段。当传输分组的大小允许时,第一有效负载可紧接着另外的一对MPF头部和有效负载。MPF头部的第一区段(图7中称作"分组专用信息")包含了专用于传输分组中的所有有效负载的信息。该"分组专用信息"区段仅在每个传输分组中被包含一次,包括在第一MPF头部中,它直接出现在RTP头部的末尾之后。称作"MAU属性"的第二区段包含了描述该有效负载的信息。例如,该区段指明该有效负载是否包含作为同步点的MAU,诸如视频I帧,且它还指明如何确定有效负载的大小。此外,该区段包含了在前一分组丢失的情况下允许接收方解析传输分组的信息。对于MAU在多个传输分组上被分段的情况,这是有用的。称作"MAU计时"的第三区段提供了关于与有效负载中的MAU相关联的各种时戳的信息。例如,该区段指明了如何确定MAU的演示时间。该区段还包括允许将附加信息包含在MPF头部中的扩展机制。图8示出了根据一个实施例的图7的MPF头部的示例性详细布局。图8的三个区段802到806中的每一个包括若干头部字段。这些字段在图8中示作框。框的高度指示头部字段的相对大小。然而,该图并非完全按比例绘制,且应注意"扩展"字段具有可变大小。参考图8,这三个区段中的每一个中的第一头部字段是位字段。一区段中的其它头部字段仅在由该区段的位字段指示的情况下才出现。在某些情况中,可省略整个区段,包括其位字段。分组规范信息(Info)区段包括"位字段1",并还可包括图8所示的任何其它字段。同一传输分组中的附加MPF头部以"位字段2"开始并包括"MAU属性"区段和"MAU计时"区段中的字段。在最简单的可能情况中,传输分组包含单个、完整的MAU。在这种情况中,有可能包括所有头部字段。但也可省略不需要的字段。MPF头部的三个区段中的每一个具有一位字段,它指示区段中的哪些字段出现(如果有的话)。例如,当分组包含单个有效负载时,指明至当前有效负载的末端的字节偏移的"偏移(Offset)"字段是不需要的,因为有效负载的长度可从传输分组的大小中推断出。"位字段2"中的"OP"位指示是否出现"偏移"字段。如果"位字段3"中的所有位都是零,则"位字段3"本身可被省略,且这是通过将"位字段2"中的"B3P"位设为零来指示的。有可能将多个有效负载组合成单个传输分组。这被称作"归组(grouping)"。"偏移"字段指示"归组"的使用。如果出现"偏移"字段,另一MPF头部和另一有效负载可紧接在当前有效负载的末尾之后。该"偏移"字段指明从"偏移"字段本身的末端起计数到当前有效负载末尾的字节数。为确定是否有另一MPF头部紧接着当前有效负载的末尾,在RTP被用作传输协议的情况下,各种实现不仅需要考虑"偏移"字段的值还要考虑传输分组的大小以及RTP填塞区域的大小(如果有的话)。单个MAU可被分成多个有效负载。这称作"分段(fragmentation)"。分段的主要使用是当MAU大于单个传输分组内可容纳的大小时。"位字段2"的"F"字段指示有效负载是包含完整的MAU还是其片段。"MAU计时"区段中的字段仅应在MPF首部中对包含MAU的第一片段的有效负载指明。对此唯一的例外是如果"MAU计时"区段中的"扩展"字段包含对于同一MAU的多个片段不同的扩展。当MAU被分片时,"位字段2"中的位"S"、"D1"和"D2"在MPF头部中仅对包含第一片段的有效负载有意义。因此,如果"F"字段的值是0或2,则接收方(媒体消费者)忽略这些位。在该实现中,MAU不被分片,除非MAU太大以至于不适合单个传输分组。在该实现中,在单个传输分组中,一个MAU的片段不与另一MAU或另一MAU的片段组合。然而,接收方仍可处理这些情况。图9中示出这样一个示例。图9示出了根据一个实施例的使用MPF的三个实时传输分组的分组的示例性序列。该三个传输分组承载4个MAU的数据。第四个MAU延续至第四个传输分组(未示出)。该图示出了在需要时MAU的分段如何可用于创建固定大小的传输分组。如图所示,MAU2在两个传输分组上被分段。在第一传输分组中,MAU2的MPF头部指明MAU2延续至下一个传输分组。(这是使用位字段2中的"F"字段表明的)。第二传输分组以MPF头部开始,它省略了"MAU计时"字段,因为用于MAU2的"MAU计时"字段已在第一传输分组中指明。"MAU属性"区段中的"偏移"字段用于找到MAU3的有效负载格式头部的开始。这允许客户机解码MAU3,即使前一传输分组被丢失。类似地,该图示出了在第二和第三传输分组上如何将MAU4分段。然而,MAU4太大,以至于没有另外的MAU可被插入第三传输分组。在该示例中,MAU4延续至未示出的第四传输分组。在类似的情形中,第三传输分组的有效负载格式头部不需要包括"偏移"字段,且有可能省略整个"MAU属性"区段。随后,MPF头部的其余部分仅包括"分组专用信息区段",且它可仅单个字节大小。如果MAU被分段成多个有效负载,通常在分开的传输分组中承载这些有效负载。然而,该MPF还允许同一MAU的多个有效负载被承载于单个传输分组内。如果传输分组中的有效负载包含MAU的片段,这可由"位字段2"中的"F"字段指示。图10示出了根据一个实施例的一示例,其中单个MAU己被分成同一RTP分组中的三个片段。在该示例中,第一MPF头部中的"F"字段被设为1,以指示第一有效负载包含MAU的第一片段。"MAU计时"区段仅出现于该第一有效负载中。第二MPF头部的"F'字段被设为0,以指示该有效负载包含既不是MAU的第一个片段也不是其最后一个片段的一片段。第三MPF头部中的"F"字段被设为2,以指示其有效负载包含MAU的最后片段。除了通常的RTP采样时钟和挂钟(wallclock),MPF提供若干附加时戳和时间观念,现在将进行描述。RTP头部具有单个时戳,它指明采样分组中的数据的时间。该时戳有时称作采样时钟。注意属于不同媒体流的分组的RTP时戳不能被比较是有用的。理由是采样时钟对于不同的媒体流可以不同的频率运行。例如,音频流的采样时钟可以44100Hz运行,而视频流的采样时钟可以90000Hz运行。此外,RFC-3550指明应随机选择初始RTP时戳的值。实际上,每个媒体流具有其特有的时间线。在本文中,每一个这种时间线被称作"媒体时间线"。RTP允许使不同媒体流的时间线与被称为"挂钟"的基准时钟的时间线同步。通过在RTCP发送方报告分组中发送采样时钟和挂钟之间的映射,RTP发送方允许接收方执行该同步。必须为每个媒体流发送不同的RTCP发送方报告,因为媒体流可使用不同的采样时钟。以某一时间间隔更新并再次发送映射,以允许接收方校正挂钟和采样时钟之间的可能漂移。如果发送方的挂钟相对于接收方的挂钟漂移,则时钟漂移仍会是一问题。这两个时钟例如可使用NTP协议同步化,但RTP规范未指定具体的同步方法。请注意,挂钟源自编码器。如果RTP发送方和编码器是分开的实体,则挂钟通常与发送方处的任何物理时钟无关。该MPF使用第三时间线,它被称作正常播放时间(NPT)时间线。NPT时间线主要用于RTP被用于发送媒体"演示"的时候。来自NPT时间线的时戳通常在演示的开始处以O开始。在发送预先记录的演示时,NPT时戳特别有用,因为时戳可帮助接收方指定一位置以便在演示内寻找。这假定存在供接收方将该新位置通信传送给RTP发送方的某一机制。由于RTP被设计用于多媒体会议应用,RTP规范不讨论NPT时间线。然而,在RTP之上构建的其它协议,诸如RTSP(用于视频按需应用的控制协议),包括NPT时间线的概念。在RTSP中,控制协议提供每一媒体流的NPT时间线和媒体时间线之间的映射。MPF定义了一种机制,用于指定与MAU相关联的NPT时间线时戳。然而,实践中,媒体时间线和NPT时间之间的带外映射(诸如RTSP所定义的)会是优选的,因为它减少了MPF头部的开销。所有符合RTP的系统处理时戳的回转(wraparound)。在90000Hz的典型时钟频率下,RTP时戳约每13小时将回转。但由于RTP规范规定应将随机偏移加到采样时钟,接收方会在明显少于13个小时时体验第一次回转。RTP时戳的回转通常通过使用模运算被处理。当使用模运算时,通常通过从一个时戳中减去另一个并观察结果是正还是负来比较时戳。在MPF中,每个MAU具有"解码时间"和"演示时间"。解码时间是MAU应被传递给接收方的解码器的时间,且演示时间是MAU应由接收方演示(显示或播放)的时间。这两个时间均属于媒体时间线。由于网络中和解码器中的延迟对于RTP发送方通常是未知的,接收方不使用解码时戳或演示时戳的绝对值。解码器仅考虑一对解码器时戳或一对演示时戳之间的相对差。在一些情况中,诸如当视频编解码器产生双向视频帧时,MAU可以与它们将被演示的顺序不同的顺序被解码。在该实现中,RTP发送方按它们应被解码的顺序发送MAU。RTP头部中的"时戳"字段映射到传输分组中的第一MAU的演示时间。由于传输分组按解码顺序被传输,连续MAU的演示时间时戳不会是单调非减的。MPF头部包括任选的"解码时间"字段,它被用于指定有效负载中的MAU的解码时间。当传输分组包含超过一个MAU时,MPF头部还包括一"演示时间"字段,它被用于指定MAU的演示时间。当传输分组中仅包括单个MAU时,该"演示时间"字段因为"时戳"字段用作分组中的该第一MAU中的该字段的替代。在该实现中,将与"时戳"字段相同的时钟分辨率来表达"解码时间"和"演示时间"字段。术语"特技播放"表示接收方以非实时速率呈现媒体演示。特技播放的示例包括演示的快进和倒带。如果RTP发送方按特技播放模式发送,每一MAU的解码时戳和演示时戳应以实时速率递增。这允许解码器在不知道使用了特技播放的情况下解码MAU。MPF头部中的"解码时间"和"演示时间"字段不受特技播放影响,"NPT"字段(如果存在)则不一样。例如,如果媒体演示正被倒带,MAU的"演示时间"时戳字段将增加,而"NPT"字段的值将减少。MPF头部中的"NPT"字段指定MAU所属的正常播放时间时间线中的位置。如果"NPT"字段不存在,只要两个时间线之间的映射可用,接收方就可根据演示时间计算MAU的正常播放时间。以下讨论用于建立该映射的各种方法。由于RTP发送方将随机偏移加入媒体时间线中的时戳,演示时间时戳不被用作NPT时戳的直接替换。即使随机偏移对于接收方是已知的,媒体时间线时戳的回转可能是一个问题。对这些问题的可能解决方案是让发送方使用一带外机制来提供正常播放时间时间线和媒体时间线之间的映射。该映射可仅在发送开始处提供一次或按需要重复提供。此外,如果特技播放是可能的,发送方则通信发送该特技播放速率。例如,如果演示正被倒带,特技播放速率是负的。该接收方使用该特技播放速率来生成NPT时戳,该NPT时戳随演示时间的增加而减少。如果映射仅在发送开始处被提供一次,则接收方建立正常播放时间时间线和挂钟时间线之间的映射。这通常在一旦接收到合适的RTCP发送方报告分组之后是可能的。优选基于MAU的挂钟时间计算每个MAU的NPT时戳,因为来自媒体时间线的时戳会相对于挂钟时间线漂移。RTSP协议是控制协议的示例,它提供了传输开始处正常播放时间时间线和媒体时间线之间的映射。可提供复杂度和开销之间的合适折衷的另一解决方案是仅在同步点MAU上包括"NPT"字段。"NPT"字段被用于建立正常播放时间时间线和演示或挂钟时间线之间的映射。对于非同步点MAU,接收方使用向前建立的映射计算NPT时戳。当使用特技播放时,发送方将包括用于每一MAU的"NPT"字段。MPF头部中的"发送时间"字段指定传输分组的传输时间。在将一传输分组序列从一个服务器转移到第二服务器时,这会是有用的。仅第一服务器需要计算分组的传输调度。第二服务器将基于"发送时间"字段的值把传输分组转发到其它客户机。在将传输分组转发到客户机时不需要包括"发送时间"字段。然而,客户机可使用"发送时间"字段来通过比较一系列分组中的"发送时间"字段的值之间的差与分组到达时间中的差来检测网络拥塞。该"发送时间"字段使用与媒体时间线相同的单位。"对应"字段提供挂钟时间线和当前媒体时间线之间的映射。当RTP是传输协议时,则这是RTCP发送方报告中提供的相同映射。在传输分组中包括映射比发送单独的RTCP分组更高效。这允许发送方降低RTCP发送方报告的频率且仍以期望的频率发送该映射。图11为参考目的示出了标准12字节的RTP头部。参考图ll:"版本"(V)字段:2位。该字段被设为2。"填塞"(P)位该位被用于向RTP分组的末尾添加填塞。"扩展"(X)位如果RTP头部扩展存在,则该位被设为1。RTP简介定义如何使用头部扩展。如果RTP头部具有一非零的"扩展"位,则接收方能解析或跳过头部扩展。"贡献源"(CC)字段:4位。如果RTP头部具有非零的贡献源字段,则接收方能正确地解析或跳过贡献源的列表。"标志"(M)位:如果传输分组中的任何有效负载包含一完整的MAU或MAU的最后片段,则该位被设为1。"有效负载类型"(PT)字段7位。RTP有效负载类型的分配在本文的范围之外。它由RTP简介指定,其中该有效负载格式在该RTP简介下被动态地带外使用或表明(例如,使用SDP)。"序列号"字段16位。该字段包含为用相同SSRC值发送的每个传输分组递增1的数字。RTP序列号的初始值可通过非RTP手段被通信传输给客户机。"时戳"字段32位。该字段指定应用于传输分组中包含的第一有效负载的时戳。缺省情况下,该字段被解释为演示时间。"时戳"字段的时钟频率被推荐为90kHz,即分辨率为1/90000秒。发送方和接收方可通过非RTP手段协商不同时钟频率。"同步源"(SSRC)字段:32位。具有SSRC字段的相同值的传输分组对"时戳"字段共享同一时间线,对"序列号"字段共享同一数空间。RTP头部后紧接着一MPF头部。唯一的例外是仅包括填塞的传输分组。在这种情况中,MPF头部不存在。如果传输分组包含来自多个MAU的数据,则MPF头部出现在每个MAU之前以及每个分段(部分)MAU前。因此,使用该有效负载格式的传输分组可包含一个或多个MPF头部。MPF头部的布局在图7中示出。当MPF头部直接接着标准12字节RTP头部时,它以称为"位字段1"的1字节字段开始,继之以一串任选字段。该头部后紧接着一有效负载。该有效负载包括完整的MAU或MAU的片段(部分)。在第一数据有效负载后,会出现另一MPF头部,之后紧接着另一数据有效负载。在一数据有效负载后添加另一MPF头部的过程可重复多次。接着第一数据有效负载的每一MPF头部具有"位字段2"字段。以下描述字段"位字段1"的布局。"存在发送时间"(ST)位如果该位是1,则32位的"发送时间"字段被插于紧接在"位字段1"字段的末尾之后。"存在对应"(CP)位如果该位是l,则96位的"对应"字段被插于"发送时间"字段之后。Rl,R2,R3(每个1位)对于被设为1的这些位中的每一个,该接收方假定已在"对应"字段和"位字段2"之间添加了32位字段。这些32位字段的含义在本说明书中未定义。不知道32位字段的含义的接收方忽略它们。R4,R5(每个1位):为将来使用保留;当前设为0。"存在位字段2"(B2P)位如果该位是1,该1字节"位字段2"字段被插于"对应"字段之后。"发送时间"字段32位。该字段指定传输分组的传输时间,使用用于RTP头部中的"时戳"字段的相同时间单位。"对应"字段96位。该字段包括两个时戳。NTP格式的64位挂钟时戳和32位解码时间时戳。这两个字段以与RFC-3550的6.4.1部分中定义的RTCP发送方报告中的"NTP时戳"和"RTP时戳"字段相同的方式使用。当存在"位字段1"时,"位字段2"是任选的。"位字段1"中的"B2P"位确定是否存在"位字段2"。"位字段2"中所有位的缺省值是0。"分段"字段(F)指示数据有效负载是否包括部分MAU。一个或多个这种有效负载被组合以重构一完整的MAU。"F"字段还指示有效负载是否包含MAU的第一或最后片段。"S"、"D1"和"D2"位(以下)仅当"F"字段的值是0或3时是有效的。表2示出了F字段值的示例性含义。表2<table>tableseeoriginaldocumentpage22</column></row><table>"存在偏移"位(OP):如果该位是1,则将16位的"偏移"字段插于紧接在"位字段2"之后。"偏移"字段用于找出当前有效负载的末尾。以"位字段2"开始的另一MPF头部可接着当前有效负载的末端。如果"存在偏移"位是0,"偏移"字段是不存在;当MPF使用RTP时,当前有效负载扩展到传输分组的末端或者RTP填塞区域的起始,如果RTP头部中的"填塞"位是1。"同步点"位(S):当MAU是同步点MAU时该位被设为1。"不连续"位(Dl):该位被设为1以指示一个或多个MAU丢失,即使传输分组的序列号(例如,如果使用RTP,则RTP序列号)不指示一"间隙"。"可丢弃(droppable)"位(D2):如果该位是1且有必要丢弃某些MAU时,该MAU可被丢弃,其负面影响少于将D2位设为0的MAU。"加密"位(E):该位被设为1以指示有效负载包含被加密数据。如果有效负载不包含被加密数据,则该位应被设为0。"存在位字段3"(B3P)位如果该位是1,则1字节"位字段3"字段被插于"长度"字段后。"偏移"一16位字段,它按字节指定到当前有效负载末端的偏移(从"偏移"字段后的第一个字节开始计数)。换言之,"偏移"字段的值是"MAU计时"区段的大小(如果有的话)加上当前有效负载的大小。"位字段2"中的"B3P"位确定是否存在"位字段3"。"位字段3"中的所有位的缺省值为0。图12示出了MPF的位字段3的示例性布局。"存在解码时间"位(D3):如果该位是1,则32位的"解码时间"字段被插于"位字段3"之后、"演示时间"字段之前。"存在演示时间"位(P):如果该位是l,则32位的"演示时间"字段被插于"解码时间"字段之后、"NPT"字段之前。"存在NPT"位(N):如果该位是1,则64位的"NPT"字段被插于紧接着"演示时间"字段之后。R6,R7,R8,R9:对于被设为1的这些位中的每一个,接收方假定在"NPT"字段和"扩展"字段之间己经添加了32位字段。这些32位字段的含义未在本说明书中定义。不知道这些32位字段含义的接收方将忽略它们。"存在扩展"位(X):如果该位是1,则可变大小的"扩展"字段被插于"NPT"字段之后。"解码时间"一32位字段。该字段指定MAU的解码时间。当使用RTP时,该字段使用被用于RTP头部中的"时戳"字段的相同时间单位来指定MAU的解码时间。"演示时间"一32位字段。该字段指定MAU的演示时间。"NPT"字段一64位时戳。该NPT字段指定MAU所属的正常播放时间时间线中的位置。图13示出了根据一个实施例的MPF头部的扩展字段的示例性布局。该"扩展"字段包括字段的一个或多个集合。图13示出了一个这种集合中包含的字段的布局。"L"位如果该位是1,则这是"扩展"字段的最后集合。如果该位是0,则"扩展数据"字段的末尾后紧接着"扩展"字段的至少一个以上的集合。"扩展类型"一7位字段,它被用于标识"扩展数据"字段的内容。此外,值0和127被保留用于将来使用。"扩展长度"一8位数字,规定紧接着该字段出现的"扩展数据"字段的字节大小。"扩展数据"可变长度字段。该字段的大小由"扩展长度"字段规定。当使用初始化矢量扩展时,"扩展"字段中的字段具有以下值。"扩展类型"是2。"扩展长度":"扩展数据"字段的大小,按字节。"扩展数据"一个或多个字节的序列,用作当前MAU的初始化矢量的一部分。当该扩展存在时,加密单元是完整的MAU。如果MAU被分段成多个有效负载,在该初始化矢量扩展仅存在于第一有效负载中。当使用密钥ID扩展时,"扩展字段"中的字段具有以下值。"扩展类型"是3。"扩展长度":"扩展数据"字段的大小,按字节。"扩展数据"标识用以解密当前有效负载的解密密钥的一个或多个字节的序列。密钥ID扩展保持有效,直到由不同的密钥ID扩展替代。因此,该扩展仅当有效负载需要使用与前一有效负载的解密密钥不同的解密密钥时才被使用。然而,如果前一有效负载被包含在丢失的传输分组中,则接收方不会意识到解密密钥的改变是必要的。如果用错误的密钥解密一有效负载,且未检测到该情况,则它会引起不期望的呈现伪像。减小该问题的严重性的一种方法是为作为同步点的每个MAU的第一有效负载指定密钥ID扩展。如果已知丢失的MAU将迫使接收方丢弃所有MAU直到它接收到下一个同步点MAU,则这是很好的解决方案。一种更保守的解决方案是为每一多个有效负载传输分组中的第一有效负载指定密钥ID扩展。该解决方案针对分组丢失是健壮的,因为所有相互依赖的有效负载都包含在单个传输分组内。当MPEG视频头部存在时,它们在后续帧之前。特别是一MPEG视频序列头部(当存在时)是MAU的开始。一MPEGGOP一头部(当存在时)位于MAU的开始处或者跟在视频序列头部后。一MPEG图片头部(当存在时)位于MAU的开始处或者跟在GOP头部后。与RFC2250不同,如果包含视频的MAU被分段,则不需要在片边界处执行分段。MAU可出于不同的理由在多个传输分组上被分段。例如,当传输分组大小限制存在时以及当MAU的特定部分的加密参数中存在区别时,可将MAU分段。当RTP头部字段被解释时,RTP头部中的"时戳"字段被设为具有90kHz精度的样本的PTS,且根据带外协商机制(例如使用SDP)设定"有效负载类型"(PT)字段。对于MPF,分组规范信息区段,"发送时间"字段的存在是任选的,"对应"字段的存在是任选的,且只要有效负载包含被加密的MAU部分或者被加密的MAU的片段,则"存在位字段2"位(B2P)被设定。根据以上内容,MPF允许根据不同的加密参数加密单个MAU。这包括使单个MAU的片段被加密同时其它保留为明文的能力。在这种情况下,MAU可被分段成多个有效负载,每一个都具有不同的加密参数。例如,被加密的MAU或MAU的片段具有根据以下准则设定的值和字段分组信息区段中的"存在位字段2"位(B2P)被设为1,以指示存在"位字段2"。MAU属性区段中的"加密"位(E)被设为1,以指示有效负载被加密。"MAU计时"区段中的"存在扩展"位(X)被设为l,以指示扩展字段存在。包含一"初始化矢量"扩展。以下值被设定o"扩展类型"被设为2。o如果"扩展数据"字段仅包含一数据区段ID,贝U"扩展长度"被设为8(表示64位),或者如果"扩展数据"字段包含数据区段ID和块ID,则被设为16(表示128位)。o在初始块ID是O时,用数据区段ID值设置"扩展数据",如上所述。如果初始块ID不是零,则将"扩展数据"设为数据区段ID后面紧接着初始块ID。o为MAU的每个被加密的有效负载包括该扩展。包括一"密钥ID"扩展。设定以下值o"扩展类型"被设为3。o"扩展长度"被设为16(表示128位)。o用来自对应于该MAU的许可证的密钥ID值设定"扩展数据"。为包含多个MAU的多有效负载传输分组中每一个中的新MAU的第一个有效负载包括"初始化矢量"和"密钥ID"扩展。这确保接收方知道当前的密钥ID,即使某些传输分组丢失。MAU属性区段被解释如下当MAU包含视频I帧或音频帧时,设定"同步点"位(S)。当一个或多个MAU遗失时设定"不连续"位(Dl)。例如,当视频帧被帧丢弃翻译器丢弃时。"可丢弃"位(D2)的使用是任选的。定义它应在什么情况下使用超出了本说明书的范围。一旦有效负载包含被加密的MAU的部分或者被加密的MAU的片段,设定"加密"位(E)。MAU计时区段被解释如下"解码时间"字段是任选的。如果使用,则它包含MAU的DTS。"演示时间"字段是任选的。"NPT"字段是任选的。o当一个或多个扩展头部存在时,设定"存在扩展"位(X)。示例性过程图14示出了根据一个实施例、用于保护ES内容的一个示例性过程1400。为示例性说明,过程1400的操作由图1的一个或多个ES保护模块112、映射模块114、图2的传输流加扰模块210和/或多路分解和封装模块212执行。根据该描述各种变化和修改将为本领域普通技术人员显而易见,包括对操作的顺序的改变和修改。参考图14,在框1405处,基本流(ES)被接收,或由计算设备102或内容源202访问。被访问的ES可独立于传输流,或者由传输流承载。在框1410处,过程1400保护ES的MAU部分。在一个实现中,这些保护操作独立于通用加扰执行。在另一实现中,这些保护操作利用通用加扰执行,例如在通用加扰传输流时。在框1415处,如果在框1405处访问传输流,则将传输流多路分解成ES以维持原始加密。模块212的多路分解操作示出了执行传输流多路分解操作的示例性组件。在框1420处,过程1400将受保护ES映射到MAU有效负载格式(MPF)。将每个MAU映射到MPF向接收到封装被映射ES的传输分组的媒体消费者提供足以允许媒体消费者与任何其它ES无关地处理每个ES并与任何其它MAU无关地处理每个MAU的信息。在框1430处,过程1400将被映射到MPF的ES封装入传输协议。在一个实现中,传输协议是实时传输协议(RTP)。在框1440处,过程1400基于传输协议将传输分组通信传输给媒体消费者,用于处理。这种处理(包括解密)允许媒体消费者体验包含在传输分组中的有效负载数据。结论尽管保护ES内容已按专用于结构特征和/或方法操作或动作的语言加以描述,可以理解,所附权利要求书中限定的实现并不限于所述的特定特征或动作。相反,这些特定特征和操作作为实现请求保护的主题的示例性形式被公开。权利要求1.一种计算机实现的方法,包括标识基本流内容的媒体访问单元(MAU);对于所述MAU中的每个MAU,所述MAU包括表示单个视频或音频帧的一个或多个数据段基于所述一个或多个数据段选择加密边界,用于保护所述单个视频或音频帧以及相关联的头部;以及如下地保护所述MAU基于所述加密边界加密所述MAU的诸部分;将所述MAU映射到MAU有效负载格式;以及其中所述MAU有效负载格式用于与任何一个不同的基本流无关地处理所述基本流,并用于与任何其它MAU无关地处理所述MAU。2.如权利要求1所述的方法,其特征在于,所述基本流内容由传输流承载,且其中所述保护还包括通用加扰所述传输流,以使包括所述MAU之一的数据段中的各个被完全加密或完全不加密。3.如权利要求1所述的方法,其特征在于,所述保护还包括用计数器模式的高级加密标准加密所述一个或多个数据段中的单独的各个。4.如权利要求1所述的方法,其特征在于,所述MAU的一部分被保持为明文。5.如权利要求1所述的方法,其特征在于,映射所述MAU还包括在多个传输协议有效负载上将所述MAU分段。6.如权利要求1所述的方法,其特征在于,映射所述MAU还包括关联单个传输协议分组中所述MAU的多个有效负载。7.如权利要求1所述的方法,其特征在于,还包括关联单个传输协议分组中所述MAU的多个有效负载;以及其中所述多个有效负载中的两个或更多具有各自不同的加密参数。8.如权利要求1所述的方法,其特征在于,所述MAU有效负载格式包括与传输协议分组中的所有MAU相关联的分组专用信息。9.如权利要求1所述的方法,其特征在于,所述MAU有效负载格式包括用于描述特定MAU的MAU属性区段;以及如果所述MAU被分段,则所述属性区段包含允许接收方在所述MAU的分段部分丢失时解析所述MAU的信息。10.如权利要求1所述的方法,其特征在于,所述MAU有效负载格式包括一MAU计时区段,用于提供关于与所述MAU相关联的时戳的信息。11.如权利要求IO所述的方法,其特征在于,所述信息包括与所述MAU相关联的正常播放时间(NPT)时间线,所述NPT用于帮助一接收方指定在演示内寻找的一位置。12.如权利要求10所述的方法,其特征在于,所述信息包括指示所述接收方何时演示所述MAU内容的演示时间。13.如权利要求12所述的方法,其特征在于,所述演示时间以实时速率递增,以允许解码器在不知道特技播放被使用的情况下解码所述MAU。14.如权利要求1所述的方法,其特征在于,所述保护还包括分析一传输流以确定所述传输流中要不加密地传递的诸部分;其中所述保护还包括准备所述传输流,用于绕开所述传输流的通用加扰部分的处理。15.—种计算机实现的方法,包括接收基本流,每个基本流(ES)用多个媒体访问单元(MAU)表示,每个MAU对应于所述ES的单个视频或音频帧,每个基本流被映射到封装一MAU有效负载格式(MPF)的传输协议;以及处理所述传输流,所述MPF允许每个ES与任何其它ES无关地处理,且允许每个MAU与任何其它MAU无关地处理。16.如权利要求15所述的方法,其特征在于,所述传输协议是实时传输协议(RTP)。17.如权利要求15所述的方法,其特征在于,所述MAU之一的一部分被保持为明文。18.如权利要求15所述的方法,其特征在于,所述MAU之一在多个传输协议有效负载上被分段,或者其中所述MAU的多个有效负载位于单个传输协议分组中。19.如权利要求18所述的方法,其特征在于,所述多个有效负载中的两个或更多具有各自不同的加密参数。20.—种计算设备,包括标识装置,用于标识基本流内容的媒体访问单元(MAU);对于所述MAU中的每个MAU,所述MAU包括表示单个视频或音频帧的一个或多个数据段选择装置,用于基于所述一个或多个数据段选择加密边界,以保护所述单个视频或音频帧以及相关联的头部;以及保护装置,用于如下地保护所述MAU:加密装置,用于基于所述加密边界加密所述MAU的诸部分;映射装置,用于将所述MAU映射到MAU有效负载格式;以及其中所述MAU有效负载格式用于与任何一个不同的基本流无关地处理所述基本流,并用于与任何其它MAU无关地处理所述MAU。全文摘要描述了保护基本流媒体内容。在一个方面中,标识基本流内容的媒体访问单元(MAU)。每个MAU包括表示单个视频或音频帧的一个或多个数据段。为每个MAU选择加密边界。这些加密边界基于与各MAU相关联的一个或多个数据段。每个MAU的诸部分基于相应的加密边界被加密。将每个MAU映射到MAU有效负载格式。MAU有效负载格式允许媒体消费者与任何不同的基本流无关地处理与基本流内容相关联的每个基本流。MAU有效负载格式还允许媒体消费者与任何其它MAU无关地处理基本流中的每个MAU。文档编号H04N7/167GK101243687SQ200680029310公开日2008年8月13日申请日期2006年8月10日优先权日2005年8月12日发明者A·E·凯尔门茨,E·P·奥利弗拉,G·弗迪,T·C·皮特切特申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1