<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >The GOption interface</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79;charset=UTF-8"><LINK REL="HOME" TITLE="GStreamer Application Development Manual (0.10.36)" HREF="index.html"><LINK REL="UP" TITLE="Initializing GStreamer" HREF="chapter-init.html"><LINK REL="PREVIOUS" TITLE="Initializing GStreamer" HREF="chapter-init.html"><LINK REL="NEXT" TITLE="Elements" HREF="chapter-elements.html"></HEAD ><BODY CLASS="sect1" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" ><SPAN CLASS="application" >GStreamer</SPAN > Application Development Manual (0.10.36)</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="chapter-init.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" >Chapter 4. Initializing <SPAN CLASS="application" >GStreamer</SPAN ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="chapter-elements.html" ACCESSKEY="N" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="sect1" ><H1 CLASS="sect1" ><A NAME="AEN347" >4.2. The GOption interface</A ></H1 ><P > You can also use a GOption table to initialize your own parameters as shown in the next example: </P ><DIV CLASS="example" ><A NAME="ex-goption-c" ></A ><P ><B >Example 4-2. Initialisation using the GOption interface</B ></P ><PRE CLASS="programlisting" > #include <gst/gst.h> int main (int argc, char *argv[]) { gboolean silent = FALSE; gchar *savefile = NULL; GOptionContext *ctx; GError *err = NULL; GOptionEntry entries[] = { { "silent", 's', 0, G_OPTION_ARG_NONE, &silent, "do not output status information", NULL }, { "output", 'o', 0, G_OPTION_ARG_STRING, &savefile, "save xml representation of pipeline to FILE and exit", "FILE" }, { NULL } }; /* we must initialise the threading system before using any * other GLib funtion, such as g_option_context_new() */ if (!g_thread_supported ()) g_thread_init (NULL); ctx = g_option_context_new ("- Your application"); g_option_context_add_main_entries (ctx, entries, NULL); g_option_context_add_group (ctx, gst_init_get_option_group ()); if (!g_option_context_parse (ctx, &argc, &argv, &err)) { g_print ("Failed to initialize: %s\n", err->message); g_error_free (err); return 1; } printf ("Run me with --help to see the Application options appended.\n"); return 0; } </PRE ></DIV ><P > As shown in this fragment, you can use a <A HREF="http://developer.gnome.org/doc/API/2.0/glib/glib-Commandline-option-parser.html" TARGET="_top" >GOption</A > table to define your application-specific command line options, and pass this table to the GLib initialization function along with the option group returned from the function <CODE CLASS="function" >gst_init_get_option_group</CODE >. Your application options will be parsed in addition to the standard <SPAN CLASS="application" >GStreamer</SPAN > options. </P ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="chapter-init.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="chapter-elements.html" ACCESSKEY="N" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Initializing <SPAN CLASS="application" >GStreamer</SPAN ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="chapter-init.html" ACCESSKEY="U" >Up</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >Elements</TD ></TR ></TABLE ></DIV ></BODY ></HTML >