Modified in accordance to coding guidelines for header and C files.
[glsdk/dual-decode.git] / include / gst-controller.h
index cfe5a8c0fe8c0f1144d220d590e2eeec284f055d..28eaa8aa62c449367ea44f5cb24328c093650d61 100644 (file)
@@ -1,5 +1,5 @@
 /*                                                                              
- *  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>
 
-#define NANOSEC 1e9    
-#define SS 0
-#define MM 1
-#define HH 2
+
 /**
  *    @brief    Defines the callback function pointer types
  *     
@@ -60,6 +60,7 @@ typedef void (*LogFunc) (gpointer data, gchar * string, ...) G_GNUC_PRINTF(2,3);
 typedef void (*EOSFunc) (gpointer data);
 typedef void (*ErrorFunc) (gpointer data);
 
+
 /******************************************************************************
 
                             Structure Definitions
@@ -94,8 +95,7 @@ typedef struct Pipeline {
  *    @param drawArea2   Display in window2 
  *    @return   TRUE if success, FALSE otherwise.
 */
-gboolean DualDecode_playMedia (Pipeline *pipePtr, gchar *filename, gint64 position,
-                               GtkWidget *drawArea1, GtkWidget *drawArea2);
+gboolean DualDecode_playMedia (Pipeline *pipePtr, gchar *filename, gint64 position);
 
 /**
  *    @brief    Sets the pipeline to PAUSED state
@@ -124,10 +124,16 @@ gboolean DualDecode_stopMedia (Pipeline *pipePtr);
  *    @return Pipeline *pipe if success
               NULL if failure                                  
 */
+Pipeline * DualDecode_createPipeline ();
 
+/**                                                                             
+ *    @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_seekMedia(Pipeline *pipePtr, gint64 position);
 
-Pipeline * DualDecode_createPipeline ();
 
 /**                                                                             
  *    @brief                   destroy a Pipeline structure                              
@@ -142,5 +148,61 @@ void DualDecode_destroyPipeline (Pipeline *pipePtr);
 */
 GstState DualDecode_getMediaState (Pipeline *pipePtr);
 
-gboolean DualDecode_getMediaPosition (Pipeline *pipePtr, gdouble *seekScaleValue,
+/**                                                                             
+ *    @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);
+
+
+
+/******************************************************************************
+                               Macros
+
+ *****************************************************************************/
+#define NANOSEC 1e9    
+#define SS 0
+#define MM 1
+#define HH 2
+#define TIMEOUT 4000000000
+
+#endif /*__GST_CONTROLLER_H__*/