Set bitrate for encoder
[platform/core/api/mediacodec.git] / src / media_codec_port_gst.c
index 110003f..2746bec 100644 (file)
@@ -1696,24 +1696,24 @@ media_packet_h _mc_get_input_buffer(mc_gst_core_t *core)
 
 mc_ret_e mc_gst_prepare(mc_handle_t *mc_handle)
 {
-       MEDIACODEC_FENTER();
-
        int ret = MC_ERROR_NONE;
-       media_format_mimetype_e out_mime;
        int num_supported_codec = 0;
        int i = 0;
-       GstCaps *caps = NULL;
-
-       if (!mc_handle)
-               return MC_PARAM_ERROR;
-
-       mediacodec_codec_type_e id;
+       int bitrate = 0;
        bool video;
        bool encoder;
        bool hardware;
        gchar *factory_name = NULL;
+       GstCaps *caps = NULL;
+       media_format_mimetype_e out_mime;
+       mediacodec_codec_type_e id;
        mc_codec_map_t *codec_map;
 
+       MEDIACODEC_FENTER();
+
+       if (!mc_handle)
+               return MC_PARAM_ERROR;
+
        id = mc_handle->codec_id;
        video = mc_handle->is_video;
        encoder = mc_handle->is_encoder;
@@ -1801,6 +1801,17 @@ mc_ret_e mc_gst_prepare(mc_handle_t *mc_handle)
        g_object_set(new_core->capsfilter, "caps", caps, NULL);
        gst_caps_unref(caps);
 
+       if (new_core->encoder) {
+               if (new_core->video)
+                       bitrate = mc_handle->info.video.bitrate;
+               else
+                       bitrate = mc_handle->info.audio.bitrate;
+
+               LOGI("set encoder bitrate[v:%d] %d", new_core->video, bitrate);
+
+               g_object_set(new_core->codec, "bitrate", bitrate, NULL);
+       }
+
        mc_handle->core = new_core;
        LOGD("initialized... %d", ret);
        MEDIACODEC_FLEAVE();