Adds testsuite for looback mode
[platform/core/api/mediastreamrecorder.git] / test / streamrecorder_loopback_test.c
1 #include <stdio.h>
2 #include <streamrecorder.h>
3 #include <time.h>
4 #include <glib.h>
5
6 #define DEST_FILE   "/tmp/test_with_suite.mp4"
7 #define WIDTH   1280
8 #define HEIGHT  720
9 #define FRAME_RATE  30
10
11 #define LOGD(...)    do { printf(__VA_ARGS__); putc('\n', stdout); } while (0)
12 #define LOGE(...)    do { printf(__VA_ARGS__); putc('\n', stdout); } while (0)
13 #define LOGW(...)    do { printf(__VA_ARGS__); putc('\n', stdout); } while (0)
14
15 streamrecorder_h streamrecorder;
16
17 static void
18 streamrecorder_cb_notify(streamrecorder_state_e previous,
19                          streamrecorder_state_e current,
20                          streamrecorder_notify_e notification,
21                          void *data)
22 {
23     LOGD("streamrecorder_notify (prev: %d, curr: %d)", previous, current);
24 }
25
26 static gboolean
27 _cb_finish(gpointer user_data)
28 {
29     GMainLoop *loop = user_data;
30     g_main_loop_quit(loop);
31     return G_SOURCE_REMOVE;
32 }
33
34 static void _recording_status_cb(unsigned long long elapsed_time, unsigned long long file_size, void *user_data)
35 {
36         g_print("elapsed time :%lld, file_size :%lld \r", elapsed_time, file_size);
37 }
38
39 int
40 main(int argc, char *argv[])
41 {
42     streamrecorder_state_e state;
43     int err = 0;
44     int ret = 0;
45     streamrecorder_mode_e mode = STREAMRECORDER_MODE_DEVICE_LOOPBACK;
46     streamrecorder = NULL;
47
48     err = streamrecorder_create(&streamrecorder);
49     if (err != STREAMRECORDER_ERROR_NONE) {
50         LOGE("failed 'streamrecorder_create()': %d", err);
51         return -1;
52     }
53
54     err = streamrecorder_get_state(streamrecorder, &state);
55     if (err == STREAMRECORDER_ERROR_NONE) {
56         if (state == STREAMRECORDER_STATE_CREATED) {
57             LOGD("A state of StreamRecorder is 'Created'");
58         }
59         else
60             LOGD("A state of StreamRecorder is '%d'", state);
61     }
62
63     err = streamrecorder_set_notify_cb(streamrecorder,
64                                               streamrecorder_cb_notify,
65                                               &streamrecorder);
66     if (err != STREAMRECORDER_ERROR_NONE) {
67         LOGE("failed 'streamrecorder_set_notify_cb()': %d", err);
68         ret = -1;
69         goto end;
70     }
71
72     // err = streamrecorder_enable_source_buffer(streamrecorder, STREAMRECORDER_SOURCE_VIDEO_AUDIO);
73     // if (err != STREAMRECORDER_ERROR_NONE) {
74     //     LOGE("failed 'streamrecorder_enable_source_buffer'");
75     //     return 0;
76     // }
77
78     err = streamrecorder_set_mode(streamrecorder, STREAMRECORDER_MODE_DEVICE_LOOPBACK);
79     if (err != STREAMRECORDER_ERROR_NONE) {
80         LOGE("failed 'streamrecorder_set_mode'");
81         goto end;
82     }
83
84     err = streamrecorder_get_mode(streamrecorder, &mode);
85     if (err != STREAMRECORDER_ERROR_NONE) {
86         LOGE("failed 'streamrecorder_get_mode'");
87         goto end;
88     }
89
90     err = streamrecorder_set_video_resolution(streamrecorder, WIDTH, HEIGHT);
91     if (err != STREAMRECORDER_ERROR_NONE) {
92         LOGE("failed 'streamrecorder_set_video_resolution()'");
93         goto end;
94     }
95
96     err = streamrecorder_set_video_framerate(streamrecorder, FRAME_RATE);
97     if (err != STREAMRECORDER_ERROR_NONE) {
98         LOGE("failed 'streamrecorder_set_video_framerate()'");
99         goto end;
100     }
101
102
103      err = streamrecorder_set_recording_status_cb(streamrecorder,
104       _recording_status_cb,
105       NULL);
106      if (err != STREAMRECORDER_ERROR_NONE)
107       {
108         LOGE("failed to set callback for recording status");
109         goto end;
110       }
111     err = streamrecorder_set_filename(streamrecorder, DEST_FILE);
112     if (err != STREAMRECORDER_ERROR_NONE) {
113         LOGE("failed 'streamrecorder_set_filename(): %d'", err);
114         goto end;
115     }
116
117     err = streamrecorder_prepare(streamrecorder);
118     if (err != STREAMRECORDER_ERROR_NONE) {
119         LOGE("failed 'streamrecorder_prepare()': %d", err);
120         ret = -1;
121         goto end;
122     }
123
124     err = streamrecorder_start(streamrecorder);
125     if (err != STREAMRECORDER_ERROR_NONE) {
126         LOGE("failed 'streamrecorder_start()': %d", err);
127         ret = -1;
128         goto end;
129     }
130
131     GMainLoop *loop = g_main_loop_new(NULL, FALSE);
132     g_timeout_add_seconds(5, _cb_finish, loop);
133     g_main_loop_run(loop);
134
135     streamrecorder_commit(streamrecorder);
136
137     g_main_loop_unref(loop);
138
139 end:
140     streamrecorder_destroy(streamrecorder);
141     streamrecorder = NULL;
142
143     return ret;
144 }