summaryrefslogtreecommitdiff
path: root/msmcobalt/mm-video-v4l2/vidc/vdec/inc/omx_swvdec_utils.h
diff options
context:
space:
mode:
Diffstat (limited to 'msmcobalt/mm-video-v4l2/vidc/vdec/inc/omx_swvdec_utils.h')
-rw-r--r--msmcobalt/mm-video-v4l2/vidc/vdec/inc/omx_swvdec_utils.h145
1 files changed, 145 insertions, 0 deletions
diff --git a/msmcobalt/mm-video-v4l2/vidc/vdec/inc/omx_swvdec_utils.h b/msmcobalt/mm-video-v4l2/vidc/vdec/inc/omx_swvdec_utils.h
new file mode 100644
index 0000000..cfd3676
--- /dev/null
+++ b/msmcobalt/mm-video-v4l2/vidc/vdec/inc/omx_swvdec_utils.h
@@ -0,0 +1,145 @@
+/**
+ * @copyright
+ *
+ * Copyright (c) 2015-2016, The Linux Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * * Neither the name of The Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ *
+ * @file
+ *
+ * omx_swvdec_utils.h
+ *
+ * @brief
+ *
+ * OMX software video decoder utility functions header.
+ */
+
+#ifndef _OMX_SWVDEC_UTILS_H_
+#define _OMX_SWVDEC_UTILS_H_
+
+#include <queue>
+#include <pthread.h>
+
+#include <cutils/log.h>
+
+extern unsigned int g_omx_swvdec_logmask;
+ ///< global OMX SwVdec logmask variable extern declaration
+
+void omx_swvdec_log_init();
+
+#define OMX_SWVDEC_LOGMASK_LOW 4 ///< 100: logmask for low priority logs
+#define OMX_SWVDEC_LOGMASK_HIGH 2 ///< 010: logmask for high priority logs
+#define OMX_SWVDEC_LOGMASK_ERROR 1 ///< 001: logmask for error priority logs
+
+#ifdef LOG_TAG
+#undef LOG_TAG
+#endif
+#define LOG_TAG "OMX_SWVDEC" ///< OMX SwVdec log tag
+
+/// low priority log message
+#define OMX_SWVDEC_LOG_LOW(string, ...) \
+ do { \
+ if (g_omx_swvdec_logmask & OMX_SWVDEC_LOGMASK_LOW) \
+ ALOGD("--- %s(): " string, __FUNCTION__, ##__VA_ARGS__); \
+ } while (0)
+
+/// high priority log message
+#define OMX_SWVDEC_LOG_HIGH(string, ...) \
+ do { \
+ if (g_omx_swvdec_logmask & OMX_SWVDEC_LOGMASK_HIGH) \
+ ALOGI("--- %s(): " string, __FUNCTION__, ##__VA_ARGS__); \
+ } while (0)
+
+/// error priority log message
+#define OMX_SWVDEC_LOG_ERROR(string, ...) \
+ do { \
+ if (g_omx_swvdec_logmask & OMX_SWVDEC_LOGMASK_ERROR) \
+ ALOGE("!!! %s(): " string, __FUNCTION__, ##__VA_ARGS__); \
+ } while (0)
+
+/// high priority log message for OMX SwVdec API calls
+#define OMX_SWVDEC_LOG_API(string, ...) \
+ do { \
+ if (g_omx_swvdec_logmask & OMX_SWVDEC_LOGMASK_HIGH) \
+ ALOGI(">>> %s(): " string, __FUNCTION__, ##__VA_ARGS__); \
+ } while (0)
+
+/// high priority log message for OMX SwVdec callbacks
+#define OMX_SWVDEC_LOG_CALLBACK(string, ...) \
+ do { \
+ if (g_omx_swvdec_logmask & OMX_SWVDEC_LOGMASK_HIGH) \
+ ALOGI("<<< %s(): " string, __FUNCTION__, ##__VA_ARGS__); \
+ } while (0)
+
+/// OMX SwVdec event information structure
+typedef struct {
+ unsigned long event_id; ///< event ID
+ unsigned long event_param1; ///< event parameter 1
+ unsigned long event_param2; ///< event parameter 2
+} OMX_SWVDEC_EVENT_INFO;
+
+/// OMX SwVdec queue class
+class omx_swvdec_queue
+{
+public:
+ omx_swvdec_queue();
+ ~omx_swvdec_queue();
+
+ void push(OMX_SWVDEC_EVENT_INFO *p_event_info);
+ bool pop(OMX_SWVDEC_EVENT_INFO *p_event_info);
+
+private:
+ std::queue<OMX_SWVDEC_EVENT_INFO> m_queue; ///< queue
+ pthread_mutex_t m_mutex; ///< mutex
+};
+
+#define DIAG_FILE_PATH "/data/misc/media" ///< file path
+
+/// OMX SwVdec diagnostics class
+class omx_swvdec_diag
+{
+public:
+ omx_swvdec_diag();
+ ~omx_swvdec_diag();
+
+ void dump_ip(unsigned char *p_buffer, unsigned int filled_length);
+ void dump_op(unsigned char *p_buffer,
+ unsigned int width,
+ unsigned int height,
+ unsigned int stride,
+ unsigned int scanlines);
+
+private:
+ unsigned int m_dump_ip; ///< dump input bitstream
+ unsigned int m_dump_op; ///< dump output YUV
+
+ char *m_filename_ip; ///< input filename string
+ char *m_filename_op; ///< output filename string
+
+ FILE *m_file_ip; ///< input file handle
+ FILE *m_file_op; ///< output file handle
+};
+
+#endif // #ifndef _OMX_SWVDEC_UTILS_H_