added functions to get current audio/video output information

This commit is contained in:
jp9000 2013-12-06 06:38:19 -07:00
parent 8298fa4dc7
commit ff47b3a2dc
5 changed files with 52 additions and 4 deletions

View file

@ -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);

View file

@ -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);

View file

@ -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 {

View file

@ -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)

View file

@ -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
*