Fix Gstreamer 0.10-1.0 compliance 63/3563/1
authorXavier Roche <xavrock.os@gmail.com>
Thu, 2 May 2013 13:23:51 +0000 (15:23 +0200)
committerRusty Lynch <rusty.lynch@intel.com>
Sat, 18 May 2013 18:41:46 +0000 (11:41 -0700)
configure.ac
packaging/libmm-player.spec
src/include/mm_player_utils.h
src/mm_player_attrs.c
src/mm_player_capture.c
src/mm_player_pd.c
src/mm_player_priv.c
src/mm_player_utils.c

index 75c0956..76f0f53 100755 (executable)
@@ -57,21 +57,43 @@ PKG_CHECK_MODULES(GLIB, glib-2.0)
 AC_SUBST(GLIB_CFLAGS)
 AC_SUBST(GLIB_LIBS)
 
-PKG_CHECK_MODULES(GST, gstreamer-0.10 >= 0.10)
-AC_SUBST(GST_CFLAGS)
-AC_SUBST(GST_LIBS)
-
-PKG_CHECK_MODULES(GST_PLUGIN_BASE, gstreamer-plugins-base-0.10 >= 0.10)
-AC_SUBST(GST_PLUGIN_BASE_CFLAGS)
-AC_SUBST(GST_PLUGIN_BASE_LIBS)
-
-PKG_CHECK_MODULES(GST_INTERFACE, gstreamer-interfaces-0.10 >= 0.10)
-AC_SUBST(GST_INTERFACE_CFLAGS)
-AC_SUBST(GST_LIBS)
-
-PKG_CHECK_MODULES(GST_APP, gstreamer-app-0.10 >= 0.10)
-AC_SUBST(GST_APP_CFLAGS)
-AC_SUBST(GST_APP_LIBS)
+if test "$use_gstreamer_1" = "1"; then 
+  PKG_CHECK_MODULES(GST, gstreamer-1.0)
+  AC_SUBST(GST_CFLAGS)
+  AC_SUBST(GST_LIBS)
+else
+  PKG_CHECK_MODULES(GST, gstreamer-0.10) 
+  AC_SUBST(GST_CFLAGS) 
+  AC_SUBST(GST_LIBS)
+fi
+
+if test "$use_gstreamer_1" = "1"; then 
+  PKG_CHECK_MODULES(GST_PLUGIN_BASE, gstreamer-plugins-base-1.0 )
+  AC_SUBST(GST_PLUGIN_BASE_CFLAGS)
+  AC_SUBST(GST_PLUGIN_BASE_LIBS)
+else
+  PKG_CHECK_MODULES(GST_PLUGIN_BASE, gstreamer-plugins-base-0.10 >= 0.10)
+  AC_SUBST(GST_PLUGIN_BASE_CFLAGS)
+  AC_SUBST(GST_PLUGIN_BASE_LIBS)
+
+  PKG_CHECK_MODULES(GST_INTERFACE, gstreamer-interfaces-0.10 >= 0.10)
+  AC_SUBST(GST_INTERFACE_CFLAGS)
+  AC_SUBST(GST_INTERFACE_LIBS)
+fi
+
+if test "$use_gstreamer_1" = "1"; then 
+  PKG_CHECK_MODULES(GST_APP, gstreamer-app-1.0 )
+  AC_SUBST(GST_APP_CFLAGS)
+  AC_SUBST(GST_APP_LIBS)
+
+  PKG_CHECK_MODULES(GST_VIDEO, gstreamer-video-1.0 )
+  AC_SUBST(GST_VIDEO_CFLAGS)
+  AC_SUBST(GST_VIDEO_LIBS)
+else
+  PKG_CHECK_MODULES(GST_APP, gstreamer-app-0.10 >= 0.10 )
+  AC_SUBST(GST_APP_CFLAGS)
+  AC_SUBST(GST_APP_LIBS)
+fi
 
 PKG_CHECK_MODULES(MMSESSION, mm-session)
 AC_SUBST(MMSESSION_CFLAGS)
index fc7fc8e..fa7b8b3 100644 (file)
@@ -9,10 +9,18 @@ Source0:    %{name}-%{version}.tar.gz
 BuildRequires:  pkgconfig(mm-ta)
 BuildRequires:  pkgconfig(mm-common)
 BuildRequires:  pkgconfig(mm-sound)
+
+%if %{defined with_Gstreamer0.10}
 BuildRequires:  pkgconfig(gstreamer-0.10)
 BuildRequires:  pkgconfig(gstreamer-plugins-base-0.10)
 BuildRequires:  pkgconfig(gstreamer-interfaces-0.10)
 BuildRequires:  pkgconfig(gstreamer-app-0.10)
+%else
+BuildRequires:  pkgconfig(gstreamer-1.0)
+BuildRequires:  pkgconfig(gstreamer-plugins-base-1.0)
+BuildRequires:  pkgconfig(gstreamer-app-1.0)
+%endif
+
 BuildRequires:  pkgconfig(mm-session)
 BuildRequires:  pkgconfig(mmutil-imgp)
 BuildRequires:  pkgconfig(audio-session-mgr)
@@ -20,6 +28,7 @@ BuildRequires:  pkgconfig(iniparser)
 BuildRequires:  pkgconfig(vconf)
 BuildRequires:  pkgconfig(icu-i18n)
 
+
 %description
 Multimedia Framework Player Library.
 
@@ -36,10 +45,17 @@ Multimedia Framework Player Library (DEV).
 
 %build
 
-%autogen.sh
+##  %autogen.sh
+
+%if %{defined with_Gstreamer0.10}
+export GSTREAMER_API=""
+%else
+export GSTREAMER_API="-DGST_API_VERSION_1=1"
+export use_gstreamer_1=1
+%endif
 
-CFLAGS+=" -DEXPORT_API=\"__attribute__((visibility(\\\"default\\\")))\" "; export CFLAGS
-LDFLAGS+="-Wl,--rpath=%{_libdir} -Wl,--hash-style=both -Wl,--as-needed"; export LDFLAGS
+CFLAGS+=" -DEXPORT_API=\"__attribute__((visibility(\\\"default\\\")))\" $GSTREAMER_API" ; export CFLAGS
+LDFLAGS+="-Wl,--rpath=%{_libdir} -lgstvideo-1.0 -Wl,--hash-style=both -Wl,--as-needed"; export LDFLAGS
 
 %configure --disable-static
 
index 480e1b8..89be772 100644 (file)
@@ -24,6 +24,9 @@
 
 #include <glib.h>
 #include <gst/gst.h>
+#include <stdint.h>
+#include <inttypes.h>
+
 #include <mm_player_ini.h>
 #include <mm_types.h>
 #include <mm_error.h>
@@ -180,6 +183,7 @@ gboolean __util_gst_pad_probe(GstPad *pad, GstBuffer *buffer, gpointer u_data);
 /* messages are treated as warnings bcz those code should not be checked in. 
  * and no error handling will supported for same manner. 
  */
+#ifndef GST_API_VERSION_1
 #define MMPLAYER_ADD_PROBE(x_pad, x_flag) \
 debug_warning("adding pad probe\n"); \
 if ( ! gst_pad_add_buffer_probe(x_pad, \
@@ -188,6 +192,16 @@ if ( ! gst_pad_add_buffer_probe(x_pad, \
 { \
        debug_error("failed to add pad probe\n"); \
 }
+#else
+#define MMPLAYER_ADD_PROBE(x_pad, x_flag) \
+debug_warning("adding pad probe\n"); \
+if ( ! gst_pad_add_probe(x_pad, \
+       __util_gst_pad_probe, \
+       (gpointer)x_flag), NULL ) \
+{ \
+       debug_error("failed to add pad probe\n"); \
+} 
+#endif
 
 
 /* generating dot */
index 8e00ab3..1077e00 100644 (file)
 #include <vconf.h>
 #include <mm_attrs_private.h>
 #include <mm_attrs.h>
+#ifndef GST_API_VERSION_1
 #include <gst/interfaces/xoverlay.h>
-
+#else
+#include <gst/video/videooverlay.h>
+#endif
 #include "mm_player_priv.h"
 #include "mm_player_attrs.h"
 
index f1299b3..98e4c7b 100755 (executable)
@@ -37,7 +37,7 @@
 |    LOCAL FUNCTION PROTOTYPES:                                                                                                |\r
 ---------------------------------------------------------------------------*/\r
 static gboolean __mmplayer_video_capture_probe (GstPad *pad, GstBuffer *buffer, gpointer u_data);\r
-static int  __mmplayer_get_video_frame_from_buffer(mm_player_t* player, GstBuffer *buffer);\r
+//static int  __mmplayer_get_video_frame_from_buffer(mm_player_t* player, GstBuffer *buffer);\r
 static gpointer __mmplayer_capture_thread(gpointer data);\r
 static void __csc_tiled_to_linear_crop(unsigned char *yuv420_dest, unsigned char *nv12t_src, int yuv420_width, int yuv420_height, int left, int top, int right, int buttom);\r
 static int __tile_4x2_read(int x_size, int y_size, int x_pos, int y_pos);\r
@@ -147,9 +147,10 @@ _mmplayer_do_video_capture(MMHandleType hplayer)
                        GstBuffer *buf = NULL;\r
                        g_object_get(player->pipeline->videobin[MMPLAYER_V_SINK].gst, "last-buffer", &buf, NULL);\r
 \r
+\r
                        if (buf)\r
                        {\r
-                               ret = __mmplayer_get_video_frame_from_buffer(player, buf);\r
+                               //ret = __mmplayer_get_video_frame_from_buffer(player, buf);\r
                                gst_buffer_unref(buf);\r
                        }\r
                        return ret;\r
@@ -164,12 +165,16 @@ _mmplayer_do_video_capture(MMHandleType hplayer)
        pad = gst_element_get_static_pad(player->pipeline->videobin[MMPLAYER_V_SINK].gst, "sink" );\r
 \r
        /* register probe */\r
+#ifndef GST_API_VERSION_1\r
        player->video_capture_cb_probe_id = gst_pad_add_buffer_probe (pad,\r
                G_CALLBACK (__mmplayer_video_capture_probe), player);\r
+#else\r
+       player->video_capture_cb_probe_id = gst_pad_add_probe (pad, GST_PAD_PROBE_TYPE_BUFFER,\r
+               __mmplayer_video_capture_probe, player, NULL);\r
+#endif\r
 \r
        gst_object_unref(GST_OBJECT(pad));\r
        pad = NULL;\r
-\r
        debug_fleave();\r
 \r
        return ret;\r
@@ -317,6 +322,8 @@ EXIT:
 /**\r
   * The output is fixed as RGB888\r
   */\r
+#if 0\r
+#ifdef GST_API_VERSION_1\r
 static int\r
 __mmplayer_get_video_frame_from_buffer(mm_player_t* player, GstBuffer *buffer)\r
 {\r
@@ -355,7 +362,6 @@ __mmplayer_get_video_frame_from_buffer(mm_player_t* player, GstBuffer *buffer)
        if (gst_structure_has_name(structure, "video/x-raw-yuv"))\r
        {\r
                gst_structure_get_fourcc (structure, "format", &fourcc);\r
-\r
                switch(fourcc)\r
                {\r
                        /* NV12T */\r
@@ -372,6 +378,174 @@ __mmplayer_get_video_frame_from_buffer(mm_player_t* player, GstBuffer *buffer)
                                if ( !proved || !proved->a[0] || !proved->a[1] )\r
                                        return MM_ERROR_PLAYER_INTERNAL;\r
 \r
+                               yplane_size = (proved->s[0] * proved->e[0]);\r
+                               uvplane_size = (proved->s[1] * proved->e[1]);\r
+\r
+                               memset(&player->captured, 0x00, sizeof(MMPlayerMPlaneImage));\r
+                               memcpy(&player->captured, proved, sizeof(MMPlayerMPlaneImage));\r
+\r
+                               player->captured.a[0] = g_try_malloc(yplane_size);\r
+                               if ( !player->captured.a[0] )\r
+                                       return MM_ERROR_SOUND_NO_FREE_SPACE;\r
+\r
+                               player->captured.a[1] = g_try_malloc(uvplane_size);\r
+                               if ( !player->captured.a[1] )\r
+                                       return MM_ERROR_SOUND_NO_FREE_SPACE;\r
+\r
+                               memcpy(player->captured.a[0], proved->a[0], yplane_size);\r
+                               memcpy(player->captured.a[1], proved->a[1], uvplane_size);\r
+                               goto DONE;\r
+                       }\r
+                       break;\r
+\r
+                       case GST_MAKE_FOURCC ('I', '4', '2', '0'):\r
+                       {\r
+                               src_fmt = MM_UTIL_IMG_FMT_I420;\r
+                       }\r
+                       break;\r
+\r
+                       default:\r
+                       {\r
+                               goto UNKNOWN;\r
+                       }\r
+                       break;\r
+               }\r
+       }\r
+       else if (gst_structure_has_name(structure, "video/x-raw-rgb"))\r
+       {\r
+               gint bpp;\r
+               gint depth;\r
+               gint endianess;\r
+               gint blue_mask;\r
+               gboolean bigendian = FALSE;\r
+               gboolean isbluefirst = FALSE;\r
+\r
+            /**\r
+\r
+               * The followings will be considered.\r
+               * RGBx, xRGB, BGRx, xBGR\r
+               * RGB888, BGR888\r
+               * RGB565\r
+               *\r
+               */\r
+               gst_structure_get_int (structure, "bpp", &bpp);\r
+               gst_structure_get_int (structure, "depth", &depth);\r
+               gst_structure_get_int (structure, "endianness", &endianess);\r
+               gst_structure_get_int (structure, "blue_mask", &blue_mask);\r
+\r
+               if (endianess == 4321)\r
+                       bigendian = TRUE;\r
+\r
+               if (blue_mask == -16777216)\r
+                       isbluefirst = TRUE;\r
+\r
+               switch(bpp)\r
+               {\r
+                       case 32:\r
+                       {\r
+                               switch(depth)\r
+                               {\r
+                                       case 32:\r
+                                               if (bigendian && isbluefirst)\r
+                                                       src_fmt = MM_UTIL_IMG_FMT_BGRA8888;\r
+                                       case 24:\r
+                                               if (bigendian && isbluefirst)\r
+                                                       src_fmt = MM_UTIL_IMG_FMT_BGRX8888;\r
+                                               break;\r
+                                       default:\r
+                                               goto UNKNOWN;\r
+                                               break;\r
+                               }\r
+                       }\r
+                       break;\r
+\r
+                       case 24:\r
+                       default:\r
+                       {\r
+                               goto UNKNOWN;\r
+                       }\r
+                       break;\r
+               }\r
+       }\r
+       else\r
+       {\r
+               goto UNKNOWN;\r
+       }\r
+       GstMapInfo info;\r
+       gst_buffer_map (buffer, &info, GST_MAP_WRITE);\r
+       __mm_player_convert_colorspace(player, info.data, src_fmt, src_width, src_height, dst_fmt);\r
+       gst_buffer_unmap (buffer, &info);\r
+\r
+DONE:\r
+       /* do convert colorspace */\r
+       g_cond_signal( player->capture_thread_cond );\r
+\r
+       debug_fleave();\r
+\r
+       return MM_ERROR_NONE;\r
+\r
+UNKNOWN:\r
+       debug_error("unknown format to capture\n");\r
+       return MM_ERROR_PLAYER_INTERNAL;\r
+}\r
+#else\r
+/**\r
+  * The output is fixed as RGB888\r
+  */\r
+static int\r
+__mmplayer_get_video_frame_from_buffer(mm_player_t* player, GstBuffer *buffer)\r
+{\r
+       gint yplane_size = 0;\r
+       gint uvplane_size = 0;\r
+       gint src_width = 0;\r
+       gint src_height = 0;\r
+       const gchar *fmt;\r
+       GstCaps *caps = NULL;\r
+       GstStructure *structure = NULL;\r
+       mm_util_img_format src_fmt = MM_UTIL_IMG_FMT_YUV420;\r
+       mm_util_img_format dst_fmt = MM_UTIL_IMG_FMT_RGB888; // fixed\r
+\r
+       debug_fenter();\r
+\r
+       return_val_if_fail ( player, MM_ERROR_PLAYER_NOT_INITIALIZED );\r
+       return_val_if_fail ( buffer, MM_ERROR_INVALID_ARGUMENT );\r
+\r
+       /* get fourcc */\r
+       caps = GST_BUFFER_CAPS(buffer);\r
+\r
+       return_val_if_fail ( caps, MM_ERROR_INVALID_ARGUMENT );\r
+       debug_log("caps to capture: %s\n", gst_caps_to_string(caps));\r
+\r
+       structure = gst_caps_get_structure (caps, 0);\r
+\r
+       return_val_if_fail (structure != NULL, MM_ERROR_PLAYER_INTERNAL);\r
+\r
+       /* init capture image buffer */\r
+       memset(&player->capture, 0x00, sizeof(MMPlayerVideoCapture));\r
+\r
+       gst_structure_get_int (structure, "width", &src_width);\r
+       gst_structure_get_int (structure, "height", &src_height);\r
+\r
+       /* check rgb or yuv */\r
+       if (gst_structure_has_name(structure, "video/x-raw-yuv"))\r
+       {\r
+               fmt = gst_structure_get_string (structure, "format");\r
+               switch (GST_STR_FOURCC (fmt))\r
+               {\r
+                       /* NV12T */\r
+                       case GST_MAKE_FOURCC ('S', 'T', '1', '2'):\r
+                       {\r
+                               debug_msg ("captured format is ST12\n");\r
+\r
+                               MMPlayerMPlaneImage *proved = NULL;\r
+                               player->video_cs = MM_PLAYER_COLORSPACE_NV12_TILED;\r
+\r
+                               /* get video frame info from proved buffer */\r
+                               proved = (MMPlayerMPlaneImage *)gst_buffer_copy (buffer);\r
+\r
+                               if ( !proved || !proved->a[0] || !proved->a[1] )\r
+                                       return MM_ERROR_PLAYER_INTERNAL;\r
+\r
                                yplane_size = proved->y_size;\r
                                uvplane_size = proved->uv_size;\r
 \r
@@ -479,6 +653,8 @@ UNKNOWN:
        debug_error("unknown format to capture\n");\r
        return MM_ERROR_PLAYER_INTERNAL;\r
 }\r
+#endif\r
+#endif\r
 \r
 static gboolean\r
 __mmplayer_video_capture_probe (GstPad *pad, GstBuffer *buffer, gpointer u_data)\r
@@ -489,7 +665,7 @@ __mmplayer_video_capture_probe (GstPad *pad, GstBuffer *buffer, gpointer u_data)
        return_val_if_fail ( buffer, FALSE);\r
        debug_fenter();\r
 \r
-       ret = __mmplayer_get_video_frame_from_buffer(player, buffer);\r
+       //ret = __mmplayer_get_video_frame_from_buffer(player, buffer);\r
 \r
        if ( ret != MM_ERROR_NONE)\r
        {\r
@@ -500,7 +676,11 @@ __mmplayer_video_capture_probe (GstPad *pad, GstBuffer *buffer, gpointer u_data)
        /* remove probe to be called at one time */\r
        if (player->video_capture_cb_probe_id)\r
        {\r
+#ifndef GST_API_VERSION_1\r
                gst_pad_remove_buffer_probe (pad, player->video_capture_cb_probe_id);\r
+#else\r
+               gst_pad_remove_probe (pad, player->video_capture_cb_probe_id);\r
+#endif\r
                player->video_capture_cb_probe_id = 0;\r
        }\r
 \r
index a80644e..d82f57c 100644 (file)
@@ -153,11 +153,34 @@ __pd_downloader_callback(GstBus *bus, GstMessage *msg, gpointer data)
 
                case GST_MESSAGE_DURATION:
                {
+#ifndef GST_API_VERSION_1
                        GstFormat fmt= GST_FORMAT_BYTES;
+#endif
 
                        gint64 size = 0LL;
 
                        /* get total size  of download file, (bytes) */
+#ifdef GST_API_VERSION_1
+                       if ( ! gst_element_query_duration( pd->downloader_pipeline, GST_FORMAT_BYTES, &size ) )
+                       {
+                               GError *err = NULL;
+                               GstMessage *new_msg = NULL;
+
+                               err = g_error_new (GST_STREAM_ERROR, GST_STREAM_ERROR_FAILED, "can't get total size");
+                               new_msg = gst_message_new_error (GST_OBJECT_CAST (pd->playback_pipeline_src), err, NULL);
+                               gst_element_post_message (pd->playback_pipeline_src, new_msg);
+
+                               g_error_free (err);
+
+                               // TODO: check if playback pipeline is closed well or not
+                               g_object_set (G_OBJECT (pd->playback_pipeline_src), "eos", TRUE, NULL);
+
+                               _mmplayer_unrealize_pd_downloader ((MMHandleType)data);
+
+                               debug_error("failed to query total size for download\n");
+                               break;
+                       }
+#else
                        if ( ! gst_element_query_duration( pd->downloader_pipeline, &fmt, &size ) )
                        {
                                GError *err = NULL;
@@ -177,6 +200,7 @@ __pd_downloader_callback(GstBus *bus, GstMessage *msg, gpointer data)
                                debug_error("failed to query total size for download\n");
                                break;
                        }
+#endif
 
                        pd->total_size = size;
 
index 4a474bc..0a6a1ea 100755 (executable)
 #include <glib.h>
 #include <gst/gst.h>
 #include <gst/app/gstappsrc.h>
+#ifndef GST_API_VERSION_1
 #include <gst/interfaces/xoverlay.h>
+#else
+#include <gst/video/videooverlay.h>
+#endif
 #include <unistd.h>
 #include <string.h>
 #include <sys/time.h>
+#include <sys/stat.h> 
 #include <stdlib.h>
 
 #include <mm_error.h>
@@ -573,7 +578,9 @@ _mmplayer_update_content_attrs(mm_player_t* player, enum content_attr_flag flag)
        gboolean missing_only = FALSE;
        gboolean all = FALSE;
 
+#ifndef GST_API_VERSION_1
        GstFormat fmt  = GST_FORMAT_TIME;
+#endif
        gint64 dur_nsec = 0;
        GstStructure* p = NULL;
        MMHandleType attrs = 0;
@@ -631,11 +638,19 @@ _mmplayer_update_content_attrs(mm_player_t* player, enum content_attr_flag flag)
                debug_log("try to update duration");
                has_duration = FALSE;
 
+#ifdef GST_API_VERSION_1
+               if (gst_element_query_duration(player->pipeline->mainbin[MMPLAYER_M_PIPE].gst, GST_FORMAT_TIME, &dur_nsec ))
+               {
+                       player->duration = dur_nsec;
+                       debug_log("duration : %lld msec", GST_TIME_AS_MSECONDS(dur_nsec));
+               }
+#else
                if (gst_element_query_duration(player->pipeline->mainbin[MMPLAYER_M_PIPE].gst, &fmt, &dur_nsec ))
                {
                        player->duration = dur_nsec;
                        debug_log("duration : %lld msec", GST_TIME_AS_MSECONDS(dur_nsec));
                }
+#endif
 
                /* try to get streaming service type */
                stream_service_type = __mmplayer_get_stream_service_type( player );
@@ -677,7 +692,11 @@ _mmplayer_update_content_attrs(mm_player_t* player, enum content_attr_flag flag)
 
                        if ( pad )
                        {
+#ifdef GST_API_VERSION_1
+                               caps_a = gst_pad_get_current_caps( pad );
+#else
                                caps_a = gst_pad_get_negotiated_caps( pad );
+#endif
 
                                if ( caps_a )
                                {
@@ -728,7 +747,11 @@ _mmplayer_update_content_attrs(mm_player_t* player, enum content_attr_flag flag)
                        pad = gst_element_get_static_pad( player->pipeline->videobin[MMPLAYER_V_SINK].gst, "sink" );
                        if ( pad )
                        {
+#ifdef GST_API_VERSION_1
+                               caps_v = gst_pad_get_current_caps( pad );
+#else
                                caps_v = gst_pad_get_negotiated_caps( pad );
+#endif
                                if (caps_v)
                                {
                                        p = gst_caps_get_structure (caps_v, 0);
@@ -1401,6 +1424,11 @@ __mmplayer_gst_callback(GstBus *bus, GstMessage *msg, gpointer data) // @
        return_val_if_fail ( player, FALSE );
        return_val_if_fail ( msg && GST_IS_MESSAGE(msg), FALSE );
 
+#ifdef GST_API_VERSION_1
+       const GstStructure *structure;
+       structure = gst_message_get_structure (msg);
+#endif
+
        switch ( GST_MESSAGE_TYPE( msg ) )
        {
                case GST_MESSAGE_UNKNOWN:
@@ -1431,7 +1459,11 @@ __mmplayer_gst_callback(GstBus *bus, GstMessage *msg, gpointer data) // @
                                debug_error("release audio callback\n");
 
                                /* release audio callback */
+#ifdef GST_API_VERSION_1
+                               gst_pad_remove_probe (pad, player->audio_cb_probe_id);
+#else
                                gst_pad_remove_buffer_probe (pad, player->audio_cb_probe_id);
+#endif
                                player->audio_cb_probe_id = 0;
                                /* audio callback should be free because it can be called even though probe remove.*/
                                player->audio_stream_cb = NULL;
@@ -1532,6 +1564,29 @@ __mmplayer_gst_callback(GstBus *bus, GstMessage *msg, gpointer data) // @
                        gst_message_parse_error( msg, &error, &debug );
 
                        msg_src_element = GST_ELEMENT_NAME( GST_ELEMENT_CAST( msg->src ) );
+#ifdef GST_API_VERSION_1
+                       if ( gst_structure_has_name ( structure, "streaming_error" ) )
+                       {
+                               /* Note : the streaming error from the streaming source is handled
+                                *   using __mmplayer_handle_streaming_error.
+                                */
+                               __mmplayer_handle_streaming_error ( player, msg );
+
+                               /* dump state of all element */
+                               __mmplayer_dump_pipeline_state( player );
+                       }
+                       else
+                       {
+                               /* traslate gst error code to msl error code. then post it
+                                * to application if needed
+                                */
+                               __mmplayer_handle_gst_error( player, msg, error );
+
+                               /* dump state of all element */
+                               __mmplayer_dump_pipeline_state( player );
+
+                       }
+#else
                        if ( gst_structure_has_name ( msg->structure, "streaming_error" ) )
                        {
                                /* Note : the streaming error from the streaming source is handled
@@ -1554,6 +1609,9 @@ __mmplayer_gst_callback(GstBus *bus, GstMessage *msg, gpointer data) // @
 
                        }
 
+#endif
+                       
+
                        if (MMPLAYER_IS_HTTP_PD(player))
                        {
                                _mmplayer_unrealize_pd_downloader ((MMHandleType)player);
@@ -1633,9 +1691,15 @@ __mmplayer_gst_callback(GstBus *bus, GstMessage *msg, gpointer data) // @
                                break;
 
                        /* get state info from msg */
+#ifdef GST_API_VERSION_1
+                       voldstate = gst_structure_get_value (structure, "old-state");
+                       vnewstate = gst_structure_get_value (structure, "new-state");
+                       vpending = gst_structure_get_value (structure, "pending-state");                        
+#else
                        voldstate = gst_structure_get_value (msg->structure, "old-state");
                        vnewstate = gst_structure_get_value (msg->structure, "new-state");
                        vpending = gst_structure_get_value (msg->structure, "pending-state");
+#endif
 
                        oldstate = (GstState)voldstate->data[0].v_int;
                        newstate = (GstState)vnewstate->data[0].v_int;
@@ -1860,6 +1924,24 @@ if (gst_tag_list_get_string(tag_list, gsttag, &string)) \
        }\
 }
 
+#ifdef GST_API_VERSION_1
+#define MMPLAYER_UPDATE_TAG_IMAGE(gsttag, attribute, playertag) \
+value = gst_tag_list_get_value_index(tag_list, gsttag, index); \
+if (value) \
+{\
+       GstMapInfo info; \
+       gst_buffer_map (buffer, &info, GST_MAP_WRITE); \
+       buffer = gst_value_get_buffer (value); \
+       debug_log ( "update album cover data : %p, size : %d\n", info.data, gst_buffer_get_size(buffer)); \
+       player->album_art = (gchar *)g_malloc(gst_buffer_get_size(buffer)); \
+       if (player->album_art); \
+       { \
+               memcpy(player->album_art, info.data, gst_buffer_get_size(buffer)); \
+               mm_attrs_set_data_by_name(attribute, playertag, (void *)player->album_art, gst_buffer_get_size(buffer)); \
+       } \
+gst_buffer_unmap (buffer, &info); \
+}
+#else
 #define MMPLAYER_UPDATE_TAG_IMAGE(gsttag, attribute, playertag) \
 value = gst_tag_list_get_value_index(tag_list, gsttag, index); \
 if (value) \
@@ -1873,6 +1955,7 @@ if (value) \
                mm_attrs_set_data_by_name(attribute, playertag, (void *)player->album_art, GST_BUFFER_SIZE(buffer)); \
        } \
 }
+#endif
 
 #define MMPLAYER_UPDATE_TAG_UINT(gsttag, attribute, playertag) \
 if (gst_tag_list_get_uint(tag_list, gsttag, &v_uint))\
@@ -2187,8 +2270,11 @@ __mmplayer_gst_rtp_dynamic_pad (GstElement *element, GstPad *pad, gpointer data)
        else  /* NOTE : use pad's caps directely. if enabled. what I am assuming is there's no elemnt has dynamic pad */
        {
                debug_log("using pad caps to autopluging instead of doing typefind\n");
-
+#ifdef GST_API_VERSION_1
+               caps = gst_pad_get_current_caps( pad );
+#else
                caps = gst_pad_get_caps( pad );
+#endif
 
                MMPLAYER_CHECK_NULL( caps );
 
@@ -2301,7 +2387,11 @@ __mmplayer_gst_decode_callback(GstElement *decodebin, GstPad *pad, gboolean last
        }
 
        /* get mimetype from caps */
+#ifdef GST_API_VERSION_1
+       caps = gst_pad_get_current_caps( pad );
+#else
        caps = gst_pad_get_caps( pad );
+#endif
        if ( !caps )
        {
                debug_error("cannot get caps from pad.\n");
@@ -2724,7 +2814,11 @@ _mmplayer_update_video_param(mm_player_t* player) // @
                        mm_attrs_get_int_by_name(attrs, "display_height", &height);
 
                        /* resize video frame with requested values for fimcconvert */
+#ifdef GST_API_VERSION_1
+                       ename = GST_OBJECT (gst_element_get_factory(player->pipeline->videobin[MMPLAYER_V_CONV].gst));
+#else
                        ename = GST_PLUGIN_FEATURE_NAME(gst_element_get_factory(player->pipeline->videobin[MMPLAYER_V_CONV].gst));
+#endif
 
                        if (g_strrstr(ename, "fimcconvert"))
                        {
@@ -2786,7 +2880,11 @@ _mmplayer_update_video_param(mm_player_t* player) // @
                 }
 
                                debug_log("set video param : xid %d", *(int*)xid);
+#ifdef GST_API_VERSION_1
+                               gst_video_overlay_set_window_handle( GST_VIDEO_OVERLAY( player->pipeline->videobin[MMPLAYER_V_SINK].gst ), *(int*)xid );
+#else
                                gst_x_overlay_set_xwindow_id( GST_X_OVERLAY( player->pipeline->videobin[MMPLAYER_V_SINK].gst ), *(int*)xid );
+#endif
                        }
                        else
                        {
@@ -3211,6 +3309,16 @@ __mmplayer_gst_create_audio_pipeline(mm_player_t* player)
 
                        if ((srcpad = gst_element_get_static_pad(player->pipeline->mainbin[MMPLAYER_M_DEMUX].gst, "src")))
                        {
+#ifdef GST_API_VERSION_1
+                               if ((caps = gst_pad_get_current_caps(srcpad)))
+                               {
+                                       MMPLAYER_LOG_GST_CAPS_TYPE(caps);
+                                       GstStructure *str = gst_caps_get_structure(caps, 0);
+                                       if (str)
+                                               gst_structure_get_int (str, "channels", &channels);
+                                       gst_caps_unref(caps);
+                               }
+#else
                                if ((caps = gst_pad_get_caps(srcpad)))
                                {
                                        MMPLAYER_LOG_GST_CAPS_TYPE(caps);
@@ -3219,6 +3327,7 @@ __mmplayer_gst_create_audio_pipeline(mm_player_t* player)
                                                gst_structure_get_int (str, "channels", &channels);
                                        gst_caps_unref(caps);
                                }
+#endif
                                gst_object_unref(srcpad);
                        }
                }
@@ -3465,11 +3574,23 @@ __mmplayer_audio_stream_probe (GstPad *pad, GstBuffer *buffer, gpointer u_data)
        gint size;
        guint8 *data;
 
+#ifdef GST_API_VERSION_1
+       GstMapInfo info;
+       gst_buffer_map (buffer, &info, GST_MAP_WRITE);
+       data = info.data;
+       size = gst_buffer_get_size(buffer);
+
+       if (player->audio_stream_cb && size && data)
+               player->audio_stream_cb((void *)data, size, player->audio_stream_cb_user_param);
+       
+       gst_buffer_unmap (buffer, &info);
+#else
        data = GST_BUFFER_DATA(buffer);
        size = GST_BUFFER_SIZE(buffer);
 
        if (player->audio_stream_cb && size && data)
                player->audio_stream_cb((void *)data, size, player->audio_stream_cb_user_param);
+#endif
 
        return TRUE;
 }
@@ -4133,6 +4254,52 @@ ERROR:
        return MM_ERROR_PLAYER_INTERNAL;
 }
 
+#ifdef GST_API_VERSION_1
+gboolean
+__mmplayer_update_subtitle( GstElement* object, GstBuffer *buffer, GstPad *pad, gpointer data)
+{
+       mm_player_t* player = (mm_player_t*) data;
+       MMMessageParamType msg = {0, };
+       GstClockTime duration = 0;
+       guint8 *text = NULL;
+       gboolean ret = TRUE;
+       GstMapInfo info;
+
+       debug_fenter();
+
+       return_val_if_fail ( player, FALSE );
+       return_val_if_fail ( buffer, FALSE );
+
+       gst_buffer_map (buffer, &info, GST_MAP_WRITE);
+       text = info.data;
+       gst_buffer_unmap (buffer, &info);
+
+       duration = GST_BUFFER_DURATION(buffer);
+
+       if ( player->is_subtitle_off )
+       {
+               debug_log("subtitle is OFF.\n" );
+               return TRUE;
+       }
+
+       if ( !text )
+       {
+               debug_log("There is no subtitle to be displayed.\n" );
+               return TRUE;
+       }
+
+       msg.data = (void *) text;
+       msg.subtitle.duration = GST_TIME_AS_MSECONDS(duration);
+
+       debug_warning("update subtitle : [%ld msec] %s\n'", msg.subtitle.duration, (char*)msg.data );
+
+       MMPLAYER_POST_MSG( player, MM_MESSAGE_UPDATE_SUBTITLE, &msg );
+
+       debug_fleave();
+
+       return ret;
+}
+#else
 gboolean
 __mmplayer_update_subtitle( GstElement* object, GstBuffer *buffer, GstPad *pad, gpointer data)
 {
@@ -4173,6 +4340,7 @@ __mmplayer_update_subtitle( GstElement* object, GstBuffer *buffer, GstPad *pad,
 
        return ret;
 }
+#endif
 
 static int     __gst_adjust_subtitle_position(mm_player_t* player, int format, int position)
 {
@@ -4197,7 +4365,6 @@ static int        __gst_adjust_subtitle_position(mm_player_t* player, int format, int
        {
                case MM_PLAYER_POS_FORMAT_TIME:
                {
-                       /* check current postion */
                        if (__gst_get_position(player, MM_PLAYER_POS_FORMAT_TIME, &current_pos ))
                        {
                                debug_error("failed to get position");
@@ -4243,6 +4410,51 @@ static int       __gst_adjust_subtitle_position(mm_player_t* player, int format, int
        return MM_ERROR_NONE;
 }
 
+#ifdef GST_API_VERSION_1
+static void
+__gst_appsrc_feed_data_mem(GstElement *element, guint size, gpointer user_data) // @
+{
+       GstElement *appsrc = element;
+       tBuffer *buf = (tBuffer *)user_data;
+       GstBuffer *buffer = NULL;
+       GstFlowReturn ret = GST_FLOW_OK;
+       gint len = size;
+
+       return_if_fail ( element );
+       return_if_fail ( buf );
+
+       //buffer = gst_buffer_new ();
+
+       if (buf->offset >= buf->len)
+       {
+               debug_log("call eos appsrc\n");
+              g_signal_emit_by_name (appsrc, "end-of-stream", &ret);
+              return;
+       }
+
+       if ( buf->len - buf->offset < size)
+       {
+               len = buf->len - buf->offset + buf->offset;
+       }
+
+       buffer = gst_buffer_new();
+       GstMapInfo info;
+
+       info.data = (guint8*)(buf->buf + buf->offset);
+       gst_buffer_set_size(buffer, len);
+
+       //GST_BUFFER_DATA(buffer) = (guint8*)(buf->buf + buf->offset);
+       //GST_BUFFER_SIZE(buffer) = len;
+       GST_BUFFER_OFFSET(buffer) = buf->offset;
+       GST_BUFFER_OFFSET_END(buffer) = buf->offset + len;
+       gst_buffer_map (buffer, &info, GST_MAP_WRITE);
+
+       debug_log("feed buffer %p, offset %u-%u length %u\n", buffer, buf->offset, buf->len,len);
+       g_signal_emit_by_name (appsrc, "push-buffer", buffer, &ret);
+
+       buf->offset += len;
+}
+#else
 static void
 __gst_appsrc_feed_data_mem(GstElement *element, guint size, gpointer user_data) // @
 {
@@ -4279,6 +4491,7 @@ __gst_appsrc_feed_data_mem(GstElement *element, guint size, gpointer user_data)
 
        buf->offset += len;
 }
+#endif
 
 static gboolean
 __gst_appsrc_seek_data_mem(GstElement *element, guint64 size, gpointer user_data) // @
@@ -4336,6 +4549,65 @@ __gst_appsrc_enough_data(GstElement *element, gpointer user_data) // @
        return TRUE;
 }
 
+#ifdef GST_API_VERSION_1
+int
+_mmplayer_push_buffer(MMHandleType hplayer, unsigned char *buf, int size) // @
+{
+       mm_player_t* player = (mm_player_t*)hplayer;
+       GstBuffer *buffer = NULL;
+       GstMapInfo info;
+       GstFlowReturn gst_ret = GST_FLOW_OK;
+       int ret = MM_ERROR_NONE;
+
+       debug_fenter();
+
+       return_val_if_fail ( player, MM_ERROR_PLAYER_NOT_INITIALIZED );
+
+       /* check current state */
+//     MMPLAYER_CHECK_STATE_RETURN_IF_FAIL( player, MMPLAYER_COMMAND_START );
+
+
+       /* NOTE : we should check and create pipeline again if not created as we destroy
+        * whole pipeline when stopping in streamming playback
+        */
+       if ( ! player->pipeline )
+       {
+               if ( MM_ERROR_NONE != __gst_realize( player ) )
+               {
+                       debug_error("failed to realize before starting. only in streamming\n");
+                       return MM_ERROR_PLAYER_INTERNAL;
+               }
+       }
+
+       debug_msg("app-src: pushing data\n");
+
+       if ( buf == NULL )
+       {
+               debug_error("buf is null\n");
+               return MM_ERROR_NONE;
+       }
+
+       buffer = gst_buffer_new ();
+
+       if (size <= 0)
+       {
+               debug_log("call eos appsrc\n");
+               g_signal_emit_by_name (player->pipeline->mainbin[MMPLAYER_M_SRC].gst, "end-of-stream", &gst_ret);
+               return MM_ERROR_NONE;
+       }
+
+       info.data = (guint8*)(buf);
+       gst_buffer_set_size(buffer, size);
+       gst_buffer_map (buffer, &info, GST_MAP_WRITE);
+
+       debug_log("feed buffer %p, length %u\n", buf, size);
+       g_signal_emit_by_name (player->pipeline->mainbin[MMPLAYER_M_SRC].gst, "push-buffer", buffer, &gst_ret);
+
+       debug_fleave();
+
+       return ret;
+}
+#else
 int
 _mmplayer_push_buffer(MMHandleType hplayer, unsigned char *buf, int size) // @
 {
@@ -4391,6 +4663,7 @@ _mmplayer_push_buffer(MMHandleType hplayer, unsigned char *buf, int size) // @
 
        return ret;
 }
+#endif
 
 static GstBusSyncReply
 __mmplayer_bus_sync_callback (GstBus * bus, GstMessage * message, gpointer data)
@@ -4820,7 +5093,11 @@ __mmplayer_gst_create_pipeline(mm_player_t* player) // @
                        debug_error ("fakesink element could not be created\n");
                        goto INIT_ERROR;
                }
+#ifdef GST_API_VERSION_1
+               GST_OBJECT_FLAG_UNSET (mainbin[MMPLAYER_M_SRC_FAKESINK].gst, GST_ELEMENT_FLAG_SINK);
+#else
                GST_OBJECT_FLAG_UNSET (mainbin[MMPLAYER_M_SRC_FAKESINK].gst, GST_ELEMENT_IS_SINK);
+#endif
 
                /* take ownership of fakesink. we are reusing it */
                gst_object_ref( mainbin[MMPLAYER_M_SRC_FAKESINK].gst );
@@ -4854,8 +5131,11 @@ __mmplayer_gst_create_pipeline(mm_player_t* player) // @
        }
 
        /* set sync handler to get tag synchronously */
+#ifdef GST_API_VERSION_1
+       gst_bus_set_sync_handler(bus, __mmplayer_bus_sync_callback, player, NULL);
+#else
        gst_bus_set_sync_handler(bus, __mmplayer_bus_sync_callback, player);
-
+#endif
        /* finished */
        gst_object_unref(GST_OBJECT(bus));
        g_list_free(element_bucket);
@@ -4929,7 +5209,11 @@ __mmplayer_gst_destroy_pipeline(mm_player_t* player) // @
                GstPad *pad = NULL;
                pad = gst_element_get_static_pad(player->pipeline->mainbin[MMPLAYER_M_SRC].gst, "src" );
 
+#ifdef GST_API_VERSION_1
+               gst_pad_remove_probe (pad, ahs_appsrc_cb_probe_id);
+#else          
                gst_pad_remove_buffer_probe (pad, ahs_appsrc_cb_probe_id);
+#endif
                gst_object_unref(pad);
                pad = NULL;
                ahs_appsrc_cb_probe_id = 0;
@@ -4967,7 +5251,12 @@ __mmplayer_gst_destroy_pipeline(mm_player_t* player) // @
                        MMPlayerGstElement* videobin = player->pipeline->videobin;
                        MMPlayerGstElement* textbin = player->pipeline->textbin;
                        GstBus *bus = gst_pipeline_get_bus (GST_PIPELINE (mainbin[MMPLAYER_M_PIPE].gst));
+
+#ifdef GST_API_VERSION_1
+                       gst_bus_set_sync_handler (bus, NULL, NULL, NULL);
+#else
                        gst_bus_set_sync_handler (bus, NULL, NULL);
+#endif
                        gst_object_unref(bus);
 
                        debug_log("pipeline status before set state to NULL\n");
@@ -5440,7 +5729,11 @@ int __gst_resume(mm_player_t* player, gboolean async) // @
 
        /* clean bus sync handler because it's not needed any more */
        bus = gst_pipeline_get_bus (GST_PIPELINE(player->pipeline->mainbin[MMPLAYER_M_PIPE].gst));
-       gst_bus_set_sync_handler (bus, NULL, NULL);
+#ifdef GST_API_VERSION_1
+                       gst_bus_set_sync_handler (bus, NULL, NULL, NULL);
+#else
+                       gst_bus_set_sync_handler (bus, NULL, NULL);
+#endif
        gst_object_unref(bus);
 
        /* set pipeline state to PLAYING */
@@ -5477,7 +5770,9 @@ int __gst_resume(mm_player_t* player, gboolean async) // @
 static int
 __gst_set_position(mm_player_t* player, int format, unsigned long position, gboolean internal_called) // @
 {
+#ifndef GST_API_VERSION_1
        GstFormat fmt  = GST_FORMAT_TIME;
+#endif
        unsigned long dur_msec = 0;
        gint64 dur_nsec = 0;
        gint64 pos_nsec = 0;
@@ -5497,10 +5792,17 @@ __gst_set_position(mm_player_t* player, int format, unsigned long position, gboo
         */
        if ( !player->duration )
        {
+#ifdef GST_API_VERSION_1
+               if ( !gst_element_query_duration( player->pipeline->mainbin[MMPLAYER_M_PIPE].gst, GST_FORMAT_TIME, &dur_nsec ))
+               {
+                       goto SEEK_ERROR;
+               }
+#else
                if ( !gst_element_query_duration( player->pipeline->mainbin[MMPLAYER_M_PIPE].gst, &fmt, &dur_nsec ))
                {
                        goto SEEK_ERROR;
                }
+#endif
                player->duration = dur_nsec;
        }
 
@@ -5616,7 +5918,9 @@ static int
 __gst_get_position(mm_player_t* player, int format, unsigned long* position) // @
 {
        MMPlayerStateType current_state = MM_PLAYER_STATE_NONE;
+#ifndef GST_API_VERSION_1
        GstFormat fmt = GST_FORMAT_TIME;
+#endif
        signed long long pos_msec = 0;
        gboolean ret = TRUE;
 
@@ -5630,7 +5934,11 @@ __gst_get_position(mm_player_t* player, int format, unsigned long* position) //
         */
        if ( current_state != MM_PLAYER_STATE_PAUSED )
        {
+#ifdef GST_API_VERSION_1
+               ret = gst_element_query_position(player->pipeline->mainbin[MMPLAYER_M_PIPE].gst, GST_FORMAT_TIME, &pos_msec);
+#else
                ret = gst_element_query_position(player->pipeline->mainbin[MMPLAYER_M_PIPE].gst, &fmt, &pos_msec);
+#endif
        }
 
        /* NOTE : get last point to overcome some bad operation of some elements
@@ -7251,7 +7559,9 @@ int
 _mmplayer_pause(MMHandleType hplayer) // @
 {
        mm_player_t* player = (mm_player_t*)hplayer;
+#ifndef GST_API_VERSION_1
        GstFormat fmt = GST_FORMAT_TIME;
+#endif
        gint64 pos_msec = 0;
        gboolean async = FALSE;
        gint ret = MM_ERROR_NONE;
@@ -7281,8 +7591,13 @@ _mmplayer_pause(MMHandleType hplayer) // @
                        * ( returning zero when getting current position in paused state) of some
                        * elements
                        */
-                       if ( !gst_element_query_position(player->pipeline->mainbin[MMPLAYER_M_PIPE].gst, &fmt, &pos_msec))
-                               debug_warning("getting current position failed in paused\n");
+#ifdef GST_API_VERSION_1
+                       ret = gst_element_query_position(player->pipeline->mainbin[MMPLAYER_M_PIPE].gst, GST_FORMAT_TIME, &pos_msec);
+#else
+                       ret = gst_element_query_position(player->pipeline->mainbin[MMPLAYER_M_PIPE].gst, &fmt, &pos_msec);
+#endif
+                       if ( ! ret )
+                       debug_warning("getting current position failed in paused\n");
 
                        player->last_position = pos_msec;
                }
@@ -7407,11 +7722,13 @@ _mmplayer_activate_section_repeat(MMHandleType hplayer, unsigned long start, uns
 static int
 __mmplayer_set_pcm_extraction(mm_player_t* player)
 {
-       gint64 start_nsec = 0;
-       gint64 end_nsec = 0;
-       gint64 dur_nsec = 0;
-       gint64 dur_msec = 0;
+       guint64 start_nsec = 0;
+       guint64 end_nsec = 0;
+       guint64 dur_nsec = 0;
+       guint64 dur_msec = 0;
+#ifndef GST_API_VERSION_1
        GstFormat fmt = GST_FORMAT_TIME;
+#endif
        int required_start = 0;
        int required_end = 0;
        int ret = 0;
@@ -7440,7 +7757,11 @@ __mmplayer_set_pcm_extraction(mm_player_t* player)
        }
 
        /* get duration */
+#ifdef GST_API_VERSION_1
+       ret = gst_element_query_duration(player->pipeline->mainbin[MMPLAYER_M_PIPE].gst, GST_FORMAT_TIME, &dur_nsec);
+#else
        ret = gst_element_query_duration(player->pipeline->mainbin[MMPLAYER_M_PIPE].gst, &fmt, &dur_nsec);
+#endif
        if ( !ret )
        {
                debug_error("failed to get duration");
@@ -7481,7 +7802,9 @@ _mmplayer_deactivate_section_repeat(MMHandleType hplayer)
 {
        mm_player_t* player = (mm_player_t*)hplayer;
        gint64 cur_pos = 0;
+#ifndef GST_API_VERSION_1
        GstFormat fmt  = GST_FORMAT_TIME;
+#endif
        gint onetime = 1;
 
        debug_fenter();
@@ -7491,8 +7814,11 @@ _mmplayer_deactivate_section_repeat(MMHandleType hplayer)
        player->section_repeat = FALSE;
 
        __mmplayer_set_play_count( player, onetime );
-
+#ifdef GST_API_VERSION_1
+       gst_element_query_position(player->pipeline->mainbin[MMPLAYER_M_PIPE].gst, GST_FORMAT_TIME, &cur_pos);
+#else
        gst_element_query_position(player->pipeline->mainbin[MMPLAYER_M_PIPE].gst, &fmt, &cur_pos);
+#endif
 
        if ( (!__gst_seek( player, player->pipeline->mainbin[MMPLAYER_M_PIPE].gst,
                                        1.0,
@@ -7518,7 +7844,9 @@ _mmplayer_set_playspeed(MMHandleType hplayer, gdouble rate)
        signed long long pos_msec = 0;
        int ret = MM_ERROR_NONE;
        int mute = FALSE;
+#ifndef GST_API_VERSION_1
        GstFormat format =GST_FORMAT_TIME;
+#endif
        MMPlayerStateType current_state = MM_PLAYER_STATE_NONE;
        debug_fenter();
 
@@ -7542,9 +7870,13 @@ _mmplayer_set_playspeed(MMHandleType hplayer, gdouble rate)
        player->playback_rate = rate;
 
        current_state = MMPLAYER_CURRENT_STATE(player);
-
+#ifdef GST_API_VERSION_1
+       if ( current_state != MM_PLAYER_STATE_PAUSED )
+               ret = gst_element_query_position(player->pipeline->mainbin[MMPLAYER_M_PIPE].gst, GST_FORMAT_TIME, &pos_msec);
+#else
        if ( current_state != MM_PLAYER_STATE_PAUSED )
                ret = gst_element_query_position(player->pipeline->mainbin[MMPLAYER_M_PIPE].gst, &format, &pos_msec);
+#endif
 
        debug_log ("pos_msec = %"GST_TIME_FORMAT" and ret = %d and state = %d", GST_TIME_ARGS (pos_msec), ret, current_state);
 
@@ -7784,7 +8116,11 @@ __mmplayer_warm_up_video_codec( mm_player_t* player,  GstElementFactory *factory
 
        if (ret != GST_STATE_CHANGE_SUCCESS)
        {
+#ifdef GST_API_VERSION_1
+               debug_error ("resource conflict so,  %s unusable\n", gst_object_get_name (GST_OBJECT (factory)));
+#else
                debug_error ("resource conflict so,  %s unusable\n", GST_PLUGIN_FEATURE_NAME (factory));
+#endif
                usable = FALSE;
        }
 
@@ -7911,6 +8247,21 @@ __mmplayer_try_to_plug(mm_player_t* player, GstPad *pad, const GstCaps *caps) //
                skip = FALSE;
 
                /* filtering exclude keyword */
+#ifdef GST_API_VERSION_1
+               for ( idx = 0; PLAYER_INI()->exclude_element_keyword[idx][0] != '\0'; idx++ )
+               {
+                       if ( g_strrstr(gst_object_get_name (GST_OBJECT (factory)),
+                                       PLAYER_INI()->exclude_element_keyword[idx]) )
+                       {
+                               debug_warning("skipping [%s] by exculde keyword [%s]\n",
+                                       gst_object_get_name (GST_OBJECT (factory)),
+                                       PLAYER_INI()->exclude_element_keyword[idx] );
+
+                               skip = TRUE;
+                               break;
+                       }
+               }
+#else
                for ( idx = 0; PLAYER_INI()->exclude_element_keyword[idx][0] != '\0'; idx++ )
                {
                        if ( g_strrstr(GST_PLUGIN_FEATURE_NAME (factory),
@@ -7924,6 +8275,7 @@ __mmplayer_try_to_plug(mm_player_t* player, GstPad *pad, const GstCaps *caps) //
                                break;
                        }
                }
+#endif
 
                if ( skip ) continue;
 
@@ -7935,7 +8287,13 @@ __mmplayer_try_to_plug(mm_player_t* player, GstPad *pad, const GstCaps *caps) //
                 */
                if ( g_strrstr(klass, "Codec/Decoder/Image") )
                {
-                       debug_log("skipping [%s] by not required\n", GST_PLUGIN_FEATURE_NAME (factory));
+#ifdef GST_API_VERSION_1
+                       debug_log("skipping [%s] by not required\n",
+                               gst_object_get_name (GST_OBJECT (factory)) );
+#else
+                       debug_log("skipping [%s] by not required\n",
+                               GST_PLUGIN_FEATURE_NAME (factory) );
+#endif
                        continue;
                }
 
@@ -7969,6 +8327,27 @@ __mmplayer_try_to_plug(mm_player_t* player, GstPad *pad, const GstCaps *caps) //
 
                        if( res && !gst_caps_is_empty(res) )
                        {
+#ifdef GST_API_VERSION_1
+                               GstElement *new_element;
+                               GList *elements = player->parsers;
+                               char *name_template = g_strdup(temp1->name_template);
+                               gchar *name_to_plug = gst_object_get_name (GST_OBJECT (factory));
+
+                               gst_caps_unref(res);
+
+                               debug_log("found %s to plug\n", name_to_plug);
+
+                               new_element = gst_element_factory_create(GST_ELEMENT_FACTORY(factory), NULL);
+                               if ( ! new_element )
+                               {
+                                       debug_error("failed to create element [%s]. continue with next.\n",
+                                               gst_object_get_name (GST_OBJECT (factory)));
+
+                                       MMPLAYER_FREEIF(name_template);
+
+                                       continue;
+                               }
+#else
                                GstElement *new_element;
                                GList *elements = player->parsers;
                                char *name_template = g_strdup(temp1->name_template);
@@ -7988,6 +8367,7 @@ __mmplayer_try_to_plug(mm_player_t* player, GstPad *pad, const GstCaps *caps) //
 
                                        continue;
                                }
+#endif
 
                                /* check and skip it if it was already used. Otherwise, it can be an infinite loop
                                 * because parser can accept its own output as input.
@@ -8239,7 +8619,11 @@ static gboolean __mmplayer_configure_audio_callback(mm_player_t* player)
                {
                        GstPad *pad = NULL;
 
+#ifdef GST_API_VERSION_1
                        pad = gst_element_get_static_pad (player->pipeline->audiobin[MMPLAYER_A_SINK].gst, "sink");
+#else
+                       pad = gst_element_get_pad (player->pipeline->audiobin[MMPLAYER_A_SINK].gst, "sink");
+#endif
 
                        if ( !pad )
                        {
@@ -8247,8 +8631,13 @@ static gboolean __mmplayer_configure_audio_callback(mm_player_t* player)
                                return FALSE;
                        }
 
+#ifdef GST_API_VERSION_1
+                       player->audio_cb_probe_id = gst_pad_add_probe (pad, GST_PAD_PROBE_TYPE_BUFFER,
+                               __mmplayer_audio_stream_probe, player, NULL);
+#else
                        player->audio_cb_probe_id = gst_pad_add_buffer_probe (pad,
                                G_CALLBACK (__mmplayer_audio_stream_probe), player);
+#endif
 
                        gst_object_unref (pad);
 
@@ -8273,8 +8662,13 @@ __mmplayer_init_factories(mm_player_t* player) // @
 
        return_if_fail ( player );
 
+#ifdef GST_API_VERSION_1
+       player->factories = gst_registry_feature_filter(gst_registry_get(),
+                                        (GstPluginFeatureFilter)__mmplayer_feature_filter, FALSE, NULL);
+#else
        player->factories = gst_registry_feature_filter(gst_registry_get_default(),
                                         (GstPluginFeatureFilter)__mmplayer_feature_filter, FALSE, NULL);
+#endif
 
        player->factories = g_list_sort(player->factories, (GCompareFunc)util_factory_rank_compare);
 
@@ -8480,7 +8874,11 @@ const char *padname, const GList *templlist)
                        gchar *parser_name = NULL;
                        GstCaps *dcaps = NULL;
 
+#ifdef GST_API_VERSION_1
+                       dcaps = gst_pad_get_current_caps(srcpad);
+#else
                        dcaps = gst_pad_get_caps(srcpad);
+#endif
                        demux_caps = gst_caps_to_string(dcaps);
 
                        if (g_strrstr(demux_caps, "video/x-h264"))
@@ -8568,7 +8966,11 @@ const char *padname, const GList *templlist)
 
                /*  to check the video/audio type set the proper flag*/
                {
+#ifdef GST_API_VERSION_1
+                       srccaps = gst_pad_get_current_caps( srcpad );
+#else
                        srccaps = gst_pad_get_caps( srcpad );
+#endif
                        if ( !srccaps )
                                goto ERROR;
 
@@ -8622,7 +9024,9 @@ const char *padname, const GList *templlist)
                {
                        if (MMPLAYER_IS_HTTP_STREAMING(player))
                        {
+#ifndef GST_API_VERSION_1
                                GstFormat fmt  = GST_FORMAT_BYTES;
+#endif
                                gint64 dur_bytes = 0L;
                                gchar *file_buffering_path = NULL;
                                gboolean use_file_buffer = FALSE;
@@ -8666,8 +9070,13 @@ const char *padname, const GList *templlist)
 
                                        if ( !MMPLAYER_IS_HTTP_LIVE_STREAMING(player))
                                         {
+#ifdef GST_API_VERSION_1
+                                               if ( !gst_element_query_duration(player->pipeline->mainbin[MMPLAYER_M_SRC].gst, GST_FORMAT_BYTES, &dur_bytes))
+                                                       debug_error("fail to get duration.\n");
+#else
                                                if ( !gst_element_query_duration(player->pipeline->mainbin[MMPLAYER_M_SRC].gst, &fmt, &dur_bytes))
                                                        debug_error("fail to get duration.\n");
+#endif
 
                                                if (dur_bytes>0)
                                                {
@@ -8738,7 +9147,11 @@ const char *padname, const GList *templlist)
                        case GST_PAD_ALWAYS:
                        {
                                GstPad *srcpad = gst_element_get_static_pad(sinkelement, "src");
+#ifdef GST_API_VERSION_1
+                               GstCaps *caps = gst_pad_get_current_caps(srcpad);
+#else
                                GstCaps *caps = gst_pad_get_caps(srcpad);
+#endif
 
                                /* Check whether caps has many types */
                                if ( gst_caps_get_size (caps) > 1 && g_strrstr(klass, "Parser")) {
@@ -8906,7 +9319,11 @@ static void      __mmplayer_add_new_caps(GstPad* pad, GParamSpec* unused, gpointer d
        return_if_fail ( unused )
        return_if_fail ( data )
 
+#ifdef GST_API_VERSION_1
+       caps = gst_pad_get_current_caps(pad);
+#else
        caps = gst_pad_get_caps(pad);
+#endif
        if ( !caps )
                return;
 
@@ -9023,13 +9440,22 @@ static void __mmplayer_add_new_pad(GstElement *element, GstPad *pad, gpointer da
        return_if_fail ( pad );
 
        GST_OBJECT_LOCK (pad);
+#ifdef GST_API_VERSION_1
+       if ((caps = gst_pad_get_current_caps (pad)))
+               gst_caps_ref(caps);
+#else
        if ((caps = GST_PAD_CAPS(pad)))
                gst_caps_ref(caps);
+#endif
        GST_OBJECT_UNLOCK (pad);
 
        if ( NULL == caps )
        {
+#ifdef GST_API_VERSION_1
+               caps = gst_pad_get_current_caps(pad);
+#else
                caps = gst_pad_get_caps(pad);
+#endif
                if ( !caps ) return;
        }
 
@@ -10022,7 +10448,11 @@ __mmplayer_link_decoder( mm_player_t* player, GstPad *srcpad)
        return_val_if_fail ( srcpad, FALSE );
 
        /* to check any of the decoder (video/audio) need to be linked  to parser*/
+#ifdef GST_API_VERSION_1
+       srccaps = gst_pad_get_current_caps( srcpad );
+#else
        srccaps = gst_pad_get_caps( srcpad );
+#endif
        if ( !srccaps )
                goto ERROR;
 
@@ -10077,7 +10507,11 @@ __mmplayer_link_sink( mm_player_t* player , GstPad *srcpad)
        return_val_if_fail ( srcpad, FALSE );
 
        /* to check any of the decoder (video/audio) need to be linked  to parser*/
+#ifdef GST_API_VERSION_1
+       srccaps = gst_pad_get_current_caps( srcpad );
+#else
        srccaps = gst_pad_get_caps( srcpad );
+#endif
        if ( !srccaps )
                goto ERROR;
 
index 5622447..0337a52 100644 (file)
@@ -215,7 +215,11 @@ __util_gst_pad_probe(GstPad *pad, GstBuffer *buffer, gpointer u_data)
        /* show buffer size */
        if ( flag & MM_PROBE_BUFFERSIZE )
        {
+#ifdef GST_API_VERSION_1
+               debug_warning("buffer size : %ud\n", gst_buffer_get_size(buffer));
+#else
                debug_warning("buffer size : %ud\n", GST_BUFFER_SIZE(buffer));
+#endif
        }
 
        /* show buffer duration */