Ejemplo n.º 1
0
static void
byzanz_session_constructed (GObject *object)
{
  ByzanzSession *session = BYZANZ_SESSION (object);
  GOutputStream *stream;

  session->recorder = byzanz_recorder_new (session->window, &session->area);
  g_signal_connect (session->recorder, "notify::recording", 
      G_CALLBACK (byzanz_session_recorder_notify_cb), session);
  g_signal_connect (session->recorder, "image", 
      G_CALLBACK (byzanz_session_recorder_image_cb), session);

  /* FIXME: make async */
  stream = G_OUTPUT_STREAM (g_file_replace (session->file, NULL, 
        FALSE, G_FILE_CREATE_REPLACE_DESTINATION, session->cancellable, &session->error));
  if (stream != NULL) {
    session->encoder = byzanz_encoder_new (session->encoder_type, 
        byzanz_queue_get_input_stream (session->queue),
        stream, session->record_audio, session->cancellable);
    g_signal_connect (session->encoder, "notify", 
        G_CALLBACK (byzanz_session_encoder_notify_cb), session);
    g_object_unref (stream);
    if (byzanz_encoder_get_error (session->encoder))
      byzanz_session_set_error (session, byzanz_encoder_get_error (session->encoder));
  }
  byzanz_serialize_header (byzanz_queue_get_output_stream (session->queue),
      session->area.width, session->area.height, session->cancellable, &session->error);

  if (G_OBJECT_CLASS (byzanz_session_parent_class)->constructed)
    G_OBJECT_CLASS (byzanz_session_parent_class)->constructed (object);
}
Ejemplo n.º 2
0
int
main (int argc, char **argv)
{
  GOptionContext* context;
  GError *error = NULL;
  GFile *infile;
  GFile *outfile;
  GInputStream *instream;
  GOutputStream *outstream;
  GMainLoop *loop;
  ByzanzEncoder *encoder;
  
  g_set_prgname (argv[0]);
#ifdef GETTEXT_PACKAGE
  bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
  bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
  textdomain (GETTEXT_PACKAGE);
#endif

  context = g_option_context_new (_("process a Byzanz debug recording"));
#ifdef GETTEXT_PACKAGE
  g_option_context_set_translation_domain(context, GETTEXT_PACKAGE);
#endif

  g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE);
  if (!g_option_context_parse (context, &argc, &argv, &error)) {
    g_print (_("Wrong option: %s\n"), error->message);
    usage ();
    g_error_free (error);
    return 1;
  }
  if (argc != 3) {
    usage ();
    return 0;
  }

  infile = g_file_new_for_commandline_arg (argv[1]);
  outfile = g_file_new_for_commandline_arg (argv[2]);
  loop = g_main_loop_new (NULL, FALSE);

  instream = G_INPUT_STREAM (g_file_read (infile, NULL, &error));
  if (instream == NULL) {
    g_print ("%s\n", error->message);
    g_error_free (error);
    return 1;
  }
  outstream = G_OUTPUT_STREAM (g_file_replace (outfile, NULL, 
        FALSE, G_FILE_CREATE_REPLACE_DESTINATION, NULL, &error));
  if (outstream == NULL) {
    g_print ("%s\n", error->message);
    g_error_free (error);
    return 1;
  }
  encoder = byzanz_encoder_new (byzanz_encoder_get_type_from_file (outfile),
      instream, outstream, FALSE, NULL);
  
  g_signal_connect (encoder, "notify", G_CALLBACK (encoder_notify), loop);
  
  g_main_loop_run (loop);

  g_main_loop_unref (loop);
  g_object_unref (encoder);
  g_object_unref (instream);
  g_object_unref (outstream);
  g_object_unref (infile);
  g_object_unref (outfile);

  return 0;
}