G timeout add seconds
Sets a function to be called at regular intervals with the default priority. G_PRIORITY_DEFAULT.
즉, glib 에서 바로 사용할 수 있는 타이머 함수.
Example
#include <gst/gst.h>
#include <glib.h>
typedef struct _GstAnswerjetRelay {
GstElement element;
gboolean relay_state; // Relay 상태 (ON/OFF)
} GstAnswerjetRelay;
/* relay를 ON으로 설정하고 10초 후에 OFF로 전환 */
void relay_on(GstAnswerjetRelay *relay_module);
gboolean relay_off(gpointer user_data);
void relay_on(GstAnswerjetRelay *relay_module)
{
relay_module->relay_state = TRUE;
g_print("Relay ON\n");
// 10초 후 relay_off 함수를 호출하여 OFF로 전환
g_timeout_add_seconds(10, relay_off, relay_module);
}
gboolean relay_off(gpointer user_data)
{
GstAnswerjetRelay *relay_module = (GstAnswerjetRelay *)user_data;
relay_module->relay_state = FALSE;
g_print("Relay OFF\n");
// FALSE를 반환하여 타이머 호출이 한 번만 실행되도록 함
return FALSE;
}
int main(int argc, char *argv[])
{
gst_init(&argc, &argv);
GstAnswerjetRelay relay_module = {0};
// Relay ON 설정 및 10초 후 OFF
relay_on(&relay_module);
// GStreamer 메인 루프 실행
GMainLoop *loop = g_main_loop_new(NULL, FALSE);
g_main_loop_run(loop);
return 0;
}