[UTC][capi-media-streamer][NonACR][Add test for adaptive streaming feature]
authorVolodymyr Brynza <v.brynza@samsung.com>
Fri, 30 Sep 2016 11:45:18 +0000 (14:45 +0300)
committerVolodymyr Brynza <v.brynza@samsung.com>
Fri, 30 Sep 2016 11:45:18 +0000 (14:45 +0300)
Change-Id: Ie92c93cdd5cb15fdbaf275501226628adaa1c39f

18 files changed:
src/utc/capi-media-streamer/res/mobile/segments/fileSequence0.ts [new file with mode: 0644]
src/utc/capi-media-streamer/res/mobile/segments/fileSequence1.ts [new file with mode: 0644]
src/utc/capi-media-streamer/res/mobile/segments/fileSequence2.ts [new file with mode: 0644]
src/utc/capi-media-streamer/res/mobile/segments/fileSequence3.ts [new file with mode: 0644]
src/utc/capi-media-streamer/res/mobile/segments/prog_index.m3u8 [new file with mode: 0644]
src/utc/capi-media-streamer/res/tv/segments/fileSequence0.ts [new file with mode: 0644]
src/utc/capi-media-streamer/res/tv/segments/fileSequence1.ts [new file with mode: 0644]
src/utc/capi-media-streamer/res/tv/segments/fileSequence2.ts [new file with mode: 0644]
src/utc/capi-media-streamer/res/tv/segments/fileSequence3.ts [new file with mode: 0644]
src/utc/capi-media-streamer/res/tv/segments/prog_index.m3u8 [new file with mode: 0644]
src/utc/capi-media-streamer/res/wearable/segments/fileSequence0.ts [new file with mode: 0644]
src/utc/capi-media-streamer/res/wearable/segments/fileSequence1.ts [new file with mode: 0644]
src/utc/capi-media-streamer/res/wearable/segments/fileSequence2.ts [new file with mode: 0644]
src/utc/capi-media-streamer/res/wearable/segments/fileSequence3.ts [new file with mode: 0644]
src/utc/capi-media-streamer/res/wearable/segments/prog_index.m3u8 [new file with mode: 0644]
src/utc/capi-media-streamer/tct-capi-media-streamer-core_mobile.h
src/utc/capi-media-streamer/tct-capi-media-streamer-core_wearable.h
src/utc/capi-media-streamer/utc-capi-media-streamer.c

diff --git a/src/utc/capi-media-streamer/res/mobile/segments/fileSequence0.ts b/src/utc/capi-media-streamer/res/mobile/segments/fileSequence0.ts
new file mode 100644 (file)
index 0000000..b17b0a8
Binary files /dev/null and b/src/utc/capi-media-streamer/res/mobile/segments/fileSequence0.ts differ
diff --git a/src/utc/capi-media-streamer/res/mobile/segments/fileSequence1.ts b/src/utc/capi-media-streamer/res/mobile/segments/fileSequence1.ts
new file mode 100644 (file)
index 0000000..d751091
Binary files /dev/null and b/src/utc/capi-media-streamer/res/mobile/segments/fileSequence1.ts differ
diff --git a/src/utc/capi-media-streamer/res/mobile/segments/fileSequence2.ts b/src/utc/capi-media-streamer/res/mobile/segments/fileSequence2.ts
new file mode 100644 (file)
index 0000000..e610d03
Binary files /dev/null and b/src/utc/capi-media-streamer/res/mobile/segments/fileSequence2.ts differ
diff --git a/src/utc/capi-media-streamer/res/mobile/segments/fileSequence3.ts b/src/utc/capi-media-streamer/res/mobile/segments/fileSequence3.ts
new file mode 100644 (file)
index 0000000..777fd89
Binary files /dev/null and b/src/utc/capi-media-streamer/res/mobile/segments/fileSequence3.ts differ
diff --git a/src/utc/capi-media-streamer/res/mobile/segments/prog_index.m3u8 b/src/utc/capi-media-streamer/res/mobile/segments/prog_index.m3u8
new file mode 100644 (file)
index 0000000..3af24f0
--- /dev/null
@@ -0,0 +1,15 @@
+#EXTM3U
+#EXT-X-TARGETDURATION:10
+#EXT-X-VERSION:3
+#EXT-X-MEDIA-SEQUENCE:0
+#EXT-X-PLAYLIST-TYPE:VOD
+#EXTINF:9.97667,       
+fileSequence0.ts
+#EXTINF:9.97667,       
+fileSequence1.ts
+#EXTINF:9.97667,       
+fileSequence2.ts
+#EXTINF:9.97667,       
+fileSequence3.ts
+#EXTINF:9.97667,
+#EXT-X-ENDLIST
diff --git a/src/utc/capi-media-streamer/res/tv/segments/fileSequence0.ts b/src/utc/capi-media-streamer/res/tv/segments/fileSequence0.ts
new file mode 100644 (file)
index 0000000..b17b0a8
Binary files /dev/null and b/src/utc/capi-media-streamer/res/tv/segments/fileSequence0.ts differ
diff --git a/src/utc/capi-media-streamer/res/tv/segments/fileSequence1.ts b/src/utc/capi-media-streamer/res/tv/segments/fileSequence1.ts
new file mode 100644 (file)
index 0000000..d751091
Binary files /dev/null and b/src/utc/capi-media-streamer/res/tv/segments/fileSequence1.ts differ
diff --git a/src/utc/capi-media-streamer/res/tv/segments/fileSequence2.ts b/src/utc/capi-media-streamer/res/tv/segments/fileSequence2.ts
new file mode 100644 (file)
index 0000000..e610d03
Binary files /dev/null and b/src/utc/capi-media-streamer/res/tv/segments/fileSequence2.ts differ
diff --git a/src/utc/capi-media-streamer/res/tv/segments/fileSequence3.ts b/src/utc/capi-media-streamer/res/tv/segments/fileSequence3.ts
new file mode 100644 (file)
index 0000000..777fd89
Binary files /dev/null and b/src/utc/capi-media-streamer/res/tv/segments/fileSequence3.ts differ
diff --git a/src/utc/capi-media-streamer/res/tv/segments/prog_index.m3u8 b/src/utc/capi-media-streamer/res/tv/segments/prog_index.m3u8
new file mode 100644 (file)
index 0000000..3af24f0
--- /dev/null
@@ -0,0 +1,15 @@
+#EXTM3U
+#EXT-X-TARGETDURATION:10
+#EXT-X-VERSION:3
+#EXT-X-MEDIA-SEQUENCE:0
+#EXT-X-PLAYLIST-TYPE:VOD
+#EXTINF:9.97667,       
+fileSequence0.ts
+#EXTINF:9.97667,       
+fileSequence1.ts
+#EXTINF:9.97667,       
+fileSequence2.ts
+#EXTINF:9.97667,       
+fileSequence3.ts
+#EXTINF:9.97667,
+#EXT-X-ENDLIST
diff --git a/src/utc/capi-media-streamer/res/wearable/segments/fileSequence0.ts b/src/utc/capi-media-streamer/res/wearable/segments/fileSequence0.ts
new file mode 100644 (file)
index 0000000..b17b0a8
Binary files /dev/null and b/src/utc/capi-media-streamer/res/wearable/segments/fileSequence0.ts differ
diff --git a/src/utc/capi-media-streamer/res/wearable/segments/fileSequence1.ts b/src/utc/capi-media-streamer/res/wearable/segments/fileSequence1.ts
new file mode 100644 (file)
index 0000000..d751091
Binary files /dev/null and b/src/utc/capi-media-streamer/res/wearable/segments/fileSequence1.ts differ
diff --git a/src/utc/capi-media-streamer/res/wearable/segments/fileSequence2.ts b/src/utc/capi-media-streamer/res/wearable/segments/fileSequence2.ts
new file mode 100644 (file)
index 0000000..e610d03
Binary files /dev/null and b/src/utc/capi-media-streamer/res/wearable/segments/fileSequence2.ts differ
diff --git a/src/utc/capi-media-streamer/res/wearable/segments/fileSequence3.ts b/src/utc/capi-media-streamer/res/wearable/segments/fileSequence3.ts
new file mode 100644 (file)
index 0000000..777fd89
Binary files /dev/null and b/src/utc/capi-media-streamer/res/wearable/segments/fileSequence3.ts differ
diff --git a/src/utc/capi-media-streamer/res/wearable/segments/prog_index.m3u8 b/src/utc/capi-media-streamer/res/wearable/segments/prog_index.m3u8
new file mode 100644 (file)
index 0000000..3af24f0
--- /dev/null
@@ -0,0 +1,15 @@
+#EXTM3U
+#EXT-X-TARGETDURATION:10
+#EXT-X-VERSION:3
+#EXT-X-MEDIA-SEQUENCE:0
+#EXT-X-PLAYLIST-TYPE:VOD
+#EXTINF:9.97667,       
+fileSequence0.ts
+#EXTINF:9.97667,       
+fileSequence1.ts
+#EXTINF:9.97667,       
+fileSequence2.ts
+#EXTINF:9.97667,       
+fileSequence3.ts
+#EXTINF:9.97667,
+#EXT-X-ENDLIST
index 0ba69cb..93a983e 100755 (executable)
@@ -132,10 +132,16 @@ extern int utc_media_streamer_node_get_param_p1(void);
 extern int utc_media_streamer_node_get_param_p2(void);
 extern int utc_media_streamer_node_get_param_p3(void);
 extern int utc_media_streamer_node_get_param_p4(void);
+extern int utc_media_streamer_node_get_param_p5(void);
 extern int utc_media_streamer_node_get_param_n1(void);
 extern int utc_media_streamer_node_get_param_n2(void);
 extern int utc_media_streamer_node_get_param_n3(void);
 extern int utc_media_streamer_node_get_param_n4(void);
+extern int utc_media_streamer_play_p3(void);
+extern int utc_media_streamer_play_p4(void);
+extern int utc_media_streamer_play_p5(void);
+extern int utc_media_streamer_play_p6(void);
+
 
 testcase tc_array[] = {
     {"utc_media_streamer_set_error_cb_p", utc_media_streamer_set_error_cb_p, utc_capi_media_streamer_cb_startup, utc_capi_media_streamer_cb_cleanup},
@@ -246,10 +252,15 @@ testcase tc_array[] = {
     {"utc_media_streamer_node_get_param_p2", utc_media_streamer_node_get_param_p2, utc_capi_media_streamer_startup, utc_capi_media_streamer_cleanup},
     {"utc_media_streamer_node_get_param_p3", utc_media_streamer_node_get_param_p3, utc_capi_media_streamer_startup, utc_capi_media_streamer_cleanup},
     {"utc_media_streamer_node_get_param_p4", utc_media_streamer_node_get_param_p4, utc_capi_media_streamer_startup, utc_capi_media_streamer_cleanup},
+    {"utc_media_streamer_node_get_param_p5", utc_media_streamer_node_get_param_p5, utc_capi_media_streamer_startup, utc_capi_media_streamer_cleanup},
     {"utc_media_streamer_node_get_param_n1", utc_media_streamer_node_get_param_n1, utc_capi_media_streamer_startup, utc_capi_media_streamer_cleanup},
     {"utc_media_streamer_node_get_param_n2", utc_media_streamer_node_get_param_n2, utc_capi_media_streamer_startup, utc_capi_media_streamer_cleanup},
     {"utc_media_streamer_node_get_param_n3", utc_media_streamer_node_get_param_n3, utc_capi_media_streamer_startup, utc_capi_media_streamer_cleanup},
     {"utc_media_streamer_node_get_param_n4", utc_media_streamer_node_get_param_n4, utc_capi_media_streamer_startup, utc_capi_media_streamer_cleanup},
+    {"utc_media_streamer_play_p3", utc_media_streamer_play_p3, utc_capi_media_streamer_startup, utc_capi_media_streamer_cleanup},
+    {"utc_media_streamer_play_p4", utc_media_streamer_play_p4, utc_capi_media_streamer_startup, utc_capi_media_streamer_cleanup},
+    {"utc_media_streamer_play_p5", utc_media_streamer_play_p5, utc_capi_media_streamer_startup, utc_capi_media_streamer_cleanup},
+    {"utc_media_streamer_play_p6", utc_media_streamer_play_p6, utc_capi_media_streamer_startup, utc_capi_media_streamer_cleanup},
     {NULL, NULL}
 };
 
index 3874c54..a44ee04 100755 (executable)
@@ -191,7 +191,8 @@ testcase tc_array[] = {
     {"utc_media_streamer_node_create_n", utc_media_streamer_node_create_n, utc_capi_media_streamer_startup, utc_capi_media_streamer_cleanup},
     {"utc_media_streamer_node_add_p", utc_media_streamer_node_add_p, utc_capi_media_streamer_startup, utc_capi_media_streamer_cleanup},
     {"utc_media_streamer_node_add_n", utc_media_streamer_node_add_n, utc_capi_media_streamer_startup, utc_capi_media_streamer_cleanup},
-    {"utc_media_streamer_node_destroy_p", utc_media_streamer_node_destroy_p, utc_capi_media_streamer_startup, utc_capi_media_streamer_cleanup},
+    {"utc_media_streamer_node_destroy_p1", utc_media_streamer_node_destroy_p1, utc_capi_media_streamer_startup, utc_capi_media_streamer_cleanup},
+    {"utc_media_streamer_node_destroy_p2", utc_media_streamer_node_destroy_p2, utc_capi_media_streamer_startup, utc_capi_media_streamer_cleanup},
     {"utc_media_streamer_node_destroy_n", utc_media_streamer_node_destroy_n, utc_capi_media_streamer_startup, utc_capi_media_streamer_cleanup},
     {"utc_media_streamer_node_remove_p", utc_media_streamer_node_remove_p, utc_capi_media_streamer_startup, utc_capi_media_streamer_cleanup},
     {"utc_media_streamer_node_remove_n", utc_media_streamer_node_remove_n, utc_capi_media_streamer_startup, utc_capi_media_streamer_cleanup},
index 85bbffc..f2d9681 100755 (executable)
@@ -23,7 +23,7 @@
 #define API_NAMESPACE "[CAPI_MEDIA_STREAMER]"
 
 #define CAMERA_ID "2"
-#define PLAY_TIME 5
+#define PLAY_TIME 2
 #define PACKET_SIZE 1000
 #define MAX_PACKETS_TO_SEND 50000
 #define CONFIG_VALUE_LEN_MAX 1024
 #define DEFAULT_IP_ADDR "127.0.0.1"
 #define MAX_NODES_COUNT 100
 #define APPEND_NODE(x) {g_nodes[g_node_counter++] = x; }
+#define EXTREMUM 0
+
+#define VIDEO_WIDTH       352
+#define VIDEO_HEIGHT       288
+#define VIDEO_AVG_BPS     1
+#define VIDEO_MAX_BPS     3
+#define AUDIO_CHANNEL     1
+#define AUDIO_SAMPLERATE  8000
+
+#define FILE_NAME "Ice.mp4"
+#define FILE_PATH_PLAYLIST "segments/prog_index.m3u8"
 
 static media_format_h vfmt_encoded = NULL;
 static media_format_h vfmt_raw = NULL;
-static media_format_h afmt_raw = NULL;
 static media_format_h afmt_encoded = NULL;
+static media_format_h vfmt_aenc = NULL;
+static media_format_h vfmt_aencm = NULL;
+static media_format_h afmt_raw = NULL;
+static media_format_h afmt_araw = NULL;
+static media_format_h afmt_aenc = NULL;
+static media_format_h tsfmt = NULL;
+static media_format_h qtfmt = NULL;
 
 static media_streamer_node_h g_nodes[MAX_NODES_COUNT] = { 0, };
 static int g_node_counter = 0;
@@ -47,7 +64,7 @@ int buffer_status = -1;
 static GMainLoop *g_mainloop = NULL;
 static media_streamer_h streamer = NULL;
 static char *file_path = NULL;
-static char *test_file = "Ice.mp4";
+static char *file_path_playlist = NULL;
 const int set_play_pos = 20000;
 
 /**
@@ -58,6 +75,10 @@ const int set_play_pos = 20000;
  */
 void utc_capi_media_streamer_startup(void)
 {
+
+       char *test_file = FILE_NAME;
+       char *test_playlist = FILE_PATH_PLAYLIST;
+
        char pszValue[CONFIG_VALUE_LEN_MAX] = {0,};
        if ( true == GetValueForTCTSetting("DEVICE_SUITE_TARGET_30", pszValue, API_NAMESPACE ))
        {
@@ -65,9 +86,10 @@ void utc_capi_media_streamer_startup(void)
                unsigned int size_of_path = strlen(pszValue) + strlen(test_file) + 6;
                file_path = (char*)malloc(size_of_path);
                snprintf(file_path, size_of_path, "%s/res/%s", pszValue, test_file);
-       }
-       else
-       {
+               unsigned int size_of_path_playlist = strlen(pszValue) + strlen(test_playlist) + 6;
+               file_path_playlist = (char*)malloc(size_of_path_playlist);
+               snprintf(file_path_playlist, size_of_path_playlist, "%s/res/%s", pszValue, test_playlist);
+       } else {
                PRINT_UTC_LOG("[Line : %d][%s] GetValueForTCTSetting returned error for 'DEVICE_SUITE_TARGET_30'\\n", __LINE__, API_NAMESPACE);
        }
 
@@ -77,38 +99,72 @@ void utc_capi_media_streamer_startup(void)
        media_format_create(&vfmt_raw);
        media_format_set_video_mime(vfmt_raw, MEDIA_FORMAT_I420);
 
-       media_format_set_video_width(vfmt_raw, 352);
-       media_format_set_video_height(vfmt_raw, 288);
-       media_format_set_video_avg_bps(vfmt_raw, 1);
-       media_format_set_video_max_bps(vfmt_raw, 3);
+       media_format_set_video_width(vfmt_raw, VIDEO_WIDTH);
+       media_format_set_video_height(vfmt_raw, VIDEO_HEIGHT);
+       media_format_set_video_avg_bps(vfmt_raw, VIDEO_AVG_BPS);
+       media_format_set_video_max_bps(vfmt_raw, VIDEO_MAX_BPS);
 
        /* Define video encoded format */
        media_format_create(&vfmt_encoded);
        media_format_set_video_mime(vfmt_encoded, MEDIA_FORMAT_H263);
 
-       media_format_set_video_width(vfmt_encoded, 352);
-       media_format_set_video_height(vfmt_encoded, 288);
-       media_format_set_video_avg_bps(vfmt_encoded, 1);
-       media_format_set_video_max_bps(vfmt_encoded, 3);
+       media_format_set_video_width(vfmt_encoded, VIDEO_WIDTH);
+       media_format_set_video_height(vfmt_encoded, VIDEO_HEIGHT);
+       media_format_set_video_avg_bps(vfmt_encoded, VIDEO_AVG_BPS);
+       media_format_set_video_max_bps(vfmt_encoded, VIDEO_MAX_BPS);
+
+       /* Define encoded video format for adaptive stream */
+       media_format_create(&vfmt_aenc);
+       media_format_set_video_mime(vfmt_aenc, MEDIA_FORMAT_H264_SP);
+       media_format_set_video_width(vfmt_aenc, VIDEO_WIDTH);
+       media_format_set_video_height(vfmt_aenc, VIDEO_HEIGHT);
+       media_format_set_video_avg_bps(vfmt_aenc, VIDEO_AVG_BPS);
+       media_format_set_video_max_bps(vfmt_aenc, VIDEO_MAX_BPS);
+
+       /* Define encoded video format for adaptive stream */
+       media_format_create(&vfmt_aencm);
+       media_format_set_video_mime(vfmt_aencm, MEDIA_FORMAT_MPEG4_SP);
+       media_format_set_video_width(vfmt_aencm, VIDEO_WIDTH);
+       media_format_set_video_height(vfmt_aencm, VIDEO_HEIGHT);
+       media_format_set_video_avg_bps(vfmt_aencm, VIDEO_AVG_BPS);
+       media_format_set_video_max_bps(vfmt_aencm, VIDEO_MAX_BPS);
 
        /* Define audio raw format */
        media_format_create(&afmt_raw);
        media_format_set_audio_mime(afmt_raw, MEDIA_FORMAT_PCM);
+       media_format_set_audio_channel(afmt_raw, AUDIO_CHANNEL);
+       media_format_set_audio_samplerate(afmt_raw, AUDIO_SAMPLERATE);
 
-       media_format_set_audio_channel(afmt_raw, 1);
-       media_format_set_audio_samplerate(afmt_raw, 8000);
+       /* Define audio raw format for adaptive streaming */
+       media_format_create(&afmt_araw);
+       media_format_set_audio_mime(afmt_araw, MEDIA_FORMAT_PCM_F32LE);
+       media_format_set_audio_channel(afmt_araw, AUDIO_CHANNEL);
+       media_format_set_audio_samplerate(afmt_araw, AUDIO_SAMPLERATE);
 
        /* Define audio encoded format */
        media_format_create(&afmt_encoded);
        media_format_set_audio_mime(afmt_encoded, MEDIA_FORMAT_AMR_NB);
+       media_format_set_audio_channel(afmt_encoded, AUDIO_CHANNEL);
+       media_format_set_audio_samplerate(afmt_encoded, AUDIO_SAMPLERATE);
+
+       /* Define audio encoded format for adaptive stream */
+       media_format_create(&afmt_aenc);
+       media_format_set_audio_mime(afmt_aenc, MEDIA_FORMAT_AAC);
+       media_format_set_audio_channel(afmt_aenc, AUDIO_CHANNEL);
+       media_format_set_audio_samplerate(afmt_aenc, AUDIO_SAMPLERATE);
+       media_format_set_audio_aac_type(afmt_aenc, TRUE);
 
-       media_format_set_audio_channel(afmt_encoded, 1);
-       media_format_set_audio_samplerate(afmt_encoded, 8000);
+       /* Define mpegts stream format */
+       media_format_create(&tsfmt);
+       media_format_set_container_mime(tsfmt, MEDIA_FORMAT_CONTAINER_MPEG2TS);
+
+       /* Define MP4 stream format */
+       media_format_create(&qtfmt);
+       media_format_set_container_mime(qtfmt, MEDIA_FORMAT_CONTAINER_MP4);
 }
 
 /**
- * @function           utc_capi_media_streamer_cleanup
- * @description                Called after each test.
+ * @function           utc_capi_media_streamer_cleanup * @description          Called after each test.
  * @parameter          NA
  * @return             NA
  */
@@ -180,14 +236,16 @@ void new_buffer_cb(media_streamer_node_h node, void *user_data)
                return;
 
        media_packet_get_buffer_data_ptr(packet, (void **)&received_data);
+
+       media_packet_destroy (packet);
+       packet = NULL;
+
        if (received_data == NULL)
                return;
 
        free(received_data);
        received_data = NULL;
 
-       media_packet_destroy (packet);
-       packet = NULL;
 }
 
 //& purpose: A purpose of a first positive TC.
@@ -2007,11 +2065,11 @@ int utc_media_streamer_node_get_pad_format_p(void)
        ret = media_format_get_video_info(pad_fmt, &mime, &width, &height, &avg_bps, &max_bps);
        assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
 
-       assert_neq(mime, 0);
-       assert_neq(width, 0);
-       assert_neq(height, 0);
-       assert_neq(avg_bps, 0);
-       assert_neq(max_bps, 0);
+       assert_neq(mime, EXTREMUM);
+       assert_neq(width, EXTREMUM);
+       assert_neq(height, EXTREMUM);
+       assert_neq(avg_bps, EXTREMUM);
+       assert_neq(max_bps, EXTREMUM);
 
        assert_eq(mime_init, mime);
        assert_eq(width_init, width);
@@ -3455,6 +3513,34 @@ int utc_media_streamer_node_get_param_p4(void)
 #endif   //MOBILE  //End MOBILE
 
 /**
+ * @testcase           utc_media_streamer_node_get_param_p5
+ * @since_tizen                3.0
+ * @description                Gets a parameter value of
+ *                     media streamer node.
+ */
+int utc_media_streamer_node_get_param_p5(void)
+{
+       int ret = MEDIA_STREAMER_ERROR_NONE;
+       char *param_value = NULL;
+
+       media_streamer_node_h adaptive_src = NULL;
+       ret = media_streamer_node_create_src(MEDIA_STREAMER_NODE_SRC_TYPE_ADAPTIVE, &adaptive_src);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       assert_neq(adaptive_src, NULL);
+       APPEND_NODE(adaptive_src);
+
+       ret = media_streamer_node_set_param(adaptive_src, MEDIA_STREAMER_PARAM_URI, file_path);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       ret = media_streamer_node_get_param(adaptive_src, MEDIA_STREAMER_PARAM_URI, &param_value);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       assert_neq(param_value, NULL);
+       assert(!strcmp(param_value, file_path));
+       free(param_value);
+
+       return 0;
+}
+
+/**
  * @testcase           utc_media_streamer_node_get_param_n1
  * @since_tizen                3.0
  * @description                Gets a parameter value of
@@ -3604,4 +3690,250 @@ int utc_media_streamer_node_get_param_n4(void)
 
        return 0;
 }
-#endif   //MOBILE  //End MOBILE
+#endif   //MOBILE  //End
+
+/**
+ * @testcase           utc_media_streamer_play_p3
+ * @since_tizen                3.0
+ * @description                Adaptive auto playing of
+ *                     media streamer client.
+ */
+int utc_media_streamer_play_p3(void)
+{
+       int ret = MEDIA_STREAMER_ERROR_NONE;
+       media_streamer_node_h adaptive_src = NULL;
+
+       ret = media_streamer_node_create_src(MEDIA_STREAMER_NODE_SRC_TYPE_ADAPTIVE, &adaptive_src);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       ret = media_streamer_node_set_param(adaptive_src, MEDIA_STREAMER_PARAM_URI, file_path_playlist);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       ret = media_streamer_node_add(streamer, adaptive_src);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       APPEND_NODE(adaptive_src);
+
+       /*********************** videosink *********************************** */
+       media_streamer_node_h video_sink = NULL;
+       ret = media_streamer_node_create_sink(MEDIA_STREAMER_NODE_SINK_TYPE_OVERLAY, &video_sink);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       ret = media_streamer_node_add(streamer, video_sink);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       APPEND_NODE(video_sink);
+
+       /*********************** audiosink *********************************** */
+       media_streamer_node_h audio_sink = NULL;
+       ret = media_streamer_node_create_sink(MEDIA_STREAMER_NODE_SINK_TYPE_AUDIO, &audio_sink);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       ret = media_streamer_node_add(streamer, audio_sink);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       APPEND_NODE(audio_sink);
+
+       ret = media_streamer_prepare(streamer);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       wait_for_async(PLAY_TIME);
+
+       ret = media_streamer_play(streamer);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       wait_for_async(PLAY_TIME);
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_streamer_play_p4
+ * @since_tizen                3.0
+ * @description                Adaptive manual playing of
+ *                     media streamer client.
+ */
+int utc_media_streamer_play_p4(void)
+{
+
+       int ret = MEDIA_STREAMER_ERROR_NONE;
+
+
+       media_streamer_node_h adaptive_src = NULL;
+       ret = media_streamer_node_create_src(MEDIA_STREAMER_NODE_SRC_TYPE_ADAPTIVE, &adaptive_src);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       ret = media_streamer_node_set_param(adaptive_src, MEDIA_STREAMER_PARAM_URI, file_path_playlist);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       ret = media_streamer_node_add(streamer, adaptive_src);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       APPEND_NODE(adaptive_src);
+
+       media_streamer_node_h ts_demux = NULL;
+       ret = media_streamer_node_create(MEDIA_STREAMER_NODE_TYPE_DEMUXER, tsfmt, NULL, &ts_demux);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       ret = media_streamer_node_add(streamer, ts_demux);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       APPEND_NODE(ts_demux);
+
+       media_streamer_node_h video_dec = NULL;
+       ret = media_streamer_node_create(MEDIA_STREAMER_NODE_TYPE_VIDEO_DECODER, vfmt_aenc, vfmt_raw, &video_dec);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       ret = media_streamer_node_add(streamer, video_dec);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       APPEND_NODE(video_dec);
+
+       media_streamer_node_h audio_dec = NULL;
+       ret = media_streamer_node_create(MEDIA_STREAMER_NODE_TYPE_AUDIO_DECODER, afmt_aenc, afmt_araw, &audio_dec);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       ret = media_streamer_node_add(streamer, audio_dec);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       APPEND_NODE(audio_dec);
+
+       /*********************** videosink *********************************** */
+       media_streamer_node_h video_sink = NULL;
+       ret = media_streamer_node_create_sink(MEDIA_STREAMER_NODE_SINK_TYPE_OVERLAY, &video_sink);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       ret = media_streamer_node_add(streamer, video_sink);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       APPEND_NODE(video_sink);
+
+       /*********************** audiosink *********************************** */
+       media_streamer_node_h audio_sink = NULL;
+       ret = media_streamer_node_create_sink(MEDIA_STREAMER_NODE_SINK_TYPE_AUDIO, &audio_sink);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       ret = media_streamer_node_add(streamer, audio_sink);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       APPEND_NODE(audio_sink);
+
+       ret = media_streamer_prepare(streamer);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       wait_for_async(PLAY_TIME);
+
+       ret = media_streamer_play(streamer);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       wait_for_async(PLAY_TIME);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_streamer_play_p5
+ * @since_tizen                3.0
+ * @description                Adaptive server of
+ *                     media streamer server.
+ */
+int utc_media_streamer_play_p5(void)
+{
+
+       int ret = MEDIA_STREAMER_ERROR_NONE;
+
+       media_streamer_node_h file_src = NULL;
+       ret = media_streamer_node_create_src(MEDIA_STREAMER_NODE_SRC_TYPE_FILE, &file_src);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       ret = media_streamer_node_set_param(file_src, MEDIA_STREAMER_PARAM_URI, file_path);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       ret = media_streamer_node_add(streamer, file_src);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       APPEND_NODE(file_src);
+
+       /*********************** videosink *********************************** */
+       media_streamer_node_h adaptive_sink = NULL;
+       ret = media_streamer_node_create_sink(MEDIA_STREAMER_NODE_SINK_TYPE_ADAPTIVE, &adaptive_sink);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       ret = media_streamer_node_add(streamer, adaptive_sink);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       APPEND_NODE(adaptive_sink);
+
+       ret = media_streamer_prepare(streamer);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       wait_for_async(PLAY_TIME);
+
+       ret = media_streamer_play(streamer);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       wait_for_async(PLAY_TIME);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_streamer_play_p6
+ * @since_tizen                3.0
+ * @description                Adaptive manual server of
+ *                     media streamer server.
+ */
+int utc_media_streamer_play_p6(void)
+{
+
+       int ret = MEDIA_STREAMER_ERROR_NONE;
+
+       media_streamer_node_h file_src = NULL;
+       ret = media_streamer_node_create_src(MEDIA_STREAMER_NODE_SRC_TYPE_FILE, &file_src);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       ret = media_streamer_node_set_param(file_src, MEDIA_STREAMER_PARAM_URI, file_path);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       ret = media_streamer_node_add(streamer, file_src);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       APPEND_NODE(file_src);
+
+       media_streamer_node_h qt_demux = NULL;
+       ret = media_streamer_node_create(MEDIA_STREAMER_NODE_TYPE_DEMUXER, qtfmt, NULL, &qt_demux);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       ret = media_streamer_node_add(streamer, qt_demux);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       APPEND_NODE(qt_demux);
+
+       media_streamer_node_h video_dec = NULL;
+       ret = media_streamer_node_create(MEDIA_STREAMER_NODE_TYPE_VIDEO_DECODER, vfmt_aenc, vfmt_raw, &video_dec);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       ret = media_streamer_node_add(streamer, video_dec);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       APPEND_NODE(video_dec);
+
+       media_streamer_node_h audio_dec = NULL;
+       ret = media_streamer_node_create(MEDIA_STREAMER_NODE_TYPE_AUDIO_DECODER, afmt_aenc, afmt_araw, &audio_dec);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       ret = media_streamer_node_add(streamer, audio_dec);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       APPEND_NODE(audio_dec);
+
+       media_streamer_node_h video_enc = NULL;
+       ret = media_streamer_node_create(MEDIA_STREAMER_NODE_TYPE_VIDEO_ENCODER, vfmt_raw, vfmt_aencm, &video_enc);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       ret = media_streamer_node_add(streamer, video_enc);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       APPEND_NODE(video_enc);
+
+       media_streamer_node_h audio_enc = NULL;
+       ret = media_streamer_node_create(MEDIA_STREAMER_NODE_TYPE_AUDIO_ENCODER, afmt_araw, afmt_aenc, &audio_enc);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       ret = media_streamer_node_add(streamer, audio_enc);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       APPEND_NODE(audio_enc);
+
+       media_streamer_node_h ts_mux = NULL;
+       ret = media_streamer_node_create(MEDIA_STREAMER_NODE_TYPE_MUXER, NULL, tsfmt, &ts_mux);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       ret = media_streamer_node_add(streamer, ts_mux);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       APPEND_NODE(ts_mux);
+
+       media_streamer_node_h adaptive_sink = NULL;
+       ret = media_streamer_node_create_sink(MEDIA_STREAMER_NODE_SINK_TYPE_ADAPTIVE, &adaptive_sink);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       ret = media_streamer_node_add(streamer, adaptive_sink);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       APPEND_NODE(adaptive_sink);
+
+       ret = media_streamer_node_link(file_src, "src", qt_demux, "sink");
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       ret = media_streamer_node_link(video_dec, "src", video_enc, "sink");
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       ret = media_streamer_node_link(audio_dec, "src", audio_enc, "sink");
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       ret = media_streamer_node_link(video_enc, "src", ts_mux, "sink_%d");
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       ret = media_streamer_node_link(audio_enc, "src", ts_mux, "sink_%d");
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       ret = media_streamer_node_link(ts_mux, "src", adaptive_sink, "sink");
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+
+       ret = media_streamer_prepare(streamer);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       wait_for_async(PLAY_TIME);
+
+       ret = media_streamer_play(streamer);
+       assert_eq(ret, MEDIA_STREAMER_ERROR_NONE);
+       wait_for_async(PLAY_TIME);
+
+       return 0;
+}