该结构体枚举逐项内存访问模式
enum {
MFX_IOPATTERN_IN_VIDEO_MEMORY = 0x01,
MFX_IOPATTERN_IN_SYSTEM_MEMORY = 0x02,
MFX_IOPATTERN_IN_OPAQUE_MEMORY = 0x04,
MFX_IOPATTERN_OUT_VIDEO_MEMORY = 0x10,
MFX_IOPATTERN_OUT_SYSTEM_MEMORY = 0x20,
MFX_IOPATTERN_OUT_OPAQUE_MEMORY = 0x40
};
MFX_IOPATTERN_IN_VIDEO_MEMORY
输入显存
MFX_IOPATTERN_IN_SYSTEM_MEMORY
输入系统 内存
MFX_IOPATTERN_IN_OPAQUE_MEMORY
输入到任何一个系统 内存或视频内存表面。
MFX_IOPATTERN_OUT_VIDEO_MEMORY
输出显存
MFX_IOPATTERN_OUT_SYSTEM_MEMORY
输出系统内存
MFX_IOPATTERN_OUT_OPAQUE_MEMORY
输出任何一个系统 内存缓冲区或视频内存表面。
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。
enum {
MFX_PICSTRUCT_UNKNOWN =0x00, 未指定或混合逐行/隔行扫描图片
MFX_PICSTRUCT_PROGRESSIVE =0x01, 逐行扫描图像
MFX_PICSTRUCT_FIELD_TFF =0x02, 从上面隔行扫描
MFX_PICSTRUCT_FIELD_BFF =0x04, 从底部隔行扫描
MFX_PICSTRUCT_FIELD_REPEATED=0x10, /* first field repeated, pic_struct=5 or 6 in H.264 */
MFX_PICSTRUCT_FRAME_DOUBLING=0x20, /* pic_struct=7 in H.264 */
MFX_PICSTRUCT_FRAME_TRIPLING=0x40 /* pic_struct=8 in H.264 */
};
配置VPP调整器滤波算法。结构参数将被裁剪到相应的范围内,通过其相应的增量四舍五入
typedef struct {
mfxExtBuffer Header; 必须是MFX_EXTBUFF_VPP_PROCAMP值
mfxF64 Brightness;亮度参数是在-100.0F至100.0F的范围内,在0.1F的增量。默认的亮度值是0.0F
mfxF64 Contrast; 对比度参数是在0.0F到10.0F的范围内,在0.01F的增量。默认对比度值为1.0F。
mfxF64 Hue;色调参数是在-180F至180F的范围内,在0.1F的增量。默认色相值为0.0F。
mfxF64 Saturation;饱和度参数是在0.0F到10.0F的范围内,在0.01F的增量。默认饱和度值是1.0F。
} mfxExtVPPProcAmp;