index 093f6a706039c10c9c6bca4a76e28f21be4cb754..37936543744e5660f82f1563a1de7c315caccb08 100644 (file)
--- a/include/gst-controller.h
+++ b/include/gst-controller.h
/*
- * Copyright (c) 2010-2011, Texas Instruments Incorporated
+ * Copyright (c) 2012-2013, Texas Instruments Incorporated
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
*
* @brief Defines the structures and function prototypes.
*/
+
+#ifndef __GST-CONTROLLER_H__
+#define __GST-CONTROLLER_H__
+#include <gtk/gtk.h>
+#include <gst/gst.h>
+
-
/**
- * @brief Defines the function pointer for error logging function of
- * a pipeline
+ * @brief Defines the callback function pointer types
*
*/
-typedef void (*LogFunc) (gpointer data, gchar * string, ...);
+typedef void (*LogFunc) (gpointer data, gchar * string, ...) G_GNUC_PRINTF(2,3);
+typedef void (*EOSFunc) (gpointer data);
+typedef void (*ErrorFunc) (gpointer data);
-/******************************************************************************
-
- Structure Definitions
-
-******************************************************************************/
-typedef struct Pipeline {
- /* GStreamer pipeline */
- GstElement *pipe;
- /* Logging function */
- LogFunc func;
- /* Signal for a pipeline */
- gulong busSignal;
-} Pipeline;
/******************************************************************************
/**
* @brief Sets the pipeline to PLAYING state.
- * @param pipe GStreamer pipeline
+ * @param pipePtr Pointer to Pipeline structure
* @param filename Uri of the file to be played
* @param Position Position from where the playing should start
* @param drawArea1 Display in window1
* @param drawArea2 Display in window2
* @return TRUE if success, FALSE otherwise.
*/
-gboolean DualDecode_playMedia (Pipeline *pipe, gchar *filename, gint position,
- GtkWidget *drawArea1, GtkWidget *drawArea2);
+gboolean DualDecode_playMedia (Pipeline *pipePtr, gchar *filename, gint64 position);
/**
* @brief Sets the pipeline to PAUSED state
- * @param pipe GStreamer pipeline
+ * @param pipePtr Pointer to Pipeline structure
* @return TRUE if success, FALSE otherwise
*/
-gboolean DualDecode_pauseMedia (Pipeline *pipe);
+gboolean DualDecode_pauseMedia (Pipeline *pipePtr);
/**
* @brief Resumes media playback for the pipeline
- * @param pipe GStreamer pipeline
+ * @param pipePtr Pointer to Pipeline structure
* @return TRUE if success, FALSE otherwise
*/
-gboolean DualDecode_resumeMedia (Pipeline *pipe);
+gboolean DualDecode_resumeMedia (Pipeline *pipePtr);
/**
* @brief Sets the pipeline to READY state
- * @param pipe GStreamer pipeline
+ * @param pipePtr Pointer to Pipeline structure
* @return TRUE if success, FALSE otherwise
*/
-gboolean DualDecode_stopMedia (Pipeline *pipe);
+gboolean DualDecode_stopMedia (Pipeline *pipePtr);
/**
* @brief Create a Pipeline structure
* @return Pipeline *pipe if success
NULL if failure
*/
-Pipeline * DualDecode createPipeline ();
+Pipeline * DualDecode_createPipeline ();
/**
- * @brief Sets the error logging function for the pipeline
- * @param pipe GStreamer pipeline
- * @param func LogFunc pointer
- * @param data User supplied data
+ * @brief Seek media position in the pipeline
+ * @param pipePtr Pointer to Pipeline structure
+ * @param position Position to be seeked
* @return TRUE if success, FALSE otherwise
*/
-gboolean DualDecode_setLogFunction (Pipeline *pipe, LogFunc func, gpointer data);
-
+gboolean DualDecode_seekMedia(Pipeline *pipePtr, gint64 position);
+
+/**
+ * @brief destroy a Pipeline structure
+ * @param pipePtr Pipeline structure
+*/
+void DualDecode_destroyPipeline (Pipeline *pipePtr);
+
+/**
+ * @brief Get state of the pipeline
+ * @param pipePtr Pipeline structure
+ * @return pipeline GstState
+*/
+GstState DualDecode_getMediaState (Pipeline *pipePtr);
+
+/**
+ * @brief Get media position in the pipeline
+ * @param pipePtr Pointer to Pipeline structure
+ * @param seekScaleValue Value of the seek scale bar
+ * @param timeLabelText Text to be displayed on the label.
+ * @return TRUE if success, FALSE otherwise
+*/
+gboolean DualDecode_getMediaPosition (Pipeline *pipePtr,
+ gdouble *seekScaleValue,
+ gchar **timeLabelText);
+/**
+ * @brief Switch decode mode from single to dual
+ * @param pipes Pointer to an array consisting of both the pipelines
+ * @param otherWindowSink Video sink of the other window
+ * @param thisWindow Index of the window where switch button is clicked
+ * @param otherWindow Index of the other window
+ * @param filename File to be played
+ * @return TRUE if success, FALSE otherwise
+*/
+gboolean DualDecode_singleToDual (Pipeline **pipes,
+ GstElement * otherWindowSink,
+ gint thisWindow, gint otherWindow,
+ gchar *filename);
+/**
+ * @brief Switch decode mode from dual to single
+ * @param pipes Pointer to an array consisting of both the pipelines
+ * @param otherWindowSink Video sink of the other window
+ * @param thisWindow Index of the window where switch button is clicked
+ * @param otherWindow Index of the other window
+ * @return TRUE if success, FALSE otherwise
+*/
+gboolean DualDecode_dualToSingle (Pipeline **pipes,
+ GstElement * otherWindowSink,
+ gint thisWindow, gint otherWindow);
+/**
+ * @brief Set video sinks of the pipeline
+ * @return TRUE if success, FALSE otherwise
+ * @param pipePtr Pointer to Pipeline structure
+ * @param sink0 First sink of the pipeline
+ * @param sink1 Second sink of the pipeline
+*/
+void DualDecode_setPipelineSink (Pipeline *pipePtr, GstElement *sink0,
+ GstElement *sink1);
+
+
+/******************************************************************************
+
+ Structure Definitions
+
+******************************************************************************/
+
+typedef struct Pipeline {
+ /* GStreamer pipeline */
+ GstElement *pipe;
+
+ /* callback functions */
+ LogFunc logFunc;
+ EOSFunc eosFunc;
+ ErrorFunc errFunc;
+
+ /* Signal for a pipeline */
+ gulong busSignal;
+} Pipeline;
+
+/******************************************************************************
+
+ Macros
+ *****************************************************************************/
+#define NANOSEC 1e9
+#define SS 0
+#define MM 1
+#define HH 2
+#define TIMEOUT 4000000000
+#endif /*__GST-CONTROLLER_H__*/