mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-07-15 07:44:10 +00:00
added functions to get current audio/video output information
This commit is contained in:
parent
8298fa4dc7
commit
ff47b3a2dc
|
@ -133,6 +133,11 @@ fail:
|
|||
return VIDEO_OUTPUT_FAIL;
|
||||
}
|
||||
|
||||
const struct video_info *video_output_getinfo(video_t video)
|
||||
{
|
||||
return &video->info;
|
||||
}
|
||||
|
||||
void video_output_frame(video_t video, struct video_frame *frame)
|
||||
{
|
||||
pthread_mutex_lock(&video->data_mutex);
|
||||
|
|
|
@ -74,6 +74,7 @@ struct video_info {
|
|||
|
||||
EXPORT int video_output_open(video_t *video, media_t media,
|
||||
struct video_info *info);
|
||||
EXPORT const struct video_info *video_output_getinfo(video_t video);
|
||||
EXPORT void video_output_frame(video_t video, struct video_frame *frame);
|
||||
EXPORT bool video_output_wait(video_t video);
|
||||
EXPORT uint64_t video_getframetime(video_t video);
|
||||
|
|
|
@ -57,8 +57,8 @@ struct obs_video {
|
|||
pthread_t video_thread;
|
||||
bool thread_initialized;
|
||||
|
||||
uint32_t output_width;
|
||||
uint32_t output_height;
|
||||
uint32_t base_width;
|
||||
uint32_t base_height;
|
||||
};
|
||||
|
||||
struct obs_audio {
|
||||
|
|
40
libobs/obs.c
40
libobs/obs.c
|
@ -86,8 +86,8 @@ static bool obs_init_graphics(struct obs_video_info *ovi)
|
|||
int errorcode;
|
||||
|
||||
make_gs_init_data(&graphics_data, ovi);
|
||||
video->output_width = ovi->output_width;
|
||||
video->output_height = ovi->output_height;
|
||||
video->base_width = ovi->base_width;
|
||||
video->base_height = ovi->base_height;
|
||||
|
||||
errorcode = gs_create(&video->graphics, ovi->graphics_module,
|
||||
&graphics_data);
|
||||
|
@ -339,6 +339,42 @@ bool obs_reset_audio(struct audio_info *ai)
|
|||
return true;
|
||||
}
|
||||
|
||||
bool obs_get_video_info(struct obs_video_info *ovi)
|
||||
{
|
||||
struct obs_video *video = &obs->video;
|
||||
const struct video_info *info;
|
||||
|
||||
if (!video->graphics)
|
||||
return false;
|
||||
|
||||
info = video_output_getinfo(video->video);
|
||||
|
||||
memset(ovi, 0, sizeof(struct obs_video_info));
|
||||
ovi->base_width = video->base_width;
|
||||
ovi->base_height = video->base_height;
|
||||
ovi->output_width = info->width;
|
||||
ovi->output_height = info->height;
|
||||
ovi->output_format = info->type;
|
||||
ovi->fps_num = info->fps_num;
|
||||
ovi->fps_den = info->fps_den;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool obs_get_audio_info(struct audio_info *ai)
|
||||
{
|
||||
struct obs_audio *audio = &obs->audio;
|
||||
const struct audio_info *info;
|
||||
|
||||
if (!audio->audio)
|
||||
return false;
|
||||
|
||||
info = audio_output_getinfo(audio->audio);
|
||||
memcpy(ai, info, sizeof(struct audio_info));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool obs_enum_input_types(size_t idx, const char **name)
|
||||
{
|
||||
if (idx >= obs->input_types.num)
|
||||
|
|
|
@ -170,6 +170,12 @@ EXPORT bool obs_reset_video(struct obs_video_info *ovi);
|
|||
*/
|
||||
EXPORT bool obs_reset_audio(struct audio_info *ai);
|
||||
|
||||
/** Gets the current video settings, returns false if none */
|
||||
EXPORT bool obs_get_video_info(struct obs_video_info *ovi);
|
||||
|
||||
/** Gets the current audio settings, returns false if none */
|
||||
EXPORT bool obs_get_audio_info(struct audio_info *ai);
|
||||
|
||||
/**
|
||||
* Loads a plugin module
|
||||
*
|
||||
|
|
Loading…
Reference in a new issue