libobs: Add API to specify codec support on encoded outputs

(This commit also modifies obs-outputs)
This commit is contained in:
jp9000 2017-07-12 22:54:04 -07:00
parent aa78b1bbee
commit d839c77824
5 changed files with 51 additions and 26 deletions

View file

@ -2162,3 +2162,15 @@ bool obs_output_reconnecting(const obs_output_t *output)
return reconnecting(output);
}
const char *obs_output_get_supported_video_codecs(const obs_output_t *output)
{
return obs_output_valid(output, __FUNCTION__) ?
output->info.encoded_video_codecs : NULL;
}
const char *obs_output_get_supported_audio_codecs(const obs_output_t *output)
{
return obs_output_valid(output, __FUNCTION__) ?
output->info.encoded_audio_codecs : NULL;
}

View file

@ -67,6 +67,10 @@ struct obs_output_info {
float (*get_congestion)(void *data);
int (*get_connect_time_ms)(void *data);
/* only used with encoded outputs, separated with semicolon */
const char *encoded_video_codecs;
const char *encoded_audio_codecs;
};
EXPORT void obs_register_output_s(const struct obs_output_info *info,

View file

@ -1524,6 +1524,11 @@ EXPORT bool obs_output_reconnecting(const obs_output_t *output);
EXPORT void obs_output_set_last_error(obs_output_t *output,
const char *message);
EXPORT const char *obs_output_get_supported_video_codecs(
const obs_output_t *output);
EXPORT const char *obs_output_get_supported_audio_codecs(
const obs_output_t *output);
/* ------------------------------------------------------------------------- */
/* Functions used by outputs */

View file

@ -220,13 +220,15 @@ static obs_properties_t *flv_output_properties(void *unused)
}
struct obs_output_info flv_output_info = {
.id = "flv_output",
.flags = OBS_OUTPUT_AV | OBS_OUTPUT_ENCODED,
.get_name = flv_output_getname,
.create = flv_output_create,
.destroy = flv_output_destroy,
.start = flv_output_start,
.stop = flv_output_stop,
.encoded_packet = flv_output_data,
.get_properties = flv_output_properties
.id = "flv_output",
.flags = OBS_OUTPUT_AV | OBS_OUTPUT_ENCODED,
.encoded_video_codecs = "h264",
.encoded_audio_codecs = "aac",
.get_name = flv_output_getname,
.create = flv_output_create,
.destroy = flv_output_destroy,
.start = flv_output_start,
.stop = flv_output_stop,
.encoded_packet = flv_output_data,
.get_properties = flv_output_properties
};

View file

@ -1173,21 +1173,23 @@ static int rtmp_stream_connect_time(void *data)
}
struct obs_output_info rtmp_output_info = {
.id = "rtmp_output",
.flags = OBS_OUTPUT_AV |
OBS_OUTPUT_ENCODED |
OBS_OUTPUT_SERVICE |
OBS_OUTPUT_MULTI_TRACK,
.get_name = rtmp_stream_getname,
.create = rtmp_stream_create,
.destroy = rtmp_stream_destroy,
.start = rtmp_stream_start,
.stop = rtmp_stream_stop,
.encoded_packet = rtmp_stream_data,
.get_defaults = rtmp_stream_defaults,
.get_properties = rtmp_stream_properties,
.get_total_bytes = rtmp_stream_total_bytes_sent,
.get_congestion = rtmp_stream_congestion,
.get_connect_time_ms= rtmp_stream_connect_time,
.get_dropped_frames = rtmp_stream_dropped_frames
.id = "rtmp_output",
.flags = OBS_OUTPUT_AV |
OBS_OUTPUT_ENCODED |
OBS_OUTPUT_SERVICE |
OBS_OUTPUT_MULTI_TRACK,
.encoded_video_codecs = "h264",
.encoded_audio_codecs = "aac",
.get_name = rtmp_stream_getname,
.create = rtmp_stream_create,
.destroy = rtmp_stream_destroy,
.start = rtmp_stream_start,
.stop = rtmp_stream_stop,
.encoded_packet = rtmp_stream_data,
.get_defaults = rtmp_stream_defaults,
.get_properties = rtmp_stream_properties,
.get_total_bytes = rtmp_stream_total_bytes_sent,
.get_congestion = rtmp_stream_congestion,
.get_connect_time_ms = rtmp_stream_connect_time,
.get_dropped_frames = rtmp_stream_dropped_frames
};