renatofilho@586: #include renatofilho@586: #include renatofilho@586: #include renatofilho@586: #include renatofilho@586: renatofilho@586: #include renatofilho@586: #include renatofilho@586: renatofilho@586: #include "gmemcoder.h" renatofilho@586: renatofilho@586: //#define FILE_OUT 1 renatofilho@586: renatofilho@586: static GMainLoop *mainloop = NULL; renatofilho@586: renatofilho@586: static void renatofilho@586: _mencoder_ready_cb (GMencoder *mencoder, gpointer data) renatofilho@586: { renatofilho@586: g_mencoder_play_stream (mencoder); renatofilho@586: } renatofilho@586: renatofilho@586: static void renatofilho@586: _mencoder_eos_cb (GMencoder *mencoder, gpointer data) renatofilho@586: { renatofilho@586: g_print ("EOS\n"); renatofilho@586: g_main_loop_quit ((GMainLoop *) data); renatofilho@586: } renatofilho@586: renatofilho@586: static void renatofilho@586: _mencoder_error_cb (GMencoder *mencoder, const gchar* msg, gpointer data) renatofilho@586: { renatofilho@586: g_print ("Error: %s\n", msg); renatofilho@586: g_main_loop_quit ((GMainLoop *) data); renatofilho@586: } renatofilho@586: renatofilho@586: static gboolean renatofilho@586: _io_channel_cb (GIOChannel *ch, renatofilho@586: GIOCondition condition, renatofilho@586: gpointer data) renatofilho@586: { renatofilho@586: GString *cmd = g_string_new (""); renatofilho@586: g_io_channel_read_line_string (ch, cmd, NULL, NULL); renatofilho@586: renatofilho@586: if (strcmp (cmd->str, "PLAY\n") == 0) { renatofilho@586: g_mencoder_play_stream (G_MENCODER (data)); renatofilho@586: } else if (strcmp (cmd->str, "PAUSE\n") == 0) { renatofilho@586: g_mencoder_pause_stream (G_MENCODER (data)); renatofilho@586: } else if (strcmp (cmd->str, "STOP\n") == 0) { renatofilho@586: g_mencoder_close_stream (G_MENCODER (data)); renatofilho@586: } else if (strcmp (cmd->str, "QUIT\n") == 0) { renatofilho@586: g_mencoder_close_stream (G_MENCODER (data)); renatofilho@586: g_main_loop_quit (mainloop); renatofilho@586: } renatofilho@586: g_string_free (cmd, TRUE); renatofilho@586: return TRUE; renatofilho@586: } renatofilho@586: renatofilho@586: int renatofilho@586: main (int argc, char** argv) renatofilho@586: { renatofilho@586: GMencoder *coder; renatofilho@586: GIOChannel *ch; renatofilho@586: renatofilho@586: g_type_init (); renatofilho@586: gst_init (&argc, &argv); renatofilho@586: renatofilho@586: g_set_prgname ("gmemcoder"); renatofilho@586: renatofilho@586: coder = g_mencoder_new (); renatofilho@586: ch = g_io_channel_unix_new (0); renatofilho@586: renatofilho@586: #ifdef FILE_OUT renatofilho@586: int fd = open (argv[2], O_WRONLY | O_CREAT | O_TRUNC); renatofilho@586: g_debug ("FD %d", fd); renatofilho@586: g_mencoder_setup_stream (coder, argv[1], 320, 288, fd); renatofilho@586: #else renatofilho@586: g_mencoder_setup_stream (coder, argv[1], 320, 288, atoi (argv[2])); renatofilho@586: #endif renatofilho@586: renatofilho@586: mainloop = g_main_loop_new (NULL, FALSE); renatofilho@586: g_io_add_watch (ch, G_IO_IN, _io_channel_cb, coder); renatofilho@586: renatofilho@586: renatofilho@586: g_signal_connect (G_OBJECT (coder), renatofilho@586: "ready", renatofilho@586: G_CALLBACK (_mencoder_ready_cb), renatofilho@586: NULL); renatofilho@586: renatofilho@586: g_signal_connect (G_OBJECT (coder), renatofilho@586: "eos", renatofilho@586: G_CALLBACK (_mencoder_eos_cb), renatofilho@586: mainloop); renatofilho@586: renatofilho@586: g_signal_connect (G_OBJECT (coder), renatofilho@586: "error", renatofilho@586: G_CALLBACK (_mencoder_error_cb), renatofilho@586: mainloop); renatofilho@586: renatofilho@586: g_main_loop_run (mainloop); renatofilho@586: renatofilho@586: #if FILE_OUT renatofilho@586: close (fd); renatofilho@586: #endif renatofilho@586: renatofilho@586: return 0; renatofilho@586: }