change default buffering type from file to mem 75/75775/3 accepted/tizen/common/20160627.191521 accepted/tizen/common/20160629.222225 accepted/tizen/ivi/20160629.015915 accepted/tizen/mobile/20160629.015844 accepted/tizen/tv/20160629.015932 accepted/tizen/wearable/20160629.020002 submit/tizen/20160623.063229 submit/tizen/20160627.065544
authorEunhae Choi <eunhae1.choi@samsung.com>
Tue, 21 Jun 2016 09:56:39 +0000 (18:56 +0900)
committerEunhae Choi <eunhae1.choi@samsung.com>
Tue, 21 Jun 2016 10:44:31 +0000 (19:44 +0900)
apply mused temp path for file buffering
set default buffering type to mem instead of file

Change-Id: I0625d2931c2976350aaa1915d7bd9776845a71f9

configure.ac
packaging/libmm-player.spec
src/Makefile.am
src/include/mm_player.h
src/include/mm_player_ini.h
src/include/mm_player_priv.h
src/include/mm_player_streaming.h
src/mm_player.c
src/mm_player_ini.c
src/mm_player_priv.c
src/mm_player_streaming.c

index 78b7204..b2a745d 100644 (file)
@@ -133,8 +133,6 @@ PKG_CHECK_MODULES(DLOG, dlog)
 AC_SUBST(DLOG_CFLAGS)
 AC_SUBST(DLOG_LIBS)
 
-PKG_CHECK_MODULES(TZPLATFORM_CONFIG, libtzplatform-config)
-
 AC_ARG_ENABLE(sdk, AC_HELP_STRING([--enable-sdk], [sdk build]),
         [
                case "${enableval}" in
index 6bc7031..d8d737e 100644 (file)
@@ -1,6 +1,6 @@
 Name:       libmm-player
 Summary:    Multimedia Framework Player Library
-Version:    0.5.83
+Version:    0.5.84
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0
@@ -27,7 +27,6 @@ BuildRequires:  pkgconfig(icu-i18n)
 BuildRequires:  pkgconfig(capi-media-tool)
 BuildRequires:  pkgconfig(murphy-resource)
 BuildRequires:  pkgconfig(murphy-glib)
-BuildRequires:  pkgconfig(libtzplatform-config)
 
 %description
 Multimedia Framework Player Library files.
index de09303..8314d5e 100644 (file)
@@ -78,7 +78,4 @@ endif
 if WAYLAND_SUPPORT
 libmmfplayer_la_CFLAGS += $(GST_WAYLAND_CFLAGS)
 libmmfplayer_la_LIBADD += $(GST_WAYLAND_LIBS)
-endif
-
-libmmfplayer_la_CFLAGS += $(TZPLATFORM_CONFIG_CFLAGS)
-libmmfplayer_la_LIBADD += $(TZPLATFORM_CONFIG_LIBS)
\ No newline at end of file
+endif
\ No newline at end of file
index 10aca09..3b77e98 100644 (file)
@@ -2327,6 +2327,18 @@ int mm_player_set_media_stream_dynamic_resolution(MMHandleType player, bool drc)
 int mm_player_release_video_stream_bo(MMHandleType player, void* bo);
 
 /**
+ * This function is to set mused temp file path.
+ *
+ * @param       player         [in]    handle of player
+ * @param       file_path      [in]    file path
+ * @return      This function returns zero on success, or negative value with error code.
+ *
+ * @see
+ * @remark      None
+ */
+int mm_player_set_temp_file_path(MMHandleType player, const char *file_path);
+
+/**
        @}
  */
 
index 99d6c3e..4a0933b 100644 (file)
@@ -87,7 +87,8 @@ typedef struct __mm_player_ini
 
        /* http streaming */
        gchar httpsrc_element[PLAYER_INI_MAX_STRLEN];
-       gchar http_file_buffer_path[PLAYER_INI_MAX_STRLEN];
+       gboolean http_use_file_buffer;
+       guint http_ring_buffer_size;
        gdouble http_buffering_limit;
        guint http_max_size_bytes;
        gdouble http_buffering_time;
@@ -161,7 +162,8 @@ typedef struct __mm_player_ini
 
 /* http streaming */
 #define DEFAULT_HTTPSRC                                "souphttpsrc"
-#define DEFAULT_HTTP_FILE_BUFFER_PATH          "/home/owner/content"
+#define DEFAULT_HTTP_USE_FILE_BUFFER   FALSE
+#define DEFAULT_HTTP_RING_BUFFER_SIZE  (20*1024*1024) /* bytes : 20MBytes */
 #define DEFAULT_HTTP_BUFFERING_LIMIT   99.0            /* percent */
 #define DEFAULT_HTTP_MAX_SIZE_BYTES            1048576         /* bytes : 1 MBytes  */
 #define DEFAULT_HTTP_BUFFERING_TIME            1.2                     /* sec */
@@ -227,8 +229,12 @@ eos delay = 150 ; msec \n\
 \n\
 httppsrc element = souphttpsrc \n\
 \n\
-; if set, use file or not use memory for buffering\n\
-http file buffer path = /opt/usr/media\n\
+; if yes, use file for buffering.\n\
+; if no, use memory for buffering.\n\
+http use file buffer = no\n\
+\n\
+; ring buffer size when use mem buffer \n\
+http ring buffer size = 20971520 ; 20MBytes \n\
 \n\
 http buffering limit = 99 ; percent\n\
 \n\
index 1957aab..c435bdd 100644 (file)
@@ -518,6 +518,7 @@ typedef struct {
 
        /* streaming player */
        mm_player_streaming_t *streamer;
+       gchar *http_file_buffer_path;
 
        /* gstreamer pipeline */
        MMPlayerGstPipelineInfo *pipeline;
@@ -853,6 +854,7 @@ int _mmplayer_set_video_share_master_clock(MMHandleType hplayer, long long clock
 int _mmplayer_get_video_share_master_clock(MMHandleType hplayer, long long *video_time, long long *media_clock, long long *audio_time);
 int _mmplayer_get_video_rotate_angle(MMHandleType hplayer, int *angle);
 int _mmplayer_enable_sync_handler(MMHandleType hplayer, bool enable);
+int _mmplayer_set_temp_file_path(MMHandleType hplayer, const char* file_path);
 int _mmplayer_set_uri(MMHandleType hplayer, const char* uri);
 int _mmplayer_set_next_uri(MMHandleType hplayer, const char* uri, bool is_first_path);
 int _mmplayer_get_next_uri(MMHandleType hplayer, char** uri);
index aabc508..55c97f7 100644 (file)
@@ -49,6 +49,7 @@
 #define DEFAULT_BUFFERING_TIME 3.0          /* 3sec     */
 #define DEFAULT_BUFFER_LOW_PERCENT 1.0      /* 1%       */
 #define DEFAULT_BUFFER_HIGH_PERCENT 99.0    /* 15%      */
+#define DEFAULT_RING_BUFFER_SIZE (20*1024*1024) /* 20MBytes */
 
 #define STREAMING_USE_FILE_BUFFER
 #define STREAMING_USE_MEMORY_BUFFER
@@ -92,6 +93,12 @@ typedef enum {
        BUFFER_TYPE_MAX,
 } BufferType;
 
+typedef enum {
+       MUXED_BUFFER_TYPE_MEM_QUEUE, /* push mode in queue2 */
+       MUXED_BUFFER_TYPE_MEM_RING_BUFFER, /* pull mode in queue2 */
+       MUXED_BUFFER_TYPE_FILE, /* pull mode in queue2 */
+} muxed_buffer_type_e;
+
 typedef struct
 {
        MMPlayerBufferingMode mode;
@@ -138,7 +145,7 @@ typedef struct
        guint           buffer_avg_bitrate;
        gboolean        need_update;
        gboolean        need_sync;
-
+       gint            ring_buffer_size;
 }mm_player_streaming_t;
 
 
@@ -153,7 +160,7 @@ void __mm_player_streaming_set_queue2(      mm_player_streaming_t* streamer,
                                                                                gdouble buffering_time,
                                                                                gdouble low_percent,
                                                                                gdouble high_percent,
-                                                                               gboolean use_file,
+                                                                               muxed_buffer_type_e type,
                                                                                gchar* file_path,
                                                                                guint64 content_size);
 void __mm_player_streaming_set_multiqueue(     mm_player_streaming_t* streamer,
index c48db33..258abb9 100644 (file)
@@ -1326,4 +1326,19 @@ int mm_player_release_video_stream_bo(MMHandleType player, void* bo)
 
 //     MMPLAYER_CMD_UNLOCK( player );
        return result;
-}
\ No newline at end of file
+}
+
+int mm_player_set_temp_file_path(MMHandleType player, const char *file_path)
+{
+       int result = MM_ERROR_NONE;
+
+       MMPLAYER_RETURN_VAL_IF_FAIL(player, MM_ERROR_PLAYER_NOT_INITIALIZED);
+
+       MMPLAYER_CMD_LOCK( player );
+
+       result = _mmplayer_set_temp_file_path(player, file_path);
+
+       MMPLAYER_CMD_UNLOCK( player );
+
+       return result;
+}
index 9507a11..f2e1352 100644 (file)
@@ -201,7 +201,8 @@ mm_player_ini_load(mm_player_ini_t* ini)
 
                /* http streaming */
                MMPLAYER_INI_GET_STRING( dict, ini->httpsrc_element, "http streaming:httpsrc element", DEFAULT_HTTPSRC );
-               MMPLAYER_INI_GET_STRING( dict, ini->http_file_buffer_path, "http streaming:http file buffer path", DEFAULT_HTTP_FILE_BUFFER_PATH );
+               ini->http_use_file_buffer = iniparser_getboolean(dict, "http streaming:http use file buffer", DEFAULT_HTTP_USE_FILE_BUFFER);
+               ini->http_ring_buffer_size = iniparser_getint(dict, "http streaming:http ring buffer size", DEFAULT_HTTP_RING_BUFFER_SIZE);
                ini->http_buffering_limit = iniparser_getdouble(dict, "http streaming:http buffering high limit", DEFAULT_HTTP_BUFFERING_LIMIT);
                ini->http_max_size_bytes = iniparser_getint(dict, "http streaming:http max size bytes", DEFAULT_HTTP_MAX_SIZE_BYTES);
                ini->http_buffering_time = iniparser_getdouble(dict, "http streaming:http buffering time", DEFAULT_HTTP_BUFFERING_TIME);
@@ -251,8 +252,9 @@ mm_player_ini_load(mm_player_ini_t* ini)
 
                /* http streaming */
                strncpy( ini->httpsrc_element, DEFAULT_HTTPSRC, PLAYER_INI_MAX_STRLEN - 1 );
-               strncpy( ini->http_file_buffer_path, DEFAULT_HTTP_FILE_BUFFER_PATH, PLAYER_INI_MAX_STRLEN - 1 );
                ini->http_buffering_limit = DEFAULT_HTTP_BUFFERING_LIMIT;
+               ini->http_use_file_buffer = DEFAULT_HTTP_USE_FILE_BUFFER;
+               ini->http_ring_buffer_size = DEFAULT_HTTP_RING_BUFFER_SIZE;
                ini->http_max_size_bytes = DEFAULT_HTTP_MAX_SIZE_BYTES;
                ini->http_buffering_time = DEFAULT_HTTP_BUFFERING_TIME;
                ini->http_timeout = DEFAULT_HTTP_TIMEOUT;
@@ -308,8 +310,9 @@ mm_player_ini_load(mm_player_ini_t* ini)
 
        /* http streaming */
        LOGD("httpsrc element : %s\n", ini->httpsrc_element);
-       LOGD("http file buffer path : %s \n", ini->http_file_buffer_path);
        LOGD("http buffering limit : %f \n", ini->http_buffering_limit);
+       LOGD("http use file buffer : %d \n", ini->http_use_file_buffer);
+       LOGD("http ring buffer size : %d \n", ini->http_ring_buffer_size);
        LOGD("http max_size bytes : %d \n", ini->http_max_size_bytes);
        LOGD("http buffering time : %f \n", ini->http_buffering_time);
        LOGD("http timeout : %d \n", ini->http_timeout);
index 9c5a897..6c89ccb 100644 (file)
 #define GST_QUEUE_DEFAULT_TIME                 4
 #define GST_QUEUE_HLS_TIME                             8
 
-#define MMPLAYER_USE_FILE_FOR_BUFFERING(player) (((player)->profile.uri_type != MM_PLAYER_URI_TYPE_HLS) && (player->ini.http_file_buffer_path) && (strlen(player->ini.http_file_buffer_path) > 0) )
+#define MMPLAYER_USE_FILE_FOR_BUFFERING(player) \
+       (((player)->profile.uri_type != MM_PLAYER_URI_TYPE_HLS) && \
+        (player->ini.http_use_file_buffer) && \
+        (player->http_file_buffer_path) && \
+        (strlen(player->http_file_buffer_path) > 0) )
 #define MM_PLAYER_NAME "mmplayer"
 
 /*---------------------------------------------------------------------------
@@ -3417,7 +3421,7 @@ __mmplayer_gst_decode_no_more_pads (GstElement *elem, gpointer data)
                                                init_buffering_time,
                                                1.0,                                                            // low percent
                                                player->ini.http_buffering_limit,       // high percent
-                                               FALSE,
+                                               MUXED_BUFFER_TYPE_MEM_QUEUE,
                                                NULL,
                                                ((dur_bytes>0)?((guint64)dur_bytes):0));
        }
@@ -7389,7 +7393,7 @@ __mmplayer_gst_create_pipeline(mm_player_t* player) // @
                                pre_buffering_time,
                                1.0,
                                player->ini.http_buffering_limit,
-                               FALSE,
+                               MUXED_BUFFER_TYPE_MEM_QUEUE,
                                NULL,
                                0);
        }
@@ -11324,7 +11328,6 @@ __mmplayer_try_to_plug_decodebin(mm_player_t* player, GstPad *srcpad, const GstC
        GstPad* qsrcpad= NULL;
        gchar *caps_str = NULL;
        gint64 dur_bytes = 0L;
-       gboolean use_file_buffer = FALSE;
 
        guint max_buffer_size_bytes = 0;
        gdouble init_buffering_time = (gdouble)player->streamer->buffering_req.initial_second;
@@ -11367,24 +11370,29 @@ __mmplayer_try_to_plug_decodebin(mm_player_t* player, GstPad *srcpad, const GstC
                                goto ERROR;
                        }
 
-                       // if ( !MMPLAYER_IS_HTTP_LIVE_STREAMING(player))
-                       {
-                               if ( !gst_element_query_duration(player->pipeline->mainbin[MMPLAYER_M_SRC].gst, GST_FORMAT_BYTES, &dur_bytes))
-                                       LOGE("fail to get duration.\n");
+                       if ( !gst_element_query_duration(player->pipeline->mainbin[MMPLAYER_M_SRC].gst, GST_FORMAT_BYTES, &dur_bytes))
+                               LOGE("fail to get duration.\n");
 
-                               LOGD("dur_bytes = %lld\n", dur_bytes);
+                       LOGD("dur_bytes = %lld\n", dur_bytes);
 
-                               if (dur_bytes > 0)
-                                       use_file_buffer = MMPLAYER_USE_FILE_FOR_BUFFERING(player);
-                               else
-                                       dur_bytes = 0;
+                       muxed_buffer_type_e type = MUXED_BUFFER_TYPE_MEM_QUEUE;
+
+                       if (dur_bytes > 0) {
+                               if (MMPLAYER_USE_FILE_FOR_BUFFERING(player)) {
+                                       type = MUXED_BUFFER_TYPE_FILE;
+                               } else {
+                                       type = MUXED_BUFFER_TYPE_MEM_RING_BUFFER;
+                                       player->streamer->ring_buffer_size = player->ini.http_ring_buffer_size;
+                               }
+                       } else {
+                               dur_bytes = 0;
                        }
 
                        /* NOTE : we cannot get any duration info from ts container in case of streaming */
                        // if(!g_strrstr(GST_ELEMENT_NAME(sinkelement), "mpegtsdemux"))
                        if(!g_strrstr(player->type, "video/mpegts"))
                        {
-                               max_buffer_size_bytes = (use_file_buffer)?(player->ini.http_max_size_bytes):(5*1024*1024);
+                               max_buffer_size_bytes = (type == MUXED_BUFFER_TYPE_FILE)?(player->ini.http_max_size_bytes):(5*1024*1024);
                                LOGD("max_buffer_size_bytes = %d\n", max_buffer_size_bytes);
 
                                __mm_player_streaming_set_queue2(player->streamer,
@@ -11394,8 +11402,8 @@ __mmplayer_try_to_plug_decodebin(mm_player_t* player, GstPad *srcpad, const GstC
                                                                                                player->ini.http_buffering_time,
                                                                                                1.0,                                                            // no meaning
                                                                                                player->ini.http_buffering_limit,       // no meaning
-                                                                                               use_file_buffer,
-                                                                                               player->ini.http_file_buffer_path,
+                                                                                               type,
+                                                                                               player->http_file_buffer_path,
                                                                                                (guint64)dur_bytes);
                        }
 
@@ -12674,6 +12682,22 @@ ERROR:
        return;
 }
 
+int _mmplayer_set_temp_file_path(MMHandleType hplayer, const char* file_path)
+{
+       int result = MM_ERROR_NONE;
+       mm_player_t* player = (mm_player_t*) hplayer;
+       MMPLAYER_FENTER();
+
+       MMPLAYER_RETURN_VAL_IF_FAIL (player, MM_ERROR_PLAYER_NOT_INITIALIZED);
+
+       if (file_path) {
+               player->http_file_buffer_path = (gchar*)file_path;
+               LOGD("temp file path: %s\n", player->http_file_buffer_path);
+       }
+       MMPLAYER_FLEAVE();
+       return result;
+}
+
 int _mmplayer_set_uri(MMHandleType hplayer, const char* uri)
 {
        int result = MM_ERROR_NONE;
@@ -13897,7 +13921,7 @@ const char *padname, const GList *templlist)
                        if (MMPLAYER_IS_HTTP_STREAMING(player))
                        {
                                gint64 dur_bytes = 0L;
-                               gboolean use_file_buffer = FALSE;
+                               muxed_buffer_type_e type = MUXED_BUFFER_TYPE_MEM_QUEUE;
 
                                if ( !mainbin[MMPLAYER_M_MUXED_S_BUFFER].gst)
                                {
@@ -13941,10 +13965,17 @@ const char *padname, const GList *templlist)
                                                if ( !gst_element_query_duration(player->pipeline->mainbin[MMPLAYER_M_SRC].gst, GST_FORMAT_BYTES, &dur_bytes))
                                                        LOGE("fail to get duration.\n");
 
-                                               if (dur_bytes > 0)
-                                                       use_file_buffer = MMPLAYER_USE_FILE_FOR_BUFFERING(player);
-                                               else
+                                               if (dur_bytes > 0) {
+                                                       if (MMPLAYER_USE_FILE_FOR_BUFFERING(player)) {
+                                                               type = MUXED_BUFFER_TYPE_FILE;
+                                                       } else {
+                                                               type = MUXED_BUFFER_TYPE_MEM_RING_BUFFER;
+                                                               if (player->streamer)
+                                                                       player->streamer->ring_buffer_size = player->ini.http_ring_buffer_size;
+                                                       }
+                                               } else {
                                                        dur_bytes = 0;
+                                               }
                                        }
 
                                        /* NOTE : we cannot get any duration info from ts container in case of streaming */
@@ -13957,8 +13988,8 @@ const char *padname, const GList *templlist)
                                                        player->ini.http_buffering_time,
                                                        1.0,
                                                        player->ini.http_buffering_limit,
-                                                       use_file_buffer,
-                                                       player->ini.http_file_buffer_path,
+                                                       type,
+                                                       player->http_file_buffer_path,
                                                        (guint64)dur_bytes);
                                        }
                                }
index 6f49d5a..cf2cdc4 100644 (file)
@@ -22,7 +22,6 @@
 
 #include <sys/vfs.h>
 #include <dlog.h>
-#include <tzplatform_config.h>
 #include "mm_player_utils.h"
 #include "mm_player_streaming.h"
 
@@ -50,7 +49,7 @@ typedef struct{
 
 static void streaming_check_buffer_percent(gdouble in_low, gdouble in_high, gdouble *out_low, gdouble *out_high);
 static void streaming_set_buffer_percent(mm_player_streaming_t* streamer, BufferType type, gdouble low_percent, gdouble high_percent_byte, gdouble high_percent_time);
-static void streaming_set_queue2_queue_type (mm_player_streaming_t* streamer, gboolean use_file, gchar * file_path, guint64 content_size);
+static void streaming_set_queue2_queue_type (mm_player_streaming_t* streamer, muxed_buffer_type_e type, gchar * file_path, guint64 content_size);
 static void streaming_set_buffer_size(mm_player_streaming_t* streamer, BufferType type, guint buffering_bytes, gdouble buffering_time);
 static void streaming_update_buffering_status(mm_player_streaming_t* streamer, GstMessage *buffering_msg, gint64 position);
 static void streaming_get_current_bitrate_info(        mm_player_streaming_t* streamer,
@@ -137,6 +136,7 @@ void __mm_player_streaming_initialize (mm_player_streaming_t* streamer)
        streamer->is_adaptive_streaming = FALSE;
        streamer->buffering_percent = -1;
 
+       streamer->ring_buffer_size = DEFAULT_RING_BUFFER_SIZE;
        MMPLAYER_FLEAVE();
        return;
 }
@@ -169,6 +169,7 @@ void __mm_player_streaming_deinitialize (mm_player_streaming_t* streamer)
        streamer->is_adaptive_streaming = FALSE;
 
        streamer->buffering_percent = -1;
+       streamer->ring_buffer_size = DEFAULT_RING_BUFFER_SIZE;
 
        MMPLAYER_FLEAVE();
        return;
@@ -340,11 +341,11 @@ streaming_set_buffer_percent(     mm_player_streaming_t* streamer,
 }
 
 static void
-streaming_set_queue2_queue_type (mm_player_streaming_t* streamer, gboolean use_file, gchar * file_path, guint64 content_size)
+streaming_set_queue2_queue_type (mm_player_streaming_t* streamer, muxed_buffer_type_e type, gchar * file_path, guint64 content_size)
 {
        streaming_buffer_t* buffer_handle = NULL;
        guint64 storage_available_size = 0L; //bytes
-       guint64 file_buffer_size = 0L;  //bytes
+       guint64 buffer_size = 0L;  //bytes
        gchar file_buffer_name[MM_MAX_URL_LEN] = {0};
        struct statfs buf = {0};
        gchar* factory_name = NULL;
@@ -377,50 +378,49 @@ streaming_set_queue2_queue_type (mm_player_streaming_t* streamer, gboolean use_f
                return;
        }
 
-       if ((!use_file) || (!g_strrstr(factory_name, "queue2")))
+       if ((type == MUXED_BUFFER_TYPE_MEM_QUEUE) || (!g_strrstr(factory_name, "queue2")))
        {
-               LOGD("use memory for buffering. streaming is played on push-based. \n"
+               LOGD("use memory queue for buffering. streaming is played on push-based. \n"
                                        "buffering position would not be updated.\n"
                                        "buffered data would be flushed after played.\n"
                                        "seeking and getting duration could be failed due to file format.");
                return;
        }
 
-       LOGD("[Queue2] use file for buffering. streaming is played on pull-based. \n");
+       LOGD("[Queue2] buffering type : %d. streaming is played on pull-based. \n", type);
+       if (type == MUXED_BUFFER_TYPE_FILE && file_path && strlen(file_path)>0) {
+               if (statfs((const char *)file_path, &buf) < 0)
+               {
+                       LOGW ("[Queue2] fail to get available storage capacity. set mem ring buffer instead of file buffer.\n");
+                       buffer_size = (guint64)((streamer->ring_buffer_size>0)?(streamer->ring_buffer_size):DEFAULT_RING_BUFFER_SIZE);
+               }
+               else
+               {
+                       storage_available_size = (guint64)buf.f_bavail * (guint64)buf.f_bsize; //bytes
 
-       if (!file_path || strlen(file_path) <= 0)
-               file_path = (gchar *)tzplatform_getenv(TZ_SYS_DATA);
+                       LOGD ("[Queue2] the number of available blocks : %"G_GUINT64_FORMAT
+                                               ", the block size is %"G_GUINT64_FORMAT".\n",
+                                               (guint64)buf.f_bavail, (guint64)buf.f_bsize);
 
-       if (statfs((const char *)file_path, &buf) < 0)
-       {
-               LOGW ("[Queue2] fail to get availabe storage capacity. just use file buffer.\n");
-               file_buffer_size = 0L;
-       }
-       else
-       {
-               storage_available_size = (guint64)buf.f_bavail * (guint64)buf.f_bsize; //bytes
+                       LOGD ("[Queue2] calculated available storage size is %"
+                                                               G_GUINT64_FORMAT" Bytes.\n", storage_available_size);
 
-               LOGD ("[Queue2] the number of available blocks : %"G_GUINT64_FORMAT
-                                       ", the block size is %"G_GUINT64_FORMAT".\n",
-                                       (guint64)buf.f_bavail, (guint64)buf.f_bsize);
+                       if (content_size <= 0 || content_size >= storage_available_size)
+                               buffer_size = storage_available_size;
+                       else
+                               buffer_size = 0L;
 
-               LOGD ("[Queue2] calculated availabe storage size is %"
-                                                       G_GUINT64_FORMAT" Bytes.\n", storage_available_size);
+                       g_snprintf(file_buffer_name, MM_MAX_URL_LEN, "%sXXXXXX", file_path);
+                       SECURE_LOGD("[Queue2] the buffering file name is %s.\n", file_buffer_name);
 
-               if (content_size <= 0 || content_size >= storage_available_size)
-                       file_buffer_size = storage_available_size;
-               else
-                       file_buffer_size = 0L;
+                       g_object_set (G_OBJECT(buffer_handle->buffer), "temp-template", file_buffer_name, NULL);
+               }
+       } else {
+               buffer_size = (guint64)((streamer->ring_buffer_size>0)?(streamer->ring_buffer_size):DEFAULT_RING_BUFFER_SIZE);
        }
 
-       if (file_buffer_size>0)
-               LOGD("[Queue2] use file ring buffer for buffering.");
-
-       g_snprintf(file_buffer_name, MM_MAX_URL_LEN, "%s/XXXXXX", file_path);
-       SECURE_LOGD("[Queue2] the buffering file name is %s.\n", file_buffer_name);
-
-       g_object_set (G_OBJECT(buffer_handle->buffer), "temp-template", file_buffer_name, NULL);
-       g_object_set (G_OBJECT(buffer_handle->buffer), "ring-buffer-max-size", file_buffer_size, NULL);
+       LOGW ("[Queue2] set ring buffer size: %lld\n", buffer_size);
+       g_object_set (G_OBJECT(buffer_handle->buffer), "ring-buffer-max-size", buffer_size, NULL);
 
        MMPLAYER_FLEAVE();
        return;
@@ -493,7 +493,7 @@ void __mm_player_streaming_set_queue2(      mm_player_streaming_t* streamer,
                                                                                gdouble buffering_time,
                                                                                gdouble low_percent,
                                                                                gdouble high_percent,
-                                                                               gboolean use_file,
+                                                                               muxed_buffer_type_e type,
                                                                                gchar* file_path,
                                                                                guint64 content_size)
 {
@@ -531,7 +531,7 @@ void __mm_player_streaming_set_queue2(      mm_player_streaming_t* streamer,
 
        streaming_set_buffer_size               (streamer, BUFFER_TYPE_MUXED, buffering_bytes, buffering_time);
        streaming_set_buffer_percent    (streamer, BUFFER_TYPE_MUXED, low_percent, high_percent, 0);
-       streaming_set_queue2_queue_type (streamer, use_file, file_path, content_size);
+       streaming_set_queue2_queue_type (streamer, type, file_path, content_size);
 
        MMPLAYER_FLEAVE();
        return;