Add raw audio formats. Fix class info for parser 38/87838/2
authorVolodymyr Brynza <v.brynza@samsung.com>
Tue, 6 Sep 2016 08:30:57 +0000 (11:30 +0300)
committereunhae choi <eunhae1.choi@samsung.com>
Tue, 20 Sep 2016 11:23:31 +0000 (04:23 -0700)
Change-Id: I7dd5446ec99a04bd61cb7a83e26a0023ea791a8a
Signed-off-by: Volodymyr Brynza <v.brynza@samsung.com>
include/media_streamer_gst.h
src/media_streamer_gst.c
src/media_streamer_node.c
src/media_streamer_util.c
test/media_streamer_test.c

index d407829..37f2b2b 100644 (file)
@@ -32,7 +32,7 @@
 #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"
index 2fa751d..0c607d0 100644 (file)
@@ -872,7 +872,6 @@ static gboolean __ms_feature_node_filter(GstPluginFeature *feature, gpointer dat
        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);
 
@@ -1699,8 +1698,14 @@ GstCaps *__ms_create_caps_from_fmt(media_format_h fmt)
                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);
 
index e62408e..10f7e57 100644 (file)
@@ -68,7 +68,7 @@ node_info_s nodes_info[] = {
        {"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 */
index d639070..8272f50 100644 (file)
@@ -38,6 +38,13 @@ format_s format_table[] = {
        {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 */
index 6a25dbd..7a647e8 100644 (file)
@@ -131,6 +131,7 @@ media_format_h vfmt_raw = NULL;
 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;
@@ -325,6 +326,14 @@ static void create_formats(void)
        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)
@@ -714,7 +723,7 @@ static void _create_adaptive_server_manual()
        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);
 
@@ -724,7 +733,7 @@ static void _create_adaptive_server_manual()
        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);
 
@@ -788,7 +797,7 @@ static void _create_adaptive_playing_manual()
        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);