OBS图形及渲染
+ -

obs_video_info参数

2024-07-05 8 0

上面知道,关于图像实始化的OBS api函数入口是obs_reset_video,该函数内部分别调用:

  • obs_init_graphics用于初始化视频图像模块dll,即获取d3d11封装的导出函数指针。最后再初始化图形渲染的基它参数及配置。
  • obs_init_video 增加主场视图,并创建图像渲染线程。

14514435551

上面三个公共的入口参数为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";

144746762260

0 篇笔记 写笔记

作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!