tests: selectable audio format/container in test4

now users can select the desired rendering audio format and
container through --aformat and --format, like in ges-launch.
This commit is contained in:
Luis de Bethencourt 2011-07-01 19:30:01 +02:00
parent 882342906f
commit db58dc1569

View file

@ -20,28 +20,32 @@
#include <ges/ges.h> #include <ges/ges.h>
#include <gst/pbutils/encoding-profile.h> #include <gst/pbutils/encoding-profile.h>
GstEncodingProfile *make_ogg_vorbis_profile (void); GstEncodingProfile *make_encoding_profile (gchar * audio, gchar * container);
/* This example will take a series of files and create a audio-only timeline /* This example will take a series of files and create a audio-only timeline
* containing the first second of each file and render it to the output uri * containing the first second of each file and render it to the output uri
* using ogg/vorbis */ * using ogg/vorbis */
/* make_ogg_vorbis_profile: /* make_encoding_profile
* simple method creating a ogg/vorbis encoding profile. This is here in * simple method creating an encoding profile. This is here in
* order not to clutter the main function. */ * order not to clutter the main function. */
GstEncodingProfile * GstEncodingProfile *
make_ogg_vorbis_profile (void) make_encoding_profile (gchar * audio, gchar * container)
{ {
GstEncodingContainerProfile *profile; GstEncodingContainerProfile *profile;
GstEncodingProfile *stream;
GstCaps *caps; GstCaps *caps;
caps = gst_caps_from_string ("application/ogg"); caps = gst_caps_from_string (container);
profile = gst_encoding_container_profile_new ("Ogg audio", NULL, caps, NULL); profile =
gst_encoding_container_profile_new ((gchar *) "ges-test4", NULL, caps,
NULL);
gst_caps_unref (caps); gst_caps_unref (caps);
caps = gst_caps_from_string ("audio/x-vorbis"); caps = gst_caps_from_string (audio);
gst_encoding_container_profile_add_profile (profile, (GstEncodingProfile *) stream = (GstEncodingProfile *)
gst_encoding_audio_profile_new (caps, NULL, NULL, 1)); gst_encoding_audio_profile_new (caps, NULL, NULL, 0);
gst_encoding_container_profile_add_profile (profile, stream);
gst_caps_unref (caps); gst_caps_unref (caps);
return (GstEncodingProfile *) profile; return (GstEncodingProfile *) profile;
@ -56,8 +60,29 @@ main (int argc, gchar ** argv)
GESTimelineLayer *layer; GESTimelineLayer *layer;
GMainLoop *mainloop; GMainLoop *mainloop;
GstEncodingProfile *profile; GstEncodingProfile *profile;
gchar *container = (gchar *) "application/ogg";
gchar *audio = (gchar *) "audio/x-vorbis";
gchar *output_uri; gchar *output_uri;
guint i; guint i;
GError *err = NULL;
GOptionEntry options[] = {
{"format", 'f', 0, G_OPTION_ARG_STRING, &container,
"Container format", "<GstCaps>"},
{"aformat", 'a', 0, G_OPTION_ARG_STRING, &audio,
"Audio format", "<GstCaps>"},
{NULL}
};
GOptionContext *ctx;
ctx = g_option_context_new ("- renders a sequence of audio files.");
g_option_context_add_main_entries (ctx, options, NULL);
g_option_context_add_group (ctx, gst_init_get_option_group ());
if (!g_option_context_parse (ctx, &argc, &argv, &err)) {
g_printerr ("Error initializing: %s\n", err->message);
g_option_context_free (ctx);
return -1;
}
if (argc < 3) { if (argc < 3) {
g_print ("Usage: %s <output uri> <list of audio files>\n", argv[0]); g_print ("Usage: %s <output uri> <list of audio files>\n", argv[0]);
@ -119,7 +144,7 @@ main (int argc, gchar ** argv)
} else { } else {
output_uri = g_strdup_printf ("file://%s", argv[1]); output_uri = g_strdup_printf ("file://%s", argv[1]);
} }
profile = make_ogg_vorbis_profile (); profile = make_encoding_profile (audio, container);
if (!ges_timeline_pipeline_set_render_settings (pipeline, output_uri, if (!ges_timeline_pipeline_set_render_settings (pipeline, output_uri,
profile)) profile))
return -1; return -1;