Bläddra i källkod

libobs: Add API to specify codec support on encoded outputs

(This commit also modifies obs-outputs)
jp9000 8 år sedan
förälder
incheckning
d839c77824
5 ändrade filer med 51 tillägg och 26 borttagningar
  1. 12 0
      libobs/obs-output.c
  2. 4 0
      libobs/obs-output.h
  3. 5 0
      libobs/obs.h
  4. 11 9
      plugins/obs-outputs/flv-output.c
  5. 19 17
      plugins/obs-outputs/rtmp-stream.c

+ 12 - 0
libobs/obs-output.c

@@ -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;
+}

+ 4 - 0
libobs/obs-output.h

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

+ 5 - 0
libobs/obs.h

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

+ 11 - 9
plugins/obs-outputs/flv-output.c

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

+ 19 - 17
plugins/obs-outputs/rtmp-stream.c

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