Divide converting mimetype-string function into several parts 31/238631/3
authorSangchul Lee <sc11.lee@samsung.com>
Thu, 16 Jul 2020 01:20:15 +0000 (10:20 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Fri, 17 Jul 2020 00:40:46 +0000 (09:40 +0900)
It'll reduce unnecessary comparison.

[Version] 0.1.96
[Issue Type] Improvement

Change-Id: Ie2227164687017b079c07f73331a00f9d612a1dd
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
include/media_streamer_util.h
packaging/capi-media-streamer.spec
src/media_streamer_gst.c
src/media_streamer_util.c

index 1e9b9571c848dbc5461edd722b09eaab624fa79f..a1362b31ccaa983c0b80e67220032480ce7a0343 100644 (file)
@@ -280,9 +280,19 @@ gboolean ms_ini_get_boolean(const char *ini_path, gboolean default_value);
 void ms_ini_read_list(const char *key, gchar ***list);
 
 /**
- * @brief Converts Media Format mime type into Caps media format string.
+ * @brief Converts Media Format mime type into Caps media format string for audio.
  */
-const gchar *ms_convert_mime_to_string_format(media_format_mimetype_e mime);
+const gchar *ms_convert_audio_mime_to_string_format(media_format_mimetype_e mime);
+
+/**
+ * @brief Converts Media Format mime type into Caps media format string for video.
+ */
+const gchar *ms_convert_video_mime_to_string_format(media_format_mimetype_e mime);
+
+/**
+ * @brief Converts Media Format mime type into Caps media format string for container.
+ */
+const gchar *ms_convert_container_mime_to_string_format(media_format_mimetype_e mime);
 
 /**
  * @brief Converts Media Format mime type into rtp media type.
@@ -290,9 +300,14 @@ const gchar *ms_convert_mime_to_string_format(media_format_mimetype_e mime);
 const gchar *ms_convert_mime_to_rtp_format(media_format_mimetype_e mime);
 
 /**
- * @brief Converts Caps stream format into Media Format mime type.
+ * @brief Converts Caps stream format into Media Format mime type for audio.
+ */
+media_format_mimetype_e ms_convert_audio_string_format_to_media_format(const char *format_type);
+
+/**
+ * @brief Converts Caps stream format into Media Format mime type for video.
  */
-media_format_mimetype_e ms_convert_string_format_to_media_format(const char *format_type);
+media_format_mimetype_e ms_convert_video_string_format_to_media_format(const char *format_type);
 
 /**
  * @brief Creates Media streamer signal structure,
index ee5d5f9dbf54f1b401ef5804e144908baee30a0e..5ad3e190b1f21d2a6bae0e71541c449bf217cc53 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-media-streamer
 Summary:    A Media Streamer API
-Version:    0.1.95
+Version:    0.1.96
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
index df027d98eaae2178afad8adb4fe6935dfdb9aa27..7d13a3acfe6a37cbfdb801b4f4086f9dd3a36a4e 100644 (file)
@@ -1400,7 +1400,7 @@ static GstElement *__ms_video_encoder_element_create(node_plug_s *plug_info)
        }
 
        MS_GET_CAPS_TYPE(enc_caps, src_type);
-       encoder_type = ms_convert_string_format_to_media_format(src_type);
+       encoder_type = ms_convert_video_string_format_to_media_format(src_type);
 
        if (encoder_type == MEDIA_FORMAT_VP8) {
                /* VP8 does not have parser */
@@ -1517,7 +1517,7 @@ static GstElement *__ms_video_decoder_element_create(node_plug_s *plug_info)
 
        /* Settings if H264 format is set*/
        MS_GET_CAPS_TYPE(dec_caps, sink_type);
-       decoder_type = ms_convert_string_format_to_media_format(sink_type);
+       decoder_type = ms_convert_video_string_format_to_media_format(sink_type);
        if (decoder_type == MEDIA_FORMAT_H264_SP)
                g_object_set(G_OBJECT(decoder_parser), "config-interval", H264_PARSER_CONFIG_INTERVAL, NULL);
 
@@ -2472,14 +2472,14 @@ GstCaps *ms_create_caps_from_fmt(media_format_h fmt)
 
        if (!media_format_get_audio_info(fmt, &mime, &channel, &samplerate, &bit, &avg_bps)) {
                if (MEDIA_FORMAT_RAW == (mime & MEDIA_FORMAT_RAW)) {
-                       caps = gst_caps_new_simple("audio/x-raw", "format", G_TYPE_STRING, ms_convert_mime_to_string_format(mime), NULL);
+                       caps = gst_caps_new_simple("audio/x-raw", "format", G_TYPE_STRING, ms_convert_audio_mime_to_string_format(mime), 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);
+                               caps = gst_caps_new_simple(ms_convert_audio_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, NULL);
+                               caps = gst_caps_new_simple(ms_convert_audio_mime_to_string_format(mime), "mpegversion", G_TYPE_INT, 1, 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 = gst_caps_new_simple(ms_convert_audio_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);
@@ -2487,17 +2487,17 @@ GstCaps *ms_create_caps_from_fmt(media_format_h fmt)
        } else if (!media_format_get_video_info(fmt, &mime, &width, &height, &avg_bps, &max_bps)) {
                if (MEDIA_FORMAT_RAW == (mime & MEDIA_FORMAT_RAW))
                        caps = gst_caps_new_simple("video/x-raw", "framerate", GST_TYPE_FRACTION, max_bps,
-                                       avg_bps, "format", G_TYPE_STRING, ms_convert_mime_to_string_format(mime), "width", G_TYPE_INT, width, "height", G_TYPE_INT, height, NULL);
+                                       avg_bps, "format", G_TYPE_STRING, ms_convert_video_mime_to_string_format(mime), "width", G_TYPE_INT, width, "height", G_TYPE_INT, height, NULL);
                else if (MEDIA_FORMAT_ENCODED == (mime & MEDIA_FORMAT_ENCODED))
-                       caps = gst_caps_new_simple(ms_convert_mime_to_string_format(mime), "framerate", GST_TYPE_FRACTION, max_bps,
+                       caps = gst_caps_new_simple(ms_convert_video_mime_to_string_format(mime), "framerate", GST_TYPE_FRACTION, max_bps,
                                                        avg_bps, "width", G_TYPE_INT, width, "height", G_TYPE_INT, height, NULL);
                caps_name = gst_caps_to_string(caps);
                ms_info("Creating Video Caps from media format [%s]", caps_name);
 
        } else if (!media_format_get_container_mime(fmt, &mime)) {
-                       caps = gst_caps_new_empty_simple(ms_convert_mime_to_string_format(mime));
+                       caps = gst_caps_new_empty_simple(ms_convert_container_mime_to_string_format(mime));
                        caps_name = gst_caps_to_string(caps);
-                       ms_info("Creating Video Caps from media format [%s]", caps_name);
+                       ms_info("Creating Container Caps from media format [%s]", caps_name);
 
        } else
                ms_error("Error getting media format information");
@@ -2546,13 +2546,13 @@ static media_format_h __ms_create_fmt_from_caps(GstCaps *caps)
                gst_structure_get_fraction(pad_struct, "framerate", &max_bps, &avg_bps);
                gst_structure_get_int(pad_struct, "height", &height);
 
-               media_format_set_video_mime(fmt, ms_convert_string_format_to_media_format(pad_format));
+               media_format_set_video_mime(fmt, ms_convert_video_string_format_to_media_format(pad_format));
                media_format_set_video_width(fmt, width);
                media_format_set_video_height(fmt, height);
                media_format_set_video_avg_bps(fmt, avg_bps);
                media_format_set_video_max_bps(fmt, max_bps);
        } else if (MS_ELEMENT_IS_AUDIO(pad_type)) {
-               media_format_set_audio_mime(fmt, ms_convert_string_format_to_media_format(pad_format));
+               media_format_set_audio_mime(fmt, ms_convert_audio_string_format_to_media_format(pad_format));
                gst_structure_get_int(pad_struct, "channels", &channels);
                media_format_set_audio_channel(fmt, channels);
                gst_structure_get_int(pad_struct, "rate", &bps);
index 57967e2efc190f459825ea78d59744c558d49080..91955ea86a4f0e63b078eea96e1d23c469752ac7 100644 (file)
@@ -24,7 +24,7 @@
 #include "media_streamer_priv.h"
 #include "media_streamer_util.h"
 
-static const format_s zerocopy_fmt_table[] = {
+static const format_s zerocopy_video_format_table[] = {
        {MEDIA_FORMAT_I420, "S420"},
        {MEDIA_FORMAT_NV12, "SN12"},
        {MEDIA_FORMAT_NV12T, "ST12"},
@@ -32,8 +32,8 @@ static const format_s zerocopy_fmt_table[] = {
        {MEDIA_FORMAT_MAX, NULL}
 };
 
-static const format_s format_table[] = {
-       /* Audio - ENCODED */
+static const format_s audio_format_table[] = {
+       /* ENCODED */
        {MEDIA_FORMAT_L16, "audio/x-raw"},
        {MEDIA_FORMAT_ALAW, "audio/x-alaw"},
        {MEDIA_FORMAT_ULAW, "audio/x-mulaw"},
@@ -47,7 +47,7 @@ static const format_s format_table[] = {
        {MEDIA_FORMAT_AAC_HE_PS, "audio/mpeg"},
        {MEDIA_FORMAT_MP3, "audio/mpeg"},
        {MEDIA_FORMAT_OPUS, "audio/x-opus"},
-       /* Audio - RAW */
+       /* RAW */
        {MEDIA_FORMAT_PCM, "S16LE"},
        {MEDIA_FORMAT_PCM_S24LE, "S24LE"},
        {MEDIA_FORMAT_PCM_S32LE, "S32LE"},
@@ -58,7 +58,11 @@ static const format_s format_table[] = {
        {MEDIA_FORMAT_PCM_F32BE, "F32BE"},
        /* {MEDIA_FORMAT_PCMA, "audio/x-alaw"}, */
        /* {MEDIA_FORMAT_PCMU, "audio/x-mulaw"}, */
-       /* Video - ENCODED */
+       {MEDIA_FORMAT_MAX, NULL}
+};
+
+static const format_s video_format_table[] = {
+       /* ENCODED */
        {MEDIA_FORMAT_H261, "video/x-h261"},
        {MEDIA_FORMAT_H263, "video/x-h263"},
        {MEDIA_FORMAT_H263P, "video/x-h263"},
@@ -76,7 +80,7 @@ static const format_s format_table[] = {
        {MEDIA_FORMAT_VP8, "video/x-vp8"},
        {MEDIA_FORMAT_VP9, "video/x-vp9"},
        {MEDIA_FORMAT_VC1, "video/x-wmv"},
-       /* Video - RAW */
+       /* RAW */
        {MEDIA_FORMAT_I420, "I420"},
        {MEDIA_FORMAT_NV12, "NV12"},
        {MEDIA_FORMAT_NV12T, "NV12T"},
@@ -91,7 +95,10 @@ static const format_s format_table[] = {
        {MEDIA_FORMAT_RGBA, "RGBA"},
        {MEDIA_FORMAT_ARGB, "ARGB"},
        {MEDIA_FORMAT_NATIVE_VIDEO, "NATIVE_VIDEO"},
-       /* Container */
+       {MEDIA_FORMAT_MAX, NULL}
+};
+
+static const format_s container_format_table[] = {
        {MEDIA_FORMAT_CONTAINER_MP4, "video/quicktime"},
        {MEDIA_FORMAT_CONTAINER_MPEG2TS, "video/mpegts"},
        {MEDIA_FORMAT_MAX, NULL}
@@ -179,7 +186,6 @@ void ms_ini_read_list(const char *key, gchar ***list)
 
 void ms_load_ini_settings(media_streamer_ini_t *ini)
 {
-
        ms_debug_fenter();
 
        /* get ini values */
@@ -217,7 +223,27 @@ void ms_load_ini_settings(media_streamer_ini_t *ini)
 
 }
 
-const gchar *ms_convert_mime_to_string_format(media_format_mimetype_e mime)
+const gchar *ms_convert_audio_mime_to_string_format(media_format_mimetype_e mime)
+{
+       gchar *format_name = NULL;
+       int it_format;
+
+       for (it_format = 0; audio_format_table[it_format].format != MEDIA_FORMAT_MAX; it_format++) {
+               if (mime == audio_format_table[it_format].format) {
+                       format_name = audio_format_table[it_format].format_name;
+                       break;
+               }
+       }
+
+       if (!format_name)
+               ms_warning("Not supported this mimetype[0x%x]", mime);
+       else
+               ms_info("format_name[%s]", format_name);
+
+       return format_name;
+}
+
+const gchar *ms_convert_video_mime_to_string_format(media_format_mimetype_e mime)
 {
        gchar *format_name = NULL;
        int it_format;
@@ -227,17 +253,17 @@ const gchar *ms_convert_mime_to_string_format(media_format_mimetype_e mime)
 
        use_zerocopy_fmt = ms_ini_get_boolean("general:use zerocopy", DEFAULT_USE_ZEROCOPY);
 
-       for (it_format = 0; format_table[it_format].format != MEDIA_FORMAT_MAX; it_format++) {
-               if (mime == format_table[it_format].format) {
-                       format_name = format_table[it_format].format_name;
+       for (it_format = 0; video_format_table[it_format].format != MEDIA_FORMAT_MAX; it_format++) {
+               if (mime == video_format_table[it_format].format) {
+                       format_name = video_format_table[it_format].format_name;
                        break;
                }
        }
 
        if (use_zerocopy_fmt) {
-               for (it_format = 0; zerocopy_fmt_table[it_format].format != MEDIA_FORMAT_MAX; it_format++) {
-                       if (mime == zerocopy_fmt_table[it_format].format) {
-                               format_name = zerocopy_fmt_table[it_format].format_name;
+               for (it_format = 0; zerocopy_video_format_table[it_format].format != MEDIA_FORMAT_MAX; it_format++) {
+                       if (mime == zerocopy_video_format_table[it_format].format) {
+                               format_name = zerocopy_video_format_table[it_format].format_name;
                                break;
                        }
                }
@@ -245,8 +271,28 @@ const gchar *ms_convert_mime_to_string_format(media_format_mimetype_e mime)
 
        if (!format_name)
                ms_warning("Not supported this mimetype[0x%x]", mime);
+       else
+               ms_info("format_name[%s]", format_name);
 
-       ms_debug_fleave();
+       return format_name;
+}
+
+const gchar *ms_convert_container_mime_to_string_format(media_format_mimetype_e mime)
+{
+       gchar *format_name = NULL;
+       int it_format;
+
+       for (it_format = 0; container_format_table[it_format].format != MEDIA_FORMAT_MAX; it_format++) {
+               if (mime == container_format_table[it_format].format) {
+                       format_name = container_format_table[it_format].format_name;
+                       break;
+               }
+       }
+
+       if (!format_name)
+               ms_warning("Not supported this mimetype[0x%x]", mime);
+       else
+               ms_info("format_name[%s]", format_name);
 
        return format_name;
 }
@@ -278,33 +324,48 @@ const gchar *ms_convert_mime_to_rtp_format(media_format_mimetype_e mime)
 }
 //LCOV_EXCL_STOP
 
-media_format_mimetype_e ms_convert_string_format_to_media_format(const char *format_type)
+media_format_mimetype_e ms_convert_audio_string_format_to_media_format(const char *format_type)
+{
+       media_format_mimetype_e mime = MEDIA_FORMAT_PCM;
+       int it_format;
+
+       for (it_format = 0; audio_format_table[it_format].format != MEDIA_FORMAT_MAX; it_format++) {
+               if (g_strrstr(format_type, audio_format_table[it_format].format_name)) {
+                       mime = audio_format_table[it_format].format;
+                       break;
+               }
+       }
+
+       ms_info("mime[0x%x]", mime);
+
+       return mime;
+}
+
+media_format_mimetype_e ms_convert_video_string_format_to_media_format(const char *format_type)
 {
        media_format_mimetype_e mime = MEDIA_FORMAT_NATIVE_VIDEO;
        int it_format;
        gboolean use_zerocopy_fmt = DEFAULT_USE_ZEROCOPY;
 
-       ms_debug_fenter();
-
        use_zerocopy_fmt = ms_ini_get_boolean("general:use zerocopy", DEFAULT_USE_ZEROCOPY);
 
-       for (it_format = 0; format_table[it_format].format != MEDIA_FORMAT_MAX; it_format++) {
-               if (g_strrstr(format_type, format_table[it_format].format_name)) {
-                       mime = format_table[it_format].format;
+       for (it_format = 0; video_format_table[it_format].format != MEDIA_FORMAT_MAX; it_format++) {
+               if (g_strrstr(format_type, video_format_table[it_format].format_name)) {
+                       mime = video_format_table[it_format].format;
                        break;
                }
        }
 
        if (use_zerocopy_fmt) {
-               for (it_format = 0; zerocopy_fmt_table[it_format].format != MEDIA_FORMAT_MAX; it_format++) {
-                       if (g_strrstr(format_type, zerocopy_fmt_table[it_format].format_name)) {
-                               mime = zerocopy_fmt_table[it_format].format;
+               for (it_format = 0; zerocopy_video_format_table[it_format].format != MEDIA_FORMAT_MAX; it_format++) {
+                       if (g_strrstr(format_type, zerocopy_video_format_table[it_format].format_name)) {
+                               mime = zerocopy_video_format_table[it_format].format;
                                break;
                        }
                }
        }
 
-       ms_debug_fleave();
+       ms_info("mime[0x%x]", mime);
 
        return mime;
 }