]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - glsdk/dual-decode.git/blobdiff - include/gst-controller.h
Modified in acordance to coding guidelines.
[glsdk/dual-decode.git] / include / gst-controller.h
index c35bdc878c8daa153c820ce459da80043305efd5..37936543744e5660f82f1563a1de7c315caccb08 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>
-       
+
+
 /**
  *    @brief    Defines the callback function pointer types
  *     
@@ -56,24 +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
-       
-******************************************************************************/
-
-typedef struct Pipeline {
-    /* GStreamer pipeline */
-    GstElement *pipe;
-
-    /* callback functions */
-    LogFunc  logFunc;
-       EOSFunc eosFunc;
-       ErrorFunc errFunc;
 
-    /* Signal for a pipeline */
-    gulong busSignal;
-} Pipeline;
 
 /****************************************************************************** 
                                                                                 
@@ -90,8 +77,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
@@ -122,6 +108,15 @@ gboolean DualDecode_stopMedia (Pipeline *pipePtr);
 */
 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);
+
+
 /**                                                                             
  *    @brief                   destroy a Pipeline structure                              
  *    @param pipePtr   Pipeline structure                                     
@@ -133,4 +128,81 @@ void DualDecode_destroyPipeline (Pipeline *pipePtr);
  *    @param pipePtr   Pipeline structure                                     
  *       @return                       pipeline GstState
 */
-GstState DualDecode_getMediaState(Pipeline *pipePtr);
+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__*/