obs_source_frame简介
2024-07-02
23
0
obs_source_frame是视频图像的数据流结构。
struct obs_source_frame {
uint8_t *data[MAX_AV_PLANES];
uint32_t linesize[MAX_AV_PLANES];
uint32_t width;
uint32_t height;
uint64_t timestamp;
enum video_format format;
float color_matrix[16];
bool full_range;
uint16_t max_luminance;
float color_range_min[3];
float color_range_max[3];
bool flip;
uint8_t flags;
uint8_t trc; /* enum video_trc */
/* used internally by libobs */
volatile long refs;
bool prev_frame;
};
对于任意一个输出源,即生产图像的obs_source,其结构体成员用于缓存其产生的视频源:
struct obs_source {
...
DARRAY(struct obs_source_frame *) async_frames;
pthread_mutex_t async_mutex;
...
};
相关函数
由于async_frames缓存视频图像,故会使用函数obs_source_output_video将生成的图像源增加队列中,而使用obs_source_get_frame从队列中取了一个obs_source_frame
struct obs_source_frame *obs_source_get_frame(obs_source_t *source);
void obs_source_output_video(obs_source_t *source,const struct obs_source_frame *frame);