}
}
-static GstAudioFormat __get_gst_audio_format_from_string(const char *format)
+static GstAudioFormat __get_gst_audio_raw_format_from_string(const char *format)
{
RET_VAL_IF(format == NULL, GST_AUDIO_FORMAT_UNKNOWN, "format is NULL");
return caps;
}
+static GstCaps *__make_mediapacketsrc_raw_caps_from_media_format(webrtc_gst_slot_s *source)
+{
+ GstCaps *caps = NULL;
+ media_format_mimetype_e mime_type;
+
+ RET_VAL_IF(source == NULL, NULL, "source is NULL");
+ RET_VAL_IF(source->media_format == NULL, NULL, "media_format is NULL");
+ RET_VAL_IF(source->type != WEBRTC_MEDIA_SOURCE_TYPE_MEDIA_PACKET, NULL,
+ "type(%d) is not for media packet source", source->type);
+
+ if (source->media_types == MEDIA_TYPE_AUDIO) {
+ int channels;
+ int samplerate;
+ GstAudioInfo info;
+ GstAudioFormat format;
+
+ RET_VAL_IF(media_format_get_audio_info(source->media_format, &mime_type, &channels, &samplerate, NULL, NULL) != MEDIA_FORMAT_ERROR_NONE,
+ NULL, "failed to media_format_get_audio_info()");
+
+ format = __get_gst_audio_format(mime_type);
+ RET_VAL_IF(format == GST_AUDIO_FORMAT_ENCODED || format == GST_AUDIO_FORMAT_UNKNOWN, NULL, "could not get valid GstAudioFormat for PCM");
+
+ gst_audio_info_set_format(&info, format, samplerate, channels, NULL);
+ caps = gst_audio_info_to_caps(&info);
+
+ } else if (source->media_types == MEDIA_TYPE_VIDEO) {
+ int width;
+ int height;
+ int framerate;
+
+ RET_VAL_IF(media_format_get_video_info(source->media_format, &mime_type, &width, &height, NULL, NULL) != MEDIA_FORMAT_ERROR_NONE,
+ NULL, "failed to media_format_get_video_info()");
+ RET_VAL_IF(media_format_get_video_frame_rate(source->media_format, &framerate) != MEDIA_FORMAT_ERROR_NONE,
+ NULL, "failed to media_format_get_video_frame_rate()");
+ caps = gst_caps_new_simple(MEDIA_TYPE_VIDEO_RAW,
+ "format", G_TYPE_STRING, __get_video_format_name(mime_type, source->zerocopy_enabled),
+ "framerate", GST_TYPE_FRACTION, framerate, 1,
+ "width", G_TYPE_INT, width,
+ "height", G_TYPE_INT, height,
+ NULL);
+
+ } else {
+ LOG_ERROR_IF_REACHED("source->media_types(0x%x)", source->media_types);
+ }
+
+ return caps;
+}
+
static GstCaps *__make_default_raw_caps(webrtc_gst_slot_s *source, webrtc_ini_s *ini)
{
GstCaps *caps = NULL;
case WEBRTC_MEDIA_SOURCE_TYPE_AUDIOTEST:
case WEBRTC_MEDIA_SOURCE_TYPE_MIC:
case WEBRTC_MEDIA_SOURCE_TYPE_CUSTOM_AUDIO:
- format = __get_gst_audio_format_from_string(ini_source->a_raw_format);
+ format = __get_gst_audio_raw_format_from_string(ini_source->a_raw_format);
RET_VAL_IF(format == GST_AUDIO_FORMAT_UNKNOWN, NULL, "not supported raw format");
gst_audio_info_set_format(&info, format, ini_source->a_samplerate, ini_source->a_channels, NULL);
break;
case WEBRTC_MEDIA_SOURCE_TYPE_MEDIA_PACKET: {
- media_format_mimetype_e mime_type;
-
RET_VAL_IF(source->media_format == NULL, NULL, "media_format is NULL");
- if (source->media_types == MEDIA_TYPE_AUDIO) {
- int channels;
- int samplerate;
- const char *format_name;
-
- RET_VAL_IF(media_format_get_audio_info(source->media_format, &mime_type, &channels, &samplerate, NULL, NULL) != MEDIA_FORMAT_ERROR_NONE,
- NULL, "failed to media_format_get_audio_info()");
-
- format_name = __get_audio_format_name(mime_type);
- RET_VAL_IF(format_name == NULL, NULL, "not supported mime_type");
-
- format = __get_gst_audio_format_from_string(format_name);
- RET_VAL_IF(format == GST_AUDIO_FORMAT_UNKNOWN, NULL, "not supported raw format");
-
- gst_audio_info_set_format(&info, format, samplerate, channels, NULL);
- caps = gst_audio_info_to_caps(&info);
-
- } else if (source->media_types == MEDIA_TYPE_VIDEO) {
- int width;
- int height;
- int framerate;
-
- RET_VAL_IF(media_format_get_video_info(source->media_format, &mime_type, &width, &height, NULL, NULL) != MEDIA_FORMAT_ERROR_NONE,
- NULL, "failed to media_format_get_video_info()");
- RET_VAL_IF(media_format_get_video_frame_rate(source->media_format, &framerate) != MEDIA_FORMAT_ERROR_NONE,
- NULL, "failed to media_format_get_video_frame_rate()");
-
- caps = gst_caps_new_simple(MEDIA_TYPE_VIDEO_RAW,
- "format", G_TYPE_STRING, __get_video_format_name(mime_type, source->zerocopy_enabled),
- "framerate", GST_TYPE_FRACTION, framerate, 1,
- "width", G_TYPE_INT, width,
- "height", G_TYPE_INT, height,
- NULL);
-
- } else {
- LOG_ERROR_IF_REACHED("source->media_types(0x%x)", source->media_types);
- }
+ caps = __make_mediapacketsrc_raw_caps_from_media_format(source);
break;
}
default:
return caps;
}
-static GstCaps *__make_raw_caps_from_media_format(webrtc_gst_slot_s *source)
-{
- GstCaps *caps = NULL;
- media_format_mimetype_e mime_type;
-
- RET_VAL_IF(source == NULL, NULL, "source is NULL");
- RET_VAL_IF(source->media_format == NULL, NULL, "media_format is NULL");
- RET_VAL_IF(source->type != WEBRTC_MEDIA_SOURCE_TYPE_MEDIA_PACKET, NULL,
- "type(%d) is not for media packet source", source->type);
-
- if (source->media_types == MEDIA_TYPE_AUDIO) {
- int channels;
- int samplerate;
- GstAudioInfo info;
- GstAudioFormat format;
-
- RET_VAL_IF(media_format_get_audio_info(source->media_format, &mime_type, &channels, &samplerate, NULL, NULL) != MEDIA_FORMAT_ERROR_NONE,
- NULL, "failed to media_format_get_audio_info()");
-
- format = __get_gst_audio_format(mime_type);
- RET_VAL_IF(format == GST_AUDIO_FORMAT_ENCODED || format == GST_AUDIO_FORMAT_UNKNOWN, NULL, "could not get valid GstAudioFormat for PCM");
-
- gst_audio_info_set_format(&info, format, samplerate, channels, NULL);
- caps = gst_audio_info_to_caps(&info);
-
- } else if (source->media_types == MEDIA_TYPE_VIDEO) {
- int width;
- int height;
- int framerate;
-
- RET_VAL_IF(media_format_get_video_info(source->media_format, &mime_type, &width, &height, NULL, NULL) != MEDIA_FORMAT_ERROR_NONE,
- NULL, "failed to media_format_get_video_info()");
- RET_VAL_IF(media_format_get_video_frame_rate(source->media_format, &framerate) != MEDIA_FORMAT_ERROR_NONE,
- NULL, "failed to media_format_get_video_frame_rate()");
- caps = gst_caps_new_simple(MEDIA_TYPE_VIDEO_RAW,
- "format", G_TYPE_STRING, __get_video_format_name(mime_type, source->zerocopy_enabled),
- "framerate", GST_TYPE_FRACTION, framerate, 1,
- "width", G_TYPE_INT, width,
- "height", G_TYPE_INT, height,
- NULL);
-
- } else {
- LOG_ERROR_IF_REACHED("source->media_types(0x%x)", source->media_types);
- }
-
- return caps;
-}
-
static GstCaps *__get_caps_from_encoded_audio_media_type(const char *media_type, int channels, int samplerate)
{
RET_VAL_IF(media_type == NULL, NULL, "media_type is NULL");
if ((ret = __create_rest_of_elements(webrtc, source, false, &element_list, (source->media_types == MEDIA_TYPE_AUDIO))) != WEBRTC_ERROR_NONE)
goto exit;
- if (!(sink_caps = __make_raw_caps_from_media_format(source))) {
+ if (!(sink_caps = __make_mediapacketsrc_raw_caps_from_media_format(source))) {
ret = WEBRTC_ERROR_INVALID_OPERATION;
goto exit;
}