--- /dev/null
+#include <stdio.h>
+#include <streamrecorder.h>
+#include <time.h>
+#include <glib.h>
+
+#define DEST_FILE "/tmp/test_with_suite.mp4"
+#define WIDTH 1280
+#define HEIGHT 720
+#define FRAME_RATE 30
+
+#define LOGD(...) do { printf(__VA_ARGS__); putc('\n', stdout); } while (0)
+#define LOGE(...) do { printf(__VA_ARGS__); putc('\n', stdout); } while (0)
+#define LOGW(...) do { printf(__VA_ARGS__); putc('\n', stdout); } while (0)
+
+streamrecorder_h streamrecorder;
+
+static void
+streamrecorder_cb_notify(streamrecorder_state_e previous,
+ streamrecorder_state_e current,
+ streamrecorder_notify_e notification,
+ void *data)
+{
+ LOGD("streamrecorder_notify (prev: %d, curr: %d)", previous, current);
+}
+
+static gboolean
+_cb_finish(gpointer user_data)
+{
+ GMainLoop *loop = user_data;
+ g_main_loop_quit(loop);
+ return G_SOURCE_REMOVE;
+}
+
+static void _recording_status_cb(unsigned long long elapsed_time, unsigned long long file_size, void *user_data)
+{
+ g_print("elapsed time :%lld, file_size :%lld \r", elapsed_time, file_size);
+}
+
+int
+main(int argc, char *argv[])
+{
+ streamrecorder_state_e state;
+ int err = 0;
+ int ret = 0;
+ streamrecorder_mode_e mode = STREAMRECORDER_MODE_DEVICE_LOOPBACK;
+ streamrecorder = NULL;
+
+ err = streamrecorder_create(&streamrecorder);
+ if (err != STREAMRECORDER_ERROR_NONE) {
+ LOGE("failed 'streamrecorder_create()': %d", err);
+ return -1;
+ }
+
+ err = streamrecorder_get_state(streamrecorder, &state);
+ if (err == STREAMRECORDER_ERROR_NONE) {
+ if (state == STREAMRECORDER_STATE_CREATED) {
+ LOGD("A state of StreamRecorder is 'Created'");
+ }
+ else
+ LOGD("A state of StreamRecorder is '%d'", state);
+ }
+
+ err = streamrecorder_set_notify_cb(streamrecorder,
+ streamrecorder_cb_notify,
+ &streamrecorder);
+ if (err != STREAMRECORDER_ERROR_NONE) {
+ LOGE("failed 'streamrecorder_set_notify_cb()': %d", err);
+ ret = -1;
+ goto end;
+ }
+
+ // err = streamrecorder_enable_source_buffer(streamrecorder, STREAMRECORDER_SOURCE_VIDEO_AUDIO);
+ // if (err != STREAMRECORDER_ERROR_NONE) {
+ // LOGE("failed 'streamrecorder_enable_source_buffer'");
+ // return 0;
+ // }
+
+ err = streamrecorder_set_mode(streamrecorder, STREAMRECORDER_MODE_DEVICE_LOOPBACK);
+ if (err != STREAMRECORDER_ERROR_NONE) {
+ LOGE("failed 'streamrecorder_set_mode'");
+ goto end;
+ }
+
+ err = streamrecorder_get_mode(streamrecorder, &mode);
+ if (err != STREAMRECORDER_ERROR_NONE) {
+ LOGE("failed 'streamrecorder_get_mode'");
+ goto end;
+ }
+
+ err = streamrecorder_set_video_resolution(streamrecorder, WIDTH, HEIGHT);
+ if (err != STREAMRECORDER_ERROR_NONE) {
+ LOGE("failed 'streamrecorder_set_video_resolution()'");
+ goto end;
+ }
+
+ err = streamrecorder_set_video_framerate(streamrecorder, FRAME_RATE);
+ if (err != STREAMRECORDER_ERROR_NONE) {
+ LOGE("failed 'streamrecorder_set_video_framerate()'");
+ goto end;
+ }
+
+
+ err = streamrecorder_set_recording_status_cb(streamrecorder,
+ _recording_status_cb,
+ NULL);
+ if (err != STREAMRECORDER_ERROR_NONE)
+ {
+ LOGE("failed to set callback for recording status");
+ goto end;
+ }
+ err = streamrecorder_set_filename(streamrecorder, DEST_FILE);
+ if (err != STREAMRECORDER_ERROR_NONE) {
+ LOGE("failed 'streamrecorder_set_filename(): %d'", err);
+ goto end;
+ }
+
+ err = streamrecorder_prepare(streamrecorder);
+ if (err != STREAMRECORDER_ERROR_NONE) {
+ LOGE("failed 'streamrecorder_prepare()': %d", err);
+ ret = -1;
+ goto end;
+ }
+
+ err = streamrecorder_start(streamrecorder);
+ if (err != STREAMRECORDER_ERROR_NONE) {
+ LOGE("failed 'streamrecorder_start()': %d", err);
+ ret = -1;
+ goto end;
+ }
+
+ GMainLoop *loop = g_main_loop_new(NULL, FALSE);
+ g_timeout_add_seconds(5, _cb_finish, loop);
+ g_main_loop_run(loop);
+
+ streamrecorder_commit(streamrecorder);
+
+ g_main_loop_unref(loop);
+
+end:
+ streamrecorder_destroy(streamrecorder);
+ streamrecorder = NULL;
+
+ return ret;
+}