Merge "mm-video: vidc: Map Encoder input buffer aligned to 16" into jb
diff --git a/mm-core/Android.mk b/mm-core/Android.mk
old mode 100755
new mode 100644
index 941e0ce..d9b7319
--- a/mm-core/Android.mk
+++ b/mm-core/Android.mk
@@ -14,6 +14,8 @@
ifeq ($(TARGET_BOARD_PLATFORM),msm7627a)
MM_CORE_TARGET = 7627A
+else ifeq ($(TARGET_BOARD_PLATFORM),msm7630_surf)
+MM_CORE_TARGET = 7630
else ifeq ($(TARGET_BOARD_PLATFORM),msm8660)
MM_CORE_TARGET = 8660
#Comment out following line to disable drm.play component
diff --git a/mm-core/src/7630/qc_registry_table.c b/mm-core/src/7630/qc_registry_table.c
new file mode 100644
index 0000000..169110f
--- /dev/null
+++ b/mm-core/src/7630/qc_registry_table.c
@@ -0,0 +1,746 @@
+/*--------------------------------------------------------------------------
+Copyright (c) 2009,2012 Code Aurora Forum. 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 Code Aurora 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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.
+--------------------------------------------------------------------------*/
+/*============================================================================
+ O p e n M A X w r a p p e r s
+ O p e n M A X C o r e
+
+ This module contains the registry table for the QCOM's OpenMAX core.
+
+*//*========================================================================*/
+
+#include "qc_omx_core.h"
+
+omx_core_cb_type core[] =
+{
+ {
+ "OMX.qcom.video.decoder.avc",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxVdec.so",
+ {
+ "video_decoder.avc"
+ }
+ },
+ {
+ "OMX.qcom.video.decoder.mpeg4",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxVdec.so",
+ {
+ "video_decoder.mpeg4"
+ }
+ },
+ {
+ "OMX.qcom.video.decoder.vc1",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxVdec.so",
+ {
+ "video_decoder.vc1"
+ }
+ },
+ {
+ "OMX.qcom.video.decoder.h263",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxVdec.so",
+ {
+ "video_decoder.h263"
+ }
+ },
+ {
+ "OMX.qcom.video.decoder.divx4",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxVdec.so",
+ {
+ "video_decoder.divx"
+ }
+ },
+ {
+ "OMX.qcom.video.decoder.divx",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxVdec.so",
+ {
+ "video_decoder.divx"
+ }
+ },
+ {
+ "OMX.qcom.video.encoder.mpeg4",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxVenc.so",
+ {
+ "video_encoder.mpeg4"
+ }
+ },
+ {
+ "OMX.qcom.video.encoder.h263",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxVenc.so",
+ {
+ "video_encoder.h263",
+ }
+ },
+ {
+ "OMX.qcom.video.encoder.avc",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxVenc.so",
+ {
+ "video_encoder.avc"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.mp3",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ #ifdef _ANDROID_
+ "libOmxMp3Dec.so",
+ #else
+ "libmm-adec-omxmp3.so.1",
+ #endif
+ {
+ "audio_decoder.mp3"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.aac",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ #ifdef _ANDROID_
+ "libOmxAacDec.so",
+ #else
+ "libmm-adec-omxaac.so.1",
+ #endif
+ {
+ "audio_decoder.aac"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.tunneled.mp3",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ #ifdef _ANDROID_
+ "libOmxMp3Dec.so",
+ #else
+ "libmm-adec-omxmp3.so.1",
+ #endif
+ {
+ "audio_decoder.mp3"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.tunneled.aac",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ #ifdef _ANDROID_
+ "libOmxAacDec.so",
+ #else
+ "libmm-adec-omxaac.so.1",
+ #endif
+ {
+ "audio_decoder.aac"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.amrnb",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ #ifdef _ANDROID_
+ "libOmxAmrDec.so",
+ #else
+ "libmm-adec-omxamr.so.1",
+ #endif
+ {
+ "audio_decoder.amrnb"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.tunneled.amrnb",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ #ifdef _ANDROID_
+ "libOmxAmrDec.so",
+ #else
+ "libmm-adec-omxamr.so.1",
+ #endif
+ {
+ "audio_decoder.amrnb"
+ }
+ },
+ {
+ "OMX.qcom.audio.encoder.tunneled.aac",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ #ifdef _ANDROID_
+ "libOmxAacEnc.so",
+ #else
+ "libmm-aenc-omxaac.so.1",
+ #endif
+ {
+ "audio_encoder.aac"
+ }
+ },
+ {
+ "OMX.qcom.audio.encoder.aac",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ #ifdef _ANDROID_
+ "libOmxAacEnc.so",
+ #else
+ "libmm-aenc-omxaac.so.1",
+ #endif
+ {
+ "audio_encoder.aac"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.Qcelp13Hw",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ #ifdef _ANDROID_
+ "libOmxQcelpHwDec.so",
+ #else
+ "libmm-adec-omxQcelp13.so.1",
+ #endif
+ {
+ "audio_decoder.Qcelp13"
+ }
+ },
+#ifdef _ANDROID_
+ {
+ "OMX.qcom.audio.decoder.Qcelp13",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxQcelp13Dec.so",
+ {
+ "audio_decoder.Qcelp13"
+ }
+ },
+#endif
+ {
+ "OMX.qcom.audio.decoder.tunneled.Qcelp13Hw",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ #ifdef _ANDROID_
+ "libOmxQcelpHwDec.so",
+ #else
+ "libmm-adec-omxQcelp13.so.1",
+ #endif
+ {
+ "audio_decoder.Qcelp13"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.evrc",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ #ifdef _ANDROID_
+ "libOmxEvrcDec.so",
+ #else
+ "libmm-adec-omxevrc.so.1",
+ #endif
+ {
+ "audio_decoder.evrc"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.tunneled.evrc",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ #ifdef _ANDROID_
+ "libOmxEvrcDec.so",
+ #else
+ "libmm-adec-omxevrc.so.1",
+ #endif
+ {
+ "audio_decoder.evrc"
+ }
+ },
+ {
+ "OMX.qcom.audio.encoder.tunneled.amr",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ #ifdef _ANDROID_
+ "libOmxAmrEnc.so",
+ #else
+ "libmm-aenc-omxamr.so.1",
+ #endif
+ {
+ "audio_encoder.amr"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.wma",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ #ifdef _ANDROID_
+ "libOmxWmaDec.so",
+ #else
+ "libmm-adec-omxwma.so.1",
+ #endif
+ {
+ "audio_decoder.wma"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.tunneled.wma",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ #ifdef _ANDROID_
+ "libOmxWmaDec.so",
+ #else
+ "libmm-adec-omxwma.so.1",
+ #endif
+ {
+ "audio_decoder.wma"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.wma10Pro",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ #ifdef _ANDROID_
+ "libOmxWmaDec.so",
+ #else
+ "libmm-adec-omxwma.so.1",
+ #endif
+ {
+ "audio_decoder.wma"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.tunneled.wma10Pro",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ #ifdef _ANDROID_
+ "libOmxWmaDec.so",
+ #else
+ "libmm-adec-omxwma.so.1",
+ #endif
+ {
+ "audio_decoder.wma"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.amrwb",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ #ifdef _ANDROID_
+ "libOmxAmrwbDec.so",
+ #else
+ "libmm-adec-omxamrwb.so.1",
+ #endif
+ {
+ "audio_decoder.amrwb"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.tunneled.amrwb",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ #ifdef _ANDROID_
+ "libOmxAmrwbDec.so",
+ #else
+ "libmm-adec-omxamrwb.so.1",
+ #endif
+ {
+ "audio_decoder.amrwb"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.amrwbp",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ #ifdef _ANDROID_
+ "libOmxAmrwbDec.so",
+ #else
+ "libmm-adec-omxamrwb.so.1",
+ #endif
+ {
+ "audio_decoder.amrwbp"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.tunneled.amrwbp",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ #ifdef _ANDROID_
+ "libOmxAmrwbDec.so",
+ #else
+ "libmm-adec-omxamrwb.so.1",
+ #endif
+ {
+ "audio_decoder.amrwbp"
+ }
+ },
+ {
+ "OMX.qcom.audio.encoder.tunneled.qcelp13",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ #ifdef _ANDROID_
+ "libOmxQcelp13Enc.so",
+ #else
+ "libmm-aenc-omxqcelp13.so.1",
+ #endif
+ {
+ "audio_encoder.qcelp13"
+ }
+ },
+ {
+ "OMX.qcom.audio.encoder.qcelp13",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ #ifdef _ANDROID_
+ "libOmxQcelp13Enc.so",
+ #else
+ "libmm-aenc-omxqcelp13.so.1",
+ #endif
+ {
+ "audio_encoder.qcelp13"
+ }
+ },
+ {
+ "OMX.qcom.audio.encoder.tunneled.evrc",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ #ifdef _ANDROID_
+ "libOmxEvrcEnc.so",
+ #else
+ "libmm-aenc-omxevrc.so.1",
+ #endif
+ {
+ "audio_encoder.evrc"
+ }
+ },
+ {
+ "OMX.qcom.audio.encoder.evrc",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ #ifdef _ANDROID_
+ "libOmxEvrcEnc.so",
+ #else
+ "libmm-aenc-omxevrc.so.1",
+ #endif
+ {
+ "audio_encoder.evrc"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.adpcm",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ #ifdef _ANDROID_
+ "libOmxAdpcmDec.so",
+ #else
+ "libmm-adec-omxadpcm.so.1",
+ #endif
+ {
+ "audio_decoder.adpcm"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.tunneled.adpcm",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ #ifdef _ANDROID_
+ "libOmxAdpcmDec.so",
+ #else
+ "libmm-adec-omxadpcm.so.1",
+ #endif
+ {
+ "audio_decoder.adpcm"
+ }
+ }
+};
+
+const unsigned int SIZE_OF_CORE = sizeof(core) / sizeof(omx_core_cb_type);
+
+
diff --git a/mm-core/src/7630/qc_registry_table_android.c b/mm-core/src/7630/qc_registry_table_android.c
new file mode 100644
index 0000000..bc23fef
--- /dev/null
+++ b/mm-core/src/7630/qc_registry_table_android.c
@@ -0,0 +1,568 @@
+/*--------------------------------------------------------------------------
+Copyright (c) 2009,2011 Code Aurora Forum. 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 Code Aurora 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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.
+--------------------------------------------------------------------------*/
+/*============================================================================
+ O p e n M A X w r a p p e r s
+ O p e n M A X C o r e
+
+ This module contains the registry table for the QCOM's OpenMAX core.
+
+*//*========================================================================*/
+
+
+#include "qc_omx_core.h"
+#include "drmplay_version.h"
+
+omx_core_cb_type core[] =
+{
+ {
+ "OMX.qcom.video.decoder.avc",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxVdec.so",
+ {
+ "video_decoder.avc"
+ }
+ },
+ {
+ "OMX.qcom.video.decoder.mpeg4",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxVdec.so",
+ {
+ "video_decoder.mpeg4"
+ }
+ },
+ {
+ "OMX.qcom.video.decoder.vc1",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxVdec.so",
+ {
+ "video_decoder.vc1"
+ }
+ },
+ {
+ "OMX.qcom.video.decoder.wmv",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxVdec.so",
+ {
+ "video_decoder.vc1"
+ }
+ },
+ {
+ "OMX.qcom.video.decoder.h263",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxVdec.so",
+ {
+ "video_decoder.h263"
+ }
+ },
+ {
+ "OMX.qcom.video.decoder.divx4",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxVdec.so",
+ {
+ "video_decoder.divx"
+ }
+ },
+ {
+ "OMX.qcom.video.decoder.divx",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxVdec.so",
+ {
+ "video_decoder.divx"
+ }
+ },
+ {
+ "OMX.qcom.video.encoder.mpeg4",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxVenc.so",
+ {
+ "video_encoder.mpeg4"
+ }
+ },
+ {
+ "OMX.qcom.video.encoder.h263",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxVenc.so",
+ {
+ "video_encoder.h263"
+ }
+ },
+ {
+ "OMX.qcom.video.encoder.avc",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxVenc.so",
+ {
+ "video_encoder.avc"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.Qcelp13",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxQcelp13Dec.so",
+ {
+ "audio_decoder.Qcelp13"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.evrc",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxEvrcDec.so",
+ {
+ "audio_decoder.evrc"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.amrwbp",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxAmrwbDec.so",
+ {
+ "audio_decoder.amrwbp"
+ }
+ },
+ {
+ "drm.play" DRMPLAY_API_VERSION,
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libDrmPlay.so",
+ {
+ "drm.play" DRMPLAY_API_VERSION
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.wma",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxWmaDec.so",
+ {
+ "audio_decoder.wma"
+ }
+ },
+ {
+ "OMX.qcom.audio.encoder.evrc",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ #ifdef _ANDROID_
+ "libOmxEvrcEnc.so",
+ #else
+ "libmm-aenc-omxevrc.so.1",
+ #endif
+ {
+ "audio_encoder.evrc"
+ }
+ },
+ {
+ "OMX.qcom.audio.encoder.qcelp13",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ #ifdef _ANDROID_
+ "libOmxQcelp13Enc.so",
+ #else
+ "libmm-aenc-omxqcelp13.so.1",
+ #endif
+ {
+ "audio_encoder.qcelp13"
+ }
+ },
+#ifndef _ANDROID_
+ {
+ "OMX.qcom.audio.decoder.mp3",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxMp3Dec.so",
+ {
+ "audio_decoder.mp3"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.aac",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxAacDec.so",
+ {
+ "audio_decoder.aac"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.amrnb",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxAmrDec.so",
+ {
+ "audio_decoder.amrnb"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.amrwb",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxAmrwbDec.so",
+ {
+ "audio_decoder.amrwb"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.tunneled.mp3",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxMp3Dec.so",
+ {
+ "audio_decoder.mp3"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.tunneled.aac",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxAacDec.so",
+ {
+ "audio_decoder.aac"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.tunneled.amrnb",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxAmrDec.so",
+ {
+ "audio_decoder.amrnb"
+ }
+ },
+ {
+ "OMX.qcom.audio.encoder.tunneled.aac",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxAacEnc.so",
+ {
+ "audio_encoder.aac"
+ }
+ },
+ {
+ "OMX.qcom.audio.encoder.aac",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxAacEnc.so",
+ {
+ "audio_encoder.aac"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.tunneled.Qcelp13",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxQcelp13Dec.so",
+ {
+ "audio_decoder.Qcelp13"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.tunneled.evrc",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxEvrcDec.so",
+ {
+ "audio_decoder.evrc"
+ }
+ },
+ {
+ "OMX.qcom.audio.encoder.tunneled.amr",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxAmrEnc.so",
+ {
+ "audio_encoder.amr"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.tunneled.wma",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxWmaDec.so",
+ {
+ "audio_decoder.wma"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.tunneled.amrwb",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ }
+ NULL, // Shared object library handle
+ "libOmxAmrwbDec.so",
+ {
+ "audio_decoder.amrwb"
+ }
+ },
+ {
+ "OMX.qcom.audio.decoder.tunneled.amrwbp",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxAmrwbDec.so",
+ {
+ "audio_decoder.amrwbp"
+ }
+ }
+#endif
+};
+
+const unsigned int SIZE_OF_CORE = sizeof(core) / sizeof(omx_core_cb_type);
+
+
diff --git a/mm-video/vidc/vdec/Android.mk b/mm-video/vidc/vdec/Android.mk
index fda3dc2..c1e1335 100755
--- a/mm-video/vidc/vdec/Android.mk
+++ b/mm-video/vidc/vdec/Android.mk
@@ -74,6 +74,7 @@
libmm-vdec-inc += frameworks/native/include/media/openmax
libmm-vdec-inc += frameworks/native/include/media/hardware
libmm-vdec-inc += $(vdec-inc)
+libmm-vdec-inc += hardware/qcom/display/libqdutils
LOCAL_MODULE := libOmxVdec
LOCAL_MODULE_TAGS := optional
@@ -85,6 +86,7 @@
LOCAL_SHARED_LIBRARIES += libgenlock
LOCAL_SHARED_LIBRARIES += libdivxdrmdecrypt
+LOCAL_SHARED_LIBRARIES += libqdMetaData
LOCAL_SRC_FILES := src/frameparser.cpp
LOCAL_SRC_FILES += src/h264_utils.cpp
diff --git a/mm-video/vidc/vdec/src/omx_vdec.cpp b/mm-video/vidc/vdec/src/omx_vdec.cpp
index c25fb15..b1b9a2a 100644
--- a/mm-video/vidc/vdec/src/omx_vdec.cpp
+++ b/mm-video/vidc/vdec/src/omx_vdec.cpp
@@ -65,6 +65,7 @@
#if defined (_ANDROID_ICS_)
#include <genlock.h>
+#include <qdMetaData.h>
#endif
#ifdef _ANDROID_
@@ -4071,6 +4072,12 @@
drv_ctx.ptr_outputbuffer[i].bufferaddr = buff;
drv_ctx.ptr_outputbuffer[i].mmaped_size =
drv_ctx.ptr_outputbuffer[i].buffer_len = drv_ctx.op_buf.buffer_size;
+
+#if defined(_ANDROID_ICS_)
+ if (drv_ctx.interlace != VDEC_InterlaceFrameProgressive) {
+ setMetaData(handle, PP_PARAM_INTERLACED, 1);
+ }
+#endif
} else
#endif
diff --git a/mm-video/vidc/vdec/src/omx_vdec_msm8974.cpp b/mm-video/vidc/vdec/src/omx_vdec_msm8974.cpp
index 435952f..05e49c4 100644
--- a/mm-video/vidc/vdec/src/omx_vdec_msm8974.cpp
+++ b/mm-video/vidc/vdec/src/omx_vdec_msm8974.cpp
@@ -6371,8 +6371,8 @@
{
if (buffer->nFilledLen > 0)
{
- if (client_extradata)
- handle_extradata(buffer);
+ /*if (client_extradata)
+ handle_extradata(buffer);*/
if (client_extradata & OMX_TIMEINFO_EXTRADATA)
// Keep min timestamp interval to handle corrupted bit stream scenario
set_frame_rate(buffer->nTimeStamp);
diff --git a/mm-video/vidc/vdec/test/omx_vdec_test.cpp b/mm-video/vidc/vdec/test/omx_vdec_test.cpp
index cc9bf35..071304f 100755
--- a/mm-video/vidc/vdec/test/omx_vdec_test.cpp
+++ b/mm-video/vidc/vdec/test/omx_vdec_test.cpp
@@ -821,24 +821,22 @@
if (takeYuvLog)
{
#ifdef _MSM8974_
-
- // Write Luma into output file
-
stride = ((width + 31) & (~31));
scanlines = ((height+31) & (~31));
- bytes_written = fwrite((const char *)pBuffer->pBuffer,
- stride*scanlines,1,outputBufferFile);
- pBuffer->pBuffer += (stride * scanlines);
-
- // Write Chroma into output file
-
+ char *temp = (char *) pBuffer->pBuffer;
+ for (i = 0; i < height; i++) {
+ bytes_written = fwrite(temp, width, 1, outputBufferFile);
+ temp += stride;
+ }
+ temp = (char *)pBuffer->pBuffer + stride * scanlines;
stride_c = ((width/2 + 31) & (~31))*2;
- for(i=0;i<height/2;i++) {
- bytes_written += fwrite((const char *)pBuffer->pBuffer,
- width,1,outputBufferFile);
- pBuffer->pBuffer+=stride_c;
+ for(i = 0; i < height/2; i++) {
+ bytes_written += fwrite(temp, width, 1, outputBufferFile);
+ temp += stride_c;
}
#else
+ DEBUG_PRINT_ERROR("NOTE: Buffer: %p, len: %d\n", pBuffer->pBuffer,
+ pBuffer->nFilledLen);
bytes_written = fwrite((const char *)pBuffer->pBuffer,
pBuffer->nFilledLen,1,outputBufferFile);
#endif
@@ -3687,6 +3685,11 @@
__LINE__);
return -1;
}
+ if (ioctl(fb_fd, FBIOPAN_DISPLAY, &vinfo) < 0)
+ {
+ printf("ERROR: FBIOPAN_DISPLAY failed! line=%d\n", __LINE__);
+ return -1;
+ }
DEBUG_PRINT("\nMSMFB_OVERLAY_PLAY successfull");
return 0;
}
diff --git a/mm-video/vidc/venc/src/omx_video_base.cpp b/mm-video/vidc/venc/src/omx_video_base.cpp
index 1aaebf0..cadc20f 100644
--- a/mm-video/vidc/venc/src/omx_video_base.cpp
+++ b/mm-video/vidc/venc/src/omx_video_base.cpp
@@ -1536,18 +1536,21 @@
if(portFmt->nPortIndex == (OMX_U32) PORT_INDEX_IN)
{
int index = portFmt->nIndex;
- memcpy(portFmt, &m_sInPortFormat, sizeof(m_sInPortFormat));
-
+ if(index > 1)
+ eRet = OMX_ErrorNoMore;
+ else {
+ memcpy(portFmt, &m_sInPortFormat, sizeof(m_sInPortFormat));
#ifdef _ANDROID_ICS_
- if (index == 1) {
- //we support two formats
- //index 0 - YUV420SP
- //index 1 - opaque which internally maps to YUV420SP.
- //this can be extended in the future
- portFmt->nIndex = index; //restore index set from client
- portFmt->eColorFormat = (OMX_COLOR_FORMATTYPE)QOMX_COLOR_FormatAndroidOpaque;
- }
+ if (index == 1) {
+ //we support two formats
+ //index 0 - YUV420SP
+ //index 1 - opaque which internally maps to YUV420SP.
+ //this can be extended in the future
+ portFmt->nIndex = index; //restore index set from client
+ portFmt->eColorFormat = (OMX_COLOR_FORMATTYPE)QOMX_COLOR_FormatAndroidOpaque;
+ }
#endif
+ }
}
else if(portFmt->nPortIndex == (OMX_U32) PORT_INDEX_OUT)
{