obs_video_info参数
2024-07-05
33
0
上面知道,关于图像实始化的OBS api函数入口是obs_reset_video,该函数内部分别调用:
- obs_init_graphics用于初始化视频图像模块dll,即获取d3d11封装的导出函数指针。最后再初始化图形渲染的基它参数及配置。
- obs_init_video 增加主场视图,并创建图像渲染线程。
上面三个公共的入口参数为obs_video_info,该结构体用于外部提供视频初始化模块的基本配置信息。
/**
* Video initialization structure
*/
struct obs_video_info {
#ifndef SWIG
/**
* Graphics module to use (usually "libobs-opengl" or "libobs-d3d11")
*/
const char *graphics_module;
#endif
uint32_t fps_num; /**< Output FPS numerator */
uint32_t fps_den; /**< Output FPS denominator */
uint32_t base_width; /**< Base compositing width */
uint32_t base_height; /**< Base compositing height */
uint32_t output_width; /**< Output width */
uint32_t output_height; /**< Output height */
enum video_format output_format; /**< Output format */
/** Video adapter index to use (NOTE: avoid for optimus laptops) */
uint32_t adapter;
/** Use shaders to convert to different color formats */
bool gpu_conversion;
enum video_colorspace colorspace; /**< YUV type (if YUV) */
enum video_range_type range; /**< YUV range (if YUV) */
enum obs_scale_type scale_type; /**< How to scale if scaling */
};
在OBS的测试工程中,一个基本的标例如下:
struct obs_video_info ovi;
ovi.adapter = 0; //显卡索引
ovi.fps_num = 30000;
ovi.fps_den = 1001;
ovi.graphics_module = DL_OPENGL;
ovi.output_format = VIDEO_FORMAT_RGBA;
//以下分别代表OBS中视频的输出与实际分辨率,见下图:
ovi.base_width = cx;
ovi.base_height = cy;
ovi.output_width = cx;
ovi.output_height = cy;
if(obs_reset_video(&ovi) != 0)
throw "Couldn't initialize video";
实际在OBSBasic::ResetVideo()中,完整的参数为: