同步影音码流的解码器与解码方法
【技术领域】
[0001]本发明系关于影音播放,特别系关于影音播放的影像与声音之间的同步。
【背景技术】
[0002]观赏影片是现代生活中不可或缺的一部分。无论是工作需要或是娱乐,现代人可以从光盘、网络视讯数据库、智能型电子装置、数字电视频道上播放影片。现代工业界也制定了许多影音压缩与播放的标准,例如动画专家组(MPEG)、高阶视讯编码H.264、数字音视频编解码技术标准AVS、视讯编解码器VC-1等。
[0003]在这些工业标准所指涉的影片的压制与播放当中,都定义了影像与声音的同步机制(Aud1 Video Synchronizat1n, AV Sync)。然而,在播放端方面,如果遇到了影像与声音不同步的影片,依然需要完成播放的任务。由于播放端或解码端无法保证压制端或编码端完全遵照工业标准来压制影片,因此,播放端实际上需要某一种影音同步的机制,尽可能地矫正影片中影音不同步的情况,以提供更佳的使用者体验。
【发明内容】
[0004]在本发明的一实施例中,提供一种同步影音码流的解码方法。其中上述的影音码流包含多个时钟参考值与多个视讯及音讯的数据封包,每一个数据封包均对应至一显示值。该解码方法包含:利用一第一时钟参考值重建一时钟值;判断该时钟值与该多个显示值中的一第一显示值的误差是否大于一第一范围;当该时钟值与该第一显示值的误差大于该第一范围时,更改该时钟值为该多个显示值中的一第二显示值;以及利用该第二显示值所设定的该时钟值执行至少一影音同步步骤。
[0005]在本发明的另一实施例中,提供一种同步影音码流的解码器,其中上述的影音码流包含多个时钟参考值与多个视讯及音讯的数据封包,每一个数据封包均对应至一显示值,该解码器包含:一码流读取模块,用于根据一第一时钟参考值重建一时钟值;一管理模块,用于判断该时钟值与该多个显示值的一第一显示值中的误差是否大于一第一范围,当该时钟值与该第一显不值的误差大于该第一范围时,更改该时钟值为该多个显不值中的一第二显示值;以及一影音同步模块,用于根据该第二显示值所设定的该时钟值执行至少一影音同步步骤。
【附图说明】
[0006]图1为根据本发明的一实施例的一播放端的状态机的一示意图。
[0007]图2为根据本发明另一实施例的一播放端的状态机的一示意图。
[0008]图3为根据本发明一实施例的一播放方法的一流程的示意图。
[0009]图4为根据本发明另一实施例的一播放方法的一流程的示意图。
[0010]图5为根据本发明一实施例的一影片播放器的一方块示意图。
【具体实施方式】
[0011]本发明将详细描述一些实施例如下。然而,除了所揭露的实施例外,本发明的范围并不受该些实施例的限定,乃以其后的申请专利范围为准。而为了提供更清楚的描述及使该项技艺的普通人员能理解本发明的
【发明内容】
,图示内各部分并没有依照其相对的尺寸进行绘图,某些尺寸或其它相关尺度的比例可能被凸显出来而显得夸张,且不相关的细节部分并没有完全绘出,以求图示的简洁。
[0012]以下的说明将举动画专家组(MPEG)作为范例,本领域的普通技术人员可以理解至IJ,除了 MPEG之外,尚有其它可适用的工业标准。本发明的范围并不限定在MPEG当中。接下来将要简述根据MPEG标准如何压制影片,特别是关于影音同步的部分。
[0013]模拟的影音信号经过取样、量化、及压缩之后,将会形成基本码流(ES,elementarystream)。每一个基本码流包含几个存取单元(AU, access unit)。存取单元可以包含视讯数据或音讯数据。每一个存取单元包含一个视讯帧(frame)或一个音讯帧的数据。
[0014]连续的基本码流得先分割成段,成为封包化基本码流(PES, packetizedelementary stream)。在形成封包化基本码流时,可以在其头端讯息内加入显示时间戳(PTS, presentat1n time stamp)与解码时间戮(DTS, decode time stamp)。上述的显不时间戳PTS会告知播送端何时要显示或播放该封包化基本码流内的第一个存取单元的视讯数据或音讯数据。换言之,视讯数据会对应到一个显示时间戳PTS,音讯数据也会对应到一个显示时间戳PTS。上述的解码时间戳DTS则用于告知播送端何时要进行解码。
[0015]接下来,影片的压制端再将封包化基本码流分割成具有固定长度的传输码流(TS, transport stream)或是可变长度的节目流(PS, program stream)。在传输码流TS的头端讯息当中,包含节目时钟参考值(PCR, program clock reference)。
[0016]压制端或编码端当中需要具备一个系统时钟(STC, system timing clock),其频率为27MHz。系统时钟STC系用来指示上述的显示时间戳PTS与节目时钟参考值PCR。编码端必须在节目时钟参考值PCR字段要被编入的最后一刻,才将系统时钟STC的瞬间取样值作为节目时钟参考值PCR,存入该字段当中。
[0017]在解码端的部分,会利用节目时钟参考值PCR重建与编码端同步的系统时钟STC。每一次接收到新的节目时钟参考值PCR时,就会重新重建系统时钟STC。接着在解开封包化基本码流的头端讯息时,会解出视讯数据的显示时间戳PTS以及音讯数据的显示时间戳PTS,也会解出相关的解码时间戳DTS。显示时间戳PTS与解码时间戳DTS,连同被解开的基本码流会被送入到存储器内储存。
[0018]在基本码流的每个存取单元开始解码之前,会先比较其对应的解码时间戳DTS与节目时钟参考值PCR,当两者相等时即开始解码。在每个存取单元的视讯数据或音讯数据开始播放之前,会先比较其对应的显示时间戳PTS与节目时钟参考值PCR,当两者相等时即开始播放该存取单元的视讯数据或音讯数据。
[0019]上述所提及的是理想状态,也就是影片的压制端或编码端严格按照标准来实作时的情况。要是编码端不按照这样的标准进行影片的压制,节目时钟参考值PCR往往就会出现误差。在这种情况之下,解码端依然要继续播放影片。本发明的主要精神之一,在于节目时钟参考值PCR的误差值在某个范围之内,会利用显示时间戳PTS回头校正编码端重建的系统时钟STC,尽可能使得视讯与音讯数据同步播送。本发明的另一个主要精神,在于当节目时钟参考值PCR的误差值在某个范围之外时,直接放弃视讯与音讯数据同步过程,减少浪费解码器的计算资源与能源。
[0020]请参考图1所示,其为根据本发明的一实施例的一播放端的状态机100的一示意图。该播放端系用于播放一影音码流,该影音码流包含多个视讯与音讯的数据封包,视讯与音讯的数据封包各自包含有一显示时间戳PTS。该影音码流还包含多个节目时钟参考值PCR,当该播放端接收每一个该节目时钟参考值PCR时,就会重建一系统时钟STC的值。当系统时钟STC与显示时间戳PTS相符时,该播放端即播放该显示时间戳PTS所属的视讯或音讯的数据封包的内容。
[0021]该状态机100包含有三个状态,一正常状态110、一检查状态120、与一非正常状态130。当上述的系统时钟STC与显示时间戳PTS的误差在一第一范围内时,也就是节目时钟参考值PCR合理时,正常状态110会循着路径112,维持在正常状态110。然而,当上述的系统时钟STC与显示时间戳PTS的误差超过该第一范围时,亦即节目时钟参考值PCR不合理,则状态机100将会循着路径114,从正常状态110转变为检查状态120。
[0022]在某一实施例中,上述的系统时钟STC与显不时间戳PTS的误差的第一范围,可以是系统时钟STC领先显示时间戳PTS未达到一第一下限,或者是显示时间戳PTS领先系统时钟STC未达到一第二下限时。在一范例中,该第一下限等于该第二下限。举例来说,第一下限与第二下限都等于0.5秒。在另一范例中,该第一下限等于该第二下限。举例来说,第一下限为I秒,而第二下限为0.7秒。
[0023]当处在检查状态120时,若上述的节目时钟参考值PCR/系统时钟STC与显示时间戳PTS的误差又回复到该第一范围以内时,则状态机将循着路径122回到上述的正常状态110。如果上述的节目时钟参考值PCR/系统时钟STC与显示时间戳PTS的误差持续超出该第一范围,但还未超过某一时限(如十秒内),则状态机100仍循着路径124,维持在检查状态120。不过,当上述的节目时钟参考值PCR/系统时钟STC与显示时间戳PTS的误差持续超出该第一范围,而且超过上述时限(如十秒)的时候,则状态机100会循着路径126,转变成非正常状态130。
[0024]在处在非正常状态130时,播放端会使用音讯数据或视讯数据的显示时间戳PTS来的值来设定系统时钟STC的值。在一实施例中,上述用于设定系统时钟STC的显示时间戳PTS是对应到音讯数据。因此,音讯数据的显示时间戳PTS就马上与系统时钟STC同步。然而,视讯数据未必与系统时钟STC同步。所以播放端可能需要看视讯数据的显示时间戳PTS与系统时钟STC的关系,进行重复播放某些