+/**
+ * Returns the specified output module's ID.
+ *
+ * @since 0.4.0
+ */
+SR_API const char *sr_output_id_get(const struct sr_output_module *o)
+{
+ if (!o) {
+ sr_err("Invalid output module NULL!");
+ return NULL;
+ }
+
+ return o->id;
+}
+
+/**
+ * Returns the specified output module's name.
+ *
+ * @since 0.4.0
+ */
+SR_API const char *sr_output_name_get(const struct sr_output_module *o)
+{
+ if (!o) {
+ sr_err("Invalid output module NULL!");
+ return NULL;
+ }
+
+ return o->name;
+}
+
+/**
+ * Returns the specified output module's description.
+ *
+ * @since 0.4.0
+ */
+SR_API const char *sr_output_description_get(const struct sr_output_module *o)
+{
+ if (!o) {
+ sr_err("Invalid output module NULL!");
+ return NULL;
+ }
+
+ return o->desc;
+}
+
+/**
+ * Return the output module with the specified ID, or NULL if no module
+ * with that id is found.
+ *
+ * @since 0.4.0
+ */
+SR_API const struct sr_output_module *sr_output_find(char *id)
+{
+ int i;
+
+ for (i = 0; output_module_list[i]; i++) {
+ if (!strcmp(output_module_list[i]->id, id))
+ return output_module_list[i];
+ }
+
+ return NULL;
+}
+
+/**
+ * Returns a NULL-terminated array of struct sr_option, or NULL if the
+ * module takes no options.
+ *
+ * Each call to this function must be followed by a call to
+ * sr_output_options_free().
+ *
+ * @since 0.4.0
+ */
+SR_API const struct sr_option *sr_output_options_get(const struct sr_output_module *o)
+{
+
+ if (!o || !o->options)
+ return NULL;
+
+ return o->options(FALSE);
+}
+
+/**
+ * After a call to sr_output_options_get(), this function cleans up all
+ * the resources allocated by that call.
+ *
+ * @since 0.4.0
+ */
+SR_API void sr_output_options_free(const struct sr_output_module *o)