#define MEDIA_STREAMER_BIN_KLASS "Generic/Bin"
#define MEDIA_STREAMER_QUEUE_KLASS "Generic"
#define MEDIA_STREAMER_OVERLAY_KLASS "Filter/Editor"
-#define MEDIA_STREAMER_PARSER_KLASS "Codec/Parser/Converter"
+#define MEDIA_STREAMER_PARSER_KLASS "Codec/Parser"
#define MEDIA_STREAMER_CONVERTER_KLASS "Filter/Converter"
#define MEDIA_STREAMER_DECODER_KLASS "Codec/Decoder"
#define MEDIA_STREAMER_SINK_KLASS "Sink"
const gchar *factory_klass = gst_element_factory_get_klass(factory);
if (plug_info && g_strrstr(factory_klass, plug_info->info->klass_name)) {
-
if (GST_IS_CAPS(plug_info->src_caps))
src_can_accept = gst_element_factory_can_src_any_caps(factory, plug_info->src_caps);
if (MEDIA_FORMAT_RAW == (mime & MEDIA_FORMAT_RAW))
caps = gst_caps_new_simple("audio/x-raw", "channels", G_TYPE_INT, channel, "format",
G_TYPE_STRING, __ms_convert_mime_to_string_format(mime), "rate", G_TYPE_INT, samplerate, NULL);
- else if (MEDIA_FORMAT_ENCODED == (mime & MEDIA_FORMAT_ENCODED))
- caps = gst_caps_new_simple(__ms_convert_mime_to_string_format(mime), "channels", G_TYPE_INT, channel, "rate", G_TYPE_INT, samplerate, NULL);
+ else if (MEDIA_FORMAT_ENCODED == (mime & MEDIA_FORMAT_ENCODED)) {
+ if (mime & MEDIA_FORMAT_AAC)
+ caps = gst_caps_new_simple(__ms_convert_mime_to_string_format(mime), "mpegversion", G_TYPE_INT, 4, NULL);
+ else if (mime & MEDIA_FORMAT_MP3)
+ caps = gst_caps_new_simple(__ms_convert_mime_to_string_format(mime), "mpegversion", G_TYPE_INT, 1, "layer", G_TYPE_INT, 3, NULL);
+ else
+ caps = gst_caps_new_simple(__ms_convert_mime_to_string_format(mime), "channels", G_TYPE_INT, channel, "rate", G_TYPE_INT, samplerate, NULL);
+ }
caps_name = gst_caps_to_string(caps);
ms_info("Creating Audio Caps from media format [%s]", caps_name);
{"Filter/Effect/Video", "videorate"}, /* MEDIA_STREAMER_NODE_TYPE_VIDEO_RATE */
{"Filter/Converter/Video/Scaler", "videoscale"}, /* MEDIA_STREAMER_NODE_TYPE_VIDEO_SCALE */
{MEDIA_STREAMER_STRICT, "textoverlay"}, /* MEDIA_STREAMER_NODE_TYPE_TEXT_OVERLAY */
- {"Codec/Parser/Converter/Video", "h263parse"}, /* MEDIA_STREAMER_NODE_TYPE_PARSER */
+ {"Codec/Parser", "h263parse"}, /* MEDIA_STREAMER_NODE_TYPE_PARSER */
{MEDIA_STREAMER_STRICT, "capsfilter"}, /* MEDIA_STREAMER_NODE_TYPE_FILTER */
{MEDIA_STREAMER_STRICT, "tee"}, /* MEDIA_STREAMER_NODE_TYPE_TEE */
{MEDIA_STREAMER_STRICT, "queue"}, /* MEDIA_STREAMER_NODE_TYPE_QUEUE */
{MEDIA_FORMAT_MP3, "audio/mpeg"},
/* Audio - RAW */
{MEDIA_FORMAT_PCM, "S16LE"},
+ {MEDIA_FORMAT_PCM_S24LE, "S24LE"},
+ {MEDIA_FORMAT_PCM_S32LE, "S32LE"},
+ {MEDIA_FORMAT_PCM_S16BE, "S16BE"},
+ {MEDIA_FORMAT_PCM_S24BE, "S24BE"},
+ {MEDIA_FORMAT_PCM_S32BE, "S32BE"},
+ {MEDIA_FORMAT_PCM_F32LE, "F32LE"},
+ {MEDIA_FORMAT_PCM_F32BE, "F32BE"},
/* {MEDIA_FORMAT_PCMA, "audio/x-alaw"}, */
/* {MEDIA_FORMAT_PCMU, "audio/x-mulaw"}, */
/* Video - ENCODED */
media_format_h vfmt_encoded = NULL;
media_format_h vfmt_aenc = NULL;
media_format_h afmt_raw = NULL;
+media_format_h afmt_araw = NULL;
media_format_h afmt_encoded = NULL;
media_format_h afmt_aenc = NULL;
media_format_h tsfmt = NULL;
media_format_set_audio_channel(afmt_raw, AUDIO_CHANNEL);
media_format_set_audio_samplerate(afmt_raw, AUDIO_SAMPLERATE);
+ /* Define audio raw format for adaptive streaming */
+ media_format_create(&afmt_araw);
+ if (media_format_set_audio_mime(afmt_araw, MEDIA_FORMAT_PCM_F32LE) != MEDIA_FORMAT_ERROR_NONE)
+ g_print("media_format_set_audio_mime failed!");
+
+ media_format_set_audio_channel(afmt_araw, AUDIO_CHANNEL);
+ media_format_set_audio_samplerate(afmt_araw, AUDIO_SAMPLERATE);
+
/* Define audio encoded format */
media_format_create(&afmt_encoded);
if (media_format_set_audio_mime(afmt_encoded, MEDIA_FORMAT_AMR_NB) != MEDIA_FORMAT_ERROR_NONE)
APPEND_NODE(video_dec);
media_streamer_node_h audio_dec = NULL;
- media_streamer_node_create(MEDIA_STREAMER_NODE_TYPE_AUDIO_DECODER, afmt_aenc, afmt_raw, &audio_dec);
+ media_streamer_node_create(MEDIA_STREAMER_NODE_TYPE_AUDIO_DECODER, afmt_aenc, afmt_araw, &audio_dec);
media_streamer_node_add(current_media_streamer, audio_dec);
APPEND_NODE(audio_dec);
APPEND_NODE(video_enc);
media_streamer_node_h audio_enc = NULL;
- media_streamer_node_create(MEDIA_STREAMER_NODE_TYPE_AUDIO_ENCODER, afmt_raw, afmt_aenc, &audio_enc);
+ media_streamer_node_create(MEDIA_STREAMER_NODE_TYPE_AUDIO_ENCODER, afmt_araw, afmt_aenc, &audio_enc);
media_streamer_node_add(current_media_streamer, audio_enc);
APPEND_NODE(audio_enc);
APPEND_NODE(video_dec);
media_streamer_node_h audio_dec = NULL;
- media_streamer_node_create(MEDIA_STREAMER_NODE_TYPE_AUDIO_DECODER, afmt_aenc, afmt_raw, &audio_dec);
+ media_streamer_node_create(MEDIA_STREAMER_NODE_TYPE_AUDIO_DECODER, afmt_aenc, afmt_araw, &audio_dec);
media_streamer_node_add(current_media_streamer, audio_dec);
APPEND_NODE(audio_dec);