2 #include <streamrecorder.h>
6 #define DEST_FILE "/tmp/test_with_suite.mp4"
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)
15 streamrecorder_h streamrecorder;
18 streamrecorder_cb_notify(streamrecorder_state_e previous,
19 streamrecorder_state_e current,
20 streamrecorder_notify_e notification,
23 LOGD("streamrecorder_notify (prev: %d, curr: %d)", previous, current);
27 _cb_finish(gpointer user_data)
29 GMainLoop *loop = user_data;
30 g_main_loop_quit(loop);
31 return G_SOURCE_REMOVE;
34 static void _recording_status_cb(unsigned long long elapsed_time, unsigned long long file_size, void *user_data)
36 g_print("elapsed time :%lld, file_size :%lld \r", elapsed_time, file_size);
40 main(int argc, char *argv[])
42 streamrecorder_state_e state;
45 streamrecorder_mode_e mode = STREAMRECORDER_MODE_DEVICE_LOOPBACK;
46 streamrecorder = NULL;
48 err = streamrecorder_create(&streamrecorder);
49 if (err != STREAMRECORDER_ERROR_NONE) {
50 LOGE("failed 'streamrecorder_create()': %d", err);
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'");
60 LOGD("A state of StreamRecorder is '%d'", state);
63 err = streamrecorder_set_notify_cb(streamrecorder,
64 streamrecorder_cb_notify,
66 if (err != STREAMRECORDER_ERROR_NONE) {
67 LOGE("failed 'streamrecorder_set_notify_cb()': %d", err);
72 // err = streamrecorder_enable_source_buffer(streamrecorder, STREAMRECORDER_SOURCE_VIDEO_AUDIO);
73 // if (err != STREAMRECORDER_ERROR_NONE) {
74 // LOGE("failed 'streamrecorder_enable_source_buffer'");
78 err = streamrecorder_set_mode(streamrecorder, STREAMRECORDER_MODE_DEVICE_LOOPBACK);
79 if (err != STREAMRECORDER_ERROR_NONE) {
80 LOGE("failed 'streamrecorder_set_mode'");
84 err = streamrecorder_get_mode(streamrecorder, &mode);
85 if (err != STREAMRECORDER_ERROR_NONE) {
86 LOGE("failed 'streamrecorder_get_mode'");
90 err = streamrecorder_set_video_resolution(streamrecorder, WIDTH, HEIGHT);
91 if (err != STREAMRECORDER_ERROR_NONE) {
92 LOGE("failed 'streamrecorder_set_video_resolution()'");
96 err = streamrecorder_set_video_framerate(streamrecorder, FRAME_RATE);
97 if (err != STREAMRECORDER_ERROR_NONE) {
98 LOGE("failed 'streamrecorder_set_video_framerate()'");
103 err = streamrecorder_set_recording_status_cb(streamrecorder,
104 _recording_status_cb,
106 if (err != STREAMRECORDER_ERROR_NONE)
108 LOGE("failed to set callback for recording status");
111 err = streamrecorder_set_filename(streamrecorder, DEST_FILE);
112 if (err != STREAMRECORDER_ERROR_NONE) {
113 LOGE("failed 'streamrecorder_set_filename(): %d'", err);
117 err = streamrecorder_prepare(streamrecorder);
118 if (err != STREAMRECORDER_ERROR_NONE) {
119 LOGE("failed 'streamrecorder_prepare()': %d", err);
124 err = streamrecorder_start(streamrecorder);
125 if (err != STREAMRECORDER_ERROR_NONE) {
126 LOGE("failed 'streamrecorder_start()': %d", err);
131 GMainLoop *loop = g_main_loop_new(NULL, FALSE);
132 g_timeout_add_seconds(5, _cb_finish, loop);
133 g_main_loop_run(loop);
135 streamrecorder_commit(streamrecorder);
137 g_main_loop_unref(loop);
140 streamrecorder_destroy(streamrecorder);
141 streamrecorder = NULL;