Media SDK2.0 Beta揭秘 之 AsyncDepth篇

Media SDK2.0 Beta版本是API 1.1版本的一个延续,本片博客主要讨论它的一个新feature,即AsyncDepth。它是mfxVideoParam结构中的一个新的成员变量。

mfxVideoParam的定义如下所示:

typedef struct _mfxVideoParam {
mfxU32 reserved[3];
mfxU16 reserved3;
mfxU16 AsyncDepth;
union {
mfxInfoMFX mfx;
mfxInfoVPP vpp;
}
mfxU16 Protected;
mfxU16 IOPattern;
mfxExtBuffer **ExtParam;
mfxU16 NumExtParam;
mfxU16 reserved2;
} mfxVideoParam;

AsyncDepth是mfxVideoParam的一个新成员变量,它的主要功能是设置异步操作pipeline的深度。对于Media SDK2.0 Beta以前应用程序,这个成员变量相当于设置0值。如果应用为了优化性能,可以根据需要设置相对应的值。考虑一般的IPBB情况(一般只有ipppppp的设置为2),它的设置可以为:AsyncDepth = 4,不过这个仅仅是参考值,在不同的应用中它的值应该通过反复调优得到。

注意
1. AsyncDepth的设置会直接影响到Video Surface的多少。如果应用已经在Media SDK2.0 Beta以前写好,但是又想对AsyncDepth进行设置调优。那么在分配Surface的时候请多至少分配(AsyncDepth - 1)个。
2. AsyncDepth的设置和码流的具体frame安排有关系,在调优前期可以先设置4来看看性能如何。再根据测试结果加减数目直到最优。

【小结】
- AsyncDepth能够帮助应用改善frame或者buffer的管理。
- 为了兼容于Media SDK2.0 Beta以前的版本,请将其设置为0。

你可能感兴趣的:(Media SDK2.0 Beta揭秘 之 AsyncDepth篇)