gmyth-stream/gmemcoder/src/main.c
branchtrunk
changeset 759 6620b7037407
parent 754 cb885ee44618
child 760 36b8564d10e6
     1.1 --- a/gmyth-stream/gmemcoder/src/main.c	Thu Jun 14 20:40:47 2007 +0100
     1.2 +++ b/gmyth-stream/gmemcoder/src/main.c	Tue Jun 26 14:32:33 2007 +0100
     1.3 @@ -81,6 +81,7 @@
     1.4      gchar         **aopts;
     1.5      gchar         **files;
     1.6      gint            i;
     1.7 +    gboolean      ret;
     1.8  
     1.9      GOptionContext *context;
    1.10      static const GOptionEntry options[] = {
    1.11 @@ -150,40 +151,48 @@
    1.12      coder = g_mencoder_new();
    1.13      ch = g_io_channel_unix_new(0);
    1.14  
    1.15 -    aopts = g_strsplit(audio_opts, ",", 0);
    1.16 -    vopts = g_strsplit(video_opts, ",", 0);
    1.17 +    if (audio_opts != NULL)
    1.18 +        aopts = g_strsplit(audio_opts, ",", 0);
    1.19 +    else
    1.20 +        aopts = NULL;
    1.21  
    1.22 -    g_mencoder_setup_stream(coder, mux_name,
    1.23 -                            video_encode, vopts, video_fps,
    1.24 -                            video_rate, video_width, video_height,
    1.25 -                            audio_encode, aopts, audio_rate, output_uri);
    1.26 +    if (video_opts != NULL)
    1.27 +        vopts = g_strsplit(video_opts, ",", 0);
    1.28 +    else
    1.29 +        vopts = NULL;
    1.30  
    1.31 -    files = g_strsplit(input_file, ",", 0);
    1.32 -    for (i = 0; i < g_strv_length(files); i++) {
    1.33 -        if (!g_mencoder_append_uri(coder, files[i])) {
    1.34 -            g_debug("Invalid uri: %s", files[i]);
    1.35 +    
    1.36 +    ret = g_mencoder_setup_stream(coder, mux_name,
    1.37 +                                  video_encode, vopts, video_fps,
    1.38 +                                  video_rate, video_width, video_height,
    1.39 +                                  audio_encode, aopts, audio_rate, output_uri);
    1.40 +
    1.41 +    if (ret == TRUE) {
    1.42 +        files = g_strsplit(input_file, ",", 0);
    1.43 +        for (i = 0; i < g_strv_length(files); i++) {
    1.44 +            if (!g_mencoder_append_uri(coder, files[i])) {
    1.45 +                g_debug("Invalid uri: %s", files[i]);
    1.46 +            }
    1.47          }
    1.48 +        g_strfreev(files);
    1.49      }
    1.50  
    1.51 -    g_strfreev(files);
    1.52      g_strfreev(aopts);
    1.53      g_strfreev(vopts);
    1.54  
    1.55  
    1.56 -    g_io_add_watch(ch, G_IO_IN, _io_channel_cb, coder);
    1.57 +    if (ret == TRUE) {
    1.58 +        g_io_add_watch(ch, G_IO_IN, _io_channel_cb, coder);
    1.59 +        g_signal_connect(G_OBJECT(coder),
    1.60 +                         "eos", G_CALLBACK(_mencoder_eos_cb), mainloop);
    1.61  
    1.62 -    g_signal_connect(G_OBJECT(coder),
    1.63 -                     "eos", G_CALLBACK(_mencoder_eos_cb), mainloop);
    1.64 +        g_signal_connect(G_OBJECT(coder),
    1.65 +                         "error", G_CALLBACK(_mencoder_error_cb), mainloop);
    1.66  
    1.67 -    g_signal_connect(G_OBJECT(coder),
    1.68 -                     "error", G_CALLBACK(_mencoder_error_cb), mainloop);
    1.69 +        g_mencoder_play_stream(coder);
    1.70 +        g_main_loop_run(mainloop);
    1.71 +    }
    1.72  
    1.73 -    g_mencoder_play_stream(coder);
    1.74 -
    1.75 -    g_debug("RUNNING..");
    1.76 -    g_main_loop_run(mainloop);
    1.77 -    g_debug("DONE");
    1.78      g_object_unref(coder);
    1.79 -
    1.80      return 0;
    1.81  }