1. TI多媒体codec的实现基于eXpressDSP Digital Media(XDM)标准 。XDM是eXpressDSP Algorithm Interface Standard(XDAIS)的一个扩展。
1.1 XDAIS overview
一个eXpressDSP 兼容的算法即是一个实现IALG抽象接口的模块。IALG API将内存管理功能从算法中剥离出来,改放到host framework中来实现。由此,在算法codec与framework之间必然存在交互,这个交互允许客户端应用程序来为算法codec分配释放内存,同时可以在算法codecs之间实现内存共享。为方便实现以上交互功能,IALG接口定义了若干APIs:
>algAlloc(): 用于算法codec向客户端client应用程序提出内存需求申请;
>algInit(): 申请成功,client应用程序给算法codec分配好内存后,由这个来做初始化;
>algFree(): 当一个算法实例instance不再需要时,用于算法codec告诉client对其申请的内存进行释放;
>algActivate():当一个算法实例对象创建后,就可以用它来实时处理数据了。这个API用于告诉算法实例对象当前有一个或多个方法将要连续运行0次或多次;
>algDeactivate(): 当对象方法运行完后,在当前实例的scratch内存被重用前,客户端应用程序调用本API;
另外IALG接口还定义了多个可选的APIs:algControl(),algNumAlloc(),algMoved()等,详见SPRU360.
1.2 XDM Overview
在多媒体应用领域,可能会碰到将多个codecs整合到一个多媒体系统的应用。如,建立一个视频解码系统可能会用到很多个解码器MP4/H264/H263等。为方便灵活的将这些codecs与client应用整合起来,有一点非常重要,即具备相似功能的各个codecs应该使用相似的APIs。XDM就是XDAIS的一个扩展,主要用于在各个不同类别的codecs(如audio,video,image,speech)之间寻求统一。XDM标准定义了两个APIs:
>control(): 提供一个标准途径来控制算法实例,并实时接收来自算法codec的状态信息。control()代替algControl()作为IALG 接口的一部分。
>process(): 实现输入数据的基本处理,如编码/解码操作。
除了为多媒体codecs定义标准化的APIs,XDM还对client应用程序必须传递到这些APIs的参数进行了标准化统一。当然,client应用程序还可以用扩展的数据结构来定义额外的参数以实现某些功能。随后的图表明了XDM与client应用程序的接口关系。
如图所示,XDM是XDAIS的一个扩展,在client应用程序与codec之间构成了一个接口。XDM使得client应用程序独立于算法codec级的更改之外,即修改了算法,client应用程序不需要有改动。因为TI多媒体算法都是XDM兼容,由此可以灵活使用任何TI提供的算法,而无需改变client应用程序。例如,你有一个开发好的调用XDM兼容的MPEG4解码器的client应用程序,那么你可以很容易的用其他XDM兼容的解码器来代替MPEG4,而对client的修改很少。
|