Merge remote-tracking branch 'other/master'
[glsdk/libdce2.git] / libdce.h
index c64456a042f48ffb604818d6cd7b13df5f7ff97f..ea63e66938bc522cbe2d9a284b237a6047cc74ac 100644 (file)
--- a/libdce.h
+++ b/libdce.h
 #ifndef __LIBDCE_H__
 #define __LIBDCE_H__
 
-
+#define xdc_target_types__ gnu/targets/std.h
+#include <xdc/std.h>
 #include <ti/sdo/ce/Engine.h>
 #include <ti/sdo/ce/video3/viddec3.h>
 #include <ti/sdo/ce/video2/videnc2.h>
 
+#if defined(BUILDOS_LINUX)
+/* avoid some messy stuff in xdc/std.h which leads to gcc issues */
+#define xdc__ARGTOPTR
+#define xdc__ARGTOFXN
+#endif /* BUILDOS_LINUX */
 
-/* DCE Error Types */
+/********************************** DCE Error Types **********************************/
 typedef enum dce_error_status {
     DCE_EOK = 0,
     DCE_EXDM_FAIL = -1,
@@ -47,33 +53,82 @@ typedef enum dce_error_status {
     DCE_EXDM_UNSUPPORTED = -3,
     DCE_EIPC_CREATE_FAIL = -4,
     DCE_EIPC_CALL_FAIL = -5,
-    DCE_EINVALID_INPUT = -6
+    DCE_EINVALID_INPUT = -6,
+    DCE_EOMAPDRM_FAIL = -7,
+    DCE_ESEMAPHORE_FAIL = -8
 } dce_error_status;
 
-
-/* other than the codec-engine API, you must use the following two functions
- * to allocate the data structures passed to codec-engine APIs (other than the
- * raw input/output buffers which should be passed as virtual addresses in
- * TILER space
+/***************************** Memory Allocation/Free APIs *****************************/
+/*=====================================================================================*/
+/** dce_alloc               : Allocate the Data structures passed to codec-engine APIs
+ *                             except Input/Output buffers.
+ *
+ * @ param sz    [in]       : Size of memory to be allocated.
+ * @ return                 : Pointer to allocated memory.
  */
 void *dce_alloc(int sz);
+
+/*=====================================================================================*/
+/** dce_free                : Free the Data structures passed to codec-engine APIs
+ *                             except Input/Output buffers.
+ *
+ * @ param ptr   [in]       : Pointer to allocated memory.
+ */
 void dce_free(void *ptr);
 
 
-#if defined(BUILDOS_GLP)
-void dce_set_fd(int fd);
-int dce_get_fd();
+/*********************************** APIs for Linux ***********************************/
+/************************ Initialization/Deinitialization APIs ************************/
+/*=====================================================================================*/
+/** dce_init                : Initialize DCE. Only Linux applications are expected to call.
+ *
+ * @ return                 : Pointer to omap_device structure.
+ */
+void *dce_init(void);
 
-/* avoid some messy stuff in xdc/std.h which leads to gcc issues */
-#define xdc__ARGTOPTR
-#define xdc__ARGTOFXN
+/*===============================================================*/
+/** dce_deinit              : Deinitialize DCE. Only Linux applications are expected to call.
+ *
+ * @ param dev    [in]      : Pointer to omap_device structure.
+ */
+void dce_deinit(void *dev);
+
+/************************ Input/Output Buffer Lock/Unlock APIs ************************/
+/*=====================================================================================*/
+/** dce_buf_lock            : Pin or lock Tiler Buffers which would be used by the codec
+ *                            as reference buffers. API is specific to GLP.
+ *
+ * @ param num    [in]      : Number of buffers to be locked.
+ * @ param handle [in]      : Pointer to array of DMA Buf FDs of the buffers to be locked.
+ * @ return                 : DCE error status is returned.
+ */
+int dce_buf_lock(int num, size_t *handle);
+
+/*=====================================================================================*/
+/** dce_buf_unlock          : Unpin or unlock Tiler Buffers which were locked to be used
+ *                            by the codec as reference buffers. API is specific to GLP.
+ *
+ * @ param num    [in]      : Number of buffers to be locked.
+ * @ param handle [in]      : Pointer to array of DMA Buf FDs of the buffers to be locked.
+ * @ return                 : DCE error status is returned.
+ */
+int dce_buf_unlock(int num, size_t *handle);
 
-struct omap_device   *dce_init(void);
-void dce_deinit(struct omap_device *dev);
+/******************************* OMAPDRM Get/Set FD APIs *******************************/
+/*=====================================================================================*/
+/** dce_get_fd              : Get OMAP DRM File Descriptor.
+ *
+ * @ return                 : OMAP DRM File Descriptor.
+ */
+int dce_get_fd();
+
+/*=====================================================================================*/
+/** dce_set_fd              : Set OMAP DRM File Descriptor.
+ *
+ * @ param fd     [in]      : OMAP DRM File Descriptor.
+ */
+void dce_set_fd(int fd);
 
-#define XDM_MEMTYPE_BO 10
-#define XDM_MEMTYPE_BO_OFFSET 11
-#endif /* BUILDOS_GLP */
 
 #endif /* __LIBDCE_H__ */