webrtc_ini: Add new item to check source element supports encoded format 13/259413/6
authorSangchul Lee <sc11.lee@samsung.com>
Mon, 7 Jun 2021 11:58:45 +0000 (20:58 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Fri, 18 Jun 2021 05:33:14 +0000 (14:33 +0900)
If the encoded format is supported for a particular source,
'video encoded format support' item should be set to 'yes'
in ini configuration file. Then, it will get buffers from the
source with the encoded format based on the value of 'video codec'
item in this file.

e.g.)
[source camera]
video encoded format support = yes

[Version] 0.2.15
[Issue Type] Improvement

Change-Id: I0321b442a9239269a8c6f83f26ec78f34926f7bd
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
include/webrtc_private.h
packaging/capi-media-webrtc.spec
src/webrtc_ini.c

index bb7322bca7a7ab71127bd779a1873112b4ade841..29198a93698026955be1157747da1ea5665d3abd 100644 (file)
@@ -274,6 +274,7 @@ typedef struct _ini_item_media_source_s {
        const char *v_codec;
        const char *v_hw_encoder_element;
        bool v_drc_support;
+       bool v_encoded_fmt_support;
        /* audio source pipeline */
        const char *a_raw_format;
        int a_samplerate;
index 7749329ed5f68a8f49c70ad8646b23e4e851090c..359e22cab257bd094f591bb4014ac7280fccf741 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-media-webrtc
 Summary:    A WebRTC library in Tizen Native API
-Version:    0.2.14
+Version:    0.2.15
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
index 358c9daaa772ed3f4b316daf0133c78d7f1aca8b..17fdf3e0cededdb6d5b340ea2ff6d23a2894b6c5 100644 (file)
 #define INI_ITEM_FEC_PERCENTAGE           "fec percentage"
 
 /* items for media source */
-#define INI_ITEM_SOURCE_ELEMENT           "source element"
-#define INI_ITEM_VIDEO_RAW_FORMAT         "video raw format"
-#define INI_ITEM_VIDEO_WIDTH              "video width"
-#define INI_ITEM_VIDEO_HEIGHT             "video height"
-#define INI_ITEM_VIDEO_FRAMERATE          "video framerate"
-#define INI_ITEM_VIDEO_DRC_SUPPORT        "video drc support"
-#define INI_ITEM_VIDEO_CODEC              "video codec"
-#define INI_ITEM_VIDEO_HW_ENCODER_ELEMENT "video hw encoder element"
-#define INI_ITEM_AUDIO_RAW_FORMAT         "audio raw format"
-#define INI_ITEM_AUDIO_SAMPLERATE         "audio samplerate"
-#define INI_ITEM_AUDIO_CHANNELS           "audio channels"
-#define INI_ITEM_AUDIO_CODEC              "audio codec"
-#define INI_ITEM_AUDIO_HW_ENCODER_ELEMENT "audio hw encoder element"
+#define INI_ITEM_SOURCE_ELEMENT            "source element"
+#define INI_ITEM_VIDEO_RAW_FORMAT          "video raw format"
+#define INI_ITEM_VIDEO_WIDTH               "video width"
+#define INI_ITEM_VIDEO_HEIGHT              "video height"
+#define INI_ITEM_VIDEO_FRAMERATE           "video framerate"
+#define INI_ITEM_VIDEO_DRC_SUPPORT         "video drc support"             /* source element supports dynamic resolution change */
+#define INI_ITEM_VIDEO_ENCODED_FMT_SUPPORT "video encoded format support"  /* source element supports encoded format */
+#define INI_ITEM_VIDEO_CODEC               "video codec"
+#define INI_ITEM_VIDEO_HW_ENCODER_ELEMENT  "video hw encoder element"
+#define INI_ITEM_AUDIO_RAW_FORMAT          "audio raw format"
+#define INI_ITEM_AUDIO_SAMPLERATE          "audio samplerate"
+#define INI_ITEM_AUDIO_CHANNELS            "audio channels"
+#define INI_ITEM_AUDIO_CODEC               "audio codec"
+#define INI_ITEM_AUDIO_HW_ENCODER_ELEMENT  "audio hw encoder element"
 
 #define DEFAULT_VIDEO_RAW_FORMAT          "I420"
 #define DEFAULT_VIDEO_WIDTH               320
 #define DEFAULT_VIDEO_HEIGHT              240
 #define DEFAULT_VIDEO_FRAMERATE           30
 #define DEFAULT_VIDEO_DRC_SUPPORT         false
+#define DEFAULT_VIDEO_ENCODED_FMT_SUPPORT false
 #define DEFAULT_AUDIO_RAW_FORMAT          "S16LE"
 #define DEFAULT_AUDIO_SAMPLERATE          8000
 #define DEFAULT_AUDIO_CHANNELS            1
@@ -163,6 +165,7 @@ static void __dump_items_of_source(ini_item_media_source_s *source)
        __dump_item(INI_ITEM_VIDEO_HEIGHT, INI_ITEM_TYPE_INT, &source->v_height);
        __dump_item(INI_ITEM_VIDEO_FRAMERATE, INI_ITEM_TYPE_INT, &source->v_framerate);
        __dump_item(INI_ITEM_VIDEO_DRC_SUPPORT, INI_ITEM_TYPE_BOOL, &source->v_drc_support);
+       __dump_item(INI_ITEM_VIDEO_ENCODED_FMT_SUPPORT, INI_ITEM_TYPE_BOOL, &source->v_encoded_fmt_support);
        __dump_item(INI_ITEM_VIDEO_CODEC, INI_ITEM_TYPE_STRING, (void *)source->v_codec);
        __dump_item(INI_ITEM_VIDEO_HW_ENCODER_ELEMENT, INI_ITEM_TYPE_STRING, (void *)source->v_hw_encoder_element);
        __dump_item(INI_ITEM_AUDIO_RAW_FORMAT, INI_ITEM_TYPE_STRING, (void *)source->a_raw_format);
@@ -369,6 +372,8 @@ static void __apply_media_source_setting(webrtc_ini_s *ini, ini_item_media_sourc
                        is_default ? DEFAULT_VIDEO_FRAMERATE : ini->media_source.v_framerate);
        source->v_drc_support = __ini_get_boolean(ini->dict, category, INI_ITEM_VIDEO_DRC_SUPPORT,
                        is_default ? DEFAULT_VIDEO_DRC_SUPPORT : ini->media_source.v_drc_support);
+       source->v_encoded_fmt_support = __ini_get_boolean(ini->dict, category, INI_ITEM_VIDEO_ENCODED_FMT_SUPPORT,
+                       is_default ? DEFAULT_VIDEO_ENCODED_FMT_SUPPORT : ini->media_source.v_encoded_fmt_support);
        source->v_codec = __ini_get_string(ini->dict, category, INI_ITEM_VIDEO_CODEC,
                        is_default ? DEFAULT_VIDEO_CODEC : ini->media_source.v_codec);
        source->v_hw_encoder_element = __ini_get_string(ini->dict, category, INI_ITEM_VIDEO_HW_ENCODER_ELEMENT,