summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPawit Pornkitprasan <p.pawit@gmail.com>2012-08-18 16:28:55 +0700
committerPawit Pornkitprasan <p.pawit@gmail.com>2012-08-18 16:28:55 +0700
commit9ed80aa8e2998f0b073a4948991abbc8609ec428 (patch)
tree1ac640a9d40af27163d5e37c6f35d82e789ebdd8
parentc3e20cfc9257530fa7a2d5d41e69a14bfeea8956 (diff)
downloaddevice_samsung_aries-common-9ed80aa8e2998f0b073a4948991abbc8609ec428.zip
device_samsung_aries-common-9ed80aa8e2998f0b073a4948991abbc8609ec428.tar.gz
device_samsung_aries-common-9ed80aa8e2998f0b073a4948991abbc8609ec428.tar.bz2
aries-common: Use exynos3 common
Change-Id: I337ba107f248992d7e08be9f45efeb78529f8ba8
-rw-r--r--device_base.mk14
-rw-r--r--include/hal_public.h171
-rwxr-xr-xinclude/s3c_bc.h63
-rwxr-xr-xinclude/s3c_mem.h56
-rwxr-xr-xinclude/s5p_fimc.h153
-rwxr-xr-xinclude/sec_format.h43
-rwxr-xr-xinclude/sec_lcd.h49
-rw-r--r--include/sec_utils.h331
-rwxr-xr-xinclude/videodev2_samsung.h638
-rw-r--r--libcamera/Android.mk4
-rw-r--r--libhwcomposer/Android.mk32
-rw-r--r--libhwcomposer/SecHWC.cpp688
-rw-r--r--libhwcomposer/SecHWCUtils.cpp880
-rw-r--r--libhwcomposer/SecHWCUtils.h143
-rw-r--r--libs3cjpeg/Android.mk34
-rw-r--r--libs3cjpeg/Exif.h233
-rw-r--r--libs3cjpeg/JpegEncoder.cpp796
-rw-r--r--libs3cjpeg/JpegEncoder.h240
-rw-r--r--libstagefrighthw/Android.mk26
-rw-r--r--libstagefrighthw/SEC_OMX_Plugin.cpp149
-rw-r--r--libstagefrighthw/SEC_OMX_Plugin.h76
-rw-r--r--sec_mm/Android.mk5
-rw-r--r--sec_mm/sec_omx/Android.mk22
-rw-r--r--sec_mm/sec_omx/sec_codecs/Android.mk7
-rw-r--r--sec_mm/sec_omx/sec_codecs/video/mfc_c110/csc/Android.mk36
-rw-r--r--sec_mm/sec_omx/sec_codecs/video/mfc_c110/csc/color_space_convertor.c1092
-rw-r--r--sec_mm/sec_omx/sec_codecs/video/mfc_c110/csc/csc_deinterleave_memcpy.s128
-rw-r--r--sec_mm/sec_omx/sec_codecs/video/mfc_c110/csc/csc_interleave_memcpy.s133
-rw-r--r--sec_mm/sec_omx/sec_codecs/video/mfc_c110/csc/csc_nv12t_yuv420_uv_neon.s768
-rw-r--r--sec_mm/sec_omx/sec_codecs/video/mfc_c110/csc/csc_nv12t_yuv420_y_neon.s680
-rw-r--r--sec_mm/sec_omx/sec_codecs/video/mfc_c110/csc/csc_yuv420_nv12t_uv_neon.s573
-rw-r--r--sec_mm/sec_omx/sec_codecs/video/mfc_c110/csc/csc_yuv420_nv12t_y_neon.s451
-rw-r--r--sec_mm/sec_omx/sec_codecs/video/mfc_c110/dec/Android.mk26
-rw-r--r--sec_mm/sec_omx/sec_codecs/video/mfc_c110/dec/src/SsbSipMfcDecAPI.c518
-rw-r--r--sec_mm/sec_omx/sec_codecs/video/mfc_c110/enc/Android.mk26
-rw-r--r--sec_mm/sec_omx/sec_codecs/video/mfc_c110/enc/src/SsbSipMfcEncAPI.c686
-rw-r--r--sec_mm/sec_omx/sec_codecs/video/mfc_c110/include/SsbSipMfcApi.h332
-rw-r--r--sec_mm/sec_omx/sec_codecs/video/mfc_c110/include/color_space_convertor.h176
-rw-r--r--sec_mm/sec_omx/sec_codecs/video/mfc_c110/include/mfc_interface.h347
-rw-r--r--sec_mm/sec_omx/sec_omx_component/common/Android.mk24
-rw-r--r--sec_mm/sec_omx/sec_omx_component/common/SEC_OMX_Basecomponent.c1486
-rw-r--r--sec_mm/sec_omx/sec_omx_component/common/SEC_OMX_Basecomponent.h174
-rw-r--r--sec_mm/sec_omx/sec_omx_component/common/SEC_OMX_Baseport.c1009
-rw-r--r--sec_mm/sec_omx/sec_omx_component/common/SEC_OMX_Baseport.h98
-rw-r--r--sec_mm/sec_omx/sec_omx_component/common/SEC_OMX_Resourcemanager.c383
-rw-r--r--sec_mm/sec_omx/sec_omx_component/common/SEC_OMX_Resourcemanager.h59
-rw-r--r--sec_mm/sec_omx/sec_omx_component/video/dec/Android.mk20
-rw-r--r--sec_mm/sec_omx/sec_omx_component/video/dec/SEC_OMX_Vdec.c1389
-rw-r--r--sec_mm/sec_omx/sec_omx_component/video/dec/SEC_OMX_Vdec.h129
-rw-r--r--sec_mm/sec_omx/sec_omx_component/video/dec/h264dec/Android.mk30
-rw-r--r--sec_mm/sec_omx/sec_omx_component/video/dec/h264dec/SEC_OMX_H264dec.c1479
-rw-r--r--sec_mm/sec_omx/sec_omx_component/video/dec/h264dec/SEC_OMX_H264dec.h73
-rw-r--r--sec_mm/sec_omx/sec_omx_component/video/dec/h264dec/library_register.c55
-rw-r--r--sec_mm/sec_omx/sec_omx_component/video/dec/h264dec/library_register.h55
-rw-r--r--sec_mm/sec_omx/sec_omx_component/video/dec/mpeg4dec/Android.mk30
-rw-r--r--sec_mm/sec_omx/sec_omx_component/video/dec/mpeg4dec/SEC_OMX_Mpeg4dec.c1652
-rw-r--r--sec_mm/sec_omx/sec_omx_component/video/dec/mpeg4dec/SEC_OMX_Mpeg4dec.h98
-rw-r--r--sec_mm/sec_omx/sec_omx_component/video/dec/mpeg4dec/library_register.c63
-rw-r--r--sec_mm/sec_omx/sec_omx_component/video/dec/mpeg4dec/library_register.h59
-rw-r--r--sec_mm/sec_omx/sec_omx_component/video/enc/Android.mk20
-rw-r--r--sec_mm/sec_omx/sec_omx_component/video/enc/SEC_OMX_Venc.c1467
-rw-r--r--sec_mm/sec_omx/sec_omx_component/video/enc/SEC_OMX_Venc.h137
-rw-r--r--sec_mm/sec_omx/sec_omx_component/video/enc/h264enc/Android.mk30
-rw-r--r--sec_mm/sec_omx/sec_omx_component/video/enc/h264enc/SEC_OMX_H264enc.c1307
-rw-r--r--sec_mm/sec_omx/sec_omx_component/video/enc/h264enc/SEC_OMX_H264enc.h83
-rw-r--r--sec_mm/sec_omx/sec_omx_component/video/enc/h264enc/library_register.c55
-rw-r--r--sec_mm/sec_omx/sec_omx_component/video/enc/h264enc/library_register.h55
-rw-r--r--sec_mm/sec_omx/sec_omx_component/video/enc/mpeg4enc/Android.mk30
-rw-r--r--sec_mm/sec_omx/sec_omx_component/video/enc/mpeg4enc/SEC_OMX_Mpeg4enc.c1516
-rw-r--r--sec_mm/sec_omx/sec_omx_component/video/enc/mpeg4enc/SEC_OMX_Mpeg4enc.h83
-rw-r--r--sec_mm/sec_omx/sec_omx_component/video/enc/mpeg4enc/library_register.c64
-rw-r--r--sec_mm/sec_omx/sec_omx_component/video/enc/mpeg4enc/library_register.h59
-rw-r--r--sec_mm/sec_omx/sec_omx_core/Android.mk25
-rw-r--r--sec_mm/sec_omx/sec_omx_core/SEC_OMX_Component_Register.c269
-rw-r--r--sec_mm/sec_omx/sec_omx_core/SEC_OMX_Component_Register.h75
-rw-r--r--sec_mm/sec_omx/sec_omx_core/SEC_OMX_Core.c363
-rw-r--r--sec_mm/sec_omx/sec_omx_core/SEC_OMX_Core.h78
-rw-r--r--sec_mm/sec_omx/sec_omx_core/secomxregistry4
-rw-r--r--sec_mm/sec_omx/sec_omx_include/khronos/OMX_Audio.h1311
-rw-r--r--sec_mm/sec_omx/sec_omx_include/khronos/OMX_Component.h579
-rw-r--r--sec_mm/sec_omx/sec_omx_include/khronos/OMX_ContentPipe.h195
-rw-r--r--sec_mm/sec_omx/sec_omx_include/khronos/OMX_Core.h1431
-rw-r--r--sec_mm/sec_omx/sec_omx_include/khronos/OMX_IVCommon.h920
-rw-r--r--sec_mm/sec_omx/sec_omx_include/khronos/OMX_Image.h328
-rw-r--r--sec_mm/sec_omx/sec_omx_include/khronos/OMX_Index.h258
-rw-r--r--sec_mm/sec_omx/sec_omx_include/khronos/OMX_Other.h337
-rw-r--r--sec_mm/sec_omx/sec_omx_include/khronos/OMX_Types.h347
-rw-r--r--sec_mm/sec_omx/sec_omx_include/khronos/OMX_Video.h1060
-rw-r--r--sec_mm/sec_omx/sec_omx_include/sec/SEC_OMX_Def.h154
-rw-r--r--sec_mm/sec_omx/sec_omx_include/sec/SEC_OMX_Macros.h64
-rw-r--r--sec_mm/sec_omx/sec_osal/Android.mk38
-rw-r--r--sec_mm/sec_omx/sec_osal/SEC_OSAL_Buffer.cpp456
-rw-r--r--sec_mm/sec_omx/sec_osal/SEC_OSAL_Buffer.h66
-rw-r--r--sec_mm/sec_omx/sec_osal/SEC_OSAL_ETC.c144
-rw-r--r--sec_mm/sec_omx/sec_osal/SEC_OSAL_ETC.h48
-rw-r--r--sec_mm/sec_omx/sec_osal/SEC_OSAL_Event.c217
-rw-r--r--sec_mm/sec_omx/sec_osal/SEC_OSAL_Event.h61
-rw-r--r--sec_mm/sec_omx/sec_osal/SEC_OSAL_Library.c54
-rw-r--r--sec_mm/sec_omx/sec_osal/SEC_OSAL_Library.h46
-rw-r--r--sec_mm/sec_omx/sec_osal/SEC_OSAL_Log.c53
-rw-r--r--sec_mm/sec_omx/sec_osal/SEC_OSAL_Log.h78
-rw-r--r--sec_mm/sec_omx/sec_osal/SEC_OSAL_Memory.c71
-rw-r--r--sec_mm/sec_omx/sec_osal/SEC_OSAL_Memory.h47
-rw-r--r--sec_mm/sec_omx/sec_osal/SEC_OSAL_Mutex.c91
-rw-r--r--sec_mm/sec_omx/sec_osal/SEC_OSAL_Mutex.h47
-rw-r--r--sec_mm/sec_omx/sec_osal/SEC_OSAL_Queue.c174
-rw-r--r--sec_mm/sec_omx/sec_osal/SEC_OSAL_Queue.h66
-rw-r--r--sec_mm/sec_omx/sec_osal/SEC_OSAL_Semaphore.c132
-rw-r--r--sec_mm/sec_omx/sec_osal/SEC_OSAL_Semaphore.h49
-rw-r--r--sec_mm/sec_omx/sec_osal/SEC_OSAL_Thread.c153
-rw-r--r--sec_mm/sec_omx/sec_osal/SEC_OSAL_Thread.h48
111 files changed, 9 insertions, 34024 deletions
diff --git a/device_base.mk b/device_base.mk
index bb3ba45..0460fab 100644
--- a/device_base.mk
+++ b/device_base.mk
@@ -80,23 +80,23 @@ PRODUCT_PACKAGES += \
# These are the OpenMAX IL configuration files
PRODUCT_COPY_FILES += \
- device/samsung/aries-common/sec_mm/sec_omx/sec_omx_core/secomxregistry:system/etc/secomxregistry \
+ hardware/samsung/exynos3/s5pc110/sec_mm/sec_omx/sec_omx_core/secomxregistry:system/etc/secomxregistry \
device/samsung/aries-common/media_profiles.xml:system/etc/media_profiles.xml \
device/samsung/aries-common/media_codecs.xml:system/etc/media_codecs.xml
# These are the OpenMAX IL modules
PRODUCT_PACKAGES += \
- libSEC_OMX_Core.aries \
- libOMX.SEC.AVC.Decoder.aries \
- libOMX.SEC.M4V.Decoder.aries \
- libOMX.SEC.M4V.Encoder.aries \
- libOMX.SEC.AVC.Encoder.aries
+ libSEC_OMX_Core \
+ libOMX.SEC.AVC.Decoder \
+ libOMX.SEC.M4V.Decoder \
+ libOMX.SEC.M4V.Encoder \
+ libOMX.SEC.AVC.Encoder
# Misc other modules
PRODUCT_PACKAGES += \
lights.aries \
sensors.aries \
- hwcomposer.aries \
+ hwcomposer.s5pc110 \
camera.aries \
audio.primary.aries \
audio_policy.aries \
diff --git a/include/hal_public.h b/include/hal_public.h
deleted file mode 100644
index 60f33a9..0000000
--- a/include/hal_public.h
+++ /dev/null
@@ -1,171 +0,0 @@
-/* Copyright (c) Imagination Technologies Ltd.
- *
- * The contents of this file are subject to the MIT license as set out below.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-#ifndef HAL_PUBLIC_H
-#define HAL_PUBLIC_H
-
-/* Authors of third party hardware composer (HWC) modules will need to include
- * this header to access functionality in the gralloc and framebuffer HALs.
- */
-
-#include <hardware/gralloc.h>
-
-#define ALIGN(x,a) (((x) + (a) - 1L) & ~((a) - 1L))
-#define HW_ALIGN 32
-
-/* This can be tuned down as appropriate for the SOC.
- *
- * IMG formats are usually a single sub-alloc.
- * Some OEM video formats are two sub-allocs (Y, UV planes).
- * Future OEM video formats might be three sub-allocs (Y, U, V planes).
- */
-#define MAX_SUB_ALLOCS 3
-
-typedef struct
-{
- native_handle_t base;
-
- /* These fields can be sent cross process. They are also valid
- * to duplicate within the same process.
- *
- * A table is stored within psPrivateData on gralloc_module_t (this
- * is obviously per-process) which maps stamps to a mapped
- * PVRSRV_CLIENT_MEM_INFO in that process. Each map entry has a lock
- * count associated with it, satisfying the requirements of the
- * Android API. This also prevents us from leaking maps/allocations.
- *
- * This table has entries inserted either by alloc()
- * (alloc_device_t) or map() (gralloc_module_t). Entries are removed
- * by free() (alloc_device_t) and unmap() (gralloc_module_t).
- *
- * As a special case for framebuffer_device_t, framebuffer_open()
- * will add and framebuffer_close() will remove from this table.
- */
-
-#define IMG_NATIVE_HANDLE_NUMFDS MAX_SUB_ALLOCS
- /* The `fd' field is used to "export" a meminfo to another process.
- * Therefore, it is allocated by alloc_device_t, and consumed by
- * gralloc_module_t. The framebuffer_device_t does not need a handle,
- * and the special value IMG_FRAMEBUFFER_FD is used instead.
- */
- int fd[MAX_SUB_ALLOCS];
-
-#define IMG_NATIVE_HANDLE_NUMINTS ((sizeof(unsigned long long) / sizeof(int)) + 5)
- /* A KERNEL unique identifier for any exported kernel meminfo. Each
- * exported kernel meminfo will have a unique stamp, but note that in
- * userspace, several meminfos across multiple processes could have
- * the same stamp. As the native_handle can be dup(2)'d, there could be
- * multiple handles with the same stamp but different file descriptors.
- */
- unsigned long long ui64Stamp;
-
- /* This is used for buffer usage validation when locking a buffer,
- * and also in WSEGL (for the composition bypass feature).
- */
- int usage;
-
- //int dummy;
- /* In order to do efficient cache flushes we need the buffer dimensions
- * and format. These are available on the ANativeWindowBuffer,
- * but the platform doesn't pass them down to the graphics HAL.
- *
- * These fields are also used in the composition bypass. In this
- * capacity, these are the "real" values for the backing allocation.
- */
- int iWidth;
- int iHeight;
- int iFormat;
- unsigned int uiBpp;
-}
-__attribute__((aligned(sizeof(int)),packed)) IMG_native_handle_t;
-
-typedef struct
-{
- framebuffer_device_t base;
-
- /* The HWC was loaded. post() is no longer responsible for presents */
- int bBypassPost;
-
- /* Custom-blit components in lieu of overlay hardware */
- int (*Blit)(framebuffer_device_t *device, buffer_handle_t src,
- buffer_handle_t dest, int w, int h, int x, int y);
-
- /* HWC path for present posts */
- int (*Post2)(framebuffer_device_t *fb, buffer_handle_t *buffers,
- int num_buffers, void *data, int data_length);
-}
-IMG_framebuffer_device_public_t;
-
-typedef struct IMG_gralloc_module_public_t
-{
- gralloc_module_t base;
-
- /* If the framebuffer has been opened, this will point to the
- * framebuffer device data required by the allocator, WSEGL
- * modules and composerhal.
- */
- IMG_framebuffer_device_public_t *psFrameBufferDevice;
-
- int (*GetPhyAddrs)(struct IMG_gralloc_module_public_t const* module,
- buffer_handle_t handle,
- unsigned int auiPhyAddr[MAX_SUB_ALLOCS]);
- /* Custom-blit components in lieu of overlay hardware */
- int (*Blit)(struct IMG_gralloc_module_public_t const *module,
- buffer_handle_t src,
- void *dest[MAX_SUB_ALLOCS], int format);
-
- int (*Blit2)(struct IMG_gralloc_module_public_t const *module,
- buffer_handle_t src, buffer_handle_t dest,
- int w, int h, int x, int y);
-}
-IMG_gralloc_module_public_t;
-
-typedef struct
-{
- int l, t, w, h;
-}
-IMG_write_lock_rect_t;
-
-typedef struct IMG_buffer_format_public_t
-{
- /* Buffer formats are returned as a linked list */
- struct IMG_buffer_format_public_t *psNext;
-
- /* HAL_PIXEL_FORMAT_... enumerant */
- int iHalPixelFormat;
-
- /* WSEGL_PIXELFORMAT_... enumerant */
- int iWSEGLPixelFormat;
-
- /* Friendly name for format */
- const char *const szName;
-
- /* Bits (not bytes) per pixel */
- unsigned int uiBpp;
-
- /* GPU output format (creates EGLConfig for format) */
- int bGPURenderable;
-}
-IMG_buffer_format_public_t;
-
-#endif /* HAL_PUBLIC_H */
diff --git a/include/s3c_bc.h b/include/s3c_bc.h
deleted file mode 100755
index e8ea490..0000000
--- a/include/s3c_bc.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*!****************************************************************************
-@File s3c_bc.h
-
-@Title s3c_bc kernel driver parameters
-
-@Author Imagination Technologies
- Samsung Electronics Co. LTD
-
-@Date 03/03/2010
-
-@Copyright Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-@Platform Generic
-
-@Description s3c_bc kernel driver parameters
-
-@DoxygenVer
-
-******************************************************************************/
-
-/******************************************************************************
-Modifications :-
-$Log: s3c_bc.h $
-******************************************************************************/
-#ifndef __S3C_BC_H__
-#define __S3C_BC_H__
-
-#include <linux/ioctl.h>
-
-#define S3C_BC_DEVICE_NAME "s3c_bc"
-
-#define S3C_BC_DEVICE_ID 0
-#define S3C_BC_DEVICE_BUFFER_COUNT 4 /* TODO: Modify this accordingly. */
-
-#define S3C_BC_DEVICE_PHYS_PAGE_SIZE 0x1000 /* 4KB */
-
-typedef struct S3C_BC_ioctl_package_TAG
-{
- int inputparam;
- int outputparam;
-} S3C_BC_ioctl_package, *PS3C_BC_ioctl_package;
-
-/*!< Nov 2006: according to ioctl-number.txt 'g' wasn't in use. */
-#define S3C_BC_IOC_GID 'g'
-
-#define S3C_BC_IOWR(INDEX) _IOWR(S3C_BC_IOC_GID, INDEX, S3C_BC_ioctl_package)
-
-#define S3C_BC_ioctl_get_physical_base_address S3C_BC_IOWR(0)
-
-#endif /* __S3C_BC__H__ */
-/******************************************************************************
- End of file (s3c_bc.h)
-******************************************************************************/
diff --git a/include/s3c_mem.h b/include/s3c_mem.h
deleted file mode 100755
index d51398a..0000000
--- a/include/s3c_mem.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright@ Samsung Electronics Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _S3C_MEM_COMMON_H_
-#define _S3C_MEM_COMMON_H_
-
-#define MEM_IOCTL_MAGIC 'M'
-
-#define S3C_MEM_ALLOC _IOWR(MEM_IOCTL_MAGIC, 310, struct s3c_mem_alloc)
-#define S3C_MEM_FREE _IOWR(MEM_IOCTL_MAGIC, 311, struct s3c_mem_alloc)
-
-#define S3C_MEM_SHARE_ALLOC _IOWR(MEM_IOCTL_MAGIC, 314, struct s3c_mem_alloc)
-#define S3C_MEM_SHARE_FREE _IOWR(MEM_IOCTL_MAGIC, 315, struct s3c_mem_alloc)
-
-#define S3C_MEM_CACHEABLE_ALLOC _IOWR(MEM_IOCTL_MAGIC, 316, struct s3c_mem_alloc)
-#define S3C_MEM_CACHEABLE_SHARE_ALLOC _IOWR(MEM_IOCTL_MAGIC, 317, struct s3c_mem_alloc)
-
-#define S3C_MEM_DMA_COPY _IOWR(MEM_IOCTL_MAGIC, 318, struct s3c_mem_dma_param)
-#define S3C_MEM_DMA_SET _IOWR(MEM_IOCTL_MAGIC, 319, struct s3c_mem_dma_param)
-
-#define S3C_MEM_CACHE_INV _IOWR(MEM_IOCTL_MAGIC, 330, struct s3c_mem_dma_param)
-
-
-struct s3c_mem_alloc {
- int size;
- unsigned int vir_addr;
- unsigned int phy_addr;
-};
-
-struct s3c_mem_dma_param {
- int size;
- unsigned int src_addr;
- unsigned int dst_addr;
- int cfg;
-};
-
-#if 0
-typedef struct _s3c_mem_t{
- int dev_fd;
- struct s3c_mem_alloc mem_alloc_info;
-}s3c_mem_t;
-#endif
-#endif // _S3C_MEM_COMMON_H_
diff --git a/include/s5p_fimc.h b/include/s5p_fimc.h
deleted file mode 100755
index d2c760c..0000000
--- a/include/s5p_fimc.h
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Copyright@ Samsung Electronics Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-#ifndef _S5P_FIMC_H_
-#define _S5P_FIMC_H_
-
-#include <linux/videodev2.h>
-
-/*
- * G E N E R A L S
- *
-*/
-#define MIN(x, y) ((x < y) ? x : y)
-
-/*
- * P I X E L F O R M A T G U I D E
- *
- * The 'x' means 'DO NOT CARE'
- * The '*' means 'FIMC SPECIFIC'
- * For some fimc formats, we couldn't find equivalent format in the V4L2 FOURCC.
- *
- * FIMC TYPE PLANES ORDER V4L2_PIX_FMT
- * ---------------------------------------------------------
- * RGB565 x x V4L2_PIX_FMT_RGB565
- * RGB888 x x V4L2_PIX_FMT_RGB24
- * YUV420 2 LSB_CBCR V4L2_PIX_FMT_NV12
- * YUV420 2 LSB_CRCB V4L2_PIX_FMT_NV21
- * YUV420 2 MSB_CBCR V4L2_PIX_FMT_NV21X*
- * YUV420 2 MSB_CRCB V4L2_PIX_FMT_NV12X*
- * YUV420 3 x V4L2_PIX_FMT_YUV420
- * YUV422 1 YCBYCR V4L2_PIX_FMT_YUYV
- * YUV422 1 YCRYCB V4L2_PIX_FMT_YVYU
- * YUV422 1 CBYCRY V4L2_PIX_FMT_UYVY
- * YUV422 1 CRYCBY V4L2_PIX_FMT_VYUY*
- * YUV422 2 LSB_CBCR V4L2_PIX_FMT_NV16*
- * YUV422 2 LSB_CRCB V4L2_PIX_FMT_NV61*
- * YUV422 2 MSB_CBCR V4L2_PIX_FMT_NV16X*
- * YUV422 2 MSB_CRCB V4L2_PIX_FMT_NV61X*
- * YUV422 3 x V4L2_PIX_FMT_YUV422P
- *
-*/
-
-/*
- * V 4 L 2 F I M C E X T E N S I O N S
- *
-*/
-#define V4L2_PIX_FMT_YVYU v4l2_fourcc('Y', 'V', 'Y', 'U')
-
-/* FOURCC for FIMC specific */
-#define V4L2_PIX_FMT_NV12X v4l2_fourcc('N', '1', '2', 'X')
-#define V4L2_PIX_FMT_NV21X v4l2_fourcc('N', '2', '1', 'X')
-#define V4L2_PIX_FMT_VYUY v4l2_fourcc('V', 'Y', 'U', 'Y')
-#define V4L2_PIX_FMT_NV16 v4l2_fourcc('N', 'V', '1', '6')
-#define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1')
-#define V4L2_PIX_FMT_NV16X v4l2_fourcc('N', '1', '6', 'X')
-#define V4L2_PIX_FMT_NV61X v4l2_fourcc('N', '6', '1', 'X')
-
-#define V4L2_PIX_FMT_NV12T v4l2_fourcc('T', 'V', '1', '2') /* 12 Y/CbCr 4:2:0 64x32 macroblocks */
-
-/* CID extensions */
-#define V4L2_CID_ROTATION (V4L2_CID_PRIVATE_BASE + 0)
-#define V4L2_CID_RESERVED_MEM_BASE_ADDR (V4L2_CID_PRIVATE_BASE + 20)
-#define V4L2_CID_FIMC_VERSION (V4L2_CID_PRIVATE_BASE + 21)
-/*
- * U S E R D E F I N E D T Y P E S
- *
-*/
-
-typedef unsigned int dma_addr_t;
-
-struct fimc_buf {
- dma_addr_t base[3];
- size_t length[3];
-};
-
-struct fimc_buffer {
- void *virt_addr;
- void *phys_addr;
- size_t length;
-};
-
-struct yuv_fmt_list {
- const char *name;
- const char *desc;
- unsigned int fmt;
- int bpp;
- int planes;
-};
-
-struct img_offset {
- int y_h;
- int y_v;
- int cb_h;
- int cb_v;
- int cr_h;
- int cr_v;
-};
-
-//------------ STRUCT ---------------------------------------------------------//
-
-typedef struct
-{
- unsigned int full_width; // Source Image Full Width (Virtual screen size)
- unsigned int full_height; // Source Image Full Height (Virtual screen size)
- unsigned int start_x; // Source Image Start width offset
- unsigned int start_y; // Source Image Start height offset
- unsigned int width; // Source Image Width
- unsigned int height; // Source Image Height
- unsigned int buf_addr_phy_rgb_y; // Base Address of the Source Image (RGB or Y): Physical Address
- unsigned int buf_addr_phy_cb; // Base Address of the Source Image (CB Component) : Physical Address
- unsigned int buf_addr_phy_cr; // Base Address of the Source Image (CR Component) : Physical Address
- unsigned int color_space; // Color Space of the Source Image
-} s5p_fimc_img_info;
-
-typedef struct
-{
- s5p_fimc_img_info src;
- s5p_fimc_img_info dst;
-} s5p_fimc_params_t;
-
-typedef struct _s5p_fimc_t {
- int dev_fd;
- struct fimc_buffer out_buf;
-
- s5p_fimc_params_t params;
-
- int use_ext_out_mem;
- unsigned int hw_ver;
-}s5p_fimc_t;
-
-//------------------------ functions for v4l2 ------------------------------//
-int fimc_v4l2_set_src(int fd, unsigned int hw_ver, s5p_fimc_img_info *src);
-int fimc_v4l2_set_dst(int fd, s5p_fimc_img_info *dst, int rotation, unsigned int addr);
-int fimc_v4l2_stream_on(int fd, enum v4l2_buf_type type);
-int fimc_v4l2_queue(int fd, struct fimc_buf *fimc_buf);
-int fimc_v4l2_dequeue(int fd);
-int fimc_v4l2_stream_off(int fd);
-int fimc_v4l2_clr_buf(int fd);
-int fimc_handle_oneshot(int fd, struct fimc_buf *fimc_buf);
-#endif
diff --git a/include/sec_format.h b/include/sec_format.h
deleted file mode 100755
index 13604a9..0000000
--- a/include/sec_format.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright@ Samsung Electronics Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-#ifndef _SEC_FORMAT_H_
-#define _SEC_FORMAT_H_
-
-/* enum related to pixel format */
-
-enum {
- SAMSUNG_HAL_PIXEL_FORMAT_YCbCr_420_SP = 0x100,
- SAMSUNG_HAL_PIXEL_FORMAT_YCbCr_420_P = 0x101,
- SAMSUNG_HAL_PIXEL_FORMAT_YCbCr_420_I = 0x102,
- SAMSUNG_HAL_PIXEL_FORMAT_CbYCrY_422_I = 0x103,
- SAMSUNG_HAL_PIXEL_FORMAT_CbYCrY_420_I = 0x104,
- SAMSUNG_HAL_PIXEL_FORMAT_YCbCr_422_P = 0x105,
- SAMSUNG_HAL_PIXEL_FORMAT_YCrCb_422_SP = 0x106,
- // support custom format for zero copy
- SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP = 0x110,
- SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_YCrCb_420_SP = 0x111,
- SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP_TILED = 0x112,
- SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_YCbCr_422_SP = 0x113,
- SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_YCrCb_422_SP = 0x114,
- SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_YCbCr_422_I = 0x115,
- SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_YCrCb_422_I = 0x116,
- SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_CbYCrY_422_I = 0x117,
- SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_CrYCbY_422_I = 0x118,
- SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_MAX
-};
-
-#endif
diff --git a/include/sec_lcd.h b/include/sec_lcd.h
deleted file mode 100755
index 6a3a34a..0000000
--- a/include/sec_lcd.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright@ Samsung Electronics Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _SEC_FB_LCD_
-#define _SEC_FB_LCD_
-
-/*
- * S T R U C T U R E S F O R C U S T O M I O C T L S
- *
-*/
-struct secfb_user_window {
- int x;
- int y;
-};
-
-/*
- * C U S T O M I O C T L S
- *
-*/
-
-#define FBIO_WAITFORVSYNC _IO ('F', 32)
-#define SECFB_WIN_POSITION _IOW ('F', 203, struct secfb_user_window)
-#define S3CFB_SET_VSYNC_INT _IOW ('F', 206, uint32_t)
-
-#define DEFAULT_LCD_WIDTH (480)
-#define DEFAULT_LCD_HEIGHT (800)
-#define DEFAULT_LCD_BPP (32)
-
-/***************** LCD frame buffer *****************/
-#define FB0_NAME "/dev/fb0"
-#define FB1_NAME "/dev/fb1"
-#define FB2_NAME "/dev/fb2"
-#define FB3_NAME "/dev/fb3"
-#define FB4_NAME "/dev/fb4"
-
-#endif
diff --git a/include/sec_utils.h b/include/sec_utils.h
deleted file mode 100644
index c414155..0000000
--- a/include/sec_utils.h
+++ /dev/null
@@ -1,331 +0,0 @@
-/*
- * Copyright@ Samsung Electronics Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-#ifndef __SAMSUNG_SYSLSI_SEC_COMMON_H__
-#define __SAMSUNG_SYSLSI_SEC_COMMON_H__
-
-//---------------------------------------------------------//
-// Include
-//---------------------------------------------------------//
-
-#include <hardware/hardware.h>
-#include "sec_format.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <linux/videodev2.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-//---------------------------------------------------------//
-// Common structure //
-//---------------------------------------------------------//
-struct ADDRS {
- unsigned int addr_y;
- unsigned int addr_cbcr;
- unsigned int buf_idx;
- unsigned int reserved;
-};
-
-//---------------------------------------------------------//
-// Common function //
-//---------------------------------------------------------//
-inline int HAL_PIXEL_FORMAT_2_V4L2_PIX(int HAL_PIXEL_FORMAT)
-{
- int V4L2_PIX = -1;
-
- switch (HAL_PIXEL_FORMAT) {
- case HAL_PIXEL_FORMAT_RGBA_8888:
- case HAL_PIXEL_FORMAT_RGBX_8888:
- V4L2_PIX = V4L2_PIX_FMT_RGB32;
- break;
-
- case HAL_PIXEL_FORMAT_RGB_888:
- V4L2_PIX = V4L2_PIX_FMT_RGB24;
- break;
-
- case HAL_PIXEL_FORMAT_RGB_565:
- V4L2_PIX = V4L2_PIX_FMT_RGB565;
- break;
-
- case HAL_PIXEL_FORMAT_BGRA_8888:
- //V4L2_PIX = V4L2_PIX_FMT_BGR32; // this is not proper on fimc.
- V4L2_PIX = V4L2_PIX_FMT_RGB32;
- break;
-
- case HAL_PIXEL_FORMAT_RGBA_5551:
- V4L2_PIX = V4L2_PIX_FMT_RGB555X;
- break;
-
- case HAL_PIXEL_FORMAT_RGBA_4444:
- V4L2_PIX = V4L2_PIX_FMT_RGB444;
- break;
-
- case HAL_PIXEL_FORMAT_YV12:
- case SAMSUNG_HAL_PIXEL_FORMAT_YCbCr_420_P:
- V4L2_PIX = V4L2_PIX_FMT_YUV420;
- break;
-
- case HAL_PIXEL_FORMAT_YCbCr_422_SP:
- case SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_YCbCr_422_SP:
- V4L2_PIX = V4L2_PIX_FMT_NV61;
- break;
-
- case SAMSUNG_HAL_PIXEL_FORMAT_YCbCr_420_SP:
- case SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP:
- V4L2_PIX = V4L2_PIX_FMT_NV12;
- break;
-
- case HAL_PIXEL_FORMAT_YCbCr_422_I:
- case SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_YCbCr_422_I:
- V4L2_PIX = V4L2_PIX_FMT_YUYV;
- break;
-
- case SAMSUNG_HAL_PIXEL_FORMAT_YCbCr_422_P:
- V4L2_PIX = V4L2_PIX_FMT_YUV422P;
- break;
-
- case SAMSUNG_HAL_PIXEL_FORMAT_CbYCrY_422_I:
- case SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_CbYCrY_422_I:
- V4L2_PIX = V4L2_PIX_FMT_UYVY;
- break;
-
- case SAMSUNG_HAL_PIXEL_FORMAT_YCrCb_422_SP:
- case SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_YCrCb_422_SP:
- V4L2_PIX = V4L2_PIX_FMT_NV16;
- break;
-
- case HAL_PIXEL_FORMAT_YCrCb_420_SP:
- case SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_YCrCb_420_SP:
- V4L2_PIX = V4L2_PIX_FMT_NV21;
- break;
-
- case SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP_TILED:
- V4L2_PIX = V4L2_PIX_FMT_NV12T;
- break;
-
- case SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_YCrCb_422_I:
- V4L2_PIX = V4L2_PIX_FMT_YVYU;
- break;
-
- case SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_CrYCbY_422_I:
- V4L2_PIX = V4L2_PIX_FMT_VYUY;
- break;
-
- default:
- ALOGE("%s::unmatched HAL_PIXEL_FORMAT color_space(0x%x)\n",
- __func__, HAL_PIXEL_FORMAT);
- break;
- }
-
- return V4L2_PIX;
-}
-
-inline int V4L2_PIX_2_HAL_PIXEL_FORMAT(int V4L2_PIX)
-{
- int HAL_PIXEL_FORMAT = -1;
-
- switch (V4L2_PIX) {
- case V4L2_PIX_FMT_RGB32:
- HAL_PIXEL_FORMAT = HAL_PIXEL_FORMAT_RGBA_8888;
- //HAL_PIXEL_FORMAT = HAL_PIXEL_FORMAT_RGBX_8888;
- break;
-
- case V4L2_PIX_FMT_RGB24:
- HAL_PIXEL_FORMAT = HAL_PIXEL_FORMAT_RGB_888;
- break;
-
- case V4L2_PIX_FMT_RGB565:
- HAL_PIXEL_FORMAT = HAL_PIXEL_FORMAT_RGB_565;
- break;
-
- case V4L2_PIX_FMT_BGR32:
- HAL_PIXEL_FORMAT = HAL_PIXEL_FORMAT_BGRA_8888;
- break;
-
- case V4L2_PIX_FMT_RGB555X:
- HAL_PIXEL_FORMAT = HAL_PIXEL_FORMAT_RGBA_5551;
- break;
-
- case V4L2_PIX_FMT_RGB444:
- HAL_PIXEL_FORMAT = HAL_PIXEL_FORMAT_RGBA_4444;
- break;
-
- case V4L2_PIX_FMT_YUV420:
- //HAL_PIXEL_FORMAT = HAL_PIXEL_FORMAT_YV12;
- HAL_PIXEL_FORMAT = SAMSUNG_HAL_PIXEL_FORMAT_YCbCr_420_P;
- break;
-
- case V4L2_PIX_FMT_NV16:
- //HAL_PIXEL_FORMAT = SAMSUNG_HAL_PIXEL_FORMAT_YCrCb_422_SP;
- HAL_PIXEL_FORMAT = SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_YCrCb_422_SP;
- break;
-
- case V4L2_PIX_FMT_NV12:
- //HAL_PIXEL_FORMAT = HAL_PIXEL_FORMAT_YCrCb_420_SP;
- HAL_PIXEL_FORMAT = SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP;
- break;
-
- case V4L2_PIX_FMT_YUYV:
- //HAL_PIXEL_FORMAT = HAL_PIXEL_FORMAT_YCbCr_422_I;
- HAL_PIXEL_FORMAT = SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_YCbCr_422_I;
- break;
-
- case V4L2_PIX_FMT_YUV422P:
- HAL_PIXEL_FORMAT = SAMSUNG_HAL_PIXEL_FORMAT_YCbCr_422_P;
- break;
-
- case V4L2_PIX_FMT_UYVY:
- //HAL_PIXEL_FORMAT = SAMSUNG_HAL_PIXEL_FORMAT_CbYCrY_422_I;
- HAL_PIXEL_FORMAT = SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_CbYCrY_422_I;
- break;
-
- case V4L2_PIX_FMT_NV21:
- //HAL_PIXEL_FORMAT = SAMSUNG_HAL_PIXEL_FORMAT_YCbCr_420_SP;
- HAL_PIXEL_FORMAT = SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_YCrCb_420_SP;
- break;
-
- case V4L2_PIX_FMT_NV12T:
- HAL_PIXEL_FORMAT = SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP_TILED;
- break;
-
- case V4L2_PIX_FMT_NV61:
- HAL_PIXEL_FORMAT = SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_YCbCr_422_SP;
- break;
-
- case V4L2_PIX_FMT_YVYU:
- HAL_PIXEL_FORMAT = SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_YCrCb_422_I;
- break;
-
- case V4L2_PIX_FMT_VYUY:
- HAL_PIXEL_FORMAT = SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_CrYCbY_422_I;
- break;
-
- default:
- ALOGE("%s::unmatched V4L2_PIX color_space(%d)\n",
- __func__, V4L2_PIX);
- break;
- }
-
- return HAL_PIXEL_FORMAT;
-}
-
-#define ALIGN_TO_32B(x) ((((x) + (1 << 5) - 1) >> 5) << 5)
-#define ALIGN_TO_128B(x) ((((x) + (1 << 7) - 1) >> 7) << 7)
-#define ALIGN_TO_8KB(x) ((((x) + (1 << 13) - 1) >> 13) << 13)
-
-#define GET_32BPP_FRAME_SIZE(w, h) (((w) * (h)) << 2)
-#define GET_24BPP_FRAME_SIZE(w, h) (((w) * (h)) * 3)
-#define GET_16BPP_FRAME_SIZE(w, h) (((w) * (h)) << 1)
-
-inline unsigned int FRAME_SIZE(int HAL_PIXEL_FORMAT, int w, int h)
-{
- unsigned int frame_size = 0;
- unsigned int size = 0;
-
- switch (HAL_PIXEL_FORMAT) {
- // 16bpp
- case HAL_PIXEL_FORMAT_RGB_565:
- case HAL_PIXEL_FORMAT_RGBA_5551:
- //case HAL_PIXEL_FORMAT_ARGB_1555:
- //case HAL_PIXEL_FORMAT_BGRA_5551:
- //case HAL_PIXEL_FORMAT_ABGR_1555:
-
- //case HAL_PIXEL_FORMAT_RGBX_5551:
- //case HAL_PIXEL_FORMAT_XRGB_1555:
- //case HAL_PIXEL_FORMAT_BGRX_5551:
- //case HAL_PIXEL_FORMAT_XBGR_1555:
-
- case HAL_PIXEL_FORMAT_RGBA_4444:
- //case HAL_PIXEL_FORMAT_ARGB_4444:
- //case HAL_PIXEL_FORMAT_BGRA_4444:
- //case HAL_PIXEL_FORMAT_ABGR_4444:
-
- //case HAL_PIXEL_FORMAT_RGBX_4444:
- //case HAL_PIXEL_FORMAT_XRGB_4444:
- //case HAL_PIXEL_FORMAT_BGRX_4444:
- //case HAL_PIXEL_FORMAT_XBGR_4444:
- frame_size = GET_16BPP_FRAME_SIZE(w, h);
- break;
-
- // 24bpp
- case HAL_PIXEL_FORMAT_RGB_888:
- frame_size = GET_24BPP_FRAME_SIZE(w, h);
- break;
-
- // 32bpp
- case HAL_PIXEL_FORMAT_RGBA_8888:
- //case HAL_PIXEL_FORMAT_ARGB_8888:
- case HAL_PIXEL_FORMAT_BGRA_8888:
- //case HAL_PIXEL_FORMAT_ABGR_8888:
-
- case HAL_PIXEL_FORMAT_RGBX_8888:
- //case HAL_PIXEL_FORMAT_XRGB_8888:
- //case HAL_PIXEL_FORMAT_BGRX_8888:
- //case HAL_PIXEL_FORMAT_XBGR_8888:
- frame_size = GET_32BPP_FRAME_SIZE(w, h);
- break;
-
- // 12bpp
- case HAL_PIXEL_FORMAT_YV12:
- case HAL_PIXEL_FORMAT_YCrCb_420_SP:
- case SAMSUNG_HAL_PIXEL_FORMAT_YCbCr_420_P:
- case SAMSUNG_HAL_PIXEL_FORMAT_YCbCr_420_I:
- case SAMSUNG_HAL_PIXEL_FORMAT_CbYCrY_420_I:
- case SAMSUNG_HAL_PIXEL_FORMAT_YCbCr_420_SP:
- case SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP:
- case SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_YCrCb_420_SP:
- size = w * h;
- // frame_size = width * height * 3 / 2;
- // sw5771.park : very curious...
- // frame_size = size + ((size / 4) * 2);
- frame_size = size + ((size >> 2) << 1);
- break;
-
- case SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP_TILED:
- frame_size = ALIGN_TO_8KB(ALIGN_TO_128B(w) * ALIGN_TO_32B(h))
- + ALIGN_TO_8KB(ALIGN_TO_128B(w) * ALIGN_TO_32B(h >> 1));
- break;
-
- // 16bpp
- case HAL_PIXEL_FORMAT_YCbCr_422_SP:
- case HAL_PIXEL_FORMAT_YCbCr_422_I:
- case SAMSUNG_HAL_PIXEL_FORMAT_YCbCr_422_P:
- case SAMSUNG_HAL_PIXEL_FORMAT_CbYCrY_422_I:
- case SAMSUNG_HAL_PIXEL_FORMAT_YCrCb_422_SP:
- case SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_YCbCr_422_SP:
- case SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_YCrCb_422_SP:
- case SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_YCbCr_422_I:
- case SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_YCrCb_422_I:
- case SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_CbYCrY_422_I:
- case SAMSUNG_HAL_PIXEL_FORMAT_CUSTOM_CrYCbY_422_I:
- frame_size = GET_16BPP_FRAME_SIZE(w, h);
- break;
-
- default:
- ALOGD("%s::no matching source colorformat(0x%x), w(%d), h(%d) fail\n",
- __func__, HAL_PIXEL_FORMAT, w, h);
- break;
- }
-
- return frame_size;
-}
-
-#endif //__SAMSUNG_SYSLSI_SEC_COMMON_H__
diff --git a/include/videodev2_samsung.h b/include/videodev2_samsung.h
deleted file mode 100755
index 6c3fd7f..0000000
--- a/include/videodev2_samsung.h
+++ /dev/null
@@ -1,638 +0,0 @@
-/*
- * Video for Linux Two header file for samsung
- *
- * Copyright (C) 2009, Samsung Electronics
- *
- * This header file contains several v4l2 APIs to be proposed to v4l2
- * community and until bein accepted, will be used restrictly in Samsung's
- * camera interface driver FIMC.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * Alternatively, Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef __LINUX_VIDEODEV2_SAMSUNG_H
-#define __LINUX_VIDEODEV2_SAMSUNG_H
-
-/* Values for 'capabilities' field */
-/* Object detection device */
-#define V4L2_CAP_OBJ_RECOGNITION 0x10000000
-/* strobe control */
-#define V4L2_CAP_STROBE 0x20000000
-
-#define V4L2_CID_FOCUS_MODE (V4L2_CID_CAMERA_CLASS_BASE + 17)
-/* Focus Methods */
-enum v4l2_focus_mode {
- V4L2_FOCUS_MODE_AUTO = 0,
- V4L2_FOCUS_MODE_MACRO = 1,
- V4L2_FOCUS_MODE_MANUAL = 2,
- V4L2_FOCUS_MODE_LASTP = 2,
-};
-
-#define V4L2_CID_ZOOM_MODE (V4L2_CID_CAMERA_CLASS_BASE + 18)
-/* Zoom Methods */
-enum v4l2_zoom_mode {
- V4L2_ZOOM_MODE_CONTINUOUS = 0,
- V4L2_ZOOM_MODE_OPTICAL = 1,
- V4L2_ZOOM_MODE_DIGITAL = 2,
- V4L2_ZOOM_MODE_LASTP = 2,
-};
-
-/* Exposure Methods */
-#define V4L2_CID_PHOTOMETRY (V4L2_CID_CAMERA_CLASS_BASE + 19)
-enum v4l2_photometry_mode {
- V4L2_PHOTOMETRY_MULTISEG = 0, /*Multi Segment */
- V4L2_PHOTOMETRY_CWA = 1, /*Centre Weighted Average */
- V4L2_PHOTOMETRY_SPOT = 2,
- V4L2_PHOTOMETRY_AFSPOT = 3, /*Spot metering on focused point */
- V4L2_PHOTOMETRY_LASTP = V4L2_PHOTOMETRY_AFSPOT,
-};
-
-/* Manual exposure control items menu type: iris, shutter, iso */
-#define V4L2_CID_CAM_APERTURE (V4L2_CID_CAMERA_CLASS_BASE + 20)
-#define V4L2_CID_CAM_SHUTTER (V4L2_CID_CAMERA_CLASS_BASE + 21)
-#define V4L2_CID_CAM_ISO (V4L2_CID_CAMERA_CLASS_BASE + 22)
-
-/* Following CIDs are menu type */
-#define V4L2_CID_SCENEMODE (V4L2_CID_CAMERA_CLASS_BASE + 23)
-#define V4L2_CID_CAM_STABILIZE (V4L2_CID_CAMERA_CLASS_BASE + 24)
-#define V4L2_CID_CAM_MULTISHOT (V4L2_CID_CAMERA_CLASS_BASE + 25)
-
-/* Control dynamic range */
-#define V4L2_CID_CAM_DR (V4L2_CID_CAMERA_CLASS_BASE + 26)
-
-/* White balance preset control */
-#define V4L2_CID_WHITE_BALANCE_PRESET (V4L2_CID_CAMERA_CLASS_BASE + 27)
-
-/* CID extensions */
-#define V4L2_CID_ROTATION (V4L2_CID_PRIVATE_BASE + 0)
-#define V4L2_CID_PADDR_Y (V4L2_CID_PRIVATE_BASE + 1)
-#define V4L2_CID_PADDR_CB (V4L2_CID_PRIVATE_BASE + 2)
-#define V4L2_CID_PADDR_CR (V4L2_CID_PRIVATE_BASE + 3)
-#define V4L2_CID_PADDR_CBCR (V4L2_CID_PRIVATE_BASE + 4)
-#define V4L2_CID_OVERLAY_AUTO (V4L2_CID_PRIVATE_BASE + 5)
-#define V4L2_CID_OVERLAY_VADDR0 (V4L2_CID_PRIVATE_BASE + 6)
-#define V4L2_CID_OVERLAY_VADDR1 (V4L2_CID_PRIVATE_BASE + 7)
-#define V4L2_CID_OVERLAY_VADDR2 (V4L2_CID_PRIVATE_BASE + 8)
-#define V4L2_CID_OVLY_MODE (V4L2_CID_PRIVATE_BASE + 9)
-#define V4L2_CID_DST_INFO (V4L2_CID_PRIVATE_BASE + 10)
-#define V4L2_CID_IMAGE_EFFECT_FN (V4L2_CID_PRIVATE_BASE + 16)
-#define V4L2_CID_IMAGE_EFFECT_APPLY (V4L2_CID_PRIVATE_BASE + 17)
-#define V4L2_CID_IMAGE_EFFECT_CB (V4L2_CID_PRIVATE_BASE + 18)
-#define V4L2_CID_IMAGE_EFFECT_CR (V4L2_CID_PRIVATE_BASE + 19)
-#define V4L2_CID_RESERVED_MEM_BASE_ADDR (V4L2_CID_PRIVATE_BASE + 20)
-#define V4L2_CID_FIMC_VERSION (V4L2_CID_PRIVATE_BASE + 21)
-
-#define V4L2_CID_STREAM_PAUSE (V4L2_CID_PRIVATE_BASE + 53)
-
-/* CID Extensions for camera sensor operations */
-#define V4L2_CID_CAM_PREVIEW_ONOFF (V4L2_CID_PRIVATE_BASE + 64)
-#define V4L2_CID_CAM_CAPTURE (V4L2_CID_PRIVATE_BASE + 65)
-#define V4L2_CID_CAM_JPEG_MEMSIZE (V4L2_CID_PRIVATE_BASE + 66)
-
-#define V4L2_CID_CAM_DATE_INFO_YEAR (V4L2_CID_PRIVATE_BASE + 14)
-#define V4L2_CID_CAM_DATE_INFO_MONTH (V4L2_CID_PRIVATE_BASE + 15)
-#define V4L2_CID_CAM_DATE_INFO_DATE (V4L2_CID_PRIVATE_BASE + 22)
-#define V4L2_CID_CAM_SENSOR_VER (V4L2_CID_PRIVATE_BASE + 23)
-#define V4L2_CID_CAM_FW_MINOR_VER (V4L2_CID_PRIVATE_BASE + 24)
-#define V4L2_CID_CAM_FW_MAJOR_VER (V4L2_CID_PRIVATE_BASE + 25)
-#define V4L2_CID_CAM_PRM_MINOR_VER (V4L2_CID_PRIVATE_BASE + 26)
-#define V4L2_CID_CAM_PRM_MAJOR_VER (V4L2_CID_PRIVATE_BASE + 27)
-#define V4L2_CID_CAM_FW_VER (V4L2_CID_PRIVATE_BASE + 28)
-#define V4L2_CID_CAM_SET_FW_ADDR (V4L2_CID_PRIVATE_BASE + 29)
-#define V4L2_CID_CAM_SET_FW_SIZE (V4L2_CID_PRIVATE_BASE + 30)
-#define V4L2_CID_CAM_UPDATE_FW (V4L2_CID_PRIVATE_BASE + 31)
-#define V4L2_CID_CAM_JPEG_MAIN_SIZE (V4L2_CID_PRIVATE_BASE + 32)
-#define V4L2_CID_CAM_JPEG_MAIN_OFFSET (V4L2_CID_PRIVATE_BASE + 33)
-#define V4L2_CID_CAM_JPEG_THUMB_SIZE (V4L2_CID_PRIVATE_BASE + 34)
-#define V4L2_CID_CAM_JPEG_THUMB_OFFSET (V4L2_CID_PRIVATE_BASE + 35)
-#define V4L2_CID_CAM_JPEG_POSTVIEW_OFFSET (V4L2_CID_PRIVATE_BASE + 36)
-#define V4L2_CID_CAM_JPEG_QUALITY (V4L2_CID_PRIVATE_BASE + 37)
-#define V4L2_CID_CAM_SENSOR_MAKER (V4L2_CID_PRIVATE_BASE + 38)
-#define V4L2_CID_CAM_SENSOR_OPTICAL (V4L2_CID_PRIVATE_BASE + 39)
-#define V4L2_CID_CAM_AF_VER_LOW (V4L2_CID_PRIVATE_BASE + 40)
-#define V4L2_CID_CAM_AF_VER_HIGH (V4L2_CID_PRIVATE_BASE + 41)
-#define V4L2_CID_CAM_GAMMA_RG_LOW (V4L2_CID_PRIVATE_BASE + 42)
-#define V4L2_CID_CAM_GAMMA_RG_HIGH (V4L2_CID_PRIVATE_BASE + 43)
-#define V4L2_CID_CAM_GAMMA_BG_LOW (V4L2_CID_PRIVATE_BASE + 44)
-#define V4L2_CID_CAM_GAMMA_BG_HIGH (V4L2_CID_PRIVATE_BASE + 45)
-#define V4L2_CID_CAM_DUMP_FW (V4L2_CID_PRIVATE_BASE + 46)
-#define V4L2_CID_CAM_GET_DUMP_SIZE (V4L2_CID_PRIVATE_BASE + 47)
-#define V4L2_CID_CAMERA_VT_MODE (V4L2_CID_PRIVATE_BASE + 48)
-#define V4L2_CID_CAMERA_VGA_BLUR (V4L2_CID_PRIVATE_BASE + 49)
-#define V4L2_CID_CAMERA_CAPTURE (V4L2_CID_PRIVATE_BASE + 50)
-
-#define V4L2_CID_MAIN_SW_DATE_INFO_YEAR (V4L2_CID_PRIVATE_BASE + 54)
-#define V4L2_CID_MAIN_SW_DATE_INFO_MONTH (V4L2_CID_PRIVATE_BASE + 55)
-#define V4L2_CID_MAIN_SW_DATE_INFO_DATE (V4L2_CID_PRIVATE_BASE + 56)
-#define V4L2_CID_MAIN_SW_FW_MINOR_VER (V4L2_CID_PRIVATE_BASE + 57)
-#define V4L2_CID_MAIN_SW_FW_MAJOR_VER (V4L2_CID_PRIVATE_BASE + 58)
-#define V4L2_CID_MAIN_SW_PRM_MINOR_VER (V4L2_CID_PRIVATE_BASE + 59)
-#define V4L2_CID_MAIN_SW_PRM_MAJOR_VER (V4L2_CID_PRIVATE_BASE + 60)
-
-enum v4l2_blur {
- BLUR_LEVEL_0 = 0,
- BLUR_LEVEL_1,
- BLUR_LEVEL_2,
- BLUR_LEVEL_3,
- BLUR_LEVEL_MAX,
-};
-
-#define V4L2_CID_CAMERA_SCENE_MODE (V4L2_CID_PRIVATE_BASE + 70)
-enum v4l2_scene_mode {
- SCENE_MODE_BASE,
- SCENE_MODE_NONE,
- SCENE_MODE_PORTRAIT,
- SCENE_MODE_NIGHTSHOT,
- SCENE_MODE_BACK_LIGHT,
- SCENE_MODE_LANDSCAPE,
- SCENE_MODE_SPORTS,
- SCENE_MODE_PARTY_INDOOR,
- SCENE_MODE_BEACH_SNOW,
- SCENE_MODE_SUNSET,
- SCENE_MODE_DUST_DAWN,
- SCENE_MODE_FALL_COLOR,
- SCENE_MODE_FIREWORKS,
- SCENE_MODE_TEXT,
- SCENE_MODE_CANDLE_LIGHT,
- SCENE_MODE_MAX,
-};
-
-#define V4L2_CID_CAMERA_FLASH_MODE (V4L2_CID_PRIVATE_BASE + 71)
-enum v4l2_flash_mode {
- FLASH_MODE_BASE,
- FLASH_MODE_OFF,
- FLASH_MODE_AUTO,
- FLASH_MODE_ON,
- FLASH_MODE_TORCH,
- FLASH_MODE_MAX,
-};
-
-#define V4L2_CID_CAMERA_BRIGHTNESS (V4L2_CID_PRIVATE_BASE + 72)
-enum v4l2_ev_mode {
- EV_MINUS_4 = 0,
- EV_MINUS_3,
- EV_MINUS_2,
- EV_MINUS_1,
- EV_DEFAULT,
- EV_PLUS_1,
- EV_PLUS_2,
- EV_PLUS_3,
- EV_PLUS_4,
- EV_MAX,
-};
-
-#define V4L2_CID_CAMERA_WHITE_BALANCE (V4L2_CID_PRIVATE_BASE + 73)
-enum v4l2_wb_mode {
- WHITE_BALANCE_BASE = 0,
- WHITE_BALANCE_AUTO,
- WHITE_BALANCE_SUNNY,
- WHITE_BALANCE_CLOUDY,
- WHITE_BALANCE_TUNGSTEN,
- WHITE_BALANCE_FLUORESCENT,
- WHITE_BALANCE_MAX,
-};
-
-#define V4L2_CID_CAMERA_EFFECT (V4L2_CID_PRIVATE_BASE + 74)
-enum v4l2_effect_mode {
- IMAGE_EFFECT_BASE = 0,
- IMAGE_EFFECT_NONE,
- IMAGE_EFFECT_BNW,
- IMAGE_EFFECT_SEPIA,
- IMAGE_EFFECT_AQUA,
- IMAGE_EFFECT_ANTIQUE,
- IMAGE_EFFECT_NEGATIVE,
- IMAGE_EFFECT_SHARPEN,
- IMAGE_EFFECT_MAX,
-};
-
-#define V4L2_CID_CAMERA_ISO (V4L2_CID_PRIVATE_BASE + 75)
-enum v4l2_iso_mode {
- ISO_AUTO = 0,
- ISO_50,
- ISO_100,
- ISO_200,
- ISO_400,
- ISO_800,
- ISO_1600,
- ISO_SPORTS,
- ISO_NIGHT,
- ISO_MOVIE,
- ISO_MAX,
-};
-
-#define V4L2_CID_CAMERA_METERING (V4L2_CID_PRIVATE_BASE + 76)
-enum v4l2_metering_mode {
- METERING_BASE = 0,
- METERING_MATRIX,
- METERING_CENTER,
- METERING_SPOT,
- METERING_MAX,
-};
-
-#define V4L2_CID_CAMERA_CONTRAST (V4L2_CID_PRIVATE_BASE + 77)
-enum v4l2_contrast_mode {
- CONTRAST_MINUS_2 = 0,
- CONTRAST_MINUS_1,
- CONTRAST_DEFAULT,
- CONTRAST_PLUS_1,
- CONTRAST_PLUS_2,
- CONTRAST_MAX,
-};
-
-#define V4L2_CID_CAMERA_SATURATION (V4L2_CID_PRIVATE_BASE + 78)
-enum v4l2_saturation_mode {
- SATURATION_MINUS_2 = 0,
- SATURATION_MINUS_1,
- SATURATION_DEFAULT,
- SATURATION_PLUS_1,
- SATURATION_PLUS_2,
- SATURATION_MAX,
-};
-
-#define V4L2_CID_CAMERA_SHARPNESS (V4L2_CID_PRIVATE_BASE + 79)
-enum v4l2_sharpness_mode {
- SHARPNESS_MINUS_2 = 0,
- SHARPNESS_MINUS_1,
- SHARPNESS_DEFAULT,
- SHARPNESS_PLUS_1,
- SHARPNESS_PLUS_2,
- SHARPNESS_MAX,
-};
-
-#define V4L2_CID_CAMERA_WDR (V4L2_CID_PRIVATE_BASE + 80)
-enum v4l2_wdr_mode {
- WDR_OFF,
- WDR_ON,
- WDR_MAX,
-};
-
-#define V4L2_CID_CAMERA_ANTI_SHAKE (V4L2_CID_PRIVATE_BASE + 81)
-enum v4l2_anti_shake_mode {
- ANTI_SHAKE_OFF,
- ANTI_SHAKE_STILL_ON,
- ANTI_SHAKE_MOVIE_ON,
- ANTI_SHAKE_MAX,
-};
-
-#define V4L2_CID_CAMERA_TOUCH_AF_START_STOP (V4L2_CID_PRIVATE_BASE + 82)
-enum v4l2_touch_af {
- TOUCH_AF_STOP = 0,
- TOUCH_AF_START,
- TOUCH_AF_MAX,
-};
-
-#define V4L2_CID_CAMERA_SMART_AUTO (V4L2_CID_PRIVATE_BASE + 83)
-enum v4l2_smart_auto {
- SMART_AUTO_OFF = 0,
- SMART_AUTO_ON,
- SMART_AUTO_MAX,
-};
-
-#define V4L2_CID_CAMERA_VINTAGE_MODE (V4L2_CID_PRIVATE_BASE + 84)
-enum v4l2_vintage_mode {
- VINTAGE_MODE_BASE,
- VINTAGE_MODE_OFF,
- VINTAGE_MODE_NORMAL,
- VINTAGE_MODE_WARM,
- VINTAGE_MODE_COOL,
- VINTAGE_MODE_BNW,
- VINTAGE_MODE_MAX,
-};
-
-#define V4L2_CID_CAMERA_JPEG_QUALITY (V4L2_CID_PRIVATE_BASE + 85)
-#define V4L2_CID_CAMERA_GPS_LATITUDE (V4L2_CID_CAMERA_CLASS_BASE + 30)
-#define V4L2_CID_CAMERA_GPS_LONGITUDE (V4L2_CID_CAMERA_CLASS_BASE + 31)
-#define V4L2_CID_CAMERA_GPS_TIMESTAMP (V4L2_CID_CAMERA_CLASS_BASE + 32)
-#define V4L2_CID_CAMERA_GPS_ALTITUDE (V4L2_CID_CAMERA_CLASS_BASE + 33)
-#define V4L2_CID_CAMERA_EXIF_TIME_INFO (V4L2_CID_CAMERA_CLASS_BASE + 34)
-#define V4L2_CID_CAMERA_GPS_PROCESSINGMETHOD \
- (V4L2_CID_CAMERA_CLASS_BASE + 35)
-#define V4L2_CID_CAMERA_ZOOM (V4L2_CID_PRIVATE_BASE + 90)
-enum v4l2_zoom_level {
- ZOOM_LEVEL_0 = 0,
- ZOOM_LEVEL_1,
- ZOOM_LEVEL_2,
- ZOOM_LEVEL_3,
- ZOOM_LEVEL_4,
- ZOOM_LEVEL_5,
- ZOOM_LEVEL_6,
- ZOOM_LEVEL_7,
- ZOOM_LEVEL_8,
- ZOOM_LEVEL_9,
- ZOOM_LEVEL_10,
- ZOOM_LEVEL_11,
- ZOOM_LEVEL_12,
- ZOOM_LEVEL_MAX,
-};
-
-#define V4L2_CID_CAMERA_FACE_DETECTION (V4L2_CID_PRIVATE_BASE + 91)
-enum v4l2_face_detection {
- FACE_DETECTION_OFF = 0,
- FACE_DETECTION_ON,
- FACE_DETECTION_NOLINE,
- FACE_DETECTION_ON_BEAUTY,
- FACE_DETECTION_MAX,
-};
-
-#define V4L2_CID_CAMERA_SMART_AUTO_STATUS (V4L2_CID_PRIVATE_BASE + 92)
-enum v4l2_smart_auto_status {
- SMART_AUTO_STATUS_AUTO = 0,
- SMART_AUTO_STATUS_LANDSCAPE,
- SMART_AUTO_STATUS_PORTRAIT,
- SMART_AUTO_STATUS_MACRO,
- SMART_AUTO_STATUS_NIGHT,
- SMART_AUTO_STATUS_PORTRAIT_NIGHT,
- SMART_AUTO_STATUS_BACKLIT,
- SMART_AUTO_STATUS_PORTRAIT_BACKLIT,
- SMART_AUTO_STATUS_ANTISHAKE,
- SMART_AUTO_STATUS_PORTRAIT_ANTISHAKE,
- SMART_AUTO_STATUS_MAX,
-};
-
-#define V4L2_CID_CAMERA_SET_AUTO_FOCUS (V4L2_CID_PRIVATE_BASE + 93)
-enum v4l2_auto_focus {
- AUTO_FOCUS_OFF = 0,
- AUTO_FOCUS_ON,
- AUTO_FOCUS_MAX,
-};
-
-#define V4L2_CID_CAMERA_BEAUTY_SHOT (V4L2_CID_PRIVATE_BASE + 94)
-enum v4l2_beauty_shot {
- BEAUTY_SHOT_OFF = 0,
- BEAUTY_SHOT_ON,
- BEAUTY_SHOT_MAX,
-};
-
-#define V4L2_CID_CAMERA_AEAWB_LOCK_UNLOCK (V4L2_CID_PRIVATE_BASE + 95)
-enum v4l2_ae_awb_lockunlock {
- AE_UNLOCK_AWB_UNLOCK = 0,
- AE_LOCK_AWB_UNLOCK,
- AE_UNLOCK_AWB_LOCK,
- AE_LOCK_AWB_LOCK,
- AE_AWB_MAX
-};
-
-#define V4L2_CID_CAMERA_FACEDETECT_LOCKUNLOCK (V4L2_CID_PRIVATE_BASE + 96)
-enum v4l2_face_lock {
- FACE_LOCK_OFF = 0,
- FACE_LOCK_ON,
- FIRST_FACE_TRACKING,
- FACE_LOCK_MAX,
-};
-
-#define V4L2_CID_CAMERA_OBJECT_POSITION_X (V4L2_CID_PRIVATE_BASE + 97)
-#define V4L2_CID_CAMERA_OBJECT_POSITION_Y (V4L2_CID_PRIVATE_BASE + 98)
-#define V4L2_CID_CAMERA_FOCUS_MODE (V4L2_CID_PRIVATE_BASE + 99)
-enum v4l2_focusmode {
- FOCUS_MODE_AUTO = 0,
- FOCUS_MODE_MACRO,
- FOCUS_MODE_FACEDETECT,
- FOCUS_MODE_AUTO_DEFAULT,
- FOCUS_MODE_MACRO_DEFAULT,
- FOCUS_MODE_FACEDETECT_DEFAULT,
- FOCUS_MODE_INFINITY,
- FOCUS_MODE_MAX,
-};
-
-#define V4L2_CID_CAMERA_OBJ_TRACKING_STATUS (V4L2_CID_PRIVATE_BASE + 100)
-enum v4l2_obj_tracking_status {
- OBJECT_TRACKING_STATUS_BASE,
- OBJECT_TRACKING_STATUS_PROGRESSING,
- OBJECT_TRACKING_STATUS_SUCCESS,
- OBJECT_TRACKING_STATUS_FAIL,
- OBJECT_TRACKING_STATUS_MISSING,
- OBJECT_TRACKING_STATUS_MAX,
-};
-
-#define V4L2_CID_CAMERA_OBJ_TRACKING_START_STOP (V4L2_CID_PRIVATE_BASE + 101)
-enum v4l2_ot_start_stop {
- OT_STOP = 0,
- OT_START,
- OT_MAX,
-};
-
-#define V4L2_CID_CAMERA_CAF_START_STOP (V4L2_CID_PRIVATE_BASE + 102)
-enum v4l2_caf_start_stop {
- CAF_STOP = 0,
- CAF_START,
- CAF_MAX,
-};
-
-#define V4L2_CID_CAMERA_AUTO_FOCUS_RESULT_FIRST (V4L2_CID_PRIVATE_BASE + 103)
-#define V4L2_CID_CAMERA_AUTO_FOCUS_RESULT_SECOND (V4L2_CID_PRIVATE_BASE + 120)
-#define V4L2_CID_CAMERA_FINISH_AUTO_FOCUS (V4L2_CID_PRIVATE_BASE + 121)
-
-#define V4L2_CID_CAMERA_FRAME_RATE (V4L2_CID_PRIVATE_BASE + 104)
-enum v4l2_frame_rate {
- FRAME_RATE_AUTO = 0,
- FRAME_RATE_7 = 7,
- FRAME_RATE_15 = 15,
- FRAME_RATE_30 = 30,
- FRAME_RATE_60 = 60,
- FRAME_RATE_120 = 120,
- FRAME_RATE_MAX
-};
-
-#define V4L2_CID_CAMERA_ANTI_BANDING (V4L2_CID_PRIVATE_BASE + 105)
-enum v4l2_anti_banding {
- ANTI_BANDING_AUTO = 0,
- ANTI_BANDING_50HZ = 1,
- ANTI_BANDING_60HZ = 2,
- ANTI_BANDING_OFF = 3,
-};
-
-#define V4L2_CID_CAMERA_SET_GAMMA (V4L2_CID_PRIVATE_BASE + 106)
-enum v4l2_gamma_mode {
- GAMMA_OFF = 0,
- GAMMA_ON = 1,
- GAMMA_MAX,
-};
-
-#define V4L2_CID_CAMERA_SET_SLOW_AE (V4L2_CID_PRIVATE_BASE + 107)
-enum v4l2_slow_ae_mode {
- SLOW_AE_OFF,
- SLOW_AE_ON,
- SLOW_AE_MAX,
-};
-
-#define V4L2_CID_CAMERA_BATCH_REFLECTION (V4L2_CID_PRIVATE_BASE + 108)
-#define V4L2_CID_CAMERA_EXIF_ORIENTATION (V4L2_CID_PRIVATE_BASE + 109)
-
-#define V4L2_CID_CAMERA_RESET (V4L2_CID_PRIVATE_BASE + 111)
-#define V4L2_CID_CAMERA_CHECK_DATALINE (V4L2_CID_PRIVATE_BASE + 112)
-#define V4L2_CID_CAMERA_CHECK_DATALINE_STOP (V4L2_CID_PRIVATE_BASE + 113)
-#define V4L2_CID_CAMERA_GET_ISO (V4L2_CID_PRIVATE_BASE + 114)
-#define V4L2_CID_CAMERA_GET_SHT_TIME (V4L2_CID_PRIVATE_BASE + 115)
-#define V4L2_CID_CAMERA_SENSOR_MODE (V4L2_CID_PRIVATE_BASE + 116)
-#define V4L2_CID_ESD_INT (V4L2_CID_PRIVATE_BASE + 117)
-#define V4L2_CID_CAMERA_GET_FLASH_ONOFF (V4L2_CID_PRIVATE_BASE + 118)
-#define V4L2_CID_CAMERA_RETURN_FOCUS (V4L2_CID_PRIVATE_BASE + 119)
-
-/* Pixel format FOURCC depth Description */
-/* 12 Y/CbCr 4:2:0 64x32 macroblocks */
-#define V4L2_PIX_FMT_NV12T v4l2_fourcc('T', 'V', '1', '2')
-
-/*
- * * V4L2 extention for digital camera
- * */
-/* Strobe flash light */
-enum v4l2_strobe_control {
- /* turn off the flash light */
- V4L2_STROBE_CONTROL_OFF = 0,
- /* turn on the flash light */
- V4L2_STROBE_CONTROL_ON = 1,
- /* act guide light before splash */
- V4L2_STROBE_CONTROL_AFGUIDE = 2,
- /* charge the flash light */
- V4L2_STROBE_CONTROL_CHARGE = 3,
-};
-
-enum v4l2_strobe_conf {
- V4L2_STROBE_OFF = 0, /* Always off */
- V4L2_STROBE_ON = 1, /* Always splashes */
- /* Auto control presets */
- V4L2_STROBE_AUTO = 2,
- V4L2_STROBE_REDEYE_REDUCTION = 3,
- V4L2_STROBE_SLOW_SYNC = 4,
- V4L2_STROBE_FRONT_CURTAIN = 5,
- V4L2_STROBE_REAR_CURTAIN = 6,
- /* Extra manual control presets */
- /* keep turned on until turning off */
- V4L2_STROBE_PERMANENT = 7,
- V4L2_STROBE_EXTERNAL = 8,
-};
-
-enum v4l2_strobe_status {
- V4L2_STROBE_STATUS_OFF = 0,
- /* while processing configurations */
- V4L2_STROBE_STATUS_BUSY = 1,
- V4L2_STROBE_STATUS_ERR = 2,
- V4L2_STROBE_STATUS_CHARGING = 3,
- V4L2_STROBE_STATUS_CHARGED = 4,
-};
-
-/* capabilities field */
-/* No strobe supported */
-#define V4L2_STROBE_CAP_NONE 0x0000
-/* Always flash off mode */
-#define V4L2_STROBE_CAP_OFF 0x0001
-/* Always use flash light mode */
-#define V4L2_STROBE_CAP_ON 0x0002
-/* Flashlight works automatic */
-#define V4L2_STROBE_CAP_AUTO 0x0004
-/* Red-eye reduction */
-#define V4L2_STROBE_CAP_REDEYE 0x0008
-/* Slow sync */
-#define V4L2_STROBE_CAP_SLOWSYNC 0x0010
-/* Front curtain */
-#define V4L2_STROBE_CAP_FRONT_CURTAIN 0x0020
-/* Rear curtain */
-#define V4L2_STROBE_CAP_REAR_CURTAIN 0x0040
-/* keep turned on until turning off */
-#define V4L2_STROBE_CAP_PERMANENT 0x0080
-/* use external strobe */
-#define V4L2_STROBE_CAP_EXTERNAL 0x0100
-
-/* Set mode and Get status */
-struct v4l2_strobe {
- /* off/on/charge:0/1/2 */
- enum v4l2_strobe_control control;
- /* supported strobe capabilities */
- __u32 capabilities;
- enum v4l2_strobe_conf mode;
- enum v4l2_strobe_status status; /* read only */
- /* default is 0 and range of value varies from each models */
- __u32 flash_ev;
- __u32 reserved[4];
-};
-
-#define VIDIOC_S_STROBE _IOWR('V', 83, struct v4l2_strobe)
-#define VIDIOC_G_STROBE _IOR('V', 84, struct v4l2_strobe)
-
-/* Object recognition and collateral actions */
-enum v4l2_recog_mode {
- V4L2_RECOGNITION_MODE_OFF = 0,
- V4L2_RECOGNITION_MODE_ON = 1,
- V4L2_RECOGNITION_MODE_LOCK = 2,
-};
-
-enum v4l2_recog_action {
- V4L2_RECOGNITION_ACTION_NONE = 0, /* only recognition */
- V4L2_RECOGNITION_ACTION_BLINK = 1, /* Capture on blinking */
- V4L2_RECOGNITION_ACTION_SMILE = 2, /* Capture on smiling */
-};
-
-enum v4l2_recog_pattern {
- V4L2_RECOG_PATTERN_FACE = 0, /* Face */
- V4L2_RECOG_PATTERN_HUMAN = 1, /* Human */
- V4L2_RECOG_PATTERN_CHAR = 2, /* Character */
-};
-
-struct v4l2_recog_rect {
- enum v4l2_recog_pattern p; /* detected pattern */
- struct v4l2_rect o; /* detected area */
- __u32 reserved[4];
-};
-
-struct v4l2_recog_data {
- __u8 detect_cnt; /* detected object counter */
- struct v4l2_rect o; /* detected area */
- __u32 reserved[4];
-};
-
-struct v4l2_recognition {
- enum v4l2_recog_mode mode;
-
- /* Which pattern to detect */
- enum v4l2_recog_pattern pattern;
-
- /* How many object to detect */
- __u8 obj_num;
-
- /* select detected object */
- __u32 detect_idx;
-
- /* read only :Get object coordination */
- struct v4l2_recog_data data;
-
- enum v4l2_recog_action action;
- __u32 reserved[4];
-};
-
-#define VIDIOC_S_RECOGNITION _IOWR('V', 85, struct v4l2_recognition)
-#define VIDIOC_G_RECOGNITION _IOR('V', 86, struct v4l2_recognition)
-
-/* We use this struct as the v4l2_streamparm raw_data for
- * VIDIOC_G_PARM and VIDIOC_S_PARM
- */
-struct sec_cam_parm {
- struct v4l2_captureparm capture;
- int contrast;
- int effects;
- int brightness;
- int flash_mode;
- int focus_mode;
- int iso;
- int metering;
- int saturation;
- int scene_mode;
- int sharpness;
- int white_balance;
-};
-
-#endif /* __LINUX_VIDEODEV2_SAMSUNG_H */
diff --git a/libcamera/Android.mk b/libcamera/Android.mk
index 9eb531e..39308a9 100644
--- a/libcamera/Android.mk
+++ b/libcamera/Android.mk
@@ -7,8 +7,8 @@ include $(CLEAR_VARS)
# hw/<COPYPIX_HARDWARE_MODULE_ID>.<ro.product.board>.so
LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/hw
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/../include
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/../libs3cjpeg
+LOCAL_C_INCLUDES += hardware/samsung/exynos3/s5pc110/include
+LOCAL_C_INCLUDES += hardware/samsung/exynos3/s5pc110/libs3cjpeg
LOCAL_C_INCLUDES += frameworks/native/include/media/hardware
LOCAL_SRC_FILES:= \
diff --git a/libhwcomposer/Android.mk b/libhwcomposer/Android.mk
deleted file mode 100644
index 405dcb0..0000000
--- a/libhwcomposer/Android.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright (C) 2008 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-# HAL module implemenation, not prelinked and stored in
-# hw/<COPYPIX_HARDWARE_MODULE_ID>.<ro.product.board>.so
-
-include $(CLEAR_VARS)
-LOCAL_PRELINK_MODULE := false
-LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/hw
-LOCAL_SHARED_LIBRARIES := liblog libcutils libEGL libGLESv1_CM libhardware libhardware_legacy
-LOCAL_CFLAGS += -DLOG_TAG=\"hwcomposer\"
-
-LOCAL_C_INCLUDES := \
- $(LOCAL_PATH)/../include
-
-LOCAL_SRC_FILES := SecHWCUtils.cpp SecHWC.cpp
-
-LOCAL_MODULE := hwcomposer.aries
-LOCAL_MODULE_TAGS := optional
-include $(BUILD_SHARED_LIBRARY)
diff --git a/libhwcomposer/SecHWC.cpp b/libhwcomposer/SecHWC.cpp
deleted file mode 100644
index dda1108..0000000
--- a/libhwcomposer/SecHWC.cpp
+++ /dev/null
@@ -1,688 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- *
- * @author Rama, Meka(v.meka@samsung.com)
- Sangwoo, Park(sw5771.park@samsung.com)
- Jamie Oh (jung-min.oh@samsung.com)
- * @date 2011-07-28
- *
- */
-
-#include <sys/resource.h>
-#include <cutils/log.h>
-#include <cutils/atomic.h>
-#include <EGL/egl.h>
-#include <GLES/gl.h>
-#include <hardware_legacy/uevent.h>
-#include "SecHWCUtils.h"
-
-static IMG_gralloc_module_public_t *gpsGrallocModule;
-
-static int hwc_device_open(const struct hw_module_t* module, const char* name,
- struct hw_device_t** device);
-
-static struct hw_module_methods_t hwc_module_methods = {
- open: hwc_device_open
-};
-
-hwc_module_t HAL_MODULE_INFO_SYM = {
- common: {
- tag: HARDWARE_MODULE_TAG,
- module_api_version: HWC_MODULE_API_VERSION_0_1,
- hal_api_version: HARDWARE_HAL_API_VERSION,
- id: HWC_HARDWARE_MODULE_ID,
- name: "Samsung S5PC11X hwcomposer module",
- author: "SAMSUNG",
- methods: &hwc_module_methods,
- }
-};
-
-static void dump_layer(hwc_layer_t const* l) {
- ALOGD("\ttype=%d, flags=%08x, handle=%p, tr=%02x, blend=%04x, {%d,%d,%d,%d}, {%d,%d,%d,%d}",
- l->compositionType, l->flags, l->handle, l->transform, l->blending,
- l->sourceCrop.left,
- l->sourceCrop.top,
- l->sourceCrop.right,
- l->sourceCrop.bottom,
- l->displayFrame.left,
- l->displayFrame.top,
- l->displayFrame.right,
- l->displayFrame.bottom);
-}
-
-static int set_src_dst_info(hwc_layer_t *cur,
- struct hwc_win_info_t *win,
- struct sec_img *src_img,
- struct sec_img *dst_img,
- struct sec_rect *src_rect,
- struct sec_rect *dst_rect,
- int win_idx)
-{
- IMG_native_handle_t *prev_handle = (IMG_native_handle_t *)(cur->handle);
-
- // set src image
- src_img->w = prev_handle->iWidth;
- src_img->h = prev_handle->iHeight;
- src_img->format = prev_handle->iFormat;
- src_img->base = NULL;
- src_img->offset = 0;
- src_img->mem_id =0;
-
- src_img->mem_type = HWC_PHYS_MEM_TYPE;
- src_img->w = (src_img->w + 15) & (~15);
- src_img->h = (src_img->h + 1) & (~1) ;
-
- //set src rect
- src_rect->x = SEC_MAX(cur->sourceCrop.left, 0);
- src_rect->y = SEC_MAX(cur->sourceCrop.top, 0);
- src_rect->w = SEC_MAX(cur->sourceCrop.right - cur->sourceCrop.left, 0);
- src_rect->w = SEC_MIN(src_rect->w, src_img->w - src_rect->x);
- src_rect->h = SEC_MAX(cur->sourceCrop.bottom - cur->sourceCrop.top, 0);
- src_rect->h = SEC_MIN(src_rect->h, src_img->h - src_rect->y);
-
- //set dst image
- dst_img->w = win->lcd_info.xres;
- dst_img->h = win->lcd_info.yres;
-
- switch (win->lcd_info.bits_per_pixel) {
- case 32:
- dst_img->format = HAL_PIXEL_FORMAT_RGBX_8888;
- break;
- default:
- dst_img->format = HAL_PIXEL_FORMAT_RGB_565;
- break;
- }
-
- dst_img->base = win->addr[win->buf_index];
- dst_img->offset = 0;
- dst_img->mem_id = 0;
- dst_img->mem_type = HWC_PHYS_MEM_TYPE;
-
- //set dst rect
- //fimc dst image will be stored from left top corner
- dst_rect->x = 0;
- dst_rect->y = 0;
- dst_rect->w = win->rect_info.w;
- dst_rect->h = win->rect_info.h;
-
- ALOGV("%s::sr_x %d sr_y %d sr_w %d sr_h %d dr_x %d dr_y %d dr_w %d dr_h %d ",
- __func__, src_rect->x, src_rect->y, src_rect->w, src_rect->h,
- dst_rect->x, dst_rect->y, dst_rect->w, dst_rect->h);
-
- return 0;
-}
-
-static int get_hwc_compos_decision(hwc_layer_t* cur)
-{
- if(cur->flags & HWC_SKIP_LAYER || !cur->handle) {
- ALOGV("%s::is_skip_layer %d cur->handle %x",
- __func__, cur->flags & HWC_SKIP_LAYER, (uint32_t)cur->handle);
- return HWC_FRAMEBUFFER;
- }
-
- IMG_native_handle_t *prev_handle = (IMG_native_handle_t *)(cur->handle);
- int compositionType = HWC_FRAMEBUFFER;
-
- /* check here....if we have any resolution constraints */
- if (((cur->sourceCrop.right - cur->sourceCrop.left) < 16) ||
- ((cur->sourceCrop.bottom - cur->sourceCrop.top) < 8))
- return compositionType;
-
- if ((cur->transform == HAL_TRANSFORM_ROT_90) ||
- (cur->transform == HAL_TRANSFORM_ROT_270)) {
- if(((cur->displayFrame.right - cur->displayFrame.left) < 4)||
- ((cur->displayFrame.bottom - cur->displayFrame.top) < 8))
- return compositionType;
- } else if (((cur->displayFrame.right - cur->displayFrame.left) < 8) ||
- ((cur->displayFrame.bottom - cur->displayFrame.top) < 4))
- return compositionType;
-
- if((prev_handle->usage & GRALLOC_USAGE_PHYS_CONTIG) &&
- (cur->blending == HWC_BLENDING_NONE))
- compositionType = HWC_OVERLAY;
- else
- compositionType = HWC_FRAMEBUFFER;
-
- ALOGV("%s::compositionType %d bpp %d format %x usage %x",
- __func__,compositionType, prev_handle->uiBpp, prev_handle->iFormat,
- prev_handle->usage & GRALLOC_USAGE_PHYS_CONTIG);
-
- return compositionType;
-}
-
-static int assign_overlay_window(struct hwc_context_t *ctx,
- hwc_layer_t *cur,
- int win_idx,
- int layer_idx)
-{
- struct hwc_win_info_t *win;
- sec_rect rect;
- int ret = 0;
-
- if(NUM_OF_WIN <= win_idx)
- return -1;
-
- win = &ctx->win[win_idx];
-
- rect.x = SEC_MAX(cur->displayFrame.left, 0);
- rect.y = SEC_MAX(cur->displayFrame.top, 0);
- rect.w = SEC_MIN(cur->displayFrame.right - rect.x, win->lcd_info.xres - rect.x);
- rect.h = SEC_MIN(cur->displayFrame.bottom - rect.y, win->lcd_info.yres - rect.y);
- win->set_win_flag = 0;
-
- if((rect.x != win->rect_info.x) || (rect.y != win->rect_info.y) ||
- (rect.w != win->rect_info.w) || (rect.h != win->rect_info.h)){
- win->rect_info.x = rect.x;
- win->rect_info.y = rect.y;
- win->rect_info.w = rect.w;
- win->rect_info.h = rect.h;
- win->set_win_flag = 1;
- win->layer_prev_buf = 0;
- }
-
- win->layer_index = layer_idx;
- win->status = HWC_WIN_RESERVED;
-
- ALOGV("%s:: win_x %d win_y %d win_w %d win_h %d lay_idx %d win_idx %d",
- __func__, win->rect_info.x, win->rect_info.y, win->rect_info.w,
- win->rect_info.h, win->layer_index, win_idx );
-
- return 0;
-}
-
-static void reset_win_rect_info(hwc_win_info_t *win)
-{
- win->rect_info.x = 0;
- win->rect_info.y = 0;
- win->rect_info.w = 0;
- win->rect_info.h = 0;
- return;
-}
-
-static int hwc_prepare(hwc_composer_device_t *dev, hwc_layer_list_t* list)
-{
-
- struct hwc_context_t* ctx = (struct hwc_context_t*)dev;
- int overlay_win_cnt = 0;
- int compositionType = 0;
- int ret;
-
- //if geometry is not changed, there is no need to do any work here
- if( !list || (!(list->flags & HWC_GEOMETRY_CHANGED)))
- return 0;
-
- //all the windows are free here....
- for (int i = 0; i < NUM_OF_WIN; i++) {
- ctx->win[i].status = HWC_WIN_FREE;
- ctx->win[i].buf_index = 0;
- }
- ctx->num_of_hwc_layer = 0;
- ctx->num_of_fb_layer = 0;
- ALOGV("%s:: hwc_prepare list->numHwLayers %d", __func__, list->numHwLayers);
-
- for (int i = 0; i < list->numHwLayers ; i++) {
- hwc_layer_t* cur = &list->hwLayers[i];
-
- if (overlay_win_cnt < NUM_OF_WIN) {
- compositionType = get_hwc_compos_decision(cur);
-
- if (compositionType == HWC_FRAMEBUFFER) {
- cur->compositionType = HWC_FRAMEBUFFER;
- ctx->num_of_fb_layer++;
- } else {
- ret = assign_overlay_window(ctx, cur, overlay_win_cnt, i);
- if (ret != 0) {
- cur->compositionType = HWC_FRAMEBUFFER;
- ctx->num_of_fb_layer++;
- continue;
- }
-
- cur->compositionType = HWC_OVERLAY;
- cur->hints = HWC_HINT_CLEAR_FB;
- overlay_win_cnt++;
- ctx->num_of_hwc_layer++;
- }
- } else {
- cur->compositionType = HWC_FRAMEBUFFER;
- ctx->num_of_fb_layer++;
- }
- }
-
- if(list->numHwLayers != (ctx->num_of_fb_layer + ctx->num_of_hwc_layer))
- ALOGV("%s:: numHwLayers %d num_of_fb_layer %d num_of_hwc_layer %d ",
- __func__, list->numHwLayers, ctx->num_of_fb_layer,
- ctx->num_of_hwc_layer);
-
- if (overlay_win_cnt < NUM_OF_WIN) {
- //turn off the free windows
- for (int i = overlay_win_cnt; i < NUM_OF_WIN; i++) {
- window_hide(&ctx->win[i]);
- reset_win_rect_info(&ctx->win[i]);
- }
- }
- return 0;
-}
-
-static int hwc_set(hwc_composer_device_t *dev,
- hwc_display_t dpy,
- hwc_surface_t sur,
- hwc_layer_list_t* list)
-{
- struct hwc_context_t *ctx = (struct hwc_context_t *)dev;
- unsigned int phyAddr[MAX_NUM_PLANES];
- int skipped_window_mask = 0;
- hwc_layer_t* cur;
- struct hwc_win_info_t *win;
- int ret;
- struct sec_img src_img;
- struct sec_img dst_img;
- struct sec_rect src_rect;
- struct sec_rect dst_rect;
-
- if (dpy == NULL && sur == NULL && list == NULL) {
- // release our resources, the screen is turning off
- // in our case, there is nothing to do.
- ctx->num_of_fb_layer_prev = 0;
- return 0;
- }
-
- bool need_swap_buffers = ctx->num_of_fb_layer > 0;
-
- /*
- * H/W composer documentation states:
- * There is an implicit layer containing opaque black
- * pixels behind all the layers in the list.
- * It is the responsibility of the hwcomposer module to make
- * sure black pixels are output (or blended from).
- *
- * Since we're using a blitter, we need to erase the frame-buffer when
- * switching to all-overlay mode.
- *
- */
- if (ctx->num_of_hwc_layer &&
- ctx->num_of_fb_layer==0 && ctx->num_of_fb_layer_prev) {
- /* we're clearing the screen using GLES here, this is very
- * hack-ish, ideal we would use the fimc (if it can do it) */
- glDisable(GL_SCISSOR_TEST);
- glClearColor(0, 0, 0, 0);
- glClear(GL_COLOR_BUFFER_BIT);
- glEnable(GL_SCISSOR_TEST);
- need_swap_buffers = true;
- }
-
- ctx->num_of_fb_layer_prev = ctx->num_of_fb_layer;
-
- if (need_swap_buffers || !list) {
- EGLBoolean sucess = eglSwapBuffers((EGLDisplay)dpy, (EGLSurface)sur);
- if (!sucess) {
- return HWC_EGL_ERROR;
- }
- }
-
- if (!list) {
- /* turn off the all windows */
- for (int i = 0; i < NUM_OF_WIN; i++) {
- window_hide(&ctx->win[i]);
- reset_win_rect_info(&ctx->win[i]);
- ctx->win[i].status = HWC_WIN_FREE;
- }
- ctx->num_of_hwc_layer = 0;
- return 0;
- }
-
- if(ctx->num_of_hwc_layer > NUM_OF_WIN)
- ctx->num_of_hwc_layer = NUM_OF_WIN;
-
- /* compose hardware layers here */
- for (uint32_t i = 0; i < ctx->num_of_hwc_layer; i++) {
- win = &ctx->win[i];
- if (win->status == HWC_WIN_RESERVED) {
- cur = &list->hwLayers[win->layer_index];
-
- if (cur->compositionType == HWC_OVERLAY) {
-
- ret = gpsGrallocModule->GetPhyAddrs(gpsGrallocModule,
- cur->handle, phyAddr);
- if (ret) {
- ALOGE("%s::GetPhyAddrs fail : ret=%d\n", __func__, ret);
- skipped_window_mask |= (1 << i);
- continue;
- }
-
- /* initialize the src & dist context for fimc */
- set_src_dst_info (cur, win, &src_img, &dst_img, &src_rect,
- &dst_rect, i);
-
- ret = runFimc(ctx, &src_img, &src_rect, &dst_img, &dst_rect,
- phyAddr, cur->transform);
- if (ret < 0){
- ALOGE("%s::runFimc fail : ret=%d\n", __func__, ret);
- skipped_window_mask |= (1 << i);
- continue;
- }
-
- if (win->set_win_flag == 1) {
- /* turnoff the window and set the window position with new conf... */
- if (window_set_pos(win) < 0) {
- ALOGE("%s::window_set_pos is failed : %s", __func__,
- strerror(errno));
- skipped_window_mask |= (1 << i);
- continue;
- }
- win->set_win_flag = 0;
- }
-
- /* is the frame didn't change, it needs to be composited
- * because something else below it could have changed, however
- * it doesn't need to be swapped.
- */
- if (win->layer_prev_buf != (uint32_t)cur->handle) {
- win->layer_prev_buf = (uint32_t)cur->handle;
- window_pan_display(win);
- win->buf_index = (win->buf_index + 1) % NUM_OF_WIN_BUF;
- }
-
- if(win->power_state == 0)
- window_show(win);
-
- } else {
- ALOGE("%s:: error : layer %d compositionType should have been \
- HWC_OVERLAY", __func__, win->layer_index);
- skipped_window_mask |= (1 << i);
- continue;
- }
- } else {
- ALOGE("%s:: error : window status should have been HWC_WIN_RESERVED \
- by now... ", __func__);
- skipped_window_mask |= (1 << i);
- continue;
- }
- }
-
- if (skipped_window_mask) {
- //turn off the free windows
- for (int i = 0; i < NUM_OF_WIN; i++) {
- if (skipped_window_mask & (1 << i))
- window_hide(&ctx->win[i]);
- }
- }
-
- return 0;
-}
-
-static void hwc_registerProcs(struct hwc_composer_device* dev,
- hwc_procs_t const* procs)
-{
- struct hwc_context_t* ctx = (struct hwc_context_t*)dev;
- ctx->procs = const_cast<hwc_procs_t *>(procs);
-}
-
-static int hwc_query(struct hwc_composer_device* dev,
- int what, int* value)
-{
- struct hwc_context_t* ctx = (struct hwc_context_t*)dev;
-
- switch (what) {
- case HWC_BACKGROUND_LAYER_SUPPORTED:
- // we don't support the background layer yet
- value[0] = 0;
- break;
- case HWC_VSYNC_PERIOD:
- // vsync period in nanosecond
- value[0] = 1000000000.0 / gpsGrallocModule->psFrameBufferDevice->base.fps;
- break;
- default:
- // unsupported query
- return -EINVAL;
- }
- return 0;
-}
-
-static int hwc_eventControl(struct hwc_composer_device* dev,
- int event, int enabled)
-{
- struct hwc_context_t* ctx = (struct hwc_context_t*)dev;
-
- switch (event) {
- case HWC_EVENT_VSYNC:
- int val = !!enabled;
- int err = ioctl(ctx->global_lcd_win.fd, S3CFB_SET_VSYNC_INT, &val);
- if (err < 0)
- return -errno;
-
- return 0;
- }
-
- return -EINVAL;
-}
-
-void handle_vsync_uevent(hwc_context_t *ctx, const char *buff, int len)
-{
- uint64_t timestamp = 0;
- const char *s = buff;
-
- if(!ctx->procs || !ctx->procs->vsync)
- return;
-
- s += strlen(s) + 1;
-
- while(*s) {
- if (!strncmp(s, "VSYNC=", strlen("VSYNC=")))
- timestamp = strtoull(s + strlen("VSYNC="), NULL, 0);
-
- s += strlen(s) + 1;
- if (s - buff >= len)
- break;
- }
-
- ctx->procs->vsync(ctx->procs, 0, timestamp);
-}
-
-static void *hwc_vsync_thread(void *data)
-{
- hwc_context_t *ctx = (hwc_context_t *)(data);
- char uevent_desc[4096];
- memset(uevent_desc, 0, sizeof(uevent_desc));
-
- setpriority(PRIO_PROCESS, 0, HAL_PRIORITY_URGENT_DISPLAY);
-
- uevent_init();
- while(true) {
- int len = uevent_next_event(uevent_desc, sizeof(uevent_desc) - 2);
-
- bool vsync = !strcmp(uevent_desc, "change@/devices/platform/s3cfb");
- if(vsync)
- handle_vsync_uevent(ctx, uevent_desc, len);
- }
-
- return NULL;
-}
-
-static int hwc_device_close(struct hw_device_t *dev)
-{
- struct hwc_context_t* ctx = (struct hwc_context_t*)dev;
- int ret = 0;
- int i;
-
- if (ctx) {
- if (destroyFimc(&ctx->fimc) < 0) {
- ALOGE("%s::destroyFimc fail", __func__);
- ret = -1;
- }
-
- if (window_close(&ctx->global_lcd_win) < 0) {
- ALOGE("%s::window_close() fail", __func__);
- ret = -1;
- }
-
- for (i = 0; i < NUM_OF_WIN; i++) {
- if (window_close(&ctx->win[i]) < 0) {
- ALOGE("%s::window_close() fail", __func__);
- ret = -1;
- }
- }
-
- // TODO: stop vsync_thread
-
- free(ctx);
- }
- return ret;
-}
-
-static const struct hwc_methods hwc_methods = {
- eventControl: hwc_eventControl
-};
-
-static int hwc_device_open(const struct hw_module_t* module, const char* name,
- struct hw_device_t** device)
-{
- int status = 0;
- int err;
- struct hwc_win_info_t *win;
-
- if(hw_get_module(GRALLOC_HARDWARE_MODULE_ID,
- (const hw_module_t**)&gpsGrallocModule))
- return -EINVAL;
-
- if(strcmp(gpsGrallocModule->base.common.author, "Imagination Technologies"))
- return -EINVAL;
-
- if (strcmp(name, HWC_HARDWARE_COMPOSER))
- return -EINVAL;
-
- struct hwc_context_t *dev;
- dev = (hwc_context_t*)malloc(sizeof(*dev));
-
- /* initialize our state here */
- memset(dev, 0, sizeof(*dev));
-
- /* initialize the procs */
- dev->device.common.tag = HARDWARE_DEVICE_TAG;
- dev->device.common.version = HWC_DEVICE_API_VERSION_0_3;
- dev->device.common.module = const_cast<hw_module_t*>(module);
- dev->device.common.close = hwc_device_close;
-
- dev->device.prepare = hwc_prepare;
- dev->device.set = hwc_set;
- dev->device.registerProcs = hwc_registerProcs;
- dev->device.query = hwc_query;
- dev->device.methods = &hwc_methods;
-
- *device = &dev->device.common;
-
- /* initializing */
- memset(&(dev->fimc), 0, sizeof(s5p_fimc_t));
- dev->fimc.dev_fd = -1;
-
- /* open WIN0 & WIN1 here */
- for (int i = 0; i < NUM_OF_WIN; i++) {
- if (window_open(&(dev->win[i]), i) < 0) {
- ALOGE("%s:: Failed to open window %d device ", __func__, i);
- status = -EINVAL;
- goto err;
- }
- }
-
- /* open window 2, used to query global LCD info */
- if (window_open(&dev->global_lcd_win, 2) < 0) {
- ALOGE("%s:: Failed to open window 2 device ", __func__);
- status = -EINVAL;
- goto err;
- }
-
- /* get default window config */
- if (window_get_global_lcd_info(dev) < 0) {
- ALOGE("%s::window_get_global_lcd_info is failed : %s",
- __func__, strerror(errno));
- status = -EINVAL;
- goto err;
- }
-
- dev->lcd_info.yres_virtual = dev->lcd_info.yres * NUM_OF_WIN_BUF;
-
- /* initialize the window context */
- for (int i = 0; i < NUM_OF_WIN; i++) {
- win = &dev->win[i];
- memcpy(&win->lcd_info, &dev->lcd_info, sizeof(struct fb_var_screeninfo));
- memcpy(&win->var_info, &dev->lcd_info, sizeof(struct fb_var_screeninfo));
-
- win->rect_info.x = 0;
- win->rect_info.y = 0;
- win->rect_info.w = win->var_info.xres;
- win->rect_info.h = win->var_info.yres;
-
- if (window_set_pos(win) < 0) {
- ALOGE("%s::window_set_pos is failed : %s",
- __func__, strerror(errno));
- status = -EINVAL;
- goto err;
- }
-
- if (window_get_info(win) < 0) {
- ALOGE("%s::window_get_info is failed : %s",
- __func__, strerror(errno));
- status = -EINVAL;
- goto err;
- }
-
- win->size = win->fix_info.line_length * win->var_info.yres;
-
- if (!win->fix_info.smem_start){
- ALOGE("%s:: win-%d failed to get the reserved memory", __func__, i);
- status = -EINVAL;
- goto err;
- }
-
- for (int j = 0; j < NUM_OF_WIN_BUF; j++) {
- win->addr[j] = win->fix_info.smem_start + (win->size * j);
- ALOGI("%s::win-%d add[%d] %x ", __func__, i, j, win->addr[j]);
- }
- }
-
- /* open pp */
- if (createFimc(&dev->fimc) < 0) {
- ALOGE("%s::creatFimc() fail", __func__);
- status = -EINVAL;
- goto err;
- }
-
- err = pthread_create(&dev->vsync_thread, NULL, hwc_vsync_thread, dev);
- if (err) {
- ALOGE("%s::pthread_create() failed : %s", __func__, strerror(err));
- status = -err;
- goto err;
- }
-
- ALOGD("%s:: success\n", __func__);
-
- return 0;
-
-err:
- if (destroyFimc(&dev->fimc) < 0)
- ALOGE("%s::destroyFimc() fail", __func__);
-
- if (window_close(&dev->global_lcd_win) < 0)
- ALOGE("%s::window_close() fail", __func__);
-
- for (int i = 0; i < NUM_OF_WIN; i++) {
- if (window_close(&dev->win[i]) < 0)
- ALOGE("%s::window_close() fail", __func__);
- }
-
- return status;
-}
diff --git a/libhwcomposer/SecHWCUtils.cpp b/libhwcomposer/SecHWCUtils.cpp
deleted file mode 100644
index 3c0f6f9..0000000
--- a/libhwcomposer/SecHWCUtils.cpp
+++ /dev/null
@@ -1,880 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- *
- * @author Rama, Meka(v.meka@samsung.com)
- Sangwoo, Park(sw5771.park@samsung.com)
- Jamie Oh (jung-min.oh@samsung.com)
- * @date 2011-07-28
- *
- */
-
-#include "SecHWCUtils.h"
-
-int window_open(struct hwc_win_info_t *win, int id)
-{
- char name[64];
-
- char const * const device_template = "/dev/graphics/fb%u";
- /* window & FB maping
- fb0 -> win-id : 2
- fb1 -> win-id : 3
- fb2 -> win-id : 4
- fb3 -> win-id : 0
- fb4 -> win_id : 1
- it is pre assumed that ...win0 or win1 is used here..
- */
- switch (id) {
- case 0:
- case 1:
- case 2:
- break;
- default:
- ALOGE("%s::id(%d) is weird", __func__, id);
- goto error;
- }
-
- snprintf(name, 64, device_template, (id + 3)%5);
-
- win->fd = open(name, O_RDWR);
- if (win->fd < 0) {
- ALOGE("%s::Failed to open window device (%s) : %s",
- __func__, strerror(errno), device_template);
- goto error;
- }
-
- return 0;
-
-error:
- if (0 <= win->fd)
- close(win->fd);
- win->fd = -1;
-
- return -1;
-}
-
-int window_close(struct hwc_win_info_t *win)
-{
- int ret = 0;
-
- if (0 <= win->fd)
- ret = close(win->fd);
- win->fd = -1;
-
- return ret;
-}
-
-int window_set_pos(struct hwc_win_info_t *win)
-{
- struct secfb_user_window window;
-
- /* before changing the screen configuration...powerdown the window */
- if(window_hide(win) != 0)
- return -1;
-
- win->var_info.xres = win->rect_info.w;
- win->var_info.yres = win->rect_info.h;
-
- win->var_info.activate &= ~FB_ACTIVATE_MASK;
- win->var_info.activate |= FB_ACTIVATE_FORCE;
-
- if (ioctl(win->fd, FBIOPUT_VSCREENINFO, &(win->var_info)) < 0) {
- ALOGE("%s::FBIOPUT_VSCREENINFO(%d, %d) fail",
- __func__, win->rect_info.w, win->rect_info.h);
- return -1;
- }
-
- window.x = win->rect_info.x;
- window.y = win->rect_info.y;
-
- if (ioctl(win->fd, SECFB_WIN_POSITION, &window) < 0) {
- ALOGE("%s::S3CFB_WIN_POSITION(%d, %d) fail",
- __func__, window.x, window.y);
- return -1;
- }
-
- return 0;
-}
-
-int window_get_info(struct hwc_win_info_t *win)
-{
- if (ioctl(win->fd, FBIOGET_FSCREENINFO, &win->fix_info) < 0) {
- ALOGE("FBIOGET_FSCREENINFO failed : %s", strerror(errno));
- goto error;
- }
-
- return 0;
-
-error:
- win->fix_info.smem_start = 0;
-
- return -1;
-}
-
-int window_pan_display(struct hwc_win_info_t *win)
-{
- struct fb_var_screeninfo *lcd_info = &(win->lcd_info);
-
- lcd_info->yoffset = lcd_info->yres * win->buf_index;
-
- if (ioctl(win->fd, FBIOPAN_DISPLAY, lcd_info) < 0) {
- ALOGE("%s::FBIOPAN_DISPLAY(%d / %d / %d) fail(%s)",
- __func__, lcd_info->yres, win->buf_index, lcd_info->yres_virtual,
- strerror(errno));
- return -1;
- }
- return 0;
-}
-
-int window_show(struct hwc_win_info_t *win)
-{
- if(win->power_state == 0) {
- if (ioctl(win->fd, FBIOBLANK, FB_BLANK_UNBLANK) < 0) {
- ALOGE("%s: FBIOBLANK failed : (%d:%s)", __func__, win->fd,
- strerror(errno));
- return -1;
- }
- win->power_state = 1;
- }
- return 0;
-}
-
-int window_hide(struct hwc_win_info_t *win)
-{
- if (win->power_state == 1) {
- if (ioctl(win->fd, FBIOBLANK, FB_BLANK_POWERDOWN) < 0) {
- ALOGE("%s::FBIOBLANK failed : (%d:%s)",
- __func__, win->fd, strerror(errno));
- return -1;
- }
- win->power_state = 0;
- }
- return 0;
-}
-
-int window_get_global_lcd_info(struct hwc_context_t *ctx)
-{
- struct hwc_win_info_t win;
- int ret = 0;
-
- if (ioctl(ctx->global_lcd_win.fd, FBIOGET_VSCREENINFO, &ctx->lcd_info) < 0) {
- ALOGE("FBIOGET_VSCREENINFO failed : %s", strerror(errno));
- return -1;
- }
-
- if (ctx->lcd_info.xres == 0) {
- ctx->lcd_info.xres = DEFAULT_LCD_WIDTH;
- ctx->lcd_info.xres_virtual = DEFAULT_LCD_WIDTH;
- }
-
- if (ctx->lcd_info.yres == 0) {
- ctx->lcd_info.yres = DEFAULT_LCD_HEIGHT;
- ctx->lcd_info.yres_virtual = DEFAULT_LCD_HEIGHT * NUM_OF_WIN_BUF;
- }
-
- if (ctx->lcd_info.bits_per_pixel == 0)
- ctx->lcd_info.bits_per_pixel = DEFAULT_LCD_BPP;
-
- return 0;
-}
-
-int fimc_v4l2_set_src(int fd, unsigned int hw_ver, s5p_fimc_img_info *src)
-{
- struct v4l2_format fmt;
- struct v4l2_cropcap cropcap;
- struct v4l2_crop crop;
- struct v4l2_requestbuffers req;
-
- /*
- * To set size & format for source image (DMA-INPUT)
- */
- fmt.type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
- fmt.fmt.pix.width = src->full_width;
- fmt.fmt.pix.height = src->full_height;
- fmt.fmt.pix.pixelformat = src->color_space;
- fmt.fmt.pix.field = V4L2_FIELD_NONE;
-
- if (ioctl (fd, VIDIOC_S_FMT, &fmt) < 0) {
- ALOGE("VIDIOC_S_FMT failed : errno=%d (%s) : fd=%d", errno,
- strerror(errno), fd);
- return -1;
- }
-
- /*
- * crop input size
- */
- crop.type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
- if (0x50 == hw_ver) {
- crop.c.left = src->start_x;
- crop.c.top = src->start_y;
- } else {
- crop.c.left = 0;
- crop.c.top = 0;
- }
- crop.c.width = src->width;
- crop.c.height = src->height;
- if (ioctl(fd, VIDIOC_S_CROP, &crop) < 0) {
- ALOGE("Error in video VIDIOC_S_CROP (%d, %d, %d, %d)",
- crop.c.left, crop.c.top, crop.c.width, crop.c.height);
- return -1;
- }
-
- /*
- * input buffer type
- */
- req.count = 1;
- req.type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
- req.memory = V4L2_MEMORY_USERPTR;
-
- if (ioctl (fd, VIDIOC_REQBUFS, &req) < 0) {
- ALOGE("Error in VIDIOC_REQBUFS");
- return -1;
- }
-
- return 0;
-}
-
-int fimc_v4l2_set_dst(int fd,
- s5p_fimc_img_info *dst,
- int rotation,
- int flag_h_flip,
- int flag_v_flip,
- unsigned int addr)
-{
- struct v4l2_format sFormat;
- struct v4l2_control vc;
- struct v4l2_framebuffer fbuf;
-
- /*
- * set rotation configuration
- */
- vc.id = V4L2_CID_HFLIP;
- vc.value = flag_h_flip;
- if (ioctl(fd, VIDIOC_S_CTRL, &vc) < 0) {
- ALOGE("Error in video VIDIOC_S_CTRL - flag_h_flip (%d)", flag_h_flip);
- return -1;
- }
-
- vc.id = V4L2_CID_VFLIP;
- vc.value = flag_v_flip;
- if (ioctl(fd, VIDIOC_S_CTRL, &vc) < 0) {
- ALOGE("Error in video VIDIOC_S_CTRL - flag_v_flip (%d)", flag_v_flip);
- return -1;
- }
-
- vc.id = V4L2_CID_ROTATION;
- vc.value = rotation;
- if (ioctl(fd, VIDIOC_S_CTRL, &vc) < 0) {
- ALOGE("Error in video VIDIOC_S_CTRL - rotation (%d)", rotation);
- return -1;
- }
-
- /*
- * set size, format & address for destination image (DMA-OUTPUT)
- */
- if (ioctl (fd, VIDIOC_G_FBUF, &fbuf) < 0) {
- ALOGE("Error in video VIDIOC_G_FBUF");
- return -1;
- }
-
- fbuf.base = (void *)addr;
- fbuf.fmt.width = dst->full_width;
- fbuf.fmt.height = dst->full_height;
- fbuf.fmt.pixelformat = dst->color_space;
- if (ioctl (fd, VIDIOC_S_FBUF, &fbuf) < 0) {
- ALOGE("Error in video VIDIOC_S_FBUF 0x%x %d %d %d",
- (void *)addr, dst->full_width, dst->full_height,
- dst->color_space);
- return -1;
- }
-
- /*
- * set destination window
- */
- sFormat.type = V4L2_BUF_TYPE_VIDEO_OVERLAY;
- sFormat.fmt.win.w.left = dst->start_x;
- sFormat.fmt.win.w.top = dst->start_y;
- sFormat.fmt.win.w.width = dst->width;
- sFormat.fmt.win.w.height = dst->height;
- if (ioctl(fd, VIDIOC_S_FMT, &sFormat) < 0) {
- ALOGE("Error in video VIDIOC_S_FMT %d %d %d %d",
- dst->start_x, dst->start_y, dst->width, dst->height);
- return -1;
- }
-
- return 0;
-}
-
-int fimc_v4l2_stream_on(int fd, enum v4l2_buf_type type)
-{
- if (ioctl (fd, VIDIOC_STREAMON, &type) < 0) {
- ALOGE("Error in VIDIOC_STREAMON");
- return -1;
- }
-
- return 0;
-}
-
-int fimc_v4l2_queue(int fd, struct fimc_buf *fimc_buf)
-{
- struct v4l2_buffer buf;
-
- buf.type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
- buf.memory = V4L2_MEMORY_USERPTR;
- buf.m.userptr = (unsigned long)fimc_buf;
- buf.length = 0;
- buf.index = 0;
-
- if (ioctl (fd, VIDIOC_QBUF, &buf) < 0) {
- ALOGE("Error in VIDIOC_QBUF");
- return -1;
- }
-
- return 0;
-}
-
-int fimc_v4l2_dequeue(int fd)
-{
- struct v4l2_buffer buf;
-
- buf.type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
- buf.memory = V4L2_MEMORY_USERPTR;
-
- if (ioctl (fd, VIDIOC_DQBUF, &buf) < 0) {
- ALOGE("Error in VIDIOC_DQBUF");
- return -1;
- }
-
- return buf.index;
-}
-
-int fimc_v4l2_stream_off(int fd)
-{
- enum v4l2_buf_type type;
- type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
-
- if (ioctl (fd, VIDIOC_STREAMOFF, &type) < 0) {
- ALOGE("Error in VIDIOC_STREAMOFF");
- return -1;
- }
-
- return 0;
-}
-
-int fimc_v4l2_clr_buf(int fd)
-{
- struct v4l2_requestbuffers req;
-
- req.count = 0;
- req.type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
- req.memory = V4L2_MEMORY_USERPTR;
-
- if (ioctl (fd, VIDIOC_REQBUFS, &req) < 0) {
- ALOGE("Error in VIDIOC_REQBUFS");
- }
-
- return 0;
-}
-
-int fimc_handle_oneshot(int fd, struct fimc_buf *fimc_buf)
-{
- int ret =0;
-
- if (fimc_v4l2_stream_on(fd, V4L2_BUF_TYPE_VIDEO_OUTPUT) < 0) {
- ALOGE("Fail : v4l2_stream_on()");
- return -1;
- }
-
- if (fimc_v4l2_queue(fd, fimc_buf) < 0) {
- ALOGE("Fail : v4l2_queue()");
- ret = -1;
- goto stream_off;
- }
-
- if (fimc_v4l2_dequeue(fd) < 0) {
- ALOGE("Fail : v4l2_dequeue()");
- ret = -1;
- goto stream_off;
- }
-
-stream_off:
- if (fimc_v4l2_stream_off(fd) < 0) {
- ALOGE("Fail : v4l2_stream_off()");
- return -1;
- }
-
- if (fimc_v4l2_clr_buf(fd) < 0) {
- ALOGE("Fail : v4l2_clr_buf()");
- return -1;
- }
-
- return ret;
-}
-
-static int get_src_phys_addr(struct hwc_context_t *ctx,
- sec_img *src_img,
- unsigned int *phyAddr)
-{
- s5p_fimc_t *fimc = &ctx->fimc;
-
- if(src_img->mem_type == HWC_PHYS_MEM_TYPE) {
- switch(src_img->format) {
- case SAMSUNG_HAL_PIXEL_FORMAT_YCbCr_420_SP:
- fimc->params.src.buf_addr_phy_rgb_y = phyAddr[0];
- fimc->params.src.buf_addr_phy_cb = phyAddr[1];
- break;
- default:
- ALOGE("%s format error (format=0x%x)", __func__,
- src_img->format);
- return -1;
- }
- } else {
- ALOGE("%s mem_type error (mem_type=%d)", __func__, src_img->mem_type);
- return -1;
- }
-
- return 0;
-}
-
-static int get_dst_phys_addr(struct hwc_context_t *ctx,
- sec_img *dst_img)
-{
- unsigned int dst_phys_addr = 0;
-
- if (HWC_PHYS_MEM_TYPE == dst_img->mem_type && 0 != dst_img->base)
- dst_phys_addr = dst_img->base;
- else {
- ALOGE("%s::get_dst_phys_addr fail ", __func__);
- dst_phys_addr = 0;
- }
- return dst_phys_addr;
-}
-
-static inline int rotateValueHAL2PP(unsigned char transform,
- int *flag_h_flip,
- int *flag_v_flip)
-{
- int rotate_result = 0;
- int rotate_flag = transform & 0x7;
-
- switch (rotate_flag) {
- case HAL_TRANSFORM_ROT_90:
- rotate_result = 90;
- break;
- case HAL_TRANSFORM_ROT_180:
- rotate_result = 180;
- break;
- case HAL_TRANSFORM_ROT_270:
- rotate_result = 270;
- break;
- }
-
- switch (rotate_flag) {
- case HAL_TRANSFORM_FLIP_H:
- *flag_h_flip = 1;
- *flag_v_flip = 0;
- break;
- case HAL_TRANSFORM_FLIP_V:
- *flag_h_flip = 0;
- *flag_v_flip = 1;
- break;
- default:
- *flag_h_flip = 0;
- *flag_v_flip = 0;
- break;
- }
-
- return rotate_result;
-}
-
-static inline int multipleOfN(int number, int N)
-{
- int result = number;
- switch (N) {
- case 1:
- case 2:
- case 4:
- case 8:
- case 16:
- case 32:
- case 64:
- case 128:
- case 256:
- result = (number - (number & (N-1)));
- break;
- default:
- result = number - (number % N);
- break;
- }
- return result;
-}
-
-static inline int widthOfPP(unsigned int ver,
- int pp_color_format,
- int number)
-{
- if (0x50 == ver) {
- switch(pp_color_format) {
- /* 422 1/2/3 plane */
- case V4L2_PIX_FMT_YUYV:
- case V4L2_PIX_FMT_UYVY:
- case V4L2_PIX_FMT_NV61:
- case V4L2_PIX_FMT_NV16:
- case V4L2_PIX_FMT_YUV422P:
-
- /* 420 2/3 plane */
- case V4L2_PIX_FMT_NV21:
- case V4L2_PIX_FMT_NV12:
- case V4L2_PIX_FMT_NV12T:
- case V4L2_PIX_FMT_YUV420:
- return multipleOfN(number, 2);
-
- default :
- return number;
- }
- } else {
- switch(pp_color_format) {
- case V4L2_PIX_FMT_RGB565:
- return multipleOfN(number, 8);
-
- case V4L2_PIX_FMT_RGB32:
- return multipleOfN(number, 4);
-
- case V4L2_PIX_FMT_YUYV:
- case V4L2_PIX_FMT_UYVY:
- return multipleOfN(number, 4);
-
- case V4L2_PIX_FMT_NV61:
- case V4L2_PIX_FMT_NV16:
- return multipleOfN(number, 8);
-
- case V4L2_PIX_FMT_YUV422P:
- return multipleOfN(number, 16);
-
- case V4L2_PIX_FMT_NV21:
- case V4L2_PIX_FMT_NV12:
- case V4L2_PIX_FMT_NV12T:
- return multipleOfN(number, 8);
-
- case V4L2_PIX_FMT_YUV420:
- return multipleOfN(number, 16);
-
- default :
- return number;
- }
- }
- return number;
-}
-
-static inline int heightOfPP(int pp_color_format,
- int number)
-{
- switch(pp_color_format) {
- case V4L2_PIX_FMT_NV21:
- case V4L2_PIX_FMT_NV12:
- case V4L2_PIX_FMT_NV12T:
- case V4L2_PIX_FMT_YUV420:
- return multipleOfN(number, 2);
-
- default :
- return number;
- }
- return number;
-}
-
-static int runcFimcCore(struct hwc_context_t *ctx,
- sec_img *src_img,
- sec_rect *src_rect,
- uint32_t src_color_space,
- unsigned int dst_phys_addr,
- sec_img *dst_img,
- sec_rect *dst_rect,
- uint32_t dst_color_space,
- int transform)
-{
- s5p_fimc_t * fimc = &ctx->fimc;
- s5p_fimc_params_t * params = &(fimc->params);
-
- unsigned int frame_size = 0;
- struct fimc_buf fimc_src_buf;
-
- int src_bpp, src_planes;
- int flag_h_flip = 0;
- int flag_v_flip = 0;
- int rotate_value = rotateValueHAL2PP(transform, &flag_h_flip, &flag_v_flip);
-
- /* set post processor configuration */
- params->src.full_width = src_img->w;
- params->src.full_height = src_img->h;
- params->src.start_x = src_rect->x;
- params->src.start_y = src_rect->y;
- params->src.width = widthOfPP(fimc->hw_ver, src_color_space, src_rect->w);
- params->src.height = heightOfPP(src_color_space, src_rect->h);
- params->src.color_space = src_color_space;
-
-
- /* check minimum */
- if (src_rect->w < 16 || src_rect->h < 8) {
- ALOGE("%s src size is not supported by fimc : f_w=%d f_h=%d x=%d y=%d \
- w=%d h=%d (ow=%d oh=%d) format=0x%x", __func__,
- params->src.full_width, params->src.full_height,
- params->src.start_x, params->src.start_y, params->src.width,
- params->src.height, src_rect->w, src_rect->h,
- params->src.color_space);
- return -1;
- }
-
-switch (rotate_value) {
- case 0:
- params->dst.full_width = dst_img->w;
- params->dst.full_height = dst_img->h;
-
- params->dst.start_x = dst_rect->x;
- params->dst.start_y = dst_rect->y;
-
- params->dst.width =
- widthOfPP(fimc->hw_ver, dst_color_space, dst_rect->w);
- params->dst.height = heightOfPP(dst_color_space, dst_rect->h);
- break;
- case 90:
- params->dst.full_width = dst_img->h;
- params->dst.full_height = dst_img->w;
-
- params->dst.start_x = dst_rect->y;
- params->dst.start_y = dst_img->w - (dst_rect->x + dst_rect->w);
-
- params->dst.width =
- widthOfPP(fimc->hw_ver, dst_color_space, dst_rect->h);
- params->dst.height =
- widthOfPP(fimc->hw_ver, dst_color_space, dst_rect->w);
-
- if (0x50 > fimc->hw_ver)
- params->dst.start_y += (dst_rect->w - params->dst.height);
- break;
- case 180:
- params->dst.full_width = dst_img->w;
- params->dst.full_height = dst_img->h;
-
- params->dst.start_x = dst_img->w - (dst_rect->x + dst_rect->w);
- params->dst.start_y = dst_img->h - (dst_rect->y + dst_rect->h);
-
- params->dst.width =
- widthOfPP(fimc->hw_ver, dst_color_space, dst_rect->w);
- params->dst.height = heightOfPP(dst_color_space, dst_rect->h);
- break;
- case 270:
- params->dst.full_width = dst_img->h;
- params->dst.full_height = dst_img->w;
-
- params->dst.start_x = dst_img->h - (dst_rect->y + dst_rect->h);
- params->dst.start_y = dst_rect->x;
-
- params->dst.width =
- widthOfPP(fimc->hw_ver, dst_color_space, dst_rect->h);
- params->dst.height =
- widthOfPP(fimc->hw_ver, dst_color_space, dst_rect->w);
-
- if (0x50 > fimc->hw_ver)
- params->dst.start_y += (dst_rect->w - params->dst.height);
- break;
- }
-
-
- params->dst.color_space = dst_color_space;
-
- /* check minimum */
- if (dst_rect->w < 8 || dst_rect->h < 4) {
- ALOGE("%s dst size is not supported by fimc : \
- f_w=%d f_h=%d x=%d y=%d w=%d h=%d (ow=%d oh=%d) format=0x%x",
- __func__, params->dst.full_width, params->dst.full_height,
- params->dst.start_x, params->dst.start_y, params->dst.width,
- params->dst.height, dst_rect->w, dst_rect->h,
- params->dst.color_space);
- return -1;
- }
-
- /* check scaling limit
- * the scaling limie must not be more than MAX_RESIZING_RATIO_LIMIT
- */
- if (((src_rect->w > dst_rect->w) &&
- ((src_rect->w / dst_rect->w) > MAX_RESIZING_RATIO_LIMIT)) ||
- ((dst_rect->w > src_rect->w) &&
- ((dst_rect->w / src_rect->w) > MAX_RESIZING_RATIO_LIMIT))) {
- ALOGE("%s over scaling limit : src.w=%d dst.w=%d (limit=%d)",
- __func__, src_rect->w, dst_rect->w, MAX_RESIZING_RATIO_LIMIT);
- return -1;
- }
-
-
- /* set configuration related to destination (DMA-OUT)
- * - set input format & size
- * - crop input size
- * - set input buffer
- * - set buffer type (V4L2_MEMORY_USERPTR)
- */
- if (fimc_v4l2_set_dst(fimc->dev_fd,
- &params->dst,
- rotate_value,
- flag_h_flip,
- flag_v_flip,
- dst_phys_addr) < 0) {
- return -1;
- }
-
- /* set configuration related to source (DMA-INPUT)
- * - set input format & size
- * - crop input size
- * - set input buffer
- * - set buffer type (V4L2_MEMORY_USERPTR)
- */
- if (fimc_v4l2_set_src(fimc->dev_fd, fimc->hw_ver, &params->src) < 0)
- return -1;
-
- /* set input dma address (Y/RGB, Cb, Cr) */
- switch (src_img->format) {
- case SAMSUNG_HAL_PIXEL_FORMAT_YCbCr_420_SP:
- /* for video display zero copy case */
- fimc_src_buf.base[0] = params->src.buf_addr_phy_rgb_y;
- fimc_src_buf.base[1] = params->src.buf_addr_phy_cb;
- break;
-
- default:
- /* set source image */
- fimc_src_buf.base[0] = params->src.buf_addr_phy_rgb_y;
- break;
- }
-
- if (fimc_handle_oneshot(fimc->dev_fd, &fimc_src_buf) < 0) {
- fimc_v4l2_clr_buf(fimc->dev_fd);
- return -1;
- }
-
- return 0;
-}
-
-int createFimc(s5p_fimc_t *fimc)
-{
- struct v4l2_capability cap;
- struct v4l2_format fmt;
- struct v4l2_control vc;
-
- #define PP_DEVICE_DEV_NAME "/dev/video1"
-
- /* open device file */
- if(fimc->dev_fd < 0) {
- fimc->dev_fd = open(PP_DEVICE_DEV_NAME, O_RDWR);
-
- if (fimc->dev_fd < 0) {
- ALOGE("%s::Post processor open error (%d)", __func__, errno);
- goto err;
- }
- }
-
- /* check capability */
- if (ioctl(fimc->dev_fd, VIDIOC_QUERYCAP, &cap) < 0) {
- ALOGE("VIDIOC_QUERYCAP failed");
- goto err;
- }
-
- if (!(cap.capabilities & V4L2_CAP_STREAMING)) {
- ALOGE("%d has no streaming support", fimc->dev_fd);
- goto err;
- }
-
- if (!(cap.capabilities & V4L2_CAP_VIDEO_OUTPUT)) {
- ALOGE("%d is no video output", fimc->dev_fd);
- goto err;
- }
-
- /*
- * malloc fimc_outinfo structure
- */
- fmt.type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
- if (ioctl(fimc->dev_fd, VIDIOC_G_FMT, &fmt) < 0) {
- ALOGE("%s::Error in video VIDIOC_G_FMT", __func__);
- goto err;
- }
-
- vc.id = V4L2_CID_FIMC_VERSION;
- vc.value = 0;
-
- if (ioctl(fimc->dev_fd, VIDIOC_G_CTRL, &vc) < 0) {
- ALOGE("%s::Error in video VIDIOC_G_CTRL", __func__);
- goto err;
- }
- fimc->hw_ver = vc.value;
-
- return 0;
-
-err:
- if (0 <= fimc->dev_fd)
- close(fimc->dev_fd);
- fimc->dev_fd = -1;
-
- return -1;
-}
-
-int destroyFimc(s5p_fimc_t *fimc)
-{
- if (fimc->out_buf.virt_addr != NULL) {
- fimc->out_buf.virt_addr = NULL;
- fimc->out_buf.length = 0;
- }
-
- /* close */
- if (0 <= fimc->dev_fd)
- close(fimc->dev_fd);
- fimc->dev_fd = -1;
-
- return 0;
-}
-
-int runFimc(struct hwc_context_t *ctx,
- struct sec_img *src_img,
- struct sec_rect *src_rect,
- struct sec_img *dst_img,
- struct sec_rect *dst_rect,
- unsigned int *phyAddr,
- uint32_t transform)
-{
- s5p_fimc_t *fimc = &ctx->fimc;
- unsigned int dst_phys_addr = 0;
- int32_t src_color_space;
- int32_t dst_color_space;
-
- /* 1 : source address and size */
-
- if(0 > get_src_phys_addr(ctx, src_img, phyAddr))
- return -1;
-
- /* 2 : destination address and size */
- if(0 == (dst_phys_addr = get_dst_phys_addr(ctx, dst_img)))
- return -2;
-
- /* check whether fimc supports the src format */
- if (0 > (src_color_space = HAL_PIXEL_FORMAT_2_V4L2_PIX(src_img->format)))
- return -3;
-
- if (0 > (dst_color_space = HAL_PIXEL_FORMAT_2_V4L2_PIX(dst_img->format)))
- return -4;
-
- if(runcFimcCore(ctx, src_img, src_rect, (uint32_t)src_color_space,
- dst_phys_addr, dst_img, dst_rect, (uint32_t)dst_color_space, transform) < 0)
- return -5;
-
- return 0;
-}
diff --git a/libhwcomposer/SecHWCUtils.h b/libhwcomposer/SecHWCUtils.h
deleted file mode 100644
index d59c120..0000000
--- a/libhwcomposer/SecHWCUtils.h
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- *
- * @author Rama, Meka(v.meka@samsung.com)
- Sangwoo, Park(sw5771.park@samsung.com)
- Jamie, Oh (jung-min.oh@samsung.com)
- * @date 2011-07-28
- *
- */
-
-#ifndef ANDROID_SEC_HWC_UTILS_H_
-#define ANDROID_SEC_HWC_UTILS_H_
-#include <fcntl.h>
-#include <errno.h>
-#include <cutils/log.h>
-#include <stdlib.h>
-#include <sys/ioctl.h>
-#include <sys/mman.h>
-#include "linux/fb.h"
-#include <linux/videodev.h>
-
-#include <hardware/gralloc.h>
-#include <hardware/hardware.h>
-#include <hardware/hwcomposer.h>
-
-#include "s5p_fimc.h"
-#include "sec_lcd.h"
-#include "sec_format.h"
-#include "sec_utils.h"
-#include "hal_public.h"
-
-#define GRALLOC_USAGE_PHYS_CONTIG GRALLOC_USAGE_PRIVATE_1
-
-#define NUM_OF_WIN (1)
-#define NUM_OF_WIN_BUF (3)
-#define NUM_OF_MEM_OBJ (1)
-#define MAX_NUM_PLANES (3)
-
-#define MAX_RESIZING_RATIO_LIMIT (63)
-
-struct sec_rect {
- uint32_t x;
- uint32_t y;
- uint32_t w;
- uint32_t h;
-};
-
-struct sec_img {
- uint32_t w;
- uint32_t h;
- uint32_t format;
- uint32_t base;
- uint32_t offset;
- int mem_id;
- int mem_type;
-};
-
-inline int SEC_MIN(int x, int y) {
- return ((x < y) ? x : y);
-}
-
-inline int SEC_MAX(int x, int y) {
- return ((x > y) ? x : y);
-}
-
-struct hwc_win_info_t {
- int fd;
- int size;
- sec_rect rect_info;
- uint32_t addr[NUM_OF_WIN_BUF];
- int buf_index;
- int power_state;
- int blending;
- int layer_index;
- uint32_t layer_prev_buf;
- int set_win_flag;
- int status;
- int vsync;
-
- struct fb_fix_screeninfo fix_info;
- struct fb_var_screeninfo var_info;
- struct fb_var_screeninfo lcd_info;
-};
-
-enum {
- HWC_WIN_FREE = 0,
- HWC_WIN_RESERVED,
-};
-
-enum {
- HWC_UNKNOWN_MEM_TYPE = 0,
- HWC_PHYS_MEM_TYPE,
- HWC_VIRT_MEM_TYPE,
-};
-
-struct hwc_context_t {
- hwc_composer_device_t device;
-
- /* our private state goes below here */
- struct hwc_win_info_t win[NUM_OF_WIN];
- struct hwc_win_info_t global_lcd_win;
- struct fb_var_screeninfo lcd_info;
- s5p_fimc_t fimc;
- hwc_procs_t *procs;
- pthread_t vsync_thread;
- unsigned int num_of_fb_layer;
- unsigned int num_of_hwc_layer;
- unsigned int num_of_fb_layer_prev;
-};
-
-int window_open(struct hwc_win_info_t *win, int id);
-int window_close(struct hwc_win_info_t *win);
-int window_set_pos(struct hwc_win_info_t *win);
-int window_get_info(struct hwc_win_info_t *win);
-int window_pan_display(struct hwc_win_info_t *win);
-int window_show(struct hwc_win_info_t *win);
-int window_hide(struct hwc_win_info_t *win);
-int window_get_global_lcd_info(struct hwc_context_t *ctx);
-
-int createFimc(s5p_fimc_t *fimc);
-int destroyFimc(s5p_fimc_t *fimc);
-int runFimc(struct hwc_context_t *ctx,
- struct sec_img *src_img, struct sec_rect *src_rect,
- struct sec_img *dst_img, struct sec_rect *dst_rect,
- unsigned int *phyAddr,
- uint32_t transform);
-#endif /* ANDROID_SEC_HWC_UTILS_H_*/
-
diff --git a/libs3cjpeg/Android.mk b/libs3cjpeg/Android.mk
deleted file mode 100644
index ce61cfa..0000000
--- a/libs3cjpeg/Android.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright (C) 2008 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-
-LOCAL_C_INCLUDES := $(LOCAL_PATH)
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/../include
-
-LOCAL_SRC_FILES:= \
- JpegEncoder.cpp
-
-LOCAL_SHARED_LIBRARIES:= liblog
-LOCAL_SHARED_LIBRARIES+= libdl
-
-LOCAL_MODULE:= libs3cjpeg
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_PRELINK_MODULE := false
-
-include $(BUILD_SHARED_LIBRARY) \ No newline at end of file
diff --git a/libs3cjpeg/Exif.h b/libs3cjpeg/Exif.h
deleted file mode 100644
index 96e11dd..0000000
--- a/libs3cjpeg/Exif.h
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- * Copyright Samsung Electronics Co.,LTD.
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef ANDROID_HARDWARE_EXIF_H
-#define ANDROID_HARDWARE_EXIF_H
-
-#include <math.h>
-
-#define EXIF_LOG2(x) (log((double)(x)) / log(2.0))
-#define APEX_FNUM_TO_APERTURE(x) ((int)(EXIF_LOG2((double)(x)) * 2 + 0.5))
-#define APEX_EXPOSURE_TO_SHUTTER(x) ((x) >= 1 ? \
- (int)(-(EXIF_LOG2((double)(x)) + 0.5)) : \
- (int)(-(EXIF_LOG2((double)(x)) - 0.5)))
-#define APEX_ISO_TO_FILMSENSITIVITY(x) ((int)(EXIF_LOG2((x) / 3.125) + 0.5))
-
-#define NUM_SIZE 2
-#define IFD_SIZE 12
-#define OFFSET_SIZE 4
-
-#define NUM_0TH_IFD_TIFF 10
-#define NUM_0TH_IFD_EXIF 22
-#define NUM_0TH_IFD_GPS 10
-#define NUM_1TH_IFD_TIFF 9
-
-/* Type */
-#define EXIF_TYPE_BYTE 1
-#define EXIF_TYPE_ASCII 2
-#define EXIF_TYPE_SHORT 3
-#define EXIF_TYPE_LONG 4
-#define EXIF_TYPE_RATIONAL 5
-#define EXIF_TYPE_UNDEFINED 7
-#define EXIF_TYPE_SLONG 9
-#define EXIF_TYPE_SRATIONAL 10
-
-#define EXIF_FILE_SIZE 28800
-
-/* 0th IFD TIFF Tags */
-#define EXIF_TAG_IMAGE_WIDTH 0x0100
-#define EXIF_TAG_IMAGE_HEIGHT 0x0101
-#define EXIF_TAG_MAKE 0x010f
-#define EXIF_TAG_MODEL 0x0110
-#define EXIF_TAG_ORIENTATION 0x0112
-#define EXIF_TAG_SOFTWARE 0x0131
-#define EXIF_TAG_DATE_TIME 0x0132
-#define EXIF_TAG_YCBCR_POSITIONING 0x0213
-#define EXIF_TAG_EXIF_IFD_POINTER 0x8769
-#define EXIF_TAG_GPS_IFD_POINTER 0x8825
-
-/* 0th IFD Exif Private Tags */
-#define EXIF_TAG_EXPOSURE_TIME 0x829A
-#define EXIF_TAG_FNUMBER 0x829D
-#define EXIF_TAG_EXPOSURE_PROGRAM 0x8822
-#define EXIF_TAG_ISO_SPEED_RATING 0x8827
-#define EXIF_TAG_EXIF_VERSION 0x9000
-#define EXIF_TAG_DATE_TIME_ORG 0x9003
-#define EXIF_TAG_DATE_TIME_DIGITIZE 0x9004
-#define EXIF_TAG_SHUTTER_SPEED 0x9201
-#define EXIF_TAG_APERTURE 0x9202
-#define EXIF_TAG_BRIGHTNESS 0x9203
-#define EXIF_TAG_EXPOSURE_BIAS 0x9204
-#define EXIF_TAG_MAX_APERTURE 0x9205
-#define EXIF_TAG_METERING_MODE 0x9207
-#define EXIF_TAG_FLASH 0x9209
-#define EXIF_TAG_FOCAL_LENGTH 0x920A
-#define EXIF_TAG_USER_COMMENT 0x9286
-#define EXIF_TAG_COLOR_SPACE 0xA001
-#define EXIF_TAG_PIXEL_X_DIMENSION 0xA002
-#define EXIF_TAG_PIXEL_Y_DIMENSION 0xA003
-#define EXIF_TAG_EXPOSURE_MODE 0xA402
-#define EXIF_TAG_WHITE_BALANCE 0xA403
-#define EXIF_TAG_SCENCE_CAPTURE_TYPE 0xA406
-
-/* 0th IFD GPS Info Tags */
-#define EXIF_TAG_GPS_VERSION_ID 0x0000
-#define EXIF_TAG_GPS_LATITUDE_REF 0x0001
-#define EXIF_TAG_GPS_LATITUDE 0x0002
-#define EXIF_TAG_GPS_LONGITUDE_REF 0x0003
-#define EXIF_TAG_GPS_LONGITUDE 0x0004
-#define EXIF_TAG_GPS_ALTITUDE_REF 0x0005
-#define EXIF_TAG_GPS_ALTITUDE 0x0006
-#define EXIF_TAG_GPS_TIMESTAMP 0x0007
-#define EXIF_TAG_GPS_PROCESSING_METHOD 0x001B
-#define EXIF_TAG_GPS_DATESTAMP 0x001D
-
-/* 1th IFD TIFF Tags */
-#define EXIF_TAG_COMPRESSION_SCHEME 0x0103
-#define EXIF_TAG_X_RESOLUTION 0x011A
-#define EXIF_TAG_Y_RESOLUTION 0x011B
-#define EXIF_TAG_RESOLUTION_UNIT 0x0128
-#define EXIF_TAG_JPEG_INTERCHANGE_FORMAT 0x0201
-#define EXIF_TAG_JPEG_INTERCHANGE_FORMAT_LEN 0x0202
-
-
-typedef enum {
- EXIF_ORIENTATION_UP = 1,
- EXIF_ORIENTATION_90 = 6,
- EXIF_ORIENTATION_180 = 3,
- EXIF_ORIENTATION_270 = 8,
-} ExifOrientationType;
-
-typedef enum {
- EXIF_SCENE_STANDARD,
- EXIF_SCENE_LANDSCAPE,
- EXIF_SCENE_PORTRAIT,
- EXIF_SCENE_NIGHT,
-} CamExifSceneCaptureType;
-
-typedef enum {
- EXIF_METERING_UNKNOWN,
- EXIF_METERING_AVERAGE,
- EXIF_METERING_CENTER,
- EXIF_METERING_SPOT,
- EXIF_METERING_MULTISPOT,
- EXIF_METERING_PATTERN,
- EXIF_METERING_PARTIAL,
- EXIF_METERING_OTHER = 255,
-} CamExifMeteringModeType;
-
-typedef enum {
- EXIF_EXPOSURE_AUTO,
- EXIF_EXPOSURE_MANUAL,
- EXIF_EXPOSURE_AUTO_BRACKET,
-} CamExifExposureModeType;
-
-typedef enum {
- EXIF_WB_AUTO,
- EXIF_WB_MANUAL,
-} CamExifWhiteBalanceType;
-
-/* Values */
-#define EXIF_DEF_MAKER "SAMSUNG"
-#define EXIF_DEF_MODEL "GT-I9020"
-#define EXIF_DEF_SOFTWARE "CRESPOJH2"
-#define EXIF_DEF_EXIF_VERSION "0220"
-#define EXIF_DEF_USERCOMMENTS "User comments"
-
-#define EXIF_DEF_YCBCR_POSITIONING 1 /* centered */
-#define EXIF_DEF_FNUMBER_NUM 26 /* 2.6 */
-#define EXIF_DEF_FNUMBER_DEN 10
-#define EXIF_DEF_EXPOSURE_PROGRAM 3 /* aperture priority */
-#define EXIF_DEF_FOCAL_LEN_NUM 278 /* 2.78mm */
-#define EXIF_DEF_FOCAL_LEN_DEN 100
-#define EXIF_DEF_FLASH 0 /* O: off, 1: on*/
-#define EXIF_DEF_COLOR_SPACE 1
-#define EXIF_DEF_EXPOSURE_MODE EXIF_EXPOSURE_AUTO
-#define EXIF_DEF_APEX_DEN 10
-
-#define EXIF_DEF_COMPRESSION 6
-#define EXIF_DEF_RESOLUTION_NUM 72
-#define EXIF_DEF_RESOLUTION_DEN 1
-#define EXIF_DEF_RESOLUTION_UNIT 2 /* inches */
-
-typedef struct {
- uint32_t num;
- uint32_t den;
-} rational_t;
-
-typedef struct {
- int32_t num;
- int32_t den;
-} srational_t;
-
-typedef struct {
- bool enableGps;
- bool enableThumb;
-
- unsigned char maker[32];
- unsigned char model[32];
- unsigned char software[32];
- unsigned char exif_version[4];
- unsigned char date_time[20];
- unsigned char user_comment[150];
-
- uint32_t width;
- uint32_t height;
- uint32_t widthThumb;
- uint32_t heightThumb;
-
- uint16_t orientation;
- uint16_t ycbcr_positioning;
- uint16_t exposure_program;
- uint16_t iso_speed_rating;
- uint16_t metering_mode;
- uint16_t flash;
- uint16_t color_space;
- uint16_t exposure_mode;
- uint16_t white_balance;
- uint16_t scene_capture_type;
-
- rational_t exposure_time;
- rational_t fnumber;
- rational_t aperture;
- rational_t max_aperture;
- rational_t focal_length;
-
- srational_t shutter_speed;
- srational_t brightness;
- srational_t exposure_bias;
-
- unsigned char gps_latitude_ref[2];
- unsigned char gps_longitude_ref[2];
-
- uint8_t gps_version_id[4];
- uint8_t gps_altitude_ref;
-
- rational_t gps_latitude[3];
- rational_t gps_longitude[3];
- rational_t gps_altitude;
- rational_t gps_timestamp[3];
- unsigned char gps_datestamp[11];
- unsigned char gps_processing_method[100];
-
- rational_t x_resolution;
- rational_t y_resolution;
- uint16_t resolution_unit;
- uint16_t compression_scheme;
-} exif_attribute_t;
-
-
-#endif /* ANDROID_HARDWARE_EXIF_H */
diff --git a/libs3cjpeg/JpegEncoder.cpp b/libs3cjpeg/JpegEncoder.cpp
deleted file mode 100644
index d2b6a6f..0000000
--- a/libs3cjpeg/JpegEncoder.cpp
+++ /dev/null
@@ -1,796 +0,0 @@
-/*
- * Copyright Samsung Electronics Co.,LTD.
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * JPEG DRIVER MODULE (JpegEncoder.cpp)
- * Author : ge.lee -- initial version
- * Date : 03 June 2010
- * Purpose : This file implements the JPEG encoder APIs as needed by Camera HAL
- */
-#define LOG_TAG "JpegEncoder"
-#define MAIN_DUMP 0
-#define THUMB_DUMP 0
-
-#include <utils/Log.h>
-#include <sys/mman.h>
-#include <fcntl.h>
-
-#include "JpegEncoder.h"
-
-static const char ExifAsciiPrefix[] = { 0x41, 0x53, 0x43, 0x49, 0x49, 0x0, 0x0, 0x0 };
-
-namespace android {
-JpegEncoder::JpegEncoder() : available(false)
-{
- mArgs.mmapped_addr = (char *)MAP_FAILED;
- mArgs.enc_param = NULL;
- mArgs.thumb_enc_param = NULL;
-
- mDevFd = open(JPG_DRIVER_NAME, O_RDWR);
- if (mDevFd < 0) {
- ALOGE("Failed to open the device");
- return;
- }
-
- mArgs.mmapped_addr = (char *)mmap(0,
- JPG_TOTAL_BUF_SIZE,
- PROT_READ | PROT_WRITE,
- MAP_SHARED,
- mDevFd,
- 0);
-
- if (mArgs.mmapped_addr == MAP_FAILED) {
- ALOGE("Failed to mmap");
- return;
- }
-
- mArgs.enc_param = new jpg_enc_proc_param;
- if (mArgs.enc_param == NULL) {
- ALOGE("Failed to allocate the memory for enc_param");
- return;
- }
- memset(mArgs.enc_param, 0, sizeof(jpg_enc_proc_param));
-
- mArgs.thumb_enc_param = new jpg_enc_proc_param;
- if (mArgs.thumb_enc_param == NULL) {
- ALOGE("Failed to allocate the memory for thumb_enc_param");
- delete mArgs.enc_param;
- return;
- }
- memset(mArgs.thumb_enc_param, 0, sizeof(jpg_enc_proc_param));
-
- mArgs.enc_param->sample_mode = JPG_420;
- mArgs.enc_param->enc_type = JPG_MAIN;
- mArgs.thumb_enc_param->sample_mode = JPG_420;
- mArgs.thumb_enc_param->enc_type = JPG_THUMBNAIL;
-
- available = true;
-}
-
-JpegEncoder::~JpegEncoder()
-{
- if (mArgs.mmapped_addr != (char*)MAP_FAILED)
- munmap(mArgs.mmapped_addr, JPG_TOTAL_BUF_SIZE);
-
- delete mArgs.enc_param;
-
- delete mArgs.thumb_enc_param;
-
- if (mDevFd > 0)
- close(mDevFd);
-}
-
-jpg_return_status JpegEncoder::setConfig(jpeg_conf type, int32_t value)
-{
- if (!available)
- return JPG_FAIL;
-
- jpg_return_status ret = JPG_SUCCESS;
-
- switch (type) {
- case JPEG_SET_ENCODE_WIDTH:
- if (value < 0 || value > MAX_JPG_WIDTH)
- ret = JPG_FAIL;
- else
- mArgs.enc_param->width = value;
- break;
-
- case JPEG_SET_ENCODE_HEIGHT:
- if (value < 0 || value > MAX_JPG_HEIGHT)
- ret = JPG_FAIL;
- else
- mArgs.enc_param->height = value;
- break;
-
- case JPEG_SET_ENCODE_QUALITY:
- if (value < JPG_QUALITY_LEVEL_1 || value > JPG_QUALITY_LEVEL_4)
- ret = JPG_FAIL;
- else
- mArgs.enc_param->quality = (image_quality_type_t)value;
- break;
-
- case JPEG_SET_ENCODE_IN_FORMAT:
- if (value != JPG_MODESEL_YCBCR && value != JPG_MODESEL_RGB) {
- ret = JPG_FAIL;
- } else {
- mArgs.enc_param->in_format = (in_mode_t)value;
- mArgs.thumb_enc_param->in_format = (in_mode_t)value;
- }
- break;
-
- case JPEG_SET_SAMPING_MODE:
- if (value != JPG_420 && value != JPG_422) {
- ret = JPG_FAIL;
- } else {
- mArgs.enc_param->sample_mode = (sample_mode_t)value;
- mArgs.thumb_enc_param->sample_mode = (sample_mode_t)value;
- }
- break;
-
- case JPEG_SET_THUMBNAIL_WIDTH:
- if (value < 0 || value > MAX_JPG_THUMBNAIL_WIDTH)
- ret = JPG_FAIL;
- else
- mArgs.thumb_enc_param->width = value;
- break;
-
- case JPEG_SET_THUMBNAIL_HEIGHT:
- if (value < 0 || value > MAX_JPG_THUMBNAIL_HEIGHT)
- ret = JPG_FAIL;
- else
- mArgs.thumb_enc_param->height = value;
- break;
-
- default:
- ALOGE("Invalid Config type");
- ret = ERR_UNKNOWN;
- }
-
- if (ret == JPG_FAIL)
- ALOGE("Invalid value(%d) for %d type", value, type);
-
- return ret;
-}
-
-void* JpegEncoder::getInBuf(uint64_t size)
-{
- if (!available)
- return NULL;
-
- if (size > JPG_FRAME_BUF_SIZE) {
- ALOGE("The buffer size requested is too large");
- return NULL;
- }
- mArgs.in_buf = (char *)ioctl(mDevFd, IOCTL_JPG_GET_FRMBUF, mArgs.mmapped_addr);
- return (void *)(mArgs.in_buf);
-}
-
-void* JpegEncoder::getOutBuf(uint64_t *size)
-{
- if (!available)
- return NULL;
-
- if (mArgs.enc_param->file_size <= 0) {
- ALOGE("The buffer requested doesn't have data");
- return NULL;
- }
- mArgs.out_buf = (char *)ioctl(mDevFd, IOCTL_JPG_GET_STRBUF, mArgs.mmapped_addr);
- *size = mArgs.enc_param->file_size;
- return (void *)(mArgs.out_buf);
-}
-
-void* JpegEncoder::getThumbInBuf(uint64_t size)
-{
- if (!available)
- return NULL;
-
- if (size > JPG_FRAME_THUMB_BUF_SIZE) {
- ALOGE("The buffer size requested is too large");
- return NULL;
- }
- mArgs.in_thumb_buf = (char *)ioctl(mDevFd, IOCTL_JPG_GET_THUMB_FRMBUF, mArgs.mmapped_addr);
- return (void *)(mArgs.in_thumb_buf);
-}
-
-void* JpegEncoder::getThumbOutBuf(uint64_t *size)
-{
- if (!available)
- return NULL;
-
- if (mArgs.thumb_enc_param->file_size <= 0) {
- ALOGE("The buffer requested doesn't have data");
- return NULL;
- }
- mArgs.out_thumb_buf = (char *)ioctl(mDevFd, IOCTL_JPG_GET_THUMB_STRBUF, mArgs.mmapped_addr);
- *size = mArgs.thumb_enc_param->file_size;
- return (void *)(mArgs.out_thumb_buf);
-}
-
-jpg_return_status JpegEncoder::encode(unsigned int *size, exif_attribute_t *exifInfo)
-{
- if (!available)
- return JPG_FAIL;
-
- ALOGD("encode E");
-
- jpg_return_status ret = JPG_FAIL;
- unsigned char *exifOut = NULL;
- jpg_enc_proc_param *param = mArgs.enc_param;
-
- ret = checkMcu(param->sample_mode, param->width, param->height, false);
- if (ret != JPG_SUCCESS)
- return ret;
-
- param->enc_type = JPG_MAIN;
- ret = (jpg_return_status)ioctl(mDevFd, IOCTL_JPG_ENCODE, &mArgs);
- if (ret != JPG_SUCCESS) {
- ALOGE("Failed to encode main image");
- return ret;
- }
-
- mArgs.out_buf = (char *)ioctl(mDevFd, IOCTL_JPG_GET_STRBUF, mArgs.mmapped_addr);
-
- if (exifInfo) {
- unsigned int thumbLen, exifLen;
-
- uint_t bufSize = 0;
- if (exifInfo->enableThumb) {
- ret = encodeThumbImg(&thumbLen);
- if (ret != JPG_SUCCESS) {
- ALOGE("Failed to encode for thumbnail image");
- bufSize = EXIF_FILE_SIZE;
- exifInfo->enableThumb = false;
- } else {
- bufSize = EXIF_FILE_SIZE + thumbLen;
- }
- } else {
- bufSize = EXIF_FILE_SIZE;
- }
-
- if (mArgs.enc_param->file_size + bufSize > JPG_TOTAL_BUF_SIZE)
- return ret;
-
- exifOut = new unsigned char[bufSize];
- if (exifOut == NULL) {
- ALOGE("Failed to allocate for exifOut");
- return ret;
- }
- memset(exifOut, 0, bufSize);
-
- ret = makeExif (exifOut, exifInfo, &exifLen);
- if (ret != JPG_SUCCESS) {
- ALOGE("Failed to make EXIF");
- delete[] exifOut;
- return ret;
- }
-
- memmove(&mArgs.out_buf[exifLen + 2], &mArgs.out_buf[2], param->file_size - 2);
- memcpy(&mArgs.out_buf[2], exifOut, exifLen);
- param->file_size += exifLen;
- }
-
- delete[] exifOut;
-
- *size = param->file_size;
-
-#if MAIN_DUMP
- FILE *fout = NULL;
- char file_name[50] = "/data/main.jpg";
- fout = fopen(file_name, "wb");
- if (!fout)
- perror(&file_name[0]);
- size_t nwrite = fwrite(mArgs.out_buf, sizeof(char), param->file_size, fout);
- fclose(fout);
-#endif
-
- ALOGD("encode X");
-
- return ret;
-}
-
-jpg_return_status JpegEncoder::encodeThumbImg(unsigned int *size, bool useMain)
-{
- if (!available)
- return JPG_FAIL;
-
- ALOGD("encodeThumbImg E");
-
- jpg_return_status ret = JPG_FAIL;
- jpg_enc_proc_param *param = mArgs.thumb_enc_param;
-
- if (useMain) {
- mArgs.in_thumb_buf = (char *)getThumbInBuf(param->width*param->height*2);
- if (mArgs.in_thumb_buf == NULL) {
- ALOGE("Failed to get the buffer for thumbnail");
- return JPG_FAIL;
- }
-
- ret = (jpg_return_status)scaleDownYuv422(mArgs.in_buf,
- mArgs.enc_param->width,
- mArgs.enc_param->height,
- mArgs.in_thumb_buf,
- param->width,
- param->height);
- if (ret != JPG_SUCCESS)
- return JPG_FAIL;
- }
-
- ret = checkMcu(param->sample_mode, param->width, param->height, true);
- if (ret != JPG_SUCCESS)
- return JPG_FAIL;
-
- mArgs.enc_param->enc_type = JPG_THUMBNAIL;
- ret = (jpg_return_status)ioctl(mDevFd, IOCTL_JPG_ENCODE, &mArgs);
- if (ret != JPG_SUCCESS) {
- ALOGE("Failed to encode for thumbnail");
- return JPG_FAIL;
- }
-
- mArgs.out_thumb_buf = (char *)ioctl(mDevFd, IOCTL_JPG_GET_THUMB_STRBUF, mArgs.mmapped_addr);
-
-#if THUMB_DUMP
- FILE *fout = NULL;
- char file_name[50] = "/data/thumb.jpg";
- fout = fopen(file_name, "wb");
- if (!fout)
- perror(&file_name[0]);
- size_t nwrite = fwrite(mArgs.out_thumb_buf, sizeof(char), param->file_size, fout);
- fclose(fout);
-#endif
-
- ALOGD("encodeThumbImg X");
-
- return JPG_SUCCESS;
-}
-
-jpg_return_status JpegEncoder::makeExif (unsigned char *exifOut,
- exif_attribute_t *exifInfo,
- unsigned int *size,
- bool useMainbufForThumb)
-{
- if (!available)
- return JPG_FAIL;
-
- ALOGD("makeExif E");
-
- unsigned char *pCur, *pApp1Start, *pIfdStart, *pGpsIfdPtr, *pNextIfdOffset;
- unsigned int tmp, LongerTagOffest = 0;
- pApp1Start = pCur = exifOut;
-
- //2 Exif Identifier Code & TIFF Header
- pCur += 4; // Skip 4 Byte for APP1 marker and length
- unsigned char ExifIdentifierCode[6] = { 0x45, 0x78, 0x69, 0x66, 0x00, 0x00 };
- memcpy(pCur, ExifIdentifierCode, 6);
- pCur += 6;
-
- /* Byte Order - little endian, Offset of IFD - 0x00000008.H */
- unsigned char TiffHeader[8] = { 0x49, 0x49, 0x2A, 0x00, 0x08, 0x00, 0x00, 0x00 };
- memcpy(pCur, TiffHeader, 8);
- pIfdStart = pCur;
- pCur += 8;
-
- //2 0th IFD TIFF Tags
- if (exifInfo->enableGps)
- tmp = NUM_0TH_IFD_TIFF;
- else
- tmp = NUM_0TH_IFD_TIFF - 1;
-
- memcpy(pCur, &tmp, NUM_SIZE);
- pCur += NUM_SIZE;
-
- LongerTagOffest += 8 + NUM_SIZE + tmp*IFD_SIZE + OFFSET_SIZE;
-
- writeExifIfd(&pCur, EXIF_TAG_IMAGE_WIDTH, EXIF_TYPE_LONG,
- 1, exifInfo->width);
- writeExifIfd(&pCur, EXIF_TAG_IMAGE_HEIGHT, EXIF_TYPE_LONG,
- 1, exifInfo->height);
- writeExifIfd(&pCur, EXIF_TAG_MAKE, EXIF_TYPE_ASCII,
- strlen((char *)exifInfo->maker) + 1, exifInfo->maker, &LongerTagOffest, pIfdStart);
- writeExifIfd(&pCur, EXIF_TAG_MODEL, EXIF_TYPE_ASCII,
- strlen((char *)exifInfo->model) + 1, exifInfo->model, &LongerTagOffest, pIfdStart);
- writeExifIfd(&pCur, EXIF_TAG_ORIENTATION, EXIF_TYPE_SHORT,
- 1, exifInfo->orientation);
- writeExifIfd(&pCur, EXIF_TAG_SOFTWARE, EXIF_TYPE_ASCII,
- strlen((char *)exifInfo->software) + 1, exifInfo->software, &LongerTagOffest, pIfdStart);
- writeExifIfd(&pCur, EXIF_TAG_DATE_TIME, EXIF_TYPE_ASCII,
- 20, exifInfo->date_time, &LongerTagOffest, pIfdStart);
- writeExifIfd(&pCur, EXIF_TAG_YCBCR_POSITIONING, EXIF_TYPE_SHORT,
- 1, exifInfo->ycbcr_positioning);
- writeExifIfd(&pCur, EXIF_TAG_EXIF_IFD_POINTER, EXIF_TYPE_LONG,
- 1, LongerTagOffest);
- if (exifInfo->enableGps) {
- pGpsIfdPtr = pCur;
- pCur += IFD_SIZE; // Skip a ifd size for gps IFD pointer
- }
-
- pNextIfdOffset = pCur; // Skip a offset size for next IFD offset
- pCur += OFFSET_SIZE;
-
- //2 0th IFD Exif Private Tags
- pCur = pIfdStart + LongerTagOffest;
-
- tmp = NUM_0TH_IFD_EXIF;
- memcpy(pCur, &tmp , NUM_SIZE);
- pCur += NUM_SIZE;
-
- LongerTagOffest += NUM_SIZE + NUM_0TH_IFD_EXIF*IFD_SIZE + OFFSET_SIZE;
-
- writeExifIfd(&pCur, EXIF_TAG_EXPOSURE_TIME, EXIF_TYPE_RATIONAL,
- 1, &exifInfo->exposure_time, &LongerTagOffest, pIfdStart);
- writeExifIfd(&pCur, EXIF_TAG_FNUMBER, EXIF_TYPE_RATIONAL,
- 1, &exifInfo->fnumber, &LongerTagOffest, pIfdStart);
- writeExifIfd(&pCur, EXIF_TAG_EXPOSURE_PROGRAM, EXIF_TYPE_SHORT,
- 1, exifInfo->exposure_program);
- writeExifIfd(&pCur, EXIF_TAG_ISO_SPEED_RATING, EXIF_TYPE_SHORT,
- 1, exifInfo->iso_speed_rating);
- writeExifIfd(&pCur, EXIF_TAG_EXIF_VERSION, EXIF_TYPE_UNDEFINED,
- 4, exifInfo->exif_version);
- writeExifIfd(&pCur, EXIF_TAG_DATE_TIME_ORG, EXIF_TYPE_ASCII,
- 20, exifInfo->date_time, &LongerTagOffest, pIfdStart);
- writeExifIfd(&pCur, EXIF_TAG_DATE_TIME_DIGITIZE, EXIF_TYPE_ASCII,
- 20, exifInfo->date_time, &LongerTagOffest, pIfdStart);
- writeExifIfd(&pCur, EXIF_TAG_SHUTTER_SPEED, EXIF_TYPE_SRATIONAL,
- 1, (rational_t *)&exifInfo->shutter_speed, &LongerTagOffest, pIfdStart);
- writeExifIfd(&pCur, EXIF_TAG_APERTURE, EXIF_TYPE_RATIONAL,
- 1, &exifInfo->aperture, &LongerTagOffest, pIfdStart);
- writeExifIfd(&pCur, EXIF_TAG_BRIGHTNESS, EXIF_TYPE_SRATIONAL,
- 1, (rational_t *)&exifInfo->brightness, &LongerTagOffest, pIfdStart);
- writeExifIfd(&pCur, EXIF_TAG_EXPOSURE_BIAS, EXIF_TYPE_SRATIONAL,
- 1, (rational_t *)&exifInfo->exposure_bias, &LongerTagOffest, pIfdStart);
- writeExifIfd(&pCur, EXIF_TAG_MAX_APERTURE, EXIF_TYPE_RATIONAL,
- 1, &exifInfo->max_aperture, &LongerTagOffest, pIfdStart);
- writeExifIfd(&pCur, EXIF_TAG_METERING_MODE, EXIF_TYPE_SHORT,
- 1, exifInfo->metering_mode);
- writeExifIfd(&pCur, EXIF_TAG_FLASH, EXIF_TYPE_SHORT,
- 1, exifInfo->flash);
- writeExifIfd(&pCur, EXIF_TAG_FOCAL_LENGTH, EXIF_TYPE_RATIONAL,
- 1, &exifInfo->focal_length, &LongerTagOffest, pIfdStart);
- char code[8] = { 0x00, 0x00, 0x00, 0x49, 0x49, 0x43, 0x53, 0x41 };
- int commentsLen = strlen((char *)exifInfo->user_comment) + 1;
- memmove(exifInfo->user_comment + sizeof(code), exifInfo->user_comment, commentsLen);
- memcpy(exifInfo->user_comment, code, sizeof(code));
- writeExifIfd(&pCur, EXIF_TAG_USER_COMMENT, EXIF_TYPE_UNDEFINED,
- commentsLen + sizeof(code), exifInfo->user_comment, &LongerTagOffest, pIfdStart);
- writeExifIfd(&pCur, EXIF_TAG_COLOR_SPACE, EXIF_TYPE_SHORT,
- 1, exifInfo->color_space);
- writeExifIfd(&pCur, EXIF_TAG_PIXEL_X_DIMENSION, EXIF_TYPE_LONG,
- 1, exifInfo->width);
- writeExifIfd(&pCur, EXIF_TAG_PIXEL_Y_DIMENSION, EXIF_TYPE_LONG,
- 1, exifInfo->height);
- writeExifIfd(&pCur, EXIF_TAG_EXPOSURE_MODE, EXIF_TYPE_LONG,
- 1, exifInfo->exposure_mode);
- writeExifIfd(&pCur, EXIF_TAG_WHITE_BALANCE, EXIF_TYPE_LONG,
- 1, exifInfo->white_balance);
- writeExifIfd(&pCur, EXIF_TAG_SCENCE_CAPTURE_TYPE, EXIF_TYPE_LONG,
- 1, exifInfo->scene_capture_type);
- tmp = 0;
- memcpy(pCur, &tmp, OFFSET_SIZE); // next IFD offset
- pCur += OFFSET_SIZE;
-
- //2 0th IFD GPS Info Tags
- if (exifInfo->enableGps) {
- writeExifIfd(&pGpsIfdPtr, EXIF_TAG_GPS_IFD_POINTER, EXIF_TYPE_LONG,
- 1, LongerTagOffest); // GPS IFD pointer skipped on 0th IFD
-
- pCur = pIfdStart + LongerTagOffest;
-
- if (exifInfo->gps_processing_method[0] == 0) {
- // don't create GPS_PROCESSING_METHOD tag if there isn't any
- tmp = NUM_0TH_IFD_GPS - 1;
- } else {
- tmp = NUM_0TH_IFD_GPS;
- }
- memcpy(pCur, &tmp, NUM_SIZE);
- pCur += NUM_SIZE;
-
- LongerTagOffest += NUM_SIZE + tmp*IFD_SIZE + OFFSET_SIZE;
-
- writeExifIfd(&pCur, EXIF_TAG_GPS_VERSION_ID, EXIF_TYPE_BYTE,
- 4, exifInfo->gps_version_id);
- writeExifIfd(&pCur, EXIF_TAG_GPS_LATITUDE_REF, EXIF_TYPE_ASCII,
- 2, exifInfo->gps_latitude_ref);
- writeExifIfd(&pCur, EXIF_TAG_GPS_LATITUDE, EXIF_TYPE_RATIONAL,
- 3, exifInfo->gps_latitude, &LongerTagOffest, pIfdStart);
- writeExifIfd(&pCur, EXIF_TAG_GPS_LONGITUDE_REF, EXIF_TYPE_ASCII,
- 2, exifInfo->gps_longitude_ref);
- writeExifIfd(&pCur, EXIF_TAG_GPS_LONGITUDE, EXIF_TYPE_RATIONAL,
- 3, exifInfo->gps_longitude, &LongerTagOffest, pIfdStart);
- writeExifIfd(&pCur, EXIF_TAG_GPS_ALTITUDE_REF, EXIF_TYPE_BYTE,
- 1, exifInfo->gps_altitude_ref);
- writeExifIfd(&pCur, EXIF_TAG_GPS_ALTITUDE, EXIF_TYPE_RATIONAL,
- 1, &exifInfo->gps_altitude, &LongerTagOffest, pIfdStart);
- writeExifIfd(&pCur, EXIF_TAG_GPS_TIMESTAMP, EXIF_TYPE_RATIONAL,
- 3, exifInfo->gps_timestamp, &LongerTagOffest, pIfdStart);
- tmp = strlen((char*)exifInfo->gps_processing_method);
- if (tmp > 0) {
- if (tmp > 100) {
- tmp = 100;
- }
- unsigned char tmp_buf[100+sizeof(ExifAsciiPrefix)];
- memcpy(tmp_buf, ExifAsciiPrefix, sizeof(ExifAsciiPrefix));
- memcpy(&tmp_buf[sizeof(ExifAsciiPrefix)], exifInfo->gps_processing_method, tmp);
- writeExifIfd(&pCur, EXIF_TAG_GPS_PROCESSING_METHOD, EXIF_TYPE_UNDEFINED,
- tmp+sizeof(ExifAsciiPrefix), tmp_buf, &LongerTagOffest, pIfdStart);
- }
- writeExifIfd(&pCur, EXIF_TAG_GPS_DATESTAMP, EXIF_TYPE_ASCII,
- 11, exifInfo->gps_datestamp, &LongerTagOffest, pIfdStart);
- tmp = 0;
- memcpy(pCur, &tmp, OFFSET_SIZE); // next IFD offset
- pCur += OFFSET_SIZE;
- }
-
- //2 1th IFD TIFF Tags
- char *thumbBuf;
- int thumbSize;
-
- if (useMainbufForThumb) {
- thumbBuf = mArgs.out_buf;
- thumbSize = mArgs.enc_param->file_size;
- } else {
- thumbBuf = mArgs.out_thumb_buf;
- thumbSize = mArgs.thumb_enc_param->file_size;
- }
-
- if (exifInfo->enableThumb && (thumbBuf != NULL) && (thumbSize > 0)) {
- tmp = LongerTagOffest;
- memcpy(pNextIfdOffset, &tmp, OFFSET_SIZE); // NEXT IFD offset skipped on 0th IFD
-
- pCur = pIfdStart + LongerTagOffest;
-
- tmp = NUM_1TH_IFD_TIFF;
- memcpy(pCur, &tmp, NUM_SIZE);
- pCur += NUM_SIZE;
-
- LongerTagOffest += NUM_SIZE + NUM_1TH_IFD_TIFF*IFD_SIZE + OFFSET_SIZE;
-
- writeExifIfd(&pCur, EXIF_TAG_IMAGE_WIDTH, EXIF_TYPE_LONG,
- 1, exifInfo->widthThumb);
- writeExifIfd(&pCur, EXIF_TAG_IMAGE_HEIGHT, EXIF_TYPE_LONG,
- 1, exifInfo->heightThumb);
- writeExifIfd(&pCur, EXIF_TAG_COMPRESSION_SCHEME, EXIF_TYPE_SHORT,
- 1, exifInfo->compression_scheme);
- writeExifIfd(&pCur, EXIF_TAG_ORIENTATION, EXIF_TYPE_SHORT,
- 1, exifInfo->orientation);
- writeExifIfd(&pCur, EXIF_TAG_X_RESOLUTION, EXIF_TYPE_RATIONAL,
- 1, &exifInfo->x_resolution, &LongerTagOffest, pIfdStart);
- writeExifIfd(&pCur, EXIF_TAG_Y_RESOLUTION, EXIF_TYPE_RATIONAL,
- 1, &exifInfo->y_resolution, &LongerTagOffest, pIfdStart);
- writeExifIfd(&pCur, EXIF_TAG_RESOLUTION_UNIT, EXIF_TYPE_SHORT,
- 1, exifInfo->resolution_unit);
- writeExifIfd(&pCur, EXIF_TAG_JPEG_INTERCHANGE_FORMAT, EXIF_TYPE_LONG,
- 1, LongerTagOffest);
- writeExifIfd(&pCur, EXIF_TAG_JPEG_INTERCHANGE_FORMAT_LEN, EXIF_TYPE_LONG,
- 1, thumbSize);
-
- tmp = 0;
- memcpy(pCur, &tmp, OFFSET_SIZE); // next IFD offset
- pCur += OFFSET_SIZE;
-
- memcpy(pIfdStart + LongerTagOffest,
- thumbBuf, thumbSize);
- LongerTagOffest += thumbSize;
- } else {
- tmp = 0;
- memcpy(pNextIfdOffset, &tmp, OFFSET_SIZE); // NEXT IFD offset skipped on 0th IFD
- }
-
- unsigned char App1Marker[2] = { 0xff, 0xe1 };
- memcpy(pApp1Start, App1Marker, 2);
- pApp1Start += 2;
-
- *size = 10 + LongerTagOffest;
- tmp = *size - 2; // APP1 Maker isn't counted
- unsigned char size_mm[2] = {(tmp >> 8) & 0xFF, tmp & 0xFF};
- memcpy(pApp1Start, size_mm, 2);
-
- ALOGD("makeExif X");
-
- return JPG_SUCCESS;
-}
-
-jpg_return_status JpegEncoder::checkMcu(sample_mode_t sampleMode,
- uint32_t width, uint32_t height, bool isThumb)
-{
- if (!available)
- return JPG_FAIL;
-
- uint32_t expectedWidth = width;
- uint32_t expectedHeight = height;
-
- switch (sampleMode){
- case JPG_422:
- if (width % 16 != 0)
- expectedWidth = width + 16 - (width % 16);
- if (height % 8 != 0)
- expectedHeight = height + 8 - (height % 8);
- break;
-
- case JPG_420:
- if (width % 16 != 0)
- expectedWidth = width + 16 - (width % 16);
- if (height % 16 != 0)
- expectedHeight = height + 16 - (height % 16);
- break;
-
- default:
- ALOGE("Invaild sample mode");
- return JPG_FAIL;
- }
-
- if (expectedWidth == width && expectedHeight == height)
- return JPG_SUCCESS;
-
- ALOGW("The image is not matched for MCU");
-
- uint32_t size = width*height * 2;
- char *srcBuf, *dstBuf;
-
- if ((srcBuf = new char[size]) == NULL) {
- ALOGE("Failed to allocate for srcBuf");
- return JPG_FAIL;
- }
-
- if (!isThumb)
- dstBuf = mArgs.in_buf;
- else
- dstBuf = mArgs.in_thumb_buf;
-
- memcpy(srcBuf, dstBuf, size);
- bool ret = pad(srcBuf, width, height, dstBuf, expectedWidth, expectedHeight);
-
- delete[] srcBuf;
-
- return JPG_SUCCESS;
-}
-
-bool JpegEncoder::pad(char *srcBuf, uint32_t srcWidth, uint32_t srcHight,
- char *dstBuf, uint32_t dstWidth, uint32_t dstHight)
-{
- if (!available)
- return false;
-
- if (srcBuf == NULL || dstBuf == NULL) {
- ALOGE("srcBuf or dstBuf is NULL");
- return false;
- }
-
- int padW = dstWidth - srcWidth;
- int padH = dstHight - srcHight;
-
- if ((int)(dstWidth - srcWidth) < 0 ||
- (int)(dstHight - srcHight) < 0) {
- ALOGE("dstSize is smaller than srcSize");
- return false;
- }
- memset(dstBuf, 0, dstWidth*dstHight * 2);
-
- for (uint32_t i = 0; i < srcHight; i++)
- memcpy(dstBuf + i * dstWidth * 2, srcBuf + i * srcWidth * 2, srcWidth * 2);
-
- return true;
-}
-
-bool JpegEncoder::scaleDownYuv422(char *srcBuf, uint32_t srcWidth, uint32_t srcHight,
- char *dstBuf, uint32_t dstWidth, uint32_t dstHight)
-{
- if (!available)
- return false;
-
- int32_t step_x, step_y;
- int32_t iXsrc, iXdst;
- int32_t x, y, src_y_start_pos, dst_pos, src_pos;
-
- if (dstWidth % 2 != 0 || dstHight % 2 != 0){
- ALOGE("scale_down_yuv422: invalid width, height for scaling");
- return false;
- }
-
- step_x = srcWidth / dstWidth;
- step_y = srcHight / dstHight;
-
- dst_pos = 0;
- for (uint32_t y = 0; y < dstHight; y++) {
- src_y_start_pos = (y * step_y * (srcWidth * 2));
-
- for (uint32_t x = 0; x < dstWidth; x += 2) {
- src_pos = src_y_start_pos + (x * (step_x * 2));
-
- dstBuf[dst_pos++] = srcBuf[src_pos ];
- dstBuf[dst_pos++] = srcBuf[src_pos + 1];
- dstBuf[dst_pos++] = srcBuf[src_pos + 2];
- dstBuf[dst_pos++] = srcBuf[src_pos + 3];
- }
- }
-
- return true;
-}
-
-inline void JpegEncoder::writeExifIfd(unsigned char **pCur,
- unsigned short tag,
- unsigned short type,
- unsigned int count,
- uint32_t value)
-{
- memcpy(*pCur, &tag, 2);
- *pCur += 2;
- memcpy(*pCur, &type, 2);
- *pCur += 2;
- memcpy(*pCur, &count, 4);
- *pCur += 4;
- memcpy(*pCur, &value, 4);
- *pCur += 4;
-}
-
-inline void JpegEncoder::writeExifIfd(unsigned char **pCur,
- unsigned short tag,
- unsigned short type,
- unsigned int count,
- unsigned char *pValue)
-{
- char buf[4] = { 0,};
-
- memcpy(buf, pValue, count);
- memcpy(*pCur, &tag, 2);
- *pCur += 2;
- memcpy(*pCur, &type, 2);
- *pCur += 2;
- memcpy(*pCur, &count, 4);
- *pCur += 4;
- memcpy(*pCur, buf, 4);
- *pCur += 4;
-}
-
-
-inline void JpegEncoder::writeExifIfd(unsigned char **pCur,
- unsigned short tag,
- unsigned short type,
- unsigned int count,
- unsigned char *pValue,
- unsigned int *offset,
- unsigned char *start)
-{
- memcpy(*pCur, &tag, 2);
- *pCur += 2;
- memcpy(*pCur, &type, 2);
- *pCur += 2;
- memcpy(*pCur, &count, 4);
- *pCur += 4;
- memcpy(*pCur, offset, 4);
- *pCur += 4;
- memcpy(start + *offset, pValue, count);
- *offset += count;
-}
-
-inline void JpegEncoder::writeExifIfd(unsigned char **pCur,
- unsigned short tag,
- unsigned short type,
- unsigned int count,
- rational_t *pValue,
- unsigned int *offset,
- unsigned char *start)
-{
- memcpy(*pCur, &tag, 2);
- *pCur += 2;
- memcpy(*pCur, &type, 2);
- *pCur += 2;
- memcpy(*pCur, &count, 4);
- *pCur += 4;
- memcpy(*pCur, offset, 4);
- *pCur += 4;
- memcpy(start + *offset, pValue, 8 * count);
- *offset += 8 * count;
-}
-
-};
diff --git a/libs3cjpeg/JpegEncoder.h b/libs3cjpeg/JpegEncoder.h
deleted file mode 100644
index b95b1b1..0000000
--- a/libs3cjpeg/JpegEncoder.h
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * Copyright Samsung Electronics Co.,LTD.
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * JPEG DRIVER MODULE (JpegEncoder.h)
- * Author : ge.lee -- initial version
- * Date : 03 June 2010
- * Purpose : This file implements the JPEG encoder APIs as needed by Camera HAL
- */
-#ifndef __JPG_API_H__
-#define __JPG_API_H__
-
-#include <stdint.h>
-#include <sys/ioctl.h>
-
-#include "Exif.h"
-
-namespace android {
-#define MAX_JPG_WIDTH 800
-#define MAX_JPG_HEIGHT 480
-#define MAX_JPG_RESOLUTION (MAX_JPG_WIDTH * MAX_JPG_HEIGHT)
-
-#define MAX_JPG_THUMBNAIL_WIDTH 320
-#define MAX_JPG_THUMBNAIL_HEIGHT 240
-#define MAX_JPG_THUMBNAIL_RESOLUTION (MAX_JPG_THUMBNAIL_WIDTH * \
- MAX_JPG_THUMBNAIL_HEIGHT)
-
-#define MAX_RGB_WIDTH 800
-#define MAX_RGB_HEIGHT 480
-#define MAX_RGB_RESOLUTION (MAX_RGB_WIDTH * MAX_RGB_HEIGHT)
-
-/*******************************************************************************/
-/* define JPG & image memory */
-/* memory area is 4k(PAGE_SIZE) aligned because of VirtualCopyEx() */
-#define JPG_STREAM_BUF_SIZE \
- (MAX_JPG_RESOLUTION / PAGE_SIZE + 1) * PAGE_SIZE
-#define JPG_STREAM_THUMB_BUF_SIZE \
- (MAX_JPG_THUMBNAIL_RESOLUTION / PAGE_SIZE + 1) * PAGE_SIZE
-#define JPG_FRAME_BUF_SIZE \
- ((MAX_JPG_RESOLUTION * 3) / PAGE_SIZE + 1) * PAGE_SIZE
-#define JPG_FRAME_THUMB_BUF_SIZE \
- ((MAX_JPG_THUMBNAIL_RESOLUTION * 3) / PAGE_SIZE + 1) * PAGE_SIZE
-#define JPG_RGB_BUF_SIZE \
- ((MAX_RGB_RESOLUTION * 4) / PAGE_SIZE + 1) * PAGE_SIZE
-
-#define JPG_TOTAL_BUF_SIZE (JPG_STREAM_BUF_SIZE + \
- JPG_STREAM_THUMB_BUF_SIZE + \
- JPG_FRAME_BUF_SIZE + \
- JPG_FRAME_THUMB_BUF_SIZE + \
- JPG_RGB_BUF_SIZE)
-
-#define JPG_MAIN_START 0x00
-#define JPG_THUMB_START JPG_STREAM_BUF_SIZE
-#define IMG_MAIN_START (JPG_STREAM_BUF_SIZE + JPG_STREAM_THUMB_BUF_SIZE)
-#define IMG_THUMB_START (IMG_MAIN_START + JPG_FRAME_BUF_SIZE)
-/*******************************************************************************/
-
-#define JPG_DRIVER_NAME "/dev/s3c-jpg"
-
-#define JPEG_IOCTL_MAGIC 'J'
-#define IOCTL_JPG_DECODE _IO(JPEG_IOCTL_MAGIC, 1)
-#define IOCTL_JPG_ENCODE _IO(JPEG_IOCTL_MAGIC, 2)
-#define IOCTL_JPG_GET_STRBUF _IO(JPEG_IOCTL_MAGIC, 3)
-#define IOCTL_JPG_GET_FRMBUF _IO(JPEG_IOCTL_MAGIC, 4)
-#define IOCTL_JPG_GET_THUMB_STRBUF _IO(JPEG_IOCTL_MAGIC, 5)
-#define IOCTL_JPG_GET_THUMB_FRMBUF _IO(JPEG_IOCTL_MAGIC, 6)
-#define IOCTL_JPG_GET_PHY_FRMBUF _IO(JPEG_IOCTL_MAGIC, 7)
-#define IOCTL_JPG_GET_PHY_THUMB_FRMBUF _IO(JPEG_IOCTL_MAGIC, 8)
-
-typedef enum {
- JPEG_SET_ENCODE_WIDTH,
- JPEG_SET_ENCODE_HEIGHT,
- JPEG_SET_ENCODE_QUALITY,
- JPEG_SET_ENCODE_IN_FORMAT,
- JPEG_SET_SAMPING_MODE,
- JPEG_SET_THUMBNAIL_WIDTH,
- JPEG_SET_THUMBNAIL_HEIGHT
-} jpeg_conf;
-
-typedef enum {
- JPG_FAIL,
- JPG_SUCCESS,
- OK_HD_PARSING,
- ERR_HD_PARSING,
- OK_ENC_OR_DEC,
- ERR_ENC_OR_DEC,
- ERR_UNKNOWN
-} jpg_return_status;
-
-typedef enum {
- JPG_RGB16,
- JPG_YCBYCR,
- JPG_TYPE_UNKNOWN
-} image_type_t;
-
-typedef enum {
- JPG_444,
- JPG_422,
- JPG_420,
- JPG_400,
- RESERVED1,
- RESERVED2,
- JPG_411,
- JPG_SAMPLE_UNKNOWN
-} sample_mode_t;
-
-typedef enum {
- YCBCR_422,
- YCBCR_420,
- YCBCR_SAMPLE_UNKNOWN
-} out_mode_t;
-
-typedef enum {
- JPG_MODESEL_YCBCR = 1,
- JPG_MODESEL_RGB,
- JPG_MODESEL_UNKNOWN
-} in_mode_t;
-
-typedef enum {
- JPG_MAIN,
- JPG_THUMBNAIL
-} encode_type_t;
-
-typedef enum {
- JPG_QUALITY_LEVEL_1, /* high */
- JPG_QUALITY_LEVEL_2,
- JPG_QUALITY_LEVEL_3,
- JPG_QUALITY_LEVEL_4 /* low */
-} image_quality_type_t;
-
-typedef struct {
- sample_mode_t sample_mode;
- encode_type_t dec_type;
- out_mode_t out_format;
- uint32_t width;
- uint32_t height;
- uint32_t data_size;
- uint32_t file_size;
-} jpg_dec_proc_param;
-
-typedef struct {
- sample_mode_t sample_mode;
- encode_type_t enc_type;
- in_mode_t in_format;
- image_quality_type_t quality;
- uint32_t width;
- uint32_t height;
- uint32_t data_size;
- uint32_t file_size;
- uint32_t set_framebuf;
-} jpg_enc_proc_param;
-
-typedef struct {
- char *in_buf;
- char *phy_in_buf;
- int in_buf_size;
- char *out_buf;
- char *phy_out_buf;
- int out_buf_size;
- char *in_thumb_buf;
- char *phy_in_thumb_buf;
- int in_thumb_buf_size;
- char *out_thumb_buf;
- char *phy_out_thumb_buf;
- int out_thumb_buf_size;
- char *mmapped_addr;
- jpg_dec_proc_param *dec_param;
- jpg_enc_proc_param *enc_param;
- jpg_enc_proc_param *thumb_enc_param;
-} jpg_args;
-
-class JpegEncoder {
-public:
- JpegEncoder();
- virtual ~JpegEncoder();
-
- int openHardware();
- jpg_return_status setConfig(jpeg_conf type, int32_t value);
- void *getInBuf(uint64_t size);
- void *getOutBuf(uint64_t *size);
- void *getThumbInBuf(uint64_t size);
- void *getThumbOutBuf(uint64_t *size);
- jpg_return_status encode(unsigned int *size, exif_attribute_t *exifInfo);
- jpg_return_status encodeThumbImg(unsigned int *size, bool useMain = true);
- jpg_return_status makeExif(unsigned char *exifOut,
- exif_attribute_t *exifIn,
- unsigned int *size,
- bool useMainbufForThumb = false);
-
-private:
- jpg_return_status checkMcu(sample_mode_t sampleMode, uint32_t width, uint32_t height, bool isThumb);
- bool pad(char *srcBuf, uint32_t srcWidth, uint32_t srcHight,
- char *dstBuf, uint32_t dstWidth, uint32_t dstHight);
- bool scaleDownYuv422(char *srcBuf, uint32_t srcWidth, uint32_t srcHight,
- char *dstBuf, uint32_t dstWidth, uint32_t dstHight);
-
- inline void writeExifIfd(unsigned char **pCur,
- unsigned short tag,
- unsigned short type,
- unsigned int count,
- uint32_t value);
- inline void writeExifIfd(unsigned char **pCur,
- unsigned short tag,
- unsigned short type,
- unsigned int count,
- unsigned char *pValue);
- inline void writeExifIfd(unsigned char **pCur,
- unsigned short tag,
- unsigned short type,
- unsigned int count,
- rational_t *pValue,
- unsigned int *offset,
- unsigned char *start);
- inline void writeExifIfd(unsigned char **pCur,
- unsigned short tag,
- unsigned short type,
- unsigned int count,
- unsigned char *pValue,
- unsigned int *offset,
- unsigned char *start);
- int mDevFd;
- jpg_args mArgs;
-
- bool available;
-
-};
-};
-#endif /* __JPG_API_H__ */
diff --git a/libstagefrighthw/Android.mk b/libstagefrighthw/Android.mk
deleted file mode 100644
index a5ca416..0000000
--- a/libstagefrighthw/Android.mk
+++ /dev/null
@@ -1,26 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := \
- SEC_OMX_Plugin.cpp
-
-LOCAL_CFLAGS += $(PV_CFLAGS_MINUS_VISIBILITY)
-
-LOCAL_C_INCLUDES:= \
- $(TOP)/frameworks/native/include/media/openmax \
- $(TOP)/frameworks/native/include/media/hardware \
- $(LOCAL_PATH)/../include \
-
-LOCAL_SHARED_LIBRARIES := \
- libbinder \
- libutils \
- libcutils \
- libui \
- libdl \
-
-LOCAL_MODULE := libstagefrighthw
-
-LOCAL_MODULE_TAGS := optional
-include $(BUILD_SHARED_LIBRARY)
-
-
diff --git a/libstagefrighthw/SEC_OMX_Plugin.cpp b/libstagefrighthw/SEC_OMX_Plugin.cpp
deleted file mode 100644
index cb91069..0000000
--- a/libstagefrighthw/SEC_OMX_Plugin.cpp
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "SEC_OMX_Plugin.h"
-
-#include <dlfcn.h>
-
-#include <HardwareAPI.h>
-
-namespace android {
-
-OMXPluginBase *createOMXPlugin() {
- return new SECOMXPlugin;
-}
-
-SECOMXPlugin::SECOMXPlugin()
- : mLibHandle(dlopen("libSEC_OMX_Core.aries.so", RTLD_NOW)),
- mInit(NULL),
- mDeinit(NULL),
- mComponentNameEnum(NULL),
- mGetHandle(NULL),
- mFreeHandle(NULL),
- mGetRolesOfComponentHandle(NULL) {
- if (mLibHandle != NULL) {
- mInit = (InitFunc)dlsym(mLibHandle, "SEC_OMX_Init");
- mDeinit = (DeinitFunc)dlsym(mLibHandle, "SEC_OMX_Deinit");
-
- mComponentNameEnum =
- (ComponentNameEnumFunc)dlsym(mLibHandle, "SEC_OMX_ComponentNameEnum");
-
- mGetHandle = (GetHandleFunc)dlsym(mLibHandle, "SEC_OMX_GetHandle");
- mFreeHandle = (FreeHandleFunc)dlsym(mLibHandle, "SEC_OMX_FreeHandle");
-
- mGetRolesOfComponentHandle =
- (GetRolesOfComponentFunc)dlsym(
- mLibHandle, "SEC_OMX_GetRolesOfComponent");
-
- (*mInit)();
-
- }
-}
-
-SECOMXPlugin::~SECOMXPlugin() {
- if (mLibHandle != NULL) {
- (*mDeinit)();
-
- dlclose(mLibHandle);
- mLibHandle = NULL;
- }
-}
-
-OMX_ERRORTYPE SECOMXPlugin::makeComponentInstance(
- const char *name,
- const OMX_CALLBACKTYPE *callbacks,
- OMX_PTR appData,
- OMX_COMPONENTTYPE **component) {
- if (mLibHandle == NULL) {
- return OMX_ErrorUndefined;
- }
-
- return (*mGetHandle)(
- reinterpret_cast<OMX_HANDLETYPE *>(component),
- const_cast<char *>(name),
- appData, const_cast<OMX_CALLBACKTYPE *>(callbacks));
-}
-
-OMX_ERRORTYPE SECOMXPlugin::destroyComponentInstance(
- OMX_COMPONENTTYPE *component) {
- if (mLibHandle == NULL) {
- return OMX_ErrorUndefined;
- }
-
- return (*mFreeHandle)(reinterpret_cast<OMX_HANDLETYPE *>(component));
-}
-
-OMX_ERRORTYPE SECOMXPlugin::enumerateComponents(
- OMX_STRING name,
- size_t size,
- OMX_U32 index) {
- if (mLibHandle == NULL) {
- return OMX_ErrorUndefined;
- }
-
- return (*mComponentNameEnum)(name, size, index);
-}
-
-OMX_ERRORTYPE SECOMXPlugin::getRolesOfComponent(
- const char *name,
- Vector<String8> *roles) {
- roles->clear();
-
- if (mLibHandle == NULL) {
- return OMX_ErrorUndefined;
- }
-
- OMX_U32 numRoles;
- OMX_ERRORTYPE err = (*mGetRolesOfComponentHandle)(
- const_cast<OMX_STRING>(name), &numRoles, NULL);
-
- if (err != OMX_ErrorNone) {
- return err;
- }
-
- if (numRoles > 0) {
- OMX_U8 **array = new OMX_U8 *[numRoles];
- for (OMX_U32 i = 0; i < numRoles; ++i) {
- array[i] = new OMX_U8[OMX_MAX_STRINGNAME_SIZE];
- }
-
- OMX_U32 numRoles2;
- err = (*mGetRolesOfComponentHandle)(
- const_cast<OMX_STRING>(name), &numRoles2, array);
-
- if (err == OMX_ErrorNone && numRoles != numRoles2) {
- err = OMX_ErrorUndefined;
- }
-
- for (OMX_U32 i = 0; i < numRoles; ++i) {
- if (err == OMX_ErrorNone) {
- String8 s((const char *)array[i]);
- roles->push(s);
- }
-
- delete[] array[i];
- array[i] = NULL;
- }
-
- delete[] array;
- array = NULL;
- }
-
- return err;
-}
-
-} // namespace android
-
diff --git a/libstagefrighthw/SEC_OMX_Plugin.h b/libstagefrighthw/SEC_OMX_Plugin.h
deleted file mode 100644
index 3d640db..0000000
--- a/libstagefrighthw/SEC_OMX_Plugin.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef SEC_OMX_PLUGIN
-
-#define SEC_OMX_PLUGIN
-
-#include <OMXPluginBase.h>
-
-namespace android {
-
-struct SECOMXPlugin : public OMXPluginBase {
- SECOMXPlugin();
- virtual ~SECOMXPlugin();
-
- virtual OMX_ERRORTYPE makeComponentInstance(
- const char *name,
- const OMX_CALLBACKTYPE *callbacks,
- OMX_PTR appData,
- OMX_COMPONENTTYPE **component);
-
- virtual OMX_ERRORTYPE destroyComponentInstance(
- OMX_COMPONENTTYPE *component);
-
- virtual OMX_ERRORTYPE enumerateComponents(
- OMX_STRING name,
- size_t size,
- OMX_U32 index);
-
- virtual OMX_ERRORTYPE getRolesOfComponent(
- const char *name,
- Vector<String8> *roles);
-
-private:
- void *mLibHandle;
-
- typedef OMX_ERRORTYPE (*InitFunc)();
- typedef OMX_ERRORTYPE (*DeinitFunc)();
- typedef OMX_ERRORTYPE (*ComponentNameEnumFunc)(
- OMX_STRING, OMX_U32, OMX_U32);
-
- typedef OMX_ERRORTYPE (*GetHandleFunc)(
- OMX_HANDLETYPE *, OMX_STRING, OMX_PTR, OMX_CALLBACKTYPE *);
-
- typedef OMX_ERRORTYPE (*FreeHandleFunc)(OMX_HANDLETYPE *);
-
- typedef OMX_ERRORTYPE (*GetRolesOfComponentFunc)(
- OMX_STRING, OMX_U32 *, OMX_U8 **);
-
- InitFunc mInit;
- DeinitFunc mDeinit;
- ComponentNameEnumFunc mComponentNameEnum;
- GetHandleFunc mGetHandle;
- FreeHandleFunc mFreeHandle;
- GetRolesOfComponentFunc mGetRolesOfComponentHandle;
-
- SECOMXPlugin(const SECOMXPlugin &);
- SECOMXPlugin &operator=(const SECOMXPlugin &);
-};
-
-} // namespace android
-
-#endif // SEC_OMX_PLUGIN
diff --git a/sec_mm/Android.mk b/sec_mm/Android.mk
deleted file mode 100644
index 16298da..0000000
--- a/sec_mm/Android.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-WITH_SEC_OMX := true
-
-ifeq ($(WITH_SEC_OMX), true)
- include $(all-subdir-makefiles)
-endif
diff --git a/sec_mm/sec_omx/Android.mk b/sec_mm/sec_omx/Android.mk
deleted file mode 100644
index cbae428..0000000
--- a/sec_mm/sec_omx/Android.mk
+++ /dev/null
@@ -1,22 +0,0 @@
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-SEC_OMX_TOP := $(LOCAL_PATH)
-SEC_CODECS := $(SEC_OMX_TOP)/sec_codecs/
-
-SEC_OMX_INC := $(SEC_OMX_TOP)/sec_omx_include/
-SEC_OMX_COMPONENT := $(SEC_OMX_TOP)/sec_omx_component
-
-include $(SEC_OMX_TOP)/sec_osal/Android.mk
-include $(SEC_OMX_TOP)/sec_omx_core/Android.mk
-
-include $(SEC_CODECS)/Android.mk
-include $(SEC_OMX_COMPONENT)/common/Android.mk
-include $(SEC_OMX_COMPONENT)/video/dec/Android.mk
-include $(SEC_OMX_COMPONENT)/video/dec/h264dec/Android.mk
-include $(SEC_OMX_COMPONENT)/video/dec/mpeg4dec/Android.mk
-include $(SEC_OMX_COMPONENT)/video/enc/Android.mk
-include $(SEC_OMX_COMPONENT)/video/enc/h264enc/Android.mk
-include $(SEC_OMX_COMPONENT)/video/enc/mpeg4enc/Android.mk
diff --git a/sec_mm/sec_omx/sec_codecs/Android.mk b/sec_mm/sec_omx/sec_codecs/Android.mk
deleted file mode 100644
index 3c163a4..0000000
--- a/sec_mm/sec_omx/sec_codecs/Android.mk
+++ /dev/null
@@ -1,7 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-include $(SEC_CODECS)/video/mfc_c110/dec/Android.mk
-include $(SEC_CODECS)/video/mfc_c110/enc/Android.mk
-include $(SEC_CODECS)/video/mfc_c110/csc/Android.mk \ No newline at end of file
diff --git a/sec_mm/sec_omx/sec_codecs/video/mfc_c110/csc/Android.mk b/sec_mm/sec_omx/sec_codecs/video/mfc_c110/csc/Android.mk
deleted file mode 100644
index 5c5fd67..0000000
--- a/sec_mm/sec_omx/sec_codecs/video/mfc_c110/csc/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-ifeq ($(ARCH_ARM_HAVE_NEON),true)
-LOCAL_SRC_FILES := \
- csc_yuv420_nv12t_y_neon.s \
- csc_yuv420_nv12t_uv_neon.s \
- csc_nv12t_yuv420_y_neon.s \
- csc_nv12t_yuv420_uv_neon.s \
- csc_interleave_memcpy.s \
- csc_deinterleave_memcpy.s
-
-else
-LOCAL_SRC_FILES := \
- color_space_convertor.c
-
-endif
-
-LOCAL_MODULE := libseccsc.aries
-
-LOCAL_CFLAGS :=
-
-LOCAL_ARM_MODE := arm
-
-LOCAL_STATIC_LIBRARIES :=
-
-LOCAL_SHARED_LIBRARIES := liblog
-
-LOCAL_C_INCLUDES := \
- $(SEC_CODECS)/video/mfc_c110/include
-
-include $(BUILD_STATIC_LIBRARY)
-
diff --git a/sec_mm/sec_omx/sec_codecs/video/mfc_c110/csc/color_space_convertor.c b/sec_mm/sec_omx/sec_codecs/video/mfc_c110/csc/color_space_convertor.c
deleted file mode 100644
index c1ac638..0000000
--- a/sec_mm/sec_omx/sec_codecs/video/mfc_c110/csc/color_space_convertor.c
+++ /dev/null
@@ -1,1092 +0,0 @@
-/*
- *
- * Copyright 2011 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file color_space_convertor.c
- * @brief SEC_OMX specific define
- * @author ShinWon Lee (shinwon.lee@samsung.com)
- * @version 1.0
- * @history
- * 2011.7.01 : Create
- */
-
-#include "stdlib.h"
-#include "color_space_convertor.h"
-
-#define TILED_SIZE 64*32
-
-/*
- * De-interleaves src to dest1, dest2
- *
- * @param dest1
- * Address of de-interleaved data[out]
- *
- * @param dest2
- * Address of de-interleaved data[out]
- *
- * @param src
- * Address of interleaved data[in]
- *
- * @param src_size
- * Size of interleaved data[in]
- */
-void csc_deinterleave_memcpy(char *dest1, char *dest2, char *src, int src_size)
-{
- int i = 0;
- for(i=0; i<src_size/2; i++) {
- dest1[i] = src[i*2];
- dest2[i] = src[i*2+1];
- }
-}
-
-/*
- * Interleaves src1, src2 to dest
- *
- * @param dest
- * Address of interleaved data[out]
- *
- * @param src1
- * Address of de-interleaved data[in]
- *
- * @param src2
- * Address of de-interleaved data[in]
- *
- * @param src_size
- * Size of de-interleaved data[in]
- */
-void csc_interleave_memcpy(char *dest, char *src1, char *src2, int src_size)
-{
- int i = 0;
- for(i=0; i<src_size; i++) {
- dest[i*2] = src1[i];
- dest[i*2+1] = src2[i];
- }
-}
-
-/*
- * Converts tiled data to linear.
- * 1. Y of NV12T to Y of YUV420P
- * 2. Y of NV12T to Y of YUV420S
- * 3. UV of NV12T to UV of YUV420S
- *
- * @param yuv420_dest
- * Y or UV plane address of YUV420[out]
- *
- * @param nv12t_src
- * Y or UV plane address of NV12T[in]
- *
- * @param yuv420_width
- * Width of YUV420[in]
- *
- * @param yuv420_height
- * Y: Height of YUV420, UV: Height/2 of YUV420[in]
- */
-void csc_tiled_to_linear(char *yuv420_dest, char *nv12t_src, int yuv420_width, int yuv420_height)
-{
- unsigned int i, j;
- unsigned int tiled_x_index = 0, tiled_y_index = 0;
- unsigned int aligned_x_size = 0;
- unsigned int tiled_offset = 0, tiled_offset1 = 0, tiled_offset2 = 0, tiled_offset3 = 0;
- unsigned int temp1 = 0, temp2 = 0;
-
- if (yuv420_width >= 1024) {
- for (i=0; i<yuv420_height; i=i+1) {
- tiled_offset = 0;
- tiled_y_index = i>>5;
- if (tiled_y_index & 0x1) {
- /* odd fomula: 2+x_block_num*(y-1) */
- tiled_offset = tiled_y_index-1;
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_offset*(temp1>>6);
- tiled_offset = tiled_offset+2;
- tiled_offset = tiled_offset<<11;
- tiled_offset1 = tiled_offset+2048*1;
- tiled_offset2 = tiled_offset+2048*2;
- tiled_offset3 = tiled_offset+2048*3;
- temp2 = 8;
- } else {
- temp2 = ((yuv420_height+31)>>5)<<5;
- /* even fomula: x_block_num*y */
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_y_index*(temp1>>6);
- tiled_offset = tiled_offset<<11;
- if ((i+32)<temp2) {
- tiled_offset1 = tiled_offset+2048*1;
- tiled_offset2 = tiled_offset+2048*6;
- tiled_offset3 = tiled_offset+2048*7;
- temp2 = 8;
- } else {
- tiled_offset1 = tiled_offset+2048*1;
- tiled_offset2 = tiled_offset+2048*2;
- tiled_offset3 = tiled_offset+2048*3;
- temp2 = 4;
- }
- }
- temp1 = i&0x1F;
- memcpy(yuv420_dest+yuv420_width*(i), nv12t_src+tiled_offset+64*(temp1), 64);
- memcpy(yuv420_dest+yuv420_width*(i)+64*1, nv12t_src+tiled_offset1+64*(temp1), 64);
- memcpy(yuv420_dest+yuv420_width*(i)+64*2, nv12t_src+tiled_offset2+64*(temp1), 64);
- memcpy(yuv420_dest+yuv420_width*(i)+64*3, nv12t_src+tiled_offset3+64*(temp1), 64);
-
- tiled_offset = tiled_offset+temp2*2048;
- tiled_offset1 = tiled_offset1+temp2*2048;
- tiled_offset2 = tiled_offset2+temp2*2048;
- tiled_offset3 = tiled_offset3+temp2*2048;
- memcpy(yuv420_dest+yuv420_width*(i)+64*4, nv12t_src+tiled_offset+64*(temp1), 64);
- memcpy(yuv420_dest+yuv420_width*(i)+64*5, nv12t_src+tiled_offset1+64*(temp1), 64);
- memcpy(yuv420_dest+yuv420_width*(i)+64*6, nv12t_src+tiled_offset2+64*(temp1), 64);
- memcpy(yuv420_dest+yuv420_width*(i)+64*7, nv12t_src+tiled_offset3+64*(temp1), 64);
-
- tiled_offset = tiled_offset+temp2*2048;
- tiled_offset1 = tiled_offset1+temp2*2048;
- tiled_offset2 = tiled_offset2+temp2*2048;
- tiled_offset3 = tiled_offset3+temp2*2048;
- memcpy(yuv420_dest+yuv420_width*(i)+64*8, nv12t_src+tiled_offset+64*(temp1), 64);
- memcpy(yuv420_dest+yuv420_width*(i)+64*9, nv12t_src+tiled_offset1+64*(temp1), 64);
- memcpy(yuv420_dest+yuv420_width*(i)+64*10, nv12t_src+tiled_offset2+64*(temp1), 64);
- memcpy(yuv420_dest+yuv420_width*(i)+64*11, nv12t_src+tiled_offset3+64*(temp1), 64);
-
- tiled_offset = tiled_offset+temp2*2048;
- tiled_offset1 = tiled_offset1+temp2*2048;
- tiled_offset2 = tiled_offset2+temp2*2048;
- tiled_offset3 = tiled_offset3+temp2*2048;
- memcpy(yuv420_dest+yuv420_width*(i)+64*12, nv12t_src+tiled_offset+64*(temp1), 64);
- memcpy(yuv420_dest+yuv420_width*(i)+64*13, nv12t_src+tiled_offset1+64*(temp1), 64);
- memcpy(yuv420_dest+yuv420_width*(i)+64*14, nv12t_src+tiled_offset2+64*(temp1), 64);
- memcpy(yuv420_dest+yuv420_width*(i)+64*15, nv12t_src+tiled_offset3+64*(temp1), 64);
- }
- aligned_x_size = 1024;
- }
-
- if ((yuv420_width-aligned_x_size) >= 512) {
- for (i=0; i<yuv420_height; i=i+1) {
- tiled_offset = 0;
- tiled_y_index = i>>5;
- if (tiled_y_index & 0x1) {
- /* odd fomula: 2+x_block_num*(y-1) */
- tiled_offset = tiled_y_index-1;
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_offset*(temp1>>6);
- tiled_offset = tiled_offset+2;
- temp1 = aligned_x_size>>5;
- tiled_offset = tiled_offset+temp1;
- tiled_offset = tiled_offset<<11;
- tiled_offset1 = tiled_offset+2048*1;
- tiled_offset2 = tiled_offset+2048*2;
- tiled_offset3 = tiled_offset+2048*3;
- temp2 = 8;
- } else {
- temp2 = ((yuv420_height+31)>>5)<<5;
- /* even fomula: x_block_num*y */
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_y_index*(temp1>>6);
- tiled_offset = tiled_offset<<11;
- if ((i+32)<temp2) {
- temp1 = aligned_x_size>>5;
- tiled_offset = tiled_offset+(temp1<<11);
- tiled_offset1 = tiled_offset+2048*1;
- tiled_offset2 = tiled_offset+2048*6;
- tiled_offset3 = tiled_offset+2048*7;
- temp2 = 8;
- } else {
- temp1 = aligned_x_size>>6;
- tiled_offset = tiled_offset+(temp1<<11);
- tiled_offset1 = tiled_offset+2048*1;
- tiled_offset2 = tiled_offset+2048*2;
- tiled_offset3 = tiled_offset+2048*3;
- temp2 = 4;
- }
- }
- temp1 = i&0x1F;
- memcpy(yuv420_dest+aligned_x_size+yuv420_width*(i), nv12t_src+tiled_offset+64*(temp1), 64);
- memcpy(yuv420_dest+aligned_x_size+yuv420_width*(i)+64*1, nv12t_src+tiled_offset1+64*(temp1), 64);
- memcpy(yuv420_dest+aligned_x_size+yuv420_width*(i)+64*2, nv12t_src+tiled_offset2+64*(temp1), 64);
- memcpy(yuv420_dest+aligned_x_size+yuv420_width*(i)+64*3, nv12t_src+tiled_offset3+64*(temp1), 64);
-
- tiled_offset = tiled_offset+temp2*2048;
- tiled_offset1 = tiled_offset1+temp2*2048;
- tiled_offset2 = tiled_offset2+temp2*2048;
- tiled_offset3 = tiled_offset3+temp2*2048;
- memcpy(yuv420_dest+aligned_x_size+yuv420_width*(i)+64*4, nv12t_src+tiled_offset+64*(temp1), 64);
- memcpy(yuv420_dest+aligned_x_size+yuv420_width*(i)+64*5, nv12t_src+tiled_offset1+64*(temp1), 64);
- memcpy(yuv420_dest+aligned_x_size+yuv420_width*(i)+64*6, nv12t_src+tiled_offset2+64*(temp1), 64);
- memcpy(yuv420_dest+aligned_x_size+yuv420_width*(i)+64*7, nv12t_src+tiled_offset3+64*(temp1), 64);
- }
- aligned_x_size = aligned_x_size+512;
- }
-
- if ((yuv420_width-aligned_x_size) >= 256) {
- for (i=0; i<yuv420_height; i=i+1) {
- tiled_offset = 0;
- tiled_y_index = i>>5;
- if (tiled_y_index & 0x1) {
- /* odd fomula: 2+x_block_num*(y-1) */
- tiled_offset = tiled_y_index-1;
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_offset*(temp1>>6);
- tiled_offset = tiled_offset+2;
- temp1 = aligned_x_size>>5;
- tiled_offset = tiled_offset+temp1;
- tiled_offset = tiled_offset<<11;
- tiled_offset1 = tiled_offset+2048*1;
- tiled_offset2 = tiled_offset+2048*2;
- tiled_offset3 = tiled_offset+2048*3;
- } else {
- temp2 = ((yuv420_height+31)>>5)<<5;
- /* even fomula: x_block_num*y */
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_y_index*(temp1>>6);
- tiled_offset = tiled_offset<<11;
- if ((i+32)<temp2) {
- temp1 = aligned_x_size>>5;
- tiled_offset = tiled_offset+(temp1<<11);
- tiled_offset1 = tiled_offset+2048*1;
- tiled_offset2 = tiled_offset+2048*6;
- tiled_offset3 = tiled_offset+2048*7;
- } else {
- temp1 = aligned_x_size>>6;
- tiled_offset = tiled_offset+(temp1<<11);
- tiled_offset1 = tiled_offset+2048*1;
- tiled_offset2 = tiled_offset+2048*2;
- tiled_offset3 = tiled_offset+2048*3;
- }
- }
- temp1 = i&0x1F;
- memcpy(yuv420_dest+aligned_x_size+yuv420_width*(i), nv12t_src+tiled_offset+64*(temp1), 64);
- memcpy(yuv420_dest+aligned_x_size+yuv420_width*(i)+64*1, nv12t_src+tiled_offset1+64*(temp1), 64);
- memcpy(yuv420_dest+aligned_x_size+yuv420_width*(i)+64*2, nv12t_src+tiled_offset2+64*(temp1), 64);
- memcpy(yuv420_dest+aligned_x_size+yuv420_width*(i)+64*3, nv12t_src+tiled_offset3+64*(temp1), 64);
- }
- aligned_x_size = aligned_x_size+256;
- }
-
- if ((yuv420_width-aligned_x_size) >= 128) {
- for (i=0; i<yuv420_height; i=i+2) {
- tiled_offset = 0;
- tiled_y_index = i>>5;
- if (tiled_y_index & 0x1) {
- /* odd fomula: 2+x_block_num*(y-1) */
- tiled_offset = tiled_y_index-1;
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_offset*(temp1>>6);
- tiled_offset = tiled_offset+2;
- temp1 = aligned_x_size>>5;
- tiled_offset = tiled_offset+temp1;
- tiled_offset = tiled_offset<<11;
- tiled_offset1 = tiled_offset+2048*1;
- } else {
- temp2 = ((yuv420_height+31)>>5)<<5;
- /* even fomula: x_block_num*y */
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_y_index*(temp1>>6);
- tiled_offset = tiled_offset<<11;
- if ((i+32)<temp2) {
- temp1 = aligned_x_size>>5;
- tiled_offset = tiled_offset+(temp1<<11);
- tiled_offset1 = tiled_offset+2048*1;
- } else {
- temp1 = aligned_x_size>>6;
- tiled_offset = tiled_offset+(temp1<<11);
- tiled_offset1 = tiled_offset+2048*1;
- }
- }
- temp1 = i&0x1F;
- memcpy(yuv420_dest+aligned_x_size+yuv420_width*(i), nv12t_src+tiled_offset+64*(temp1), 64);
- memcpy(yuv420_dest+aligned_x_size+yuv420_width*(i)+64, nv12t_src+tiled_offset1+64*(temp1), 64);
- memcpy(yuv420_dest+aligned_x_size+yuv420_width*(i+1), nv12t_src+tiled_offset+64*(temp1+1), 64);
- memcpy(yuv420_dest+aligned_x_size+yuv420_width*(i+1)+64, nv12t_src+tiled_offset1+64*(temp1+1), 64);
- }
- aligned_x_size = aligned_x_size+128;
- }
-
- if ((yuv420_width-aligned_x_size) >= 64) {
- for (i=0; i<yuv420_height; i=i+4) {
- tiled_offset = 0;
- tiled_x_index = aligned_x_size>>6;
- tiled_y_index = i>>5;
- if (tiled_y_index & 0x1) {
- /* odd fomula: 2+x+(x>>2)<<2+x_block_num*(y-1) */
- tiled_offset = tiled_y_index-1;
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_offset*(temp1>>6);
- tiled_offset = tiled_offset+tiled_x_index;
- tiled_offset = tiled_offset+2;
- temp1 = (tiled_x_index>>2)<<2;
- tiled_offset = tiled_offset+temp1;
- tiled_offset = tiled_offset<<11;
- } else {
- temp2 = ((yuv420_height+31)>>5)<<5;
- if ((i+32)<temp2) {
- /* even1 fomula: x+((x+2)>>2)<<2+x_block_num*y */
- temp1 = tiled_x_index+2;
- temp1 = (temp1>>2)<<2;
- tiled_offset = tiled_x_index+temp1;
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_offset+tiled_y_index*(temp1>>6);
- tiled_offset = tiled_offset<<11;
- } else {
- /* even2 fomula: x+x_block_num*y */
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_y_index*(temp1>>6);
- tiled_offset = tiled_offset+tiled_x_index;
- tiled_offset = tiled_offset<<11;
- }
- }
-
- temp1 = i&0x1F;
- temp2 = aligned_x_size&0x3F;
- memcpy(yuv420_dest+aligned_x_size+yuv420_width*(i), nv12t_src+tiled_offset+temp2+64*(temp1), 64);
- memcpy(yuv420_dest+aligned_x_size+yuv420_width*(i+1), nv12t_src+tiled_offset+temp2+64*(temp1+1), 64);
- memcpy(yuv420_dest+aligned_x_size+yuv420_width*(i+2), nv12t_src+tiled_offset+temp2+64*(temp1+2), 64);
- memcpy(yuv420_dest+aligned_x_size+yuv420_width*(i+3), nv12t_src+tiled_offset+temp2+64*(temp1+3), 64);
- }
- aligned_x_size = aligned_x_size+64;
- }
-
- if (yuv420_width != aligned_x_size) {
- for (i=0; i<yuv420_height; i=i+4) {
- for (j=aligned_x_size; j<yuv420_width; j=j+4) {
- tiled_offset = 0;
- tiled_x_index = j>>6;
- tiled_y_index = i>>5;
- if (tiled_y_index & 0x1) {
- /* odd fomula: 2+x+(x>>2)<<2+x_block_num*(y-1) */
- tiled_offset = tiled_y_index-1;
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_offset*(temp1>>6);
- tiled_offset = tiled_offset+tiled_x_index;
- tiled_offset = tiled_offset+2;
- temp1 = (tiled_x_index>>2)<<2;
- tiled_offset = tiled_offset+temp1;
- tiled_offset = tiled_offset<<11;
- } else {
- temp2 = ((yuv420_height+31)>>5)<<5;
- if ((i+32)<temp2) {
- /* even1 fomula: x+((x+2)>>2)<<2+x_block_num*y */
- temp1 = tiled_x_index+2;
- temp1 = (temp1>>2)<<2;
- tiled_offset = tiled_x_index+temp1;
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_offset+tiled_y_index*(temp1>>6);
- tiled_offset = tiled_offset<<11;
- } else {
- /* even2 fomula: x+x_block_num*y */
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_y_index*(temp1>>6);
- tiled_offset = tiled_offset+tiled_x_index;
- tiled_offset = tiled_offset<<11;
- }
- }
-
- temp1 = i&0x1F;
- temp2 = j&0x3F;
- memcpy(yuv420_dest+j+yuv420_width*(i), nv12t_src+tiled_offset+temp2+64*(temp1), 4);
- memcpy(yuv420_dest+j+yuv420_width*(i+1), nv12t_src+tiled_offset+temp2+64*(temp1+1), 4);
- memcpy(yuv420_dest+j+yuv420_width*(i+2), nv12t_src+tiled_offset+temp2+64*(temp1+2), 4);
- memcpy(yuv420_dest+j+yuv420_width*(i+3), nv12t_src+tiled_offset+temp2+64*(temp1+3), 4);
- }
- }
- }
-}
-
-/*
- * Converts and Deinterleaves tiled data to linear
- * 1. UV of NV12T to UV of YUV420P
- *
- * @param yuv420_u_dest
- * U plane address of YUV420P[out]
- *
- * @param yuv420_v_dest
- * V plane address of YUV420P[out]
- *
- * @param nv12t_src
- * UV plane address of NV12T[in]
- *
- * @param yuv420_width
- * Width of YUV420[in]
- *
- * @param yuv420_uv_height
- * Height/2 of YUV420[in]
- */
-void csc_tiled_to_linear_deinterleave(char *yuv420_u_dest, char *yuv420_v_dest, char *nv12t_uv_src, int yuv420_width, int yuv420_uv_height)
-{
- unsigned int i, j;
- unsigned int tiled_x_index = 0, tiled_y_index = 0;
- unsigned int aligned_x_size = 0;
- unsigned int tiled_offset = 0, tiled_offset1 = 0, tiled_offset2 = 0, tiled_offset3 = 0;
- unsigned int temp1 = 0, temp2 = 0;
-
- if (yuv420_width >= 1024) {
- for (i=0; i<yuv420_uv_height; i=i+1) {
- tiled_offset = 0;
- tiled_y_index = i>>5;
- if (tiled_y_index & 0x1) {
- /* odd fomula: 2+x_block_num*(y-1) */
- tiled_offset = tiled_y_index-1;
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_offset*(temp1>>6);
- tiled_offset = tiled_offset+2;
- tiled_offset = tiled_offset<<11;
- tiled_offset1 = tiled_offset+2048*1;
- tiled_offset2 = tiled_offset+2048*2;
- tiled_offset3 = tiled_offset+2048*3;
- temp2 = 8;
- } else {
- temp2 = ((yuv420_uv_height+31)>>5)<<5;
- /* even fomula: x_block_num*y */
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_y_index*(temp1>>6);
- tiled_offset = tiled_offset<<11;
- if ((i+32)<temp2) {
- tiled_offset1 = tiled_offset+2048*1;
- tiled_offset2 = tiled_offset+2048*6;
- tiled_offset3 = tiled_offset+2048*7;
- temp2 = 8;
- } else {
- tiled_offset1 = tiled_offset+2048*1;
- tiled_offset2 = tiled_offset+2048*2;
- tiled_offset3 = tiled_offset+2048*3;
- temp2 = 4;
- }
- }
- temp1 = i&0x1F;
- csc_deinterleave_memcpy(yuv420_u_dest+yuv420_width/2*(i), yuv420_v_dest+yuv420_width/2*(i), nv12t_uv_src+tiled_offset+64*(temp1), 64);
- csc_deinterleave_memcpy(yuv420_u_dest+yuv420_width/2*(i)+32*1, yuv420_v_dest+yuv420_width/2*(i)+32*1, nv12t_uv_src+tiled_offset1+64*(temp1), 64);
- csc_deinterleave_memcpy(yuv420_u_dest+yuv420_width/2*(i)+32*2, yuv420_v_dest+yuv420_width/2*(i)+32*2, nv12t_uv_src+tiled_offset2+64*(temp1), 64);
- csc_deinterleave_memcpy(yuv420_u_dest+yuv420_width/2*(i)+32*3, yuv420_v_dest+yuv420_width/2*(i)+32*3, nv12t_uv_src+tiled_offset3+64*(temp1), 64);
-
- tiled_offset = tiled_offset+temp2*2048;
- tiled_offset1 = tiled_offset1+temp2*2048;
- tiled_offset2 = tiled_offset2+temp2*2048;
- tiled_offset3 = tiled_offset3+temp2*2048;
- csc_deinterleave_memcpy(yuv420_u_dest+yuv420_width/2*(i)+32*4, yuv420_v_dest+yuv420_width/2*(i)+32*4, nv12t_uv_src+tiled_offset+64*(temp1), 64);
- csc_deinterleave_memcpy(yuv420_u_dest+yuv420_width/2*(i)+32*5, yuv420_v_dest+yuv420_width/2*(i)+32*5, nv12t_uv_src+tiled_offset1+64*(temp1), 64);
- csc_deinterleave_memcpy(yuv420_u_dest+yuv420_width/2*(i)+32*6, yuv420_v_dest+yuv420_width/2*(i)+32*6, nv12t_uv_src+tiled_offset2+64*(temp1), 64);
- csc_deinterleave_memcpy(yuv420_u_dest+yuv420_width/2*(i)+32*7, yuv420_v_dest+yuv420_width/2*(i)+32*7, nv12t_uv_src+tiled_offset3+64*(temp1), 64);
-
- tiled_offset = tiled_offset+temp2*2048;
- tiled_offset1 = tiled_offset1+temp2*2048;
- tiled_offset2 = tiled_offset2+temp2*2048;
- tiled_offset3 = tiled_offset3+temp2*2048;
- csc_deinterleave_memcpy(yuv420_u_dest+yuv420_width/2*(i)+32*8, yuv420_v_dest+yuv420_width/2*(i)+32*8, nv12t_uv_src+tiled_offset+64*(temp1), 64);
- csc_deinterleave_memcpy(yuv420_u_dest+yuv420_width/2*(i)+32*9, yuv420_v_dest+yuv420_width/2*(i)+32*9, nv12t_uv_src+tiled_offset1+64*(temp1), 64);
- csc_deinterleave_memcpy(yuv420_u_dest+yuv420_width/2*(i)+32*10, yuv420_v_dest+yuv420_width/2*(i)+32*10, nv12t_uv_src+tiled_offset2+64*(temp1), 64);
- csc_deinterleave_memcpy(yuv420_u_dest+yuv420_width/2*(i)+32*11, yuv420_v_dest+yuv420_width/2*(i)+32*11, nv12t_uv_src+tiled_offset3+64*(temp1), 64);
-
- tiled_offset = tiled_offset+temp2*2048;
- tiled_offset1 = tiled_offset1+temp2*2048;
- tiled_offset2 = tiled_offset2+temp2*2048;
- tiled_offset3 = tiled_offset3+temp2*2048;
- csc_deinterleave_memcpy(yuv420_u_dest+yuv420_width/2*(i)+32*12, yuv420_v_dest+yuv420_width/2*(i)+32*12, nv12t_uv_src+tiled_offset+64*(temp1), 64);
- csc_deinterleave_memcpy(yuv420_u_dest+yuv420_width/2*(i)+32*13, yuv420_v_dest+yuv420_width/2*(i)+32*13, nv12t_uv_src+tiled_offset1+64*(temp1), 64);
- csc_deinterleave_memcpy(yuv420_u_dest+yuv420_width/2*(i)+32*14, yuv420_v_dest+yuv420_width/2*(i)+32*14, nv12t_uv_src+tiled_offset2+64*(temp1), 64);
- csc_deinterleave_memcpy(yuv420_u_dest+yuv420_width/2*(i)+32*15, yuv420_v_dest+yuv420_width/2*(i)+32*15, nv12t_uv_src+tiled_offset3+64*(temp1), 64);
- }
- aligned_x_size = 1024;
- }
-
- if ((yuv420_width-aligned_x_size) >= 512) {
- for (i=0; i<yuv420_uv_height; i=i+1) {
- tiled_offset = 0;
- tiled_y_index = i>>5;
- if (tiled_y_index & 0x1) {
- /* odd fomula: 2+x_block_num*(y-1) */
- tiled_offset = tiled_y_index-1;
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_offset*(temp1>>6);
- tiled_offset = tiled_offset+2;
- temp1 = aligned_x_size>>5;
- tiled_offset = tiled_offset+temp1;
- tiled_offset = tiled_offset<<11;
- tiled_offset1 = tiled_offset+2048*1;
- tiled_offset2 = tiled_offset+2048*2;
- tiled_offset3 = tiled_offset+2048*3;
- temp2 = 8;
- } else {
- temp2 = ((yuv420_uv_height+31)>>5)<<5;
- /* even fomula: x_block_num*y */
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_y_index*(temp1>>6);
- tiled_offset = tiled_offset<<11;
- if ((i+32)<temp2) {
- temp1 = aligned_x_size>>5;
- tiled_offset = tiled_offset+(temp1<<11);
- tiled_offset1 = tiled_offset+2048*1;
- tiled_offset2 = tiled_offset+2048*6;
- tiled_offset3 = tiled_offset+2048*7;
- temp2 = 8;
- } else {
- temp1 = aligned_x_size>>6;
- tiled_offset = tiled_offset+(temp1<<11);
- tiled_offset1 = tiled_offset+2048*1;
- tiled_offset2 = tiled_offset+2048*2;
- tiled_offset3 = tiled_offset+2048*3;
- temp2 = 4;
- }
- }
- temp1 = i&0x1F;
- csc_deinterleave_memcpy(yuv420_u_dest+aligned_x_size/2+yuv420_width/2*(i), yuv420_v_dest+aligned_x_size/2+yuv420_width/2*(i), nv12t_uv_src+tiled_offset+64*(temp1), 64);
- csc_deinterleave_memcpy(yuv420_u_dest+aligned_x_size/2+yuv420_width/2*(i)+32*1, yuv420_v_dest+aligned_x_size/2+yuv420_width/2*(i)+32*1, nv12t_uv_src+tiled_offset1+64*(temp1), 64);
- csc_deinterleave_memcpy(yuv420_u_dest+aligned_x_size/2+yuv420_width/2*(i)+32*2, yuv420_v_dest+aligned_x_size/2+yuv420_width/2*(i)+32*2, nv12t_uv_src+tiled_offset2+64*(temp1), 64);
- csc_deinterleave_memcpy(yuv420_u_dest+aligned_x_size/2+yuv420_width/2*(i)+32*3, yuv420_v_dest+aligned_x_size/2+yuv420_width/2*(i)+32*3, nv12t_uv_src+tiled_offset3+64*(temp1), 64);
-
- tiled_offset = tiled_offset+temp2*2048;
- tiled_offset1 = tiled_offset1+temp2*2048;
- tiled_offset2 = tiled_offset2+temp2*2048;
- tiled_offset3 = tiled_offset3+temp2*2048;
- csc_deinterleave_memcpy(yuv420_u_dest+aligned_x_size/2+yuv420_width/2*(i)+32*4, yuv420_v_dest+aligned_x_size/2+yuv420_width/2*(i)+32*4, nv12t_uv_src+tiled_offset+64*(temp1), 64);
- csc_deinterleave_memcpy(yuv420_u_dest+aligned_x_size/2+yuv420_width/2*(i)+32*5, yuv420_v_dest+aligned_x_size/2+yuv420_width/2*(i)+32*5, nv12t_uv_src+tiled_offset1+64*(temp1), 64);
- csc_deinterleave_memcpy(yuv420_u_dest+aligned_x_size/2+yuv420_width/2*(i)+32*6, yuv420_v_dest+aligned_x_size/2+yuv420_width/2*(i)+32*6, nv12t_uv_src+tiled_offset2+64*(temp1), 64);
- csc_deinterleave_memcpy(yuv420_u_dest+aligned_x_size/2+yuv420_width/2*(i)+32*7, yuv420_v_dest+aligned_x_size/2+yuv420_width/2*(i)+32*7, nv12t_uv_src+tiled_offset3+64*(temp1), 64);
- }
- aligned_x_size = aligned_x_size+512;
- }
-
- if ((yuv420_width-aligned_x_size) >= 256) {
- for (i=0; i<yuv420_uv_height; i=i+1) {
- tiled_offset = 0;
- tiled_y_index = i>>5;
- if (tiled_y_index & 0x1) {
- /* odd fomula: 2+x_block_num*(y-1) */
- tiled_offset = tiled_y_index-1;
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_offset*(temp1>>6);
- tiled_offset = tiled_offset+2;
- temp1 = aligned_x_size>>5;
- tiled_offset = tiled_offset+temp1;
- tiled_offset = tiled_offset<<11;
- tiled_offset1 = tiled_offset+2048*1;
- tiled_offset2 = tiled_offset+2048*2;
- tiled_offset3 = tiled_offset+2048*3;
- } else {
- temp2 = ((yuv420_uv_height+31)>>5)<<5;
- /* even fomula: x_block_num*y */
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_y_index*(temp1>>6);
- tiled_offset = tiled_offset<<11;
- if ((i+32)<temp2) {
- temp1 = aligned_x_size>>5;
- tiled_offset = tiled_offset+(temp1<<11);
- tiled_offset1 = tiled_offset+2048*1;
- tiled_offset2 = tiled_offset+2048*6;
- tiled_offset3 = tiled_offset+2048*7;
- } else {
- temp1 = aligned_x_size>>6;
- tiled_offset = tiled_offset+(temp1<<11);
- tiled_offset1 = tiled_offset+2048*1;
- tiled_offset2 = tiled_offset+2048*2;
- tiled_offset3 = tiled_offset+2048*3;
- }
- }
- temp1 = i&0x1F;
- csc_deinterleave_memcpy(yuv420_u_dest+aligned_x_size/2+yuv420_width/2*(i), yuv420_v_dest+aligned_x_size/2+yuv420_width/2*(i), nv12t_uv_src+tiled_offset+64*(temp1), 64);
- csc_deinterleave_memcpy(yuv420_u_dest+aligned_x_size/2+yuv420_width/2*(i)+32*1, yuv420_v_dest+aligned_x_size/2+yuv420_width/2*(i)+32*1, nv12t_uv_src+tiled_offset1+64*(temp1), 64);
- csc_deinterleave_memcpy(yuv420_u_dest+aligned_x_size/2+yuv420_width/2*(i)+32*2, yuv420_v_dest+aligned_x_size/2+yuv420_width/2*(i)+32*2, nv12t_uv_src+tiled_offset2+64*(temp1), 64);
- csc_deinterleave_memcpy(yuv420_u_dest+aligned_x_size/2+yuv420_width/2*(i)+32*3, yuv420_v_dest+aligned_x_size/2+yuv420_width/2*(i)+32*3, nv12t_uv_src+tiled_offset3+64*(temp1), 64);
- }
- aligned_x_size = aligned_x_size+256;
- }
-
- if ((yuv420_width-aligned_x_size) >= 128) {
- for (i=0; i<yuv420_uv_height; i=i+2) {
- tiled_offset = 0;
- tiled_y_index = i>>5;
- if (tiled_y_index & 0x1) {
- /* odd fomula: 2+x_block_num*(y-1) */
- tiled_offset = tiled_y_index-1;
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_offset*(temp1>>6);
- tiled_offset = tiled_offset+2;
- temp1 = aligned_x_size>>5;
- tiled_offset = tiled_offset+temp1;
- tiled_offset = tiled_offset<<11;
- tiled_offset1 = tiled_offset+2048*1;
- } else {
- temp2 = ((yuv420_uv_height+31)>>5)<<5;
- /* even fomula: x_block_num*y */
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_y_index*(temp1>>6);
- tiled_offset = tiled_offset<<11;
- if ((i+32)<temp2) {
- temp1 = aligned_x_size>>5;
- tiled_offset = tiled_offset+(temp1<<11);
- tiled_offset1 = tiled_offset+2048*1;
- } else {
- temp1 = aligned_x_size>>6;
- tiled_offset = tiled_offset+(temp1<<11);
- tiled_offset1 = tiled_offset+2048*1;
- }
- }
- temp1 = i&0x1F;
- csc_deinterleave_memcpy(yuv420_u_dest+aligned_x_size/2+yuv420_width/2*(i), yuv420_v_dest+aligned_x_size/2+yuv420_width/2*(i), nv12t_uv_src+tiled_offset+64*(temp1), 64);
- csc_deinterleave_memcpy(yuv420_u_dest+aligned_x_size/2+yuv420_width/2*(i)+32*1, yuv420_v_dest+aligned_x_size/2+yuv420_width/2*(i)+32*1, nv12t_uv_src+tiled_offset1+64*(temp1), 64);
- csc_deinterleave_memcpy(yuv420_u_dest+aligned_x_size/2+yuv420_width/2*(i+1), yuv420_v_dest+aligned_x_size/2+yuv420_width/2*(i+1), nv12t_uv_src+tiled_offset+64*(temp1+1), 64);
- csc_deinterleave_memcpy(yuv420_u_dest+aligned_x_size/2+yuv420_width/2*(i+1)+32*1, yuv420_v_dest+aligned_x_size/2+yuv420_width/2*(i+1)+32*1, nv12t_uv_src+tiled_offset1+64*(temp1+1), 64);
- }
- aligned_x_size = aligned_x_size+128;
- }
-
- if ((yuv420_width-aligned_x_size) >= 64) {
- for (i=0; i<yuv420_uv_height; i=i+2) {
- tiled_offset = 0;
- tiled_x_index = aligned_x_size>>6;
- tiled_y_index = i>>5;
- if (tiled_y_index & 0x1) {
- /* odd fomula: 2+x+(x>>2)<<2+x_block_num*(y-1) */
- tiled_offset = tiled_y_index-1;
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_offset*(temp1>>6);
- tiled_offset = tiled_offset+tiled_x_index;
- tiled_offset = tiled_offset+2;
- temp1 = (tiled_x_index>>2)<<2;
- tiled_offset = tiled_offset+temp1;
- tiled_offset = tiled_offset<<11;
- } else {
- temp2 = ((yuv420_uv_height+31)>>5)<<5;
- if ((i+32)<temp2) {
- /* even1 fomula: x+((x+2)>>2)<<2+x_block_num*y */
- temp1 = tiled_x_index+2;
- temp1 = (temp1>>2)<<2;
- tiled_offset = tiled_x_index+temp1;
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_offset+tiled_y_index*(temp1>>6);
- tiled_offset = tiled_offset<<11;
- } else {
- /* even2 fomula: x+x_block_num*y */
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_y_index*(temp1>>6);
- tiled_offset = tiled_offset+tiled_x_index;
- tiled_offset = tiled_offset<<11;
- }
- }
- temp1 = i&0x1F;
- temp2 = aligned_x_size&0x3F;
- csc_deinterleave_memcpy(yuv420_u_dest+aligned_x_size/2+yuv420_width/2*(i), yuv420_v_dest+aligned_x_size/2+yuv420_width/2*(i), nv12t_uv_src+tiled_offset+64*(temp1), 64);
- csc_deinterleave_memcpy(yuv420_u_dest+aligned_x_size/2+yuv420_width/2*(i+1), yuv420_v_dest+aligned_x_size/2+yuv420_width/2*(i+1), nv12t_uv_src+tiled_offset+64*(temp1+1), 64);
- }
- aligned_x_size = aligned_x_size+64;
- }
-
- if (yuv420_width != aligned_x_size) {
- for (i=0; i<yuv420_uv_height; i=i+2) {
- for (j=aligned_x_size; j<yuv420_width; j=j+4) {
- tiled_offset = 0;
- tiled_x_index = j>>6;
- tiled_y_index = i>>5;
- if (tiled_y_index & 0x1) {
- /* odd fomula: 2+x+(x>>2)<<2+x_block_num*(y-1) */
- tiled_offset = tiled_y_index-1;
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_offset*(temp1>>6);
- tiled_offset = tiled_offset+tiled_x_index;
- tiled_offset = tiled_offset+2;
- temp1 = (tiled_x_index>>2)<<2;
- tiled_offset = tiled_offset+temp1;
- tiled_offset = tiled_offset<<11;
- } else {
- temp2 = ((yuv420_uv_height+31)>>5)<<5;
- if ((i+32)<temp2) {
- /* even1 fomula: x+((x+2)>>2)<<2+x_block_num*y */
- temp1 = tiled_x_index+2;
- temp1 = (temp1>>2)<<2;
- tiled_offset = tiled_x_index+temp1;
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_offset+tiled_y_index*(temp1>>6);
- tiled_offset = tiled_offset<<11;
- } else {
- /* even2 fomula: x+x_block_num*y */
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_y_index*(temp1>>6);
- tiled_offset = tiled_offset+tiled_x_index;
- tiled_offset = tiled_offset<<11;
- }
- }
- temp1 = i&0x1F;
- temp2 = j&0x3F;
- csc_deinterleave_memcpy(yuv420_u_dest+j/2+yuv420_width/2*(i), yuv420_v_dest+j/2+yuv420_width/2*(i), nv12t_uv_src+tiled_offset+temp2+64*(temp1), 4);
- csc_deinterleave_memcpy(yuv420_u_dest+j/2+yuv420_width/2*(i+1), yuv420_v_dest+j/2+yuv420_width/2*(i+1), nv12t_uv_src+tiled_offset+temp2+64*(temp1+1), 4);
- }
- }
- }
-}
-
-/*
- * Converts linear data to tiled.
- * 1. Y of YUV420P to Y of NV12T
- * 2. Y of YUV420S to Y of NV12T
- * 3. UV of YUV420S to UV of NV12T
- *
- * @param nv12t_dest
- * Y or UV plane address of NV12T[out]
- *
- * @param yuv420_src
- * Y or UV plane address of YUV420P(S)[in]
- *
- * @param yuv420_width
- * Width of YUV420[in]
- *
- * @param yuv420_height
- * Y: Height of YUV420, UV: Height/2 of YUV420[in]
- */
-void csc_linear_to_tiled(char *nv12t_dest, char *yuv420_src, int yuv420_width, int yuv420_height)
-{
- unsigned int i, j;
- unsigned int tiled_x_index = 0, tiled_y_index = 0;
- unsigned int aligned_x_size = 0, aligned_y_size = 0;
- unsigned int tiled_offset = 0;
- unsigned int temp1 = 0, temp2 = 0;
-
- aligned_y_size = (yuv420_height>>5)<<5;
- aligned_x_size = (yuv420_width>>6)<<6;
-
- for (i=0; i<aligned_y_size; i=i+32) {
- for (j=0; j<aligned_x_size; j=j+64) {
- tiled_offset = 0;
- tiled_x_index = j>>6;
- tiled_y_index = i>>5;
- if (tiled_y_index & 0x1) {
- /* odd fomula: 2+x+(x>>2)<<2+x_block_num*(y-1) */
- tiled_offset = tiled_y_index-1;
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_offset*(temp1>>6);
- tiled_offset = tiled_offset+tiled_x_index;
- tiled_offset = tiled_offset+2;
- temp1 = (tiled_x_index>>2)<<2;
- tiled_offset = tiled_offset+temp1;
- tiled_offset = tiled_offset<<11;
- } else {
- temp2 = ((yuv420_height+31)>>5)<<5;
- if ((i+32)<temp2) {
- /* even1 fomula: x+((x+2)>>2)<<2+x_block_num*y */
- temp1 = tiled_x_index+2;
- temp1 = (temp1>>2)<<2;
- tiled_offset = tiled_x_index+temp1;
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_offset+tiled_y_index*(temp1>>6);
- tiled_offset = tiled_offset<<11;
- } else {
- /* even2 fomula: x+x_block_num*y */
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_y_index*(temp1>>6);
- tiled_offset = tiled_offset+tiled_x_index;
- tiled_offset = tiled_offset<<11;
- }
- }
-
- memcpy(nv12t_dest+tiled_offset, yuv420_src+j+yuv420_width*(i), 64);
- memcpy(nv12t_dest+tiled_offset+64*1, yuv420_src+j+yuv420_width*(i+1), 64);
- memcpy(nv12t_dest+tiled_offset+64*2, yuv420_src+j+yuv420_width*(i+2), 64);
- memcpy(nv12t_dest+tiled_offset+64*3, yuv420_src+j+yuv420_width*(i+3), 64);
- memcpy(nv12t_dest+tiled_offset+64*4, yuv420_src+j+yuv420_width*(i+4), 64);
- memcpy(nv12t_dest+tiled_offset+64*5, yuv420_src+j+yuv420_width*(i+5), 64);
- memcpy(nv12t_dest+tiled_offset+64*6, yuv420_src+j+yuv420_width*(i+6), 64);
- memcpy(nv12t_dest+tiled_offset+64*7, yuv420_src+j+yuv420_width*(i+7), 64);
- memcpy(nv12t_dest+tiled_offset+64*8, yuv420_src+j+yuv420_width*(i+8), 64);
- memcpy(nv12t_dest+tiled_offset+64*9, yuv420_src+j+yuv420_width*(i+9), 64);
- memcpy(nv12t_dest+tiled_offset+64*10, yuv420_src+j+yuv420_width*(i+10), 64);
- memcpy(nv12t_dest+tiled_offset+64*11, yuv420_src+j+yuv420_width*(i+11), 64);
- memcpy(nv12t_dest+tiled_offset+64*12, yuv420_src+j+yuv420_width*(i+12), 64);
- memcpy(nv12t_dest+tiled_offset+64*13, yuv420_src+j+yuv420_width*(i+13), 64);
- memcpy(nv12t_dest+tiled_offset+64*14, yuv420_src+j+yuv420_width*(i+14), 64);
- memcpy(nv12t_dest+tiled_offset+64*15, yuv420_src+j+yuv420_width*(i+15), 64);
- memcpy(nv12t_dest+tiled_offset+64*16, yuv420_src+j+yuv420_width*(i+16), 64);
- memcpy(nv12t_dest+tiled_offset+64*17, yuv420_src+j+yuv420_width*(i+17), 64);
- memcpy(nv12t_dest+tiled_offset+64*18, yuv420_src+j+yuv420_width*(i+18), 64);
- memcpy(nv12t_dest+tiled_offset+64*19, yuv420_src+j+yuv420_width*(i+19), 64);
- memcpy(nv12t_dest+tiled_offset+64*20, yuv420_src+j+yuv420_width*(i+20), 64);
- memcpy(nv12t_dest+tiled_offset+64*21, yuv420_src+j+yuv420_width*(i+21), 64);
- memcpy(nv12t_dest+tiled_offset+64*22, yuv420_src+j+yuv420_width*(i+22), 64);
- memcpy(nv12t_dest+tiled_offset+64*23, yuv420_src+j+yuv420_width*(i+23), 64);
- memcpy(nv12t_dest+tiled_offset+64*24, yuv420_src+j+yuv420_width*(i+24), 64);
- memcpy(nv12t_dest+tiled_offset+64*25, yuv420_src+j+yuv420_width*(i+25), 64);
- memcpy(nv12t_dest+tiled_offset+64*26, yuv420_src+j+yuv420_width*(i+26), 64);
- memcpy(nv12t_dest+tiled_offset+64*27, yuv420_src+j+yuv420_width*(i+27), 64);
- memcpy(nv12t_dest+tiled_offset+64*28, yuv420_src+j+yuv420_width*(i+28), 64);
- memcpy(nv12t_dest+tiled_offset+64*29, yuv420_src+j+yuv420_width*(i+29), 64);
- memcpy(nv12t_dest+tiled_offset+64*30, yuv420_src+j+yuv420_width*(i+30), 64);
- memcpy(nv12t_dest+tiled_offset+64*31, yuv420_src+j+yuv420_width*(i+31), 64);
- }
- }
-
- for (i=aligned_y_size; i<yuv420_height; i=i+4) {
- for (j=0; j<aligned_x_size; j=j+64) {
- tiled_offset = 0;
- tiled_x_index = j>>6;
- tiled_y_index = i>>5;
- if (tiled_y_index & 0x1) {
- /* odd fomula: 2+x+(x>>2)<<2+x_block_num*(y-1) */
- tiled_offset = tiled_y_index-1;
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_offset*(temp1>>6);
- tiled_offset = tiled_offset+tiled_x_index;
- tiled_offset = tiled_offset+2;
- temp1 = (tiled_x_index>>2)<<2;
- tiled_offset = tiled_offset+temp1;
- tiled_offset = tiled_offset<<11;
- } else {
- temp2 = ((yuv420_height+31)>>5)<<5;
- if ((i+32)<temp2) {
- /* even1 fomula: x+((x+2)>>2)<<2+x_block_num*y */
- temp1 = tiled_x_index+2;
- temp1 = (temp1>>2)<<2;
- tiled_offset = tiled_x_index+temp1;
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_offset+tiled_y_index*(temp1>>6);
- tiled_offset = tiled_offset<<11;
- } else {
- /* even2 fomula: x+x_block_num*y */
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_y_index*(temp1>>6);
- tiled_offset = tiled_offset+tiled_x_index;
- tiled_offset = tiled_offset<<11;
- }
- }
-
- temp1 = i&0x1F;
- memcpy(nv12t_dest+tiled_offset+64*(temp1), yuv420_src+j+yuv420_width*(i), 64);
- memcpy(nv12t_dest+tiled_offset+64*(temp1+1), yuv420_src+j+yuv420_width*(i+1), 64);
- memcpy(nv12t_dest+tiled_offset+64*(temp1+2), yuv420_src+j+yuv420_width*(i+2), 64);
- memcpy(nv12t_dest+tiled_offset+64*(temp1+3), yuv420_src+j+yuv420_width*(i+3), 64);
- }
- }
-
- for (i=0; i<yuv420_height; i=i+4) {
- for (j=aligned_x_size; j<yuv420_width; j=j+4) {
- tiled_offset = 0;
- tiled_x_index = j>>6;
- tiled_y_index = i>>5;
- if (tiled_y_index & 0x1) {
- /* odd fomula: 2+x+(x>>2)<<2+x_block_num*(y-1) */
- tiled_offset = tiled_y_index-1;
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_offset*(temp1>>6);
- tiled_offset = tiled_offset+tiled_x_index;
- tiled_offset = tiled_offset+2;
- temp1 = (tiled_x_index>>2)<<2;
- tiled_offset = tiled_offset+temp1;
- tiled_offset = tiled_offset<<11;
- } else {
- temp2 = ((yuv420_height+31)>>5)<<5;
- if ((i+32)<temp2) {
- /* even1 fomula: x+((x+2)>>2)<<2+x_block_num*y */
- temp1 = tiled_x_index+2;
- temp1 = (temp1>>2)<<2;
- tiled_offset = tiled_x_index+temp1;
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_offset+tiled_y_index*(temp1>>6);
- tiled_offset = tiled_offset<<11;
- } else {
- /* even2 fomula: x+x_block_num*y */
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_y_index*(temp1>>6);
- tiled_offset = tiled_offset+tiled_x_index;
- tiled_offset = tiled_offset<<11;
- }
- }
-
- temp1 = i&0x1F;
- temp2 = j&0x3F;
- memcpy(nv12t_dest+tiled_offset+temp2+64*(temp1), yuv420_src+j+yuv420_width*(i), 4);
- memcpy(nv12t_dest+tiled_offset+temp2+64*(temp1+1), yuv420_src+j+yuv420_width*(i+1), 4);
- memcpy(nv12t_dest+tiled_offset+temp2+64*(temp1+2), yuv420_src+j+yuv420_width*(i+2), 4);
- memcpy(nv12t_dest+tiled_offset+temp2+64*(temp1+3), yuv420_src+j+yuv420_width*(i+3), 4);
- }
- }
-}
-
-/*
- * Converts and Interleaves linear to tiled
- * 1. UV of YUV420P to UV of NV12T
- *
- * @param nv12t_uv_dest
- * UV plane address of NV12T[out]
- *
- * @param yuv420p_u_src
- * U plane address of YUV420P[in]
- *
- * @param yuv420p_v_src
- * V plane address of YUV420P[in]
- *
- * @param yuv420_width
- * Width of YUV420[in]
- *
- * @param yuv420_uv_height
- * Height/2 of YUV420[in]
- */
-void csc_linear_to_tiled_interleave(char *nv12t_uv_dest, char *yuv420p_u_src, char *yuv420p_v_src, int yuv420_width, int yuv420_uv_height)
-{
- unsigned int i, j;
- unsigned int tiled_x_index = 0, tiled_y_index = 0;
- unsigned int aligned_x_size = 0, aligned_y_size = 0;
- unsigned int tiled_offset = 0;
- unsigned int temp1 = 0, temp2 = 0;
-
- aligned_y_size = (yuv420_uv_height>>5)<<5;
- aligned_x_size = ((yuv420_width)>>6)<<6;
-
- for (i=0; i<aligned_y_size; i=i+32) {
- for (j=0; j<aligned_x_size; j=j+64) {
- tiled_offset = 0;
- tiled_x_index = j>>6;
- tiled_y_index = i>>5;
- if (tiled_y_index & 0x1) {
- /* odd fomula: 2+x+(x>>2)<<2+x_block_num*(y-1) */
- tiled_offset = tiled_y_index-1;
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_offset*(temp1>>6);
- tiled_offset = tiled_offset+tiled_x_index;
- tiled_offset = tiled_offset+2;
- temp1 = (tiled_x_index>>2)<<2;
- tiled_offset = tiled_offset+temp1;
- tiled_offset = tiled_offset<<11;
- } else {
- temp2 = ((yuv420_uv_height+31)>>5)<<5;
- if ((i+32)<temp2) {
- /* even1 fomula: x+((x+2)>>2)<<2+x_block_num*y */
- temp1 = tiled_x_index+2;
- temp1 = (temp1>>2)<<2;
- tiled_offset = tiled_x_index+temp1;
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_offset+tiled_y_index*(temp1>>6);
- tiled_offset = tiled_offset<<11;
- } else {
- /* even2 fomula: x+x_block_num*y */
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_y_index*(temp1>>6);
- tiled_offset = tiled_offset+tiled_x_index;
- tiled_offset = tiled_offset<<11;
- }
- }
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset, yuv420p_u_src+j/2+yuv420_width/2*(i), yuv420p_v_src+j/2+yuv420_width/2*(i), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*1, yuv420p_u_src+j/2+yuv420_width/2*(i+1), yuv420p_v_src+j/2+yuv420_width/2*(i+1), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*2, yuv420p_u_src+j/2+yuv420_width/2*(i+2), yuv420p_v_src+j/2+yuv420_width/2*(i+2), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*3, yuv420p_u_src+j/2+yuv420_width/2*(i+3), yuv420p_v_src+j/2+yuv420_width/2*(i+3), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*4, yuv420p_u_src+j/2+yuv420_width/2*(i+4), yuv420p_v_src+j/2+yuv420_width/2*(i+4), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*5, yuv420p_u_src+j/2+yuv420_width/2*(i+5), yuv420p_v_src+j/2+yuv420_width/2*(i+5), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*6, yuv420p_u_src+j/2+yuv420_width/2*(i+6), yuv420p_v_src+j/2+yuv420_width/2*(i+6), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*7, yuv420p_u_src+j/2+yuv420_width/2*(i+7), yuv420p_v_src+j/2+yuv420_width/2*(i+7), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*8, yuv420p_u_src+j/2+yuv420_width/2*(i+8), yuv420p_v_src+j/2+yuv420_width/2*(i+8), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*9, yuv420p_u_src+j/2+yuv420_width/2*(i+9), yuv420p_v_src+j/2+yuv420_width/2*(i+9), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*10, yuv420p_u_src+j/2+yuv420_width/2*(i+10), yuv420p_v_src+j/2+yuv420_width/2*(i+10), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*11, yuv420p_u_src+j/2+yuv420_width/2*(i+11), yuv420p_v_src+j/2+yuv420_width/2*(i+11), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*12, yuv420p_u_src+j/2+yuv420_width/2*(i+12), yuv420p_v_src+j/2+yuv420_width/2*(i+12), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*13, yuv420p_u_src+j/2+yuv420_width/2*(i+13), yuv420p_v_src+j/2+yuv420_width/2*(i+13), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*14, yuv420p_u_src+j/2+yuv420_width/2*(i+14), yuv420p_v_src+j/2+yuv420_width/2*(i+14), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*15, yuv420p_u_src+j/2+yuv420_width/2*(i+15), yuv420p_v_src+j/2+yuv420_width/2*(i+15), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*16, yuv420p_u_src+j/2+yuv420_width/2*(i+16), yuv420p_v_src+j/2+yuv420_width/2*(i+16), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*17, yuv420p_u_src+j/2+yuv420_width/2*(i+17), yuv420p_v_src+j/2+yuv420_width/2*(i+17), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*18, yuv420p_u_src+j/2+yuv420_width/2*(i+18), yuv420p_v_src+j/2+yuv420_width/2*(i+18), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*19, yuv420p_u_src+j/2+yuv420_width/2*(i+19), yuv420p_v_src+j/2+yuv420_width/2*(i+19), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*20, yuv420p_u_src+j/2+yuv420_width/2*(i+20), yuv420p_v_src+j/2+yuv420_width/2*(i+20), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*21, yuv420p_u_src+j/2+yuv420_width/2*(i+21), yuv420p_v_src+j/2+yuv420_width/2*(i+21), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*22, yuv420p_u_src+j/2+yuv420_width/2*(i+22), yuv420p_v_src+j/2+yuv420_width/2*(i+22), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*23, yuv420p_u_src+j/2+yuv420_width/2*(i+23), yuv420p_v_src+j/2+yuv420_width/2*(i+23), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*24, yuv420p_u_src+j/2+yuv420_width/2*(i+24), yuv420p_v_src+j/2+yuv420_width/2*(i+24), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*25, yuv420p_u_src+j/2+yuv420_width/2*(i+25), yuv420p_v_src+j/2+yuv420_width/2*(i+25), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*26, yuv420p_u_src+j/2+yuv420_width/2*(i+26), yuv420p_v_src+j/2+yuv420_width/2*(i+26), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*27, yuv420p_u_src+j/2+yuv420_width/2*(i+27), yuv420p_v_src+j/2+yuv420_width/2*(i+27), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*28, yuv420p_u_src+j/2+yuv420_width/2*(i+28), yuv420p_v_src+j/2+yuv420_width/2*(i+28), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*29, yuv420p_u_src+j/2+yuv420_width/2*(i+29), yuv420p_v_src+j/2+yuv420_width/2*(i+29), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*30, yuv420p_u_src+j/2+yuv420_width/2*(i+30), yuv420p_v_src+j/2+yuv420_width/2*(i+30), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*31, yuv420p_u_src+j/2+yuv420_width/2*(i+31), yuv420p_v_src+j/2+yuv420_width/2*(i+31), 32);
- }
- }
-
- for (i=aligned_y_size; i<yuv420_uv_height; i=i+4) {
- for (j=0; j<aligned_x_size; j=j+64) {
- tiled_offset = 0;
- tiled_x_index = j>>6;
- tiled_y_index = i>>5;
- if (tiled_y_index & 0x1) {
- /* odd fomula: 2+x+(x>>2)<<2+x_block_num*(y-1) */
- tiled_offset = tiled_y_index-1;
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_offset*(temp1>>6);
- tiled_offset = tiled_offset+tiled_x_index;
- tiled_offset = tiled_offset+2;
- temp1 = (tiled_x_index>>2)<<2;
- tiled_offset = tiled_offset+temp1;
- tiled_offset = tiled_offset<<11;
- } else {
- temp2 = ((yuv420_uv_height+31)>>5)<<5;
- if ((i+32)<temp2) {
- /* even1 fomula: x+((x+2)>>2)<<2+x_block_num*y */
- temp1 = tiled_x_index+2;
- temp1 = (temp1>>2)<<2;
- tiled_offset = tiled_x_index+temp1;
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_offset+tiled_y_index*(temp1>>6);
- tiled_offset = tiled_offset<<11;
- } else {
- /* even2 fomula: x+x_block_num*y */
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_y_index*(temp1>>6);
- tiled_offset = tiled_offset+tiled_x_index;
- tiled_offset = tiled_offset<<11;
- }
- }
- temp1 = i&0x1F;
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*(temp1), yuv420p_u_src+j/2+yuv420_width/2*(i), yuv420p_v_src+j/2+yuv420_width/2*(i), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*(temp1+1), yuv420p_u_src+j/2+yuv420_width/2*(i+1), yuv420p_v_src+j/2+yuv420_width/2*(i+1), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*(temp1+2), yuv420p_u_src+j/2+yuv420_width/2*(i+2), yuv420p_v_src+j/2+yuv420_width/2*(i+2), 32);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+64*(temp1+3), yuv420p_u_src+j/2+yuv420_width/2*(i+3), yuv420p_v_src+j/2+yuv420_width/2*(i+3), 32);
- }
- }
-
- for (i=0; i<yuv420_uv_height; i=i+4) {
- for (j=aligned_x_size; j<yuv420_width; j=j+4) {
- tiled_offset = 0;
- tiled_x_index = j>>6;
- tiled_y_index = i>>5;
- if (tiled_y_index & 0x1) {
- /* odd fomula: 2+x+(x>>2)<<2+x_block_num*(y-1) */
- tiled_offset = tiled_y_index-1;
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_offset*(temp1>>6);
- tiled_offset = tiled_offset+tiled_x_index;
- tiled_offset = tiled_offset+2;
- temp1 = (tiled_x_index>>2)<<2;
- tiled_offset = tiled_offset+temp1;
- tiled_offset = tiled_offset<<11;
- } else {
- temp2 = ((yuv420_uv_height+31)>>5)<<5;
- if ((i+32)<temp2) {
- /* even1 fomula: x+((x+2)>>2)<<2+x_block_num*y */
- temp1 = tiled_x_index+2;
- temp1 = (temp1>>2)<<2;
- tiled_offset = tiled_x_index+temp1;
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_offset+tiled_y_index*(temp1>>6);
- tiled_offset = tiled_offset<<11;
- } else {
- /* even2 fomula: x+x_block_num*y */
- temp1 = ((yuv420_width+127)>>7)<<7;
- tiled_offset = tiled_y_index*(temp1>>6);
- tiled_offset = tiled_offset+tiled_x_index;
- tiled_offset = tiled_offset<<11;
- }
- }
- temp1 = i&0x1F;
- temp2 = j&0x3F;
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+temp2+64*(temp1), yuv420p_u_src+j/2+yuv420_width/2*(i), yuv420p_v_src+j/2+yuv420_width/2*(i), 2);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+temp2+64*(temp1+1), yuv420p_u_src+j/2+yuv420_width/2*(i+1), yuv420p_v_src+j/2+yuv420_width/2*(i+1), 2);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+temp2+64*(temp1+2), yuv420p_u_src+j/2+yuv420_width/2*(i+2), yuv420p_v_src+j/2+yuv420_width/2*(i+2), 2);
- csc_interleave_memcpy(nv12t_uv_dest+tiled_offset+temp2+64*(temp1+3), yuv420p_u_src+j/2+yuv420_width/2*(i+3), yuv420p_v_src+j/2+yuv420_width/2*(i+3), 2);
- }
- }
-}
-
diff --git a/sec_mm/sec_omx/sec_codecs/video/mfc_c110/csc/csc_deinterleave_memcpy.s b/sec_mm/sec_omx/sec_codecs/video/mfc_c110/csc/csc_deinterleave_memcpy.s
deleted file mode 100644
index 5b55080..0000000
--- a/sec_mm/sec_omx/sec_codecs/video/mfc_c110/csc/csc_deinterleave_memcpy.s
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- *
- * Copyright 2011 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file csc_deinterleave_memcpy.s
- * @brief SEC_OMX specific define
- * @author ShinWon Lee (shinwon.lee@samsung.com)
- * @version 1.0
- * @history
- * 2011.7.01 : Create
- */
- .arch armv7-a
- .text
- .global csc_deinterleave_memcpy
- .type csc_deinterleave_memcpy, %function
-csc_deinterleave_memcpy:
- .fnstart
-
- @r0 dest1
- @r1 dest2
- @r2 src
- @r3 src_size
- @r4 i
- @r5 temp1
- @r6 temp2
- @r7 temp3
-
- stmfd sp!, {r4-r12,r14} @ backup registers
-
- mov r4, #0
- cmp r3, #256
- blt LINEAR_SIZE_128
-
- bic r5, r3, #0xFF
-LINEAR_SIZE_256_LOOP:
- pld [r2, #64]
- vld2.8 {q0, q1}, [r2]!
- pld [r2, #64]
- vld2.8 {q2, q3}, [r2]!
- pld [r2, #64]
- vld2.8 {q4, q5}, [r2]!
- pld [r2, #64]
- vld2.8 {q6, q7}, [r2]!
- pld [r2, #64]
- vld2.8 {q8, q9}, [r2]!
- pld [r2, #64]
- vld2.8 {q10, q11}, [r2]!
- vld2.8 {q12, q13}, [r2]!
- vld2.8 {q14, q15}, [r2]!
-
- vst1.8 {q0}, [r0]!
- vst1.8 {q2}, [r0]!
- vst1.8 {q4}, [r0]!
- vst1.8 {q6}, [r0]!
- vst1.8 {q8}, [r0]!
- vst1.8 {q10}, [r0]!
- vst1.8 {q12}, [r0]!
- vst1.8 {q14}, [r0]!
-
- vst1.8 {q1}, [r1]!
- vst1.8 {q3}, [r1]!
- vst1.8 {q5}, [r1]!
- vst1.8 {q7}, [r1]!
- vst1.8 {q9}, [r1]!
- vst1.8 {q11}, [r1]!
- vst1.8 {q13}, [r1]!
- vst1.8 {q15}, [r1]!
-
- add r4, #256
- cmp r4, r5
- blt LINEAR_SIZE_256_LOOP
-
-LINEAR_SIZE_128:
- sub r5, r3, r4
- cmp r5, #64
- blt LINEAR_SIZE_4
- pld [r2, #64]
- vld2.8 {q0, q1}, [r2]!
- pld [r2, #64]
- vld2.8 {q2, q3}, [r2]!
- vld2.8 {q4, q5}, [r2]!
- vld2.8 {q6, q7}, [r2]!
-
- vst1.8 {q0}, [r0]!
- vst1.8 {q4}, [r0]!
- vst1.8 {q2}, [r0]!
- vst1.8 {q6}, [r0]!
-
- vst1.8 {q1}, [r1]!
- vst1.8 {q3}, [r1]!
- vst1.8 {q5}, [r1]!
- vst1.8 {q7}, [r1]!
-
- add r4, #128
-
-LINEAR_SIZE_4:
- ldrb r6, [r2], #1
- ldrb r7, [r2], #1
- ldrb r8, [r2], #1
- ldrb r9, [r2], #1
-
- strb r6, [r0], #1
- strb r8, [r0], #1
- strb r7, [r1], #1
- strb r9, [r1], #1
-
- add r4, #4
- cmp r4, r3
- blt LINEAR_SIZE_4
-
-RESTORE_REG:
- ldmfd sp!, {r4-r12,r15} @ restore registers
- .fnend
-
diff --git a/sec_mm/sec_omx/sec_codecs/video/mfc_c110/csc/csc_interleave_memcpy.s b/sec_mm/sec_omx/sec_codecs/video/mfc_c110/csc/csc_interleave_memcpy.s
deleted file mode 100644
index 54f4436..0000000
--- a/sec_mm/sec_omx/sec_codecs/video/mfc_c110/csc/csc_interleave_memcpy.s
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- *
- * Copyright 2011 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file csc_interleave_memcpy.s
- * @brief SEC_OMX specific define
- * @author ShinWon Lee (shinwon.lee@samsung.com)
- * @version 1.0
- * @history
- * 2011.7.01 : Create
- */
- .arch armv7-a
- .text
- .global csc_interleave_memcpy
- .type csc_interleave_memcpy, %function
-csc_interleave_memcpy:
- .fnstart
-
- @r0 dest
- @r1 src1
- @r2 src2
- @r3 src_size
- @r4 i
- @r5 temp1
- @r6 temp2
- @r7 temp3
- @r8 temp2
- @r9 temp3
-
- stmfd sp!, {r4-r12,r14} @ backup registers
-
- mov r4, #0
- cmp r3, #128
- blt LINEAR_SIZE_64
-
- bic r5, r3, #0x2F
-LINEAR_SIZE_128_LOOP:
- pld [r1, #64]
- vld1.8 {q0}, [r1]!
- vld1.8 {q2}, [r1]!
- vld1.8 {q4}, [r1]!
- vld1.8 {q6}, [r1]!
- pld [r2]
- vld1.8 {q8}, [r1]!
- vld1.8 {q10}, [r1]!
- vld1.8 {q12}, [r1]!
- vld1.8 {q14}, [r1]!
- pld [r2, #64]
- vld1.8 {q1}, [r2]!
- vld1.8 {q3}, [r2]!
- vld1.8 {q5}, [r2]!
- vld1.8 {q7}, [r2]!
- vld1.8 {q9}, [r2]!
- vld1.8 {q11}, [r2]!
- vld1.8 {q13}, [r2]!
- vld1.8 {q15}, [r2]!
-
- vst2.8 {q0, q1}, [r0]!
- vst2.8 {q2, q3}, [r0]!
- vst2.8 {q4, q5}, [r0]!
- vst2.8 {q6, q7}, [r0]!
- vst2.8 {q8, q9}, [r0]!
- vst2.8 {q10, q11}, [r0]!
- pld [r1]
- vst2.8 {q12, q13}, [r0]!
- vst2.8 {q14, q15}, [r0]!
-
- add r4, #128
- cmp r4, r5
- blt LINEAR_SIZE_128_LOOP
-
-LINEAR_SIZE_64:
- sub r5, r3, r4
- cmp r5, #64
- blt LINEAR_SIZE_2
-LINEAR_SIZE_64_LOOP:
- pld [r2]
- vld1.8 {q0}, [r1]!
- vld1.8 {q2}, [r1]!
- vld1.8 {q4}, [r1]!
- vld1.8 {q6}, [r1]!
- vld1.8 {q1}, [r2]!
- vld1.8 {q3}, [r2]!
- vld1.8 {q5}, [r2]!
- vld1.8 {q7}, [r2]!
-
- vst2.8 {q0, q1}, [r0]!
- vst2.8 {q2, q3}, [r0]!
- pld [r1]
- vst2.8 {q4, q5}, [r0]!
- vst2.8 {q6, q7}, [r0]!
-
- add r4, #64
- cmp r4, r3
- blt LINEAR_SIZE_64_LOOP
-
-LINEAR_SIZE_2:
- sub r5, r3, r4
- cmp r5, #2
- blt RESTORE_REG
-LINEAR_SIZE_2_LOOP:
- ldrb r6, [r1], #1
- ldrb r7, [r2], #1
- ldrb r8, [r1], #1
- ldrb r9, [r2], #1
-
- strb r6, [r0], #1
- strb r7, [r0], #1
- strb r8, [r0], #1
- strb r9, [r0], #1
-
- add r4, #2
- cmp r4, r3
- blt LINEAR_SIZE_2_LOOP
-
-RESTORE_REG:
- ldmfd sp!, {r4-r12,r15} @ restore registers
- .fnend
-
diff --git a/sec_mm/sec_omx/sec_codecs/video/mfc_c110/csc/csc_nv12t_yuv420_uv_neon.s b/sec_mm/sec_omx/sec_codecs/video/mfc_c110/csc/csc_nv12t_yuv420_uv_neon.s
deleted file mode 100644
index 08e359c..0000000
--- a/sec_mm/sec_omx/sec_codecs/video/mfc_c110/csc/csc_nv12t_yuv420_uv_neon.s
+++ /dev/null
@@ -1,768 +0,0 @@
-/*
- *
- * Copyright 2011 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file csc_nv12t_yuv420_uv_neon.s
- * @brief SEC_OMX specific define
- * @author ShinWon Lee (shinwon.lee@samsung.com)
- * @version 1.0
- * @history
- * 2011.7.01 : Create
- */
-
-/*
- * Converts and Deinterleaves tiled data to linear
- * 1. UV of NV12T to UV of YUV420P
- *
- * @param yuv420_u_dest
- * U plane address of YUV420P[out]
- *
- * @param yuv420_v_dest
- * V plane address of YUV420P[out]
- *
- * @param nv12t_src
- * UV plane address of NV12T[in]
- *
- * @param yuv420_width
- * Width of YUV420[in]
- *
- * @param yuv420_uv_height
- * Height/2 of YUV420[in]
- */
-
- .arch armv7-a
- .text
- .global csc_tiled_to_linear_deinterleave
- .type csc_tiled_to_linear_deinterleave, %function
-csc_tiled_to_linear_deinterleave:
- .fnstart
-
- @r0 linear_u_dest
- @r1 linear_v_dest
- @r2 tiled_uv_src
- @r3 linear_x_size
- @r4 linear_y_size
- @r5 j
- @r6 i
- @r7 tiled_addr
- @r8 linear_addr
- @r9 aligned_x_size
- @r10 temp1
- @r11 temp2
- @r12 temp3
- @r14 temp4
-
- stmfd sp!, {r4-r12,r14} @ backup registers
-
- ldr r4, [sp, #40] @ load linear_y_size to r4
-
- mov r9, #0
-
-LINEAR_X_SIZE_1024:
- cmp r3, #1024
- blt LINEAR_X_SIZE_512
-
- mov r6, #0
-LINEAR_X_SIZE_1024_LOOP:
- mov r7, #0 @ tiled_offset = 0@
- mov r5, r6, asr #5 @ tiled_y_index = i>>5@
- and r10, r5, #0x1
- cmp r10, #0x1
- bne LINEAR_X_SIZE_1024_LOOP_EVEN
-LINEAR_X_SIZE_1024_LOOP_ODD:
- sub r7, r5, #1 @ tiled_offset = tiled_y_index-1@
- add r10, r3, #127 @ temp1 = ((linear_x_size+127)>>7)<<7@
- bic r10, #0x7F
- mov r10, r10, asr #6 @ tiled_offset = tiled_offset*(temp1>>6)@
- mul r7, r7, r10
- mov r5, #8
- mov r5, r5, lsl #11
- sub r5, r5, #32
- add r7, r7, #2 @ tiled_offset = tiled_offset+2@
- mov r7, r7, lsl #11 @ tiled_offset = tiled_offset<<11@
- add r11, r7, #2048
- add r12, r7, #4096
- add r14, r7, #6144
- b LINEAR_X_SIZE_1024_LOOP_MEMCPY
-
-LINEAR_X_SIZE_1024_LOOP_EVEN:
- add r11, r4, #31 @ temp2 = ((linear_y_size+31)>>5)<<5@
- bic r11, r11, #0x1F
- add r10, r3, #127 @ temp1 = ((linear_x_size+127)>>7)<<7@
- bic r10, #0x7F
- mov r10, r10, asr #6 @ tiled_offset = tiled_y_index*(temp1>>6)@
- mul r7, r5, r10
- add r12, r6, #32
- cmp r12, r11
- mov r7, r7, lsl #11 @ tiled_offset = tiled_offset<<11@
- add r11, r7, #2048
- movlt r5, #8
- addlt r12, r7, #12288
- addlt r14, r7, #14336
- movge r5, #4
- addge r12, r7, #2048
- addge r14, r7, #2048
- mov r5, r5, lsl #11
- sub r5, r5, #32
-
-LINEAR_X_SIZE_1024_LOOP_MEMCPY:
- and r10, r6, #0x1F
- mov r10, r10, lsl #6
- add r10, r2, r10
-
- add r7, r7, r10 @ tiled_addr = tiled_src+64*(temp1)
- add r11, r11, r10 @ tiled_addr1 = tiled_src+64*(temp1)
- pld [r11]
- vld2.8 {q0, q1}, [r7]!
- pld [r11, #32]
- add r12, r12, r10 @ tiled_addr2 = tiled_src+64*(temp1)
- vld2.8 {q2, q3}, [r7], r5
- pld [r12]
- vld2.8 {q4, q5}, [r11]!
- pld [r12, #32]
- add r14, r14, r10 @ tiled_addr3 = tiled_src+64*(temp1)
- vld2.8 {q6, q7}, [r11], r5
- pld [r14]
- vld2.8 {q8, q9}, [r12]!
- pld [r14, #32]
- mov r10, r3, asr #1
- vld2.8 {q10, q11}, [r12], r5
- mul r10, r10, r6
- vld2.8 {q12, q13}, [r14]!
- vld2.8 {q14, q15}, [r14], r5
-
- add r8, r0, r10
- vst1.8 {q0}, [r8]!
- vst1.8 {q2}, [r8]!
- vst1.8 {q4}, [r8]!
- vst1.8 {q6}, [r8]!
- vst1.8 {q8}, [r8]!
- vst1.8 {q10}, [r8]!
- vst1.8 {q12}, [r8]!
- vst1.8 {q14}, [r8]!
-
- add r10, r1, r10
- vst1.8 {q1}, [r10]!
- vst1.8 {q3}, [r10]!
- vst1.8 {q5}, [r10]!
- vst1.8 {q7}, [r10]!
- vst1.8 {q9}, [r10]!
- vst1.8 {q11}, [r10]!
- pld [r7]
- vst1.8 {q13}, [r10]!
- pld [r7, #32]
- vst1.8 {q15}, [r10]!
-
- pld [r11]
- vld2.8 {q0, q1}, [r7]!
- pld [r11, #32]
- vld2.8 {q2, q3}, [r7], r5
- pld [r12]
- vld2.8 {q4, q5}, [r11]!
- pld [r12, #32]
- vld2.8 {q6, q7}, [r11], r5
- pld [r14]
- vld2.8 {q8, q9}, [r12]!
- pld [r14, #32]
- vld2.8 {q10, q11}, [r12], r5
- vld2.8 {q12, q13}, [r14]!
- vld2.8 {q14, q15}, [r14], r5
-
- vst1.8 {q0}, [r8]!
- vst1.8 {q2}, [r8]!
- vst1.8 {q4}, [r8]!
- vst1.8 {q6}, [r8]!
- vst1.8 {q8}, [r8]!
- vst1.8 {q10}, [r8]!
- vst1.8 {q12}, [r8]!
- vst1.8 {q14}, [r8]!
-
- vst1.8 {q1}, [r10]!
- vst1.8 {q3}, [r10]!
- vst1.8 {q5}, [r10]!
- vst1.8 {q7}, [r10]!
- vst1.8 {q9}, [r10]!
- vst1.8 {q11}, [r10]!
- pld [r7]
- vst1.8 {q13}, [r10]!
- pld [r7, #32]
- vst1.8 {q15}, [r10]!
-
- pld [r11]
- vld2.8 {q0, q1}, [r7]!
- pld [r11, #32]
- vld2.8 {q2, q3}, [r7], r5
- pld [r12]
- vld2.8 {q4, q5}, [r11]!
- pld [r12, #32]
- vld2.8 {q6, q7}, [r11], r5
- pld [r14]
- vld2.8 {q8, q9}, [r12]!
- pld [r14, #32]
- vld2.8 {q10, q11}, [r12], r5
- vld2.8 {q12, q13}, [r14]!
- vld2.8 {q14, q15}, [r14], r5
-
- vst1.8 {q0}, [r8]!
- vst1.8 {q2}, [r8]!
- vst1.8 {q4}, [r8]!
- vst1.8 {q6}, [r8]!
- vst1.8 {q8}, [r8]!
- vst1.8 {q10}, [r8]!
- vst1.8 {q12}, [r8]!
- vst1.8 {q14}, [r8]!
-
- vst1.8 {q1}, [r10]!
- vst1.8 {q3}, [r10]!
- vst1.8 {q5}, [r10]!
- vst1.8 {q7}, [r10]!
- vst1.8 {q9}, [r10]!
- vst1.8 {q11}, [r10]!
- pld [r7]
- vst1.8 {q13}, [r10]!
- pld [r7, #32]
- vst1.8 {q15}, [r10]!
-
- pld [r11]
- vld2.8 {q0, q1}, [r7]!
- pld [r11, #32]
- vld2.8 {q2, q3}, [r7]
- pld [r12]
- vld2.8 {q4, q5}, [r11]!
- pld [r12, #32]
- vld2.8 {q6, q7}, [r11]
- pld [r14]
- vld2.8 {q8, q9}, [r12]!
- pld [r14, #32]
- vld2.8 {q10, q11}, [r12]
- vld2.8 {q12, q13}, [r14]!
- vld2.8 {q14, q15}, [r14]
-
- vst1.8 {q0}, [r8]!
- vst1.8 {q2}, [r8]!
- vst1.8 {q4}, [r8]!
- vst1.8 {q6}, [r8]!
- vst1.8 {q8}, [r8]!
- vst1.8 {q10}, [r8]!
- vst1.8 {q12}, [r8]!
- vst1.8 {q14}, [r8]!
-
- vst1.8 {q1}, [r10]!
- vst1.8 {q3}, [r10]!
- vst1.8 {q5}, [r10]!
- vst1.8 {q7}, [r10]!
- vst1.8 {q9}, [r10]!
- vst1.8 {q11}, [r10]!
- add r6, #1
- vst1.8 {q13}, [r10]!
- cmp r6, r4
- vst1.8 {q15}, [r10]!
-
- blt LINEAR_X_SIZE_1024_LOOP
-
- mov r9, #1024
-
-LINEAR_X_SIZE_512:
- sub r10, r3, r9
- cmp r10, #512
- blt LINEAR_X_SIZE_256
-
- mov r6, #0
-LINEAR_X_SIZE_512_LOOP:
- mov r7, #0 @ tiled_offset = 0@
- mov r5, r6, asr #5 @ tiled_y_index = i>>5@
- and r10, r5, #0x1
- cmp r10, #0x1
- bne LINEAR_X_SIZE_512_LOOP_EVEN
-LINEAR_X_SIZE_512_LOOP_ODD:
- sub r7, r5, #1 @ tiled_offset = tiled_y_index-1@
- add r10, r3, #127 @ temp1 = ((linear_x_size+127)>>7)<<7@
- bic r10, #0x7F
- mov r10, r10, asr #6 @ tiled_offset = tiled_offset*(temp1>>6)@
- mul r7, r7, r10
- mov r5, #8
- mov r5, r5, lsl #11
- add r7, r7, #2 @ tiled_offset = tiled_offset+2@
- mov r10, r9, asr #5
- add r7, r7, r10
- mov r7, r7, lsl #11 @ tiled_offset = tiled_offset<<11@
- add r11, r7, #2048
- add r12, r7, #4096
- add r14, r7, #6144
- sub r5, r5, #32
- b LINEAR_X_SIZE_512_LOOP_MEMCPY
-
-LINEAR_X_SIZE_512_LOOP_EVEN:
- add r11, r4, #31 @ temp2 = ((linear_y_size+31)>>5)<<5@
- bic r11, r11, #0x1F
- add r10, r3, #127 @ temp1 = ((linear_x_size+127)>>7)<<7@
- bic r10, #0x7F
- mov r10, r10, asr #6 @ tiled_offset = tiled_y_index*(temp1>>6)@
- mul r7, r5, r10
- add r12, r6, #32
- cmp r12, r11
- mov r7, r7, lsl #11 @ tiled_offset = tiled_offset<<11@
- movlt r5, #8
- movlt r10, r9, asr #5
- movge r10, r9, asr #6
- add r7, r7, r10, lsl #11
- add r11, r7, #2048
- addlt r12, r7, #12288
- addlt r14, r7, #14336
- movge r5, #4
- addge r12, r7, #4096
- addge r14, r7, #6144
- mov r5, r5, lsl #11
- sub r5, r5, #32
-
-LINEAR_X_SIZE_512_LOOP_MEMCPY:
- and r10, r6, #0x1F
- mov r10, r10, lsl #6
- add r10, r2, r10
-
- add r7, r7, r10 @ tiled_addr = tiled_src+64*(temp1)
- add r11, r11, r10 @ tiled_addr1 = tiled_src+64*(temp1)
- pld [r11]
- vld2.8 {q0, q1}, [r7]!
- pld [r11, #32]
- add r12, r12, r10 @ tiled_addr2 = tiled_src+64*(temp1)
- vld2.8 {q2, q3}, [r7], r5
- pld [r12]
- vld2.8 {q4, q5}, [r11]!
- pld [r12, #32]
- add r14, r14, r10 @ tiled_addr3 = tiled_src+64*(temp1)
- vld2.8 {q6, q7}, [r11], r5
- pld [r14]
- mov r10, r3, asr #1
- vld2.8 {q8, q9}, [r12]!
- pld [r14, #32]
- mul r10, r10, r6
- vld2.8 {q10, q11}, [r12], r5
- add r8, r0, r10
- vld2.8 {q12, q13}, [r14]!
- add r8, r8, r9, asr #1
- vld2.8 {q14, q15}, [r14], r5
-
- vst1.8 {q0}, [r8]!
- vst1.8 {q2}, [r8]!
- vst1.8 {q4}, [r8]!
- vst1.8 {q6}, [r8]!
- vst1.8 {q8}, [r8]!
- vst1.8 {q10}, [r8]!
- vst1.8 {q12}, [r8]!
- add r10, r1, r10
- vst1.8 {q14}, [r8]!
-
- add r10, r10, r9, asr #1
- vst1.8 {q1}, [r10]!
- vst1.8 {q3}, [r10]!
- vst1.8 {q5}, [r10]!
- vst1.8 {q7}, [r10]!
- vst1.8 {q9}, [r10]!
- vst1.8 {q11}, [r10]!
- pld [r7]
- vst1.8 {q13}, [r10]!
- pld [r7, #32]
- vst1.8 {q15}, [r10]!
-
- pld [r11]
- vld2.8 {q0, q1}, [r7]!
- pld [r11, #32]
- vld2.8 {q2, q3}, [r7]
- pld [r12]
- vld2.8 {q4, q5}, [r11]!
- pld [r12, #32]
- vld2.8 {q6, q7}, [r11]
- pld [r14]
- vld2.8 {q8, q9}, [r12]!
- pld [r14, #32]
- vld2.8 {q10, q11}, [r12]
- vld2.8 {q12, q13}, [r14]!
- vld2.8 {q14, q15}, [r14]
-
- vst1.8 {q0}, [r8]!
- vst1.8 {q2}, [r8]!
- vst1.8 {q4}, [r8]!
- vst1.8 {q6}, [r8]!
- vst1.8 {q8}, [r8]!
- vst1.8 {q10}, [r8]!
- vst1.8 {q12}, [r8]!
- vst1.8 {q14}, [r8]!
-
- vst1.8 {q1}, [r10]!
- vst1.8 {q3}, [r10]!
- vst1.8 {q5}, [r10]!
- vst1.8 {q7}, [r10]!
- vst1.8 {q9}, [r10]!
- vst1.8 {q11}, [r10]!
- add r6, #1
- vst1.8 {q13}, [r10]!
- cmp r6, r4
- vst1.8 {q15}, [r10]!
-
- blt LINEAR_X_SIZE_512_LOOP
-
- add r9, r9, #512
-
-LINEAR_X_SIZE_256:
- sub r10, r3, r9
- cmp r10, #256
- blt LINEAR_X_SIZE_128
-
- mov r6, #0
-LINEAR_X_SIZE_256_LOOP:
- mov r7, #0 @ tiled_offset = 0@
- mov r5, r6, asr #5 @ tiled_y_index = i>>5@
- and r10, r5, #0x1
- cmp r10, #0x1
- bne LINEAR_X_SIZE_256_LOOP_EVEN
-LINEAR_X_SIZE_256_LOOP_ODD:
- sub r7, r5, #1 @ tiled_offset = tiled_y_index-1@
- add r10, r3, #127 @ temp1 = ((linear_x_size+127)>>7)<<7@
- bic r10, #0x7F
- mov r10, r10, asr #6 @ tiled_offset = tiled_offset*(temp1>>6)@
- mul r7, r7, r10
- add r7, r7, #2 @ tiled_offset = tiled_offset+2@
- mov r10, r9, asr #5
- add r7, r7, r10
- mov r7, r7, lsl #11 @ tiled_offset = tiled_offset<<11@
- add r11, r7, #2048
- add r12, r7, #4096
- add r14, r7, #6144
- b LINEAR_X_SIZE_256_LOOP_MEMCPY
-
-LINEAR_X_SIZE_256_LOOP_EVEN:
- add r11, r4, #31 @ temp2 = ((linear_y_size+31)>>5)<<5@
- bic r11, r11, #0x1F
- add r10, r3, #127 @ temp1 = ((linear_x_size+127)>>7)<<7@
- bic r10, #0x7F
- mov r10, r10, asr #6 @ tiled_offset = tiled_y_index*(temp1>>6)@
- mul r7, r5, r10
- mov r7, r7, lsl #11 @ tiled_offset = tiled_offset<<11@
- add r12, r6, #32
- cmp r12, r11
- movlt r10, r9, asr #5
- addlt r7, r7, r10, lsl #11
- addlt r11, r7, #2048
- addlt r12, r7, #12288
- addlt r14, r7, #14336
- movge r10, r9, asr #6
- addge r7, r7, r10, lsl #11
- addge r11, r7, #2048
- addge r12, r7, #4096
- addge r14, r7, #6144
-
-LINEAR_X_SIZE_256_LOOP_MEMCPY:
- and r10, r6, #0x1F
- mov r10, r10, lsl #6
- add r10, r2, r10
-
- add r7, r7, r10 @ tiled_addr = tiled_src+64*(temp1)
- add r11, r11, r10 @ tiled_addr1 = tiled_src+64*(temp1)
- pld [r11]
- vld2.8 {q0, q1}, [r7]!
- pld [r11, #32]
- add r12, r12, r10 @ tiled_addr2 = tiled_src+64*(temp1)
- vld2.8 {q2, q3}, [r7]
- pld [r12]
- vld2.8 {q4, q5}, [r11]!
- pld [r12, #32]
- add r14, r14, r10 @ tiled_addr3 = tiled_src+64*(temp1)
- vld2.8 {q6, q7}, [r11]
- pld [r14]
- vld2.8 {q8, q9}, [r12]!
- pld [r14, #32]
- mov r10, r3, asr #1
- vld2.8 {q10, q11}, [r12]
- mul r10, r10, r6
- vld2.8 {q12, q13}, [r14]!
- add r8, r0, r10
- vld2.8 {q14, q15}, [r14]
-
- add r8, r8, r9, asr #1
- vst1.8 {q0}, [r8]!
- vst1.8 {q2}, [r8]!
- vst1.8 {q4}, [r8]!
- vst1.8 {q6}, [r8]!
- vst1.8 {q8}, [r8]!
- vst1.8 {q10}, [r8]!
- vst1.8 {q12}, [r8]!
- add r10, r1, r10
- vst1.8 {q14}, [r8]!
-
- add r10, r10, r9, asr #1
- vst1.8 {q1}, [r10]!
- vst1.8 {q3}, [r10]!
- vst1.8 {q5}, [r10]!
- vst1.8 {q7}, [r10]!
- vst1.8 {q9}, [r10]!
- vst1.8 {q11}, [r10]!
- add r6, #1
- vst1.8 {q13}, [r10]!
- cmp r6, r4
- vst1.8 {q15}, [r10]!
- blt LINEAR_X_SIZE_256_LOOP
-
- add r9, r9, #256
-
-LINEAR_X_SIZE_128:
- sub r10, r3, r9
- cmp r10, #128
- blt LINEAR_X_SIZE_64
-
- mov r6, #0
-LINEAR_X_SIZE_128_LOOP:
- mov r7, #0 @ tiled_offset = 0@
- mov r5, r6, asr #5 @ tiled_y_index = i>>5@
- and r10, r5, #0x1
- cmp r10, #0x1
- bne LINEAR_X_SIZE_128_LOOP_EVEN
-LINEAR_X_SIZE_128_LOOP_ODD:
- sub r7, r5, #1 @ tiled_offset = tiled_y_index-1@
- add r10, r3, #127 @ temp1 = ((linear_x_size+127)>>7)<<7@
- bic r10, #0x7F
- mov r10, r10, asr #6 @ tiled_offset = tiled_offset*(temp1>>6)@
- mul r7, r7, r10
- add r7, r7, #2 @ tiled_offset = tiled_offset+2@
- mov r10, r9, asr #5
- add r7, r7, r10
- mov r7, r7, lsl #11 @ tiled_offset = tiled_offset<<11@
- add r11, r7, #2048
- b LINEAR_X_SIZE_128_LOOP_MEMCPY
-
-LINEAR_X_SIZE_128_LOOP_EVEN:
- add r11, r4, #31 @ temp2 = ((linear_y_size+31)>>5)<<5@
- bic r11, r11, #0x1F
- add r10, r3, #127 @ temp1 = ((linear_x_size+127)>>7)<<7@
- bic r10, #0x7F
- mov r10, r10, asr #6 @ tiled_offset = tiled_y_index*(temp1>>6)@
- mul r7, r5, r10
- mov r7, r7, lsl #11 @ tiled_offset = tiled_offset<<11@
- add r12, r6, #32
- cmp r12, r11
- movlt r10, r9, asr #5
- movge r10, r9, asr #6
- add r7, r7, r10, lsl #11
- add r11, r7, #2048
-
-LINEAR_X_SIZE_128_LOOP_MEMCPY:
- and r10, r6, #0x1F
- mov r10, r10, lsl #6
- add r10, r2, r10
-
- add r7, r7, r10 @ tiled_addr = tiled_src+64*(temp1)
- add r11, r11, r10 @ tiled_addr1 = tiled_src+64*(temp1)
- pld [r11]
- vld2.8 {q0, q1}, [r7]!
- pld [r11, #32]
- vld2.8 {q2, q3}, [r7]!
- pld [r7]
- vld2.8 {q4, q5}, [r11]!
- mov r10, r3, asr #1
- pld [r7, #32]
- vld2.8 {q6, q7}, [r11]!
- mul r10, r10, r6
- pld [r11]
- vld2.8 {q8, q9}, [r7]!
- add r10, r10, r9, asr #1
- pld [r11, #32]
- vld2.8 {q10, q11}, [r7]!
- add r8, r0, r10
- vld2.8 {q12, q13}, [r11]!
- mov r14, r3, asr #1
- vld2.8 {q14, q15}, [r11]!
-
- sub r14, r14, #48
- vst1.8 {q0}, [r8]!
- vst1.8 {q2}, [r8]!
- vst1.8 {q4}, [r8]!
- vst1.8 {q6}, [r8], r14
- vst1.8 {q8}, [r8]!
- vst1.8 {q10}, [r8]!
- vst1.8 {q12}, [r8]!
- vst1.8 {q14}, [r8]!
-
- add r10, r1, r10
- vst1.8 {q1}, [r10]!
- vst1.8 {q3}, [r10]!
- vst1.8 {q5}, [r10]!
- vst1.8 {q7}, [r10], r14
- vst1.8 {q9}, [r10]!
- vst1.8 {q11}, [r10]!
- add r6, #2
- vst1.8 {q13}, [r10]!
- cmp r6, r4
- vst1.8 {q15}, [r10]!
-
- blt LINEAR_X_SIZE_128_LOOP
-
- add r9, r9, #128
-
-LINEAR_X_SIZE_64:
- sub r10, r3, r9
- cmp r10, #64
- blt LINEAR_X_SIZE_4
-
- mov r5, r9
- mov r6, #0
-
-LINEAR_X_SIZE_64_LOOP:
- bl GET_TILED_OFFSET
-
-LINEAR_X_SIZE_64_LOOP_MEMCPY:
- and r10, r6, #0x1F
- mov r14, r3, asr #1
- mov r10, r10, lsl #6
- sub r14, r14, #16
- add r10, r2, r10
-
- add r7, r7, r10 @ tiled_addr = tiled_src+64*(temp1)
- pld [r7, #64]
- vld2.8 {q0, q1}, [r7]!
- mov r10, r3, asr #1
- pld [r7, #64]
- vld2.8 {q2, q3}, [r7]!
- mul r10, r10, r6
- vld2.8 {q4, q5}, [r7]!
- add r10, r10, r9, asr #1
- vld2.8 {q6, q7}, [r7]!
- add r8, r0, r10
-
- vst1.8 {q0}, [r8]!
- vst1.8 {q2}, [r8], r14
- vst1.8 {q4}, [r8]!
- vst1.8 {q6}, [r8], r14
-
- add r10, r1, r10
- vst1.8 {q1}, [r10]!
- vst1.8 {q3}, [r10], r14
- add r6, #2
- vst1.8 {q5}, [r10]!
- cmp r6, r4
- vst1.8 {q7}, [r10], r14
-
- blt LINEAR_X_SIZE_64_LOOP
-
- add r9, r9, #64
-
-LINEAR_X_SIZE_4:
- cmp r9, r3
- beq RESTORE_REG
-
- mov r6, #0 @ i = 0
-LINEAR_Y_SIZE_4_LOOP:
-
- mov r5, r9 @ j = aligned_x_size
-LINEAR_X_SIZE_4_LOOP:
-
- bl GET_TILED_OFFSET
-
- mov r11, r3, asr #1 @ temp1 = linear_x_size/2
- mul r11, r11, r6 @ temp1 = temp1*(i)
- add r11, r11, r5, asr #1 @ temp1 = temp1+j/2
- mov r12, r3, asr #1 @ temp2 = linear_x_size/2
- sub r12, r12, #1 @ temp2 = linear_x_size-1
-
- add r8, r0, r11 @ linear_addr = linear_dest_u+temp1
- add r11, r1, r11 @ temp1 = linear_dest_v+temp1
- add r7, r2, r7 @ tiled_addr = tiled_src+tiled_addr
- and r14, r6, #0x1F @ temp3 = i&0x1F@
- mov r14, r14, lsl #6 @ temp3 = temp3*64
- add r7, r7, r14 @ tiled_addr = tiled_addr+temp3
- and r14, r5, #0x3F @ temp3 = j&0x3F
- add r7, r7, r14 @ tiled_addr = tiled_addr+temp3
-
- ldrh r10, [r7], #2
- ldrh r14, [r7], #62
- strb r10, [r8], #1
- mov r10, r10, asr #8
- strb r10, [r11], #1
- strb r14, [r8], r12
- mov r14, r14, asr #8
- strb r14, [r11], r12
-
- ldrh r10, [r7], #2
- ldrh r14, [r7], #62
- strb r10, [r8], #1
- mov r10, r10, asr #8
- strb r10, [r11], #1
- strb r14, [r8], r12
- mov r14, r14, asr #8
- strb r14, [r11], r12
-
- add r5, r5, #4 @ j = j+4
- cmp r5, r3 @ j<linear_x_size
- blt LINEAR_X_SIZE_4_LOOP
-
- add r6, r6, #2 @ i = i+4
- cmp r6, r4 @ i<linear_y_size
- blt LINEAR_Y_SIZE_4_LOOP
-
-RESTORE_REG:
- ldmfd sp!, {r4-r12,r15} @ restore registers
-
-GET_TILED_OFFSET:
- stmfd sp!, {r14}
-
- mov r12, r6, asr #5 @ temp2 = i>>5
- mov r11, r5, asr #6 @ temp1 = j>>6
-
- and r14, r12, #0x1 @ if (temp2 & 0x1)
- cmp r14, #0x1
- bne GET_TILED_OFFSET_EVEN_FORMULA_1
-
-GET_TILED_OFFSET_ODD_FORMULA:
- sub r7, r12, #1 @ tiled_addr = temp2-1
- add r14, r3, #127 @ temp3 = linear_x_size+127
- bic r14, r14, #0x7F @ temp3 = (temp3 >>7)<<7
- mov r14, r14, asr #6 @ temp3 = temp3>>6
- mul r7, r7, r14 @ tiled_addr = tiled_addr*temp3
- add r7, r7, r11 @ tiled_addr = tiled_addr+temp1
- add r7, r7, #2 @ tiled_addr = tiled_addr+2
- bic r14, r11, #0x3 @ temp3 = (temp1>>2)<<2
- add r7, r7, r14 @ tiled_addr = tiled_addr+temp3
- mov r7, r7, lsl #11 @ tiled_addr = tiled_addr<<11
- b GET_TILED_OFFSET_RETURN
-
-GET_TILED_OFFSET_EVEN_FORMULA_1:
- add r14, r4, #31 @ temp3 = linear_y_size+31
- bic r14, r14, #0x1F @ temp3 = (temp3>>5)<<5
- sub r14, r14, #32 @ temp3 = temp3 - 32
- cmp r6, r14 @ if (i<(temp3-32)) {
- bge GET_TILED_OFFSET_EVEN_FORMULA_2
- add r14, r11, #2 @ temp3 = temp1+2
- bic r14, r14, #3 @ temp3 = (temp3>>2)<<2
- add r7, r11, r14 @ tiled_addr = temp1+temp3
- add r14, r3, #127 @ temp3 = linear_x_size+127
- bic r14, r14, #0x7F @ temp3 = (temp3>>7)<<7
- mov r14, r14, asr #6 @ temp3 = temp3>>6
- mul r12, r12, r14 @ tiled_y_index = tiled_y_index*temp3
- add r7, r7, r12 @ tiled_addr = tiled_addr+tiled_y_index
- mov r7, r7, lsl #11 @
- b GET_TILED_OFFSET_RETURN
-
-GET_TILED_OFFSET_EVEN_FORMULA_2:
- add r14, r3, #127 @ temp3 = linear_x_size+127
- bic r14, r14, #0x7F @ temp3 = (temp3>>7)<<7
- mov r14, r14, asr #6 @ temp3 = temp3>>6
- mul r7, r12, r14 @ tiled_addr = temp2*temp3
- add r7, r7, r11 @ tiled_addr = tiled_addr+temp3
- mov r7, r7, lsl #11 @ tiled_addr = tiled_addr<<11@
-
-GET_TILED_OFFSET_RETURN:
- ldmfd sp!, {r15} @ restore registers
- .fnend
diff --git a/sec_mm/sec_omx/sec_codecs/video/mfc_c110/csc/csc_nv12t_yuv420_y_neon.s b/sec_mm/sec_omx/sec_codecs/video/mfc_c110/csc/csc_nv12t_yuv420_y_neon.s
deleted file mode 100644
index d71ee17..0000000
--- a/sec_mm/sec_omx/sec_codecs/video/mfc_c110/csc/csc_nv12t_yuv420_y_neon.s
+++ /dev/null
@@ -1,680 +0,0 @@
-/*
- *
- * Copyright 2011 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file csc_nv12t_yuv420_y_neon.s
- * @brief SEC_OMX specific define
- * @author ShinWon Lee (shinwon.lee@samsung.com)
- * @version 1.0
- * @history
- * 2011.7.01 : Create
- */
-
-/*
- * Converts tiled data to linear.
- * 1. Y of NV12T to Y of YUV420P
- * 2. Y of NV12T to Y of YUV420S
- * 3. UV of NV12T to UV of YUV420S
- *
- * @param yuv420_dest
- * Y or UV plane address of YUV420[out]
- *
- * @param nv12t_src
- * Y or UV plane address of NV12T[in]
- *
- * @param yuv420_width
- * Width of YUV420[in]
- *
- * @param yuv420_height
- * Y: Height of YUV420, UV: Height/2 of YUV420[in]
- */
-
- .arch armv7-a
- .text
- .global csc_tiled_to_linear
- .type csc_tiled_to_linear, %function
-csc_tiled_to_linear:
- .fnstart
-
- @r0 linear_dest
- @r1 tiled_src
- @r2 linear_x_size
- @r3 linear_y_size
- @r4 j
- @r5 i
- @r6 tiled_addr
- @r7 linear_addr
- @r8 aligned_x_size
- @r9 aligned_y_size
- @r10 temp1
- @r11 temp2
- @r12 temp3
- @r14 temp4
-
- stmfd sp!, {r4-r12,r14} @ backup registers
-
- mov r8, #0
- cmp r2, #1024
- blt LINEAR_X_SIZE_512
-
-LINEAR_X_SIZE_1024:
-
- mov r5, #0
-LINEAR_X_SIZE_1024_LOOP:
- mov r6, #0 @ tiled_offset = 0@
- mov r4, r5, asr #5 @ tiled_y_index = i>>5@
- and r10, r4, #0x1
- cmp r10, #0x1
- bne LINEAR_X_SIZE_1024_LOOP_EVEN
-LINEAR_X_SIZE_1024_LOOP_ODD:
- sub r6, r4, #1 @ tiled_offset = tiled_y_index-1@
- add r10, r2, #127 @ temp1 = ((linear_x_size+127)>>7)<<7@
- bic r10, #0x7F
- mov r10, r10, asr #6 @ tiled_offset = tiled_offset*(temp1>>6)@
- mul r6, r6, r10
- mov r4, #8
- mov r4, r4, lsl #11
- sub r4, r4, #32
- add r6, r6, #2 @ tiled_offset = tiled_offset+2@
- mov r6, r6, lsl #11 @ tiled_offset = tiled_offset<<11@
- add r11, r6, #2048
- add r12, r6, #4096
- add r14, r6, #6144
- b LINEAR_X_SIZE_1024_LOOP_MEMCPY
-
-LINEAR_X_SIZE_1024_LOOP_EVEN:
- add r11, r3, #31 @ temp2 = ((linear_y_size+31)>>5)<<5@
- bic r11, r11, #0x1F
- add r10, r2, #127 @ temp1 = ((linear_x_size+127)>>7)<<7@
- bic r10, #0x7F
- mov r10, r10, asr #6 @ tiled_offset = tiled_y_index*(temp1>>6)@
- mul r6, r4, r10
- add r12, r5, #32
- cmp r12, r11
- mov r6, r6, lsl #11 @ tiled_offset = tiled_offset<<11@
- add r11, r6, #2048
- movlt r4, #8
- addlt r12, r6, #12288
- addlt r14, r6, #14336
- movge r4, #4
- addge r12, r6, #4096
- addge r14, r6, #6144
- mov r4, r4, lsl #11
- sub r4, r4, #32
-
-LINEAR_X_SIZE_1024_LOOP_MEMCPY:
- and r10, r5, #0x1F
- mov r10, r10, lsl #6
- add r10, r1, r10
-
- add r6, r6, r10 @ tiled_addr = tiled_src+64*(temp1)
- add r11, r11, r10 @ tiled_addr1 = tiled_src+64*(temp1)
- pld [r11]
- vld1.8 {q0, q1}, [r6]!
- pld [r11, #32]
- add r12, r12, r10 @ tiled_addr2 = tiled_src+64*(temp1)
- vld1.8 {q2, q3}, [r6], r4
- pld [r12]
- vld1.8 {q4, q5}, [r11]!
- pld [r12, #32]
- add r14, r14, r10 @ tiled_addr3 = tiled_src+64*(temp1)
- vld1.8 {q6, q7}, [r11], r4
- pld [r14]
- vld1.8 {q8, q9}, [r12]!
- pld [r14, #32]
- mul r7, r2, r5
- vld1.8 {q10, q11}, [r12], r4
- add r7, r7, r0
- vld1.8 {q12, q13}, [r14]!
- vld1.8 {q14, q15}, [r14], r4
-
- vst1.8 {q0, q1}, [r7]!
- vst1.8 {q2, q3}, [r7]!
- vst1.8 {q4, q5}, [r7]!
- vst1.8 {q6, q7}, [r7]!
- vst1.8 {q8, q9}, [r7]!
- vst1.8 {q10, q11}, [r7]!
- pld [r6]
- vst1.8 {q12, q13}, [r7]!
- pld [r6, #32]
- vst1.8 {q14, q15}, [r7]!
-
- pld [r11]
- vld1.8 {q0, q1}, [r6]!
- pld [r11, #32]
- vld1.8 {q2, q3}, [r6], r4
-
- pld [r12]
- vld1.8 {q4, q5}, [r11]!
- pld [r12, #32]
- vld1.8 {q6, q7}, [r11], r4
- pld [r14]
- vld1.8 {q8, q9}, [r12]!
- pld [r14, #32]
- vld1.8 {q10, q11}, [r12], r4
- vld1.8 {q12, q13}, [r14]!
- vld1.8 {q14, q15}, [r14], r4
-
- vst1.8 {q0, q1}, [r7]!
- vst1.8 {q2, q3}, [r7]!
- vst1.8 {q4, q5}, [r7]!
- vst1.8 {q6, q7}, [r7]!
- vst1.8 {q8, q9}, [r7]!
- vst1.8 {q10, q11}, [r7]!
- pld [r6]
- vst1.8 {q12, q13}, [r7]!
- pld [r6, #32]
- vst1.8 {q14, q15}, [r7]!
-
- pld [r11]
- vld1.8 {q0, q1}, [r6]!
- pld [r11, #32]
- vld1.8 {q2, q3}, [r6], r4
- pld [r12]
- vld1.8 {q4, q5}, [r11]!
- pld [r12, #32]
- vld1.8 {q6, q7}, [r11], r4
- pld [r14]
- vld1.8 {q8, q9}, [r12]!
- pld [r14, #32]
- vld1.8 {q10, q11}, [r12], r4
- vld1.8 {q12, q13}, [r14]!
- vld1.8 {q14, q15}, [r14], r4
-
- vst1.8 {q0, q1}, [r7]!
- vst1.8 {q2, q3}, [r7]!
- vst1.8 {q4, q5}, [r7]!
- vst1.8 {q6, q7}, [r7]!
- vst1.8 {q8, q9}, [r7]!
- vst1.8 {q10, q11}, [r7]!
- pld [r6]
- vst1.8 {q12, q13}, [r7]!
- pld [r6, #32]
- vst1.8 {q14, q15}, [r7]!
-
- pld [r11]
- vld1.8 {q0, q1}, [r6]!
- pld [r11, #32]
- vld1.8 {q2, q3}, [r6]
- pld [r12]
- vld1.8 {q4, q5}, [r11]!
- pld [r12, #32]
- vld1.8 {q6, q7}, [r11]
- pld [r14]
- vld1.8 {q8, q9}, [r12]!
- pld [r14, #32]
- vld1.8 {q10, q11}, [r12]
- vld1.8 {q12, q13}, [r14]!
- vld1.8 {q14, q15}, [r14]
-
- vst1.8 {q0, q1}, [r7]!
- vst1.8 {q2, q3}, [r7]!
- vst1.8 {q4, q5}, [r7]!
- vst1.8 {q6, q7}, [r7]!
- vst1.8 {q8, q9}, [r7]!
- vst1.8 {q10, q11}, [r7]!
- add r5, #1
- vst1.8 {q12, q13}, [r7]!
- cmp r5, r3
- vst1.8 {q14, q15}, [r7]!
-
- blt LINEAR_X_SIZE_1024_LOOP
-
- mov r8, #1024
-
-LINEAR_X_SIZE_512:
-
- sub r14, r2, r8
- cmp r14, #512
- blt LINEAR_X_SIZE_256
-
- mov r5, #0
-LINEAR_X_SIZE_512_LOOP:
- mov r6, #0
- mov r4, r5, asr #5 @ tiled_y_index = i>>5
- and r10, r4, #0x1
- cmp r10, #0x1
- bne LINEAR_X_SIZE_512_LOOP_EVEN
-
-LINEAR_X_SIZE_512_LOOP_ODD:
- sub r6, r4, #1
- add r10, r2, #127 @ temp1 = ((linear_x_size+127)>>7)<<7@
- bic r10, #0x7F
- mov r10, r10, asr #6 @ tiled_offset = tiled_offset*(temp1>>6)@
- mul r6, r6, r10
- mov r4, #8
- mov r4, r4, lsl #11
- sub r4, r4, #32
- add r6, r6, #2 @ tiled_offset = tiled_offset+2@
- mov r10, r8, asr #5 @ temp1 = aligned_x_size>>5@
- add r6, r6, r10 @ tiled_offset = tiled_offset+temp1@
- mov r6, r6, lsl #11
- add r11, r6, #2048
- add r12, r6, #4096
- add r14, r6, #6144
- b LINEAR_X_SIZE_512_LOOP_MEMCPY
-
-LINEAR_X_SIZE_512_LOOP_EVEN:
- add r11, r3, #31 @ temp2 = ((linear_y_size+31)>>5)<<5@
- bic r11, r11, #0x1F
- add r10, r2, #127 @ temp1 = ((linear_x_size+127)>>7)<<7@
- bic r10, #0x7F
- mov r10, r10, asr #6 @ tiled_offset = tiled_y_index*(temp1>>6)@
- mul r6, r4, r10
- add r12, r5, #32
- cmp r12, r11
- mov r6, r6, lsl #11 @ tiled_offset = tiled_offset<<11@
- movlt r4, #8
- movlt r10, r8, asr #5 @ temp1 = aligned_x_size>>5@
- movge r10, r8, asr #6 @ temp1 = aligned_x_size>>6@
- add r6, r6, r10, lsl #11 @ tiled_offset = tiled_offset+(temp1<<11)@
- add r11, r6, #2048
- addlt r12, r6, #12288
- addlt r14, r6, #14336
- movge r4, #4
- addge r12, r6, #4096
- addge r14, r6, #6144
- mov r4, r4, lsl #11
- sub r4, r4, #32
-
-LINEAR_X_SIZE_512_LOOP_MEMCPY:
- and r10, r5, #0x1F
- mov r10, r10, lsl #6
- add r10, r1, r10
-
- add r6, r6, r10 @ tiled_addr = tiled_src+64*(temp1)
- add r11, r11, r10 @ tiled_addr1 = tiled_src+64*(temp1)
- pld [r11]
- vld1.8 {q0, q1}, [r6]!
- pld [r11, #32]
- add r12, r12, r10 @ tiled_addr2 = tiled_src+64*(temp1)
- vld1.8 {q2, q3}, [r6], r4
- pld [r12]
- vld1.8 {q4, q5}, [r11]!
- pld [r12, #32]
- add r14, r14, r10 @ tiled_addr3 = tiled_src+64*(temp1)
- vld1.8 {q6, q7}, [r11], r4
- pld [r14]
- vld1.8 {q8, q9}, [r12]!
- pld [r14, #32]
- mul r7, r2, r5
- vld1.8 {q10, q11}, [r12], r4
- add r7, r7, r8
- vld1.8 {q12, q13}, [r14]!
- vld1.8 {q14, q15}, [r14], r4
-
- add r7, r7, r0
- vst1.8 {q0, q1}, [r7]!
- vst1.8 {q2, q3}, [r7]!
- vst1.8 {q4, q5}, [r7]!
- vst1.8 {q6, q7}, [r7]!
- vst1.8 {q8, q9}, [r7]!
- vst1.8 {q10, q11}, [r7]!
- pld [r6]
- vst1.8 {q12, q13}, [r7]!
- pld [r6, #32]
- vst1.8 {q14, q15}, [r7]!
-
- pld [r11]
- vld1.8 {q0, q1}, [r6]!
- pld [r11, #32]
- vld1.8 {q2, q3}, [r6], r4
- pld [r12]
- vld1.8 {q4, q5}, [r11]!
- pld [r12, #32]
- vld1.8 {q6, q7}, [r11], r4
- pld [r14]
- vld1.8 {q8, q9}, [r12]!
- pld [r14, #32]
- vld1.8 {q10, q11}, [r12], r4
- vld1.8 {q12, q13}, [r14]!
- vld1.8 {q14, q15}, [r14], r4
-
- vst1.8 {q0, q1}, [r7]!
- vst1.8 {q2, q3}, [r7]!
- vst1.8 {q4, q5}, [r7]!
- vst1.8 {q6, q7}, [r7]!
- vst1.8 {q8, q9}, [r7]!
- vst1.8 {q10, q11}, [r7]!
- add r5, #1
- vst1.8 {q12, q13}, [r7]!
- cmp r5, r3
- vst1.8 {q14, q15}, [r7]!
-
- blt LINEAR_X_SIZE_512_LOOP
-
- add r8, r8, #512
-
-LINEAR_X_SIZE_256:
-
- sub r14, r2, r8
- cmp r14, #256
- blt LINEAR_X_SIZE_128
-
- mov r5, #0
-LINEAR_X_SIZE_256_LOOP:
- mov r6, #0
- mov r4, r5, asr #5 @ tiled_y_index = i>>5
- and r10, r4, #0x1
- cmp r10, #0x1
- bne LINEAR_X_SIZE_256_LOOP_EVEN
-
-LINEAR_X_SIZE_256_LOOP_ODD:
- sub r6, r4, #1
- add r10, r2, #127 @ temp1 = ((linear_x_size+127)>>7)<<7@
- bic r10, #0x7F
- mov r10, r10, asr #6 @ tiled_offset = tiled_offset*(temp1>>6)@
- mul r6, r6, r10
- add r6, r6, #2 @ tiled_offset = tiled_offset+2@
- mov r10, r8, asr #5 @ temp1 = aligned_x_size>>5@
- add r6, r6, r10 @ tiled_offset = tiled_offset+temp1@
- mov r6, r6, lsl #11
- add r11, r6, #2048
- add r12, r6, #4096
- add r14, r6, #6144
- b LINEAR_X_SIZE_256_LOOP_MEMCPY
-
-LINEAR_X_SIZE_256_LOOP_EVEN:
- add r11, r3, #31 @ temp2 = ((linear_y_size+31)>>5)<<5@
- bic r11, r11, #0x1F
- add r10, r2, #127 @ temp1 = ((linear_x_size+127)>>7)<<7@
- bic r10, #0x7F
- mov r10, r10, asr #6 @ tiled_offset = tiled_y_index*(temp1>>6)@
- mul r6, r4, r10
- mov r6, r6, lsl #11 @ tiled_offset = tiled_offset<<11@
- add r12, r5, #32
- cmp r12, r11
- movlt r10, r8, asr #5 @ temp1 = aligned_x_size>>5@
- movge r10, r8, asr #6 @ temp1 = aligned_x_size>>6@
- add r6, r6, r10, lsl #11 @ tiled_offset = tiled_offset+(temp1<<11)@
- add r11, r6, #2048
- addlt r12, r6, #12288
- addlt r14, r6, #14336
- addge r12, r6, #4096
- addge r14, r6, #6144
-
-LINEAR_X_SIZE_256_LOOP_MEMCPY:
- and r10, r5, #0x1F
- mov r10, r10, lsl #6
- add r10, r1, r10
-
- add r6, r6, r10 @ tiled_addr = tiled_src+64*(temp1)
- add r11, r11, r10 @ tiled_addr1 = tiled_src+64*(temp1)
- pld [r11]
- vld1.8 {q0, q1}, [r6]!
- pld [r11, #32]
- add r12, r12, r10 @ tiled_addr2 = tiled_src+64*(temp1)
- vld1.8 {q2, q3}, [r6]
- pld [r12]
- vld1.8 {q4, q5}, [r11]!
- pld [r12, #32]
- add r14, r14, r10 @ tiled_addr3 = tiled_src+64*(temp1)
- vld1.8 {q6, q7}, [r11]
- pld [r14]
- mul r7, r2, r5
- vld1.8 {q8, q9}, [r12]!
- pld [r14, #32]
- add r7, r7, r8
- vld1.8 {q10, q11}, [r12]
- add r7, r7, r0
- vld1.8 {q12, q13}, [r14]!
- vld1.8 {q14, q15}, [r14]
-
- vst1.8 {q0, q1}, [r7]!
- vst1.8 {q2, q3}, [r7]!
- vst1.8 {q4, q5}, [r7]!
- vst1.8 {q6, q7}, [r7]!
- vst1.8 {q8, q9}, [r7]!
- vst1.8 {q10, q11}, [r7]!
- add r5, #1
- vst1.8 {q12, q13}, [r7]!
- cmp r5, r3
- vst1.8 {q14, q15}, [r7]!
-
- blt LINEAR_X_SIZE_256_LOOP
-
- add r8, r8, #256
-
-LINEAR_X_SIZE_128:
-
- sub r14, r2, r8
- cmp r14, #128
- blt LINEAR_X_SIZE_64
-
- mov r5, #0
-LINEAR_X_SIZE_128_LOOP:
- mov r6, #0
- mov r4, r5, asr #5 @ tiled_y_index = i>>5
- and r10, r4, #0x1
- cmp r10, #0x1
- bne LINEAR_X_SIZE_128_LOOP_EVEN
-
-LINEAR_X_SIZE_128_LOOP_ODD:
- sub r6, r4, #1
- add r10, r2, #127 @ temp1 = ((linear_x_size+127)>>7)<<7@
- bic r10, #0x7F
- mov r10, r10, asr #6 @ tiled_offset = tiled_offset*(temp1>>6)@
- mul r6, r6, r10
- add r6, r6, #2 @ tiled_offset = tiled_offset+2@
- mov r10, r8, asr #5 @ temp1 = aligned_x_size>>5@
- add r6, r6, r10 @ tiled_offset = tiled_offset+temp1@
- mov r6, r6, lsl #11
- add r11, r6, #2048
- b LINEAR_X_SIZE_128_LOOP_MEMCPY
-
-LINEAR_X_SIZE_128_LOOP_EVEN:
- add r11, r3, #31 @ temp2 = ((linear_y_size+31)>>5)<<5@
- bic r11, r11, #0x1F
- add r10, r2, #127 @ temp1 = ((linear_x_size+127)>>7)<<7@
- bic r10, #0x7F
- mov r10, r10, asr #6 @ tiled_offset = tiled_y_index*(temp1>>6)@
- mul r6, r4, r10
- mov r6, r6, lsl #11 @ tiled_offset = tiled_offset<<11@
- add r12, r5, #32
- cmp r12, r11
- movlt r10, r8, asr #5 @ temp1 = aligned_x_size>>5@
- movge r10, r8, asr #6 @ temp1 = aligned_x_size>>6@
- add r6, r6, r10, lsl #11 @ tiled_offset = tiled_offset+(temp1<<11)@
- add r11, r6, #2048
-
-LINEAR_X_SIZE_128_LOOP_MEMCPY:
- and r10, r5, #0x1F
- mov r10, r10, lsl #6
- add r10, r1, r10
-
- add r6, r6, r10 @ tiled_addr = tiled_src+64*(temp1)
- add r11, r11, r10 @ tiled_addr1 = tiled_src+64*(temp1)
- pld [r6, #64]
- vld1.8 {q0, q1}, [r6]!
- pld [r6, #64]
- vld1.8 {q2, q3}, [r6]!
- mul r7, r2, r5
- pld [r11]
- vld1.8 {q4, q5}, [r6]!
- add r7, r7, r8
- pld [r11, #32]
- vld1.8 {q6, q7}, [r6]
- add r7, r7, r0
- pld [r11, #64]
- vld1.8 {q8, q9}, [r11]!
- pld [r11, #64]
- vld1.8 {q10, q11}, [r11]!
- vld1.8 {q12, q13}, [r11]!
- vld1.8 {q14, q15}, [r11]
-
- sub r9, r2, #96
- vst1.8 {q0, q1}, [r7]!
- vst1.8 {q2, q3}, [r7]!
- vst1.8 {q8, q9}, [r7]!
- vst1.8 {q10, q11}, [r7], r9
- vst1.8 {q4, q5}, [r7]!
- vst1.8 {q6, q7}, [r7]!
- add r5, #2
- vst1.8 {q12, q13}, [r7]!
- cmp r5, r3
- vst1.8 {q14, q15}, [r7]
-
- blt LINEAR_X_SIZE_128_LOOP
-
- add r8, r8, #128
-
-LINEAR_X_SIZE_64:
-
- sub r14, r2, r8
- cmp r14, #64
- blt LINEAR_X_SIZE_4
-
- mov r5, #0
- mov r4, r8
-
-LINEAR_X_SIZE_64_LOOP:
-
- bl GET_TILED_OFFSET
-
- add r6, r1, r6 @ tiled_addr = tiled_src+tiled_addr
- and r11, r5, #0x1F @ temp2 = i&0x1F
- mov r11, r11, lsl #6 @ temp2 = 64*temp2
- add r6, r6, r11 @ tiled_addr = tiled_addr+temp2
-
- pld [r6, #64]
- vld1.8 {q0, q1}, [r6]! @ store {tiled_addr}
- mul r10, r2, r5 @ temp1 = linear_x_size*(i)
- pld [r6, #64]
- vld1.8 {q2, q3}, [r6]!
- pld [r6, #64]
- vld1.8 {q4, q5}, [r6]! @ store {tiled_addr+64*1}
- pld [r6, #64]
- vld1.8 {q6, q7}, [r6]!
- pld [r6, #64]
- vld1.8 {q8, q9}, [r6]! @ store {tiled_addr+64*2}
- pld [r6, #64]
- vld1.8 {q10, q11}, [r6]!
- add r7, r0, r4 @ linear_addr = linear_dest+j
- vld1.8 {q12, q13}, [r6]! @ store {tiled_addr+64*3}
- add r7, r7, r10 @ linear_addr = linear_addr+temp1
- vld1.8 {q14, q15}, [r6]!
- sub r10, r2, #32 @ temp1 = linear_x_size-32
-
- vst1.8 {q0, q1}, [r7]! @ load {linear_src, 64}
- vst1.8 {q2, q3}, [r7], r10
- vst1.8 {q4, q5}, [r7]! @ load {linear_src+linear_x_size*1, 64}
- vst1.8 {q6, q7}, [r7], r10
- vst1.8 {q8, q9}, [r7]! @ load {linear_src+linear_x_size*2, 64}
- vst1.8 {q10, q11}, [r7], r10
- add r5, #4
- vst1.8 {q12, q13}, [r7]! @ load {linear_src+linear_x_size*3, 64}
- cmp r5, r3
- vst1.8 {q14, q15}, [r7], r10
-
- blt LINEAR_X_SIZE_64_LOOP
-
- add r8, r8, #64
-
-LINEAR_X_SIZE_4:
- cmp r8, r2
- beq RESTORE_REG
-
- mov r5, #0 @ i = 0
-LINEAR_Y_SIZE_4_LOOP:
-
- mov r4, r8 @ j = aligned_x_size
-LINEAR_X_SIZE_4_LOOP:
-
- bl GET_TILED_OFFSET
-
- and r10, r5, #0x1F @ temp1 = i&0x1F
- and r11, r4, #0x3F @ temp2 = j&0x3F
-
- add r6, r6, r1
- add r6, r6, r11
- add r6, r6, r10, lsl #6
-
- ldr r10, [r6], #64
- add r7, r0, r4
- ldr r11, [r6], #64
- mul r9, r2, r5
- ldr r12, [r6], #64
- add r7, r7, r9
- ldr r14, [r6], #64
-
- str r10, [r7], r2
- str r11, [r7], r2
- str r12, [r7], r2
- str r14, [r7], r2
-
- add r4, r4, #4 @ j = j+4
- cmp r4, r2 @ j<linear_x_size
- blt LINEAR_X_SIZE_4_LOOP
-
- add r5, r5, #4 @ i = i+4
- cmp r5, r3 @ i<linear_y_size
- blt LINEAR_Y_SIZE_4_LOOP
-
-RESTORE_REG:
- ldmfd sp!, {r4-r12,r15} @ restore registers
-
-GET_TILED_OFFSET:
-
- mov r11, r5, asr #5 @ temp2 = i>>5
- mov r10, r4, asr #6 @ temp1 = j>>6
-
- and r12, r11, #0x1 @ if (temp2 & 0x1)
- cmp r12, #0x1
- bne GET_TILED_OFFSET_EVEN_FORMULA_1
-
-GET_TILED_OFFSET_ODD_FORMULA:
- sub r6, r11, #1 @ tiled_addr = temp2-1
- add r12, r2, #127 @ temp3 = linear_x_size+127
- bic r12, r12, #0x7F @ temp3 = (temp3 >>7)<<7
- mov r12, r12, asr #6 @ temp3 = temp3>>6
- mul r6, r6, r12 @ tiled_addr = tiled_addr*temp3
- add r6, r6, r10 @ tiled_addr = tiled_addr+temp1
- add r6, r6, #2 @ tiled_addr = tiled_addr+2
- bic r12, r10, #0x3 @ temp3 = (temp1>>2)<<2
- add r6, r6, r12 @ tiled_addr = tiled_addr+temp3
- mov r6, r6, lsl #11 @ tiled_addr = tiled_addr<<11
- b GET_TILED_OFFSET_RETURN
-
-GET_TILED_OFFSET_EVEN_FORMULA_1:
- add r12, r3, #31 @ temp3 = linear_y_size+31
- bic r12, r12, #0x1F @ temp3 = (temp3>>5)<<5
- sub r12, r12, #32 @ temp3 = temp3 - 32
- cmp r5, r12 @ if (i<(temp3-32)) {
- bge GET_TILED_OFFSET_EVEN_FORMULA_2
- add r12, r10, #2 @ temp3 = temp1+2
- bic r12, r12, #3 @ temp3 = (temp3>>2)<<2
- add r6, r10, r12 @ tiled_addr = temp1+temp3
- add r12, r2, #127 @ temp3 = linear_x_size+127
- bic r12, r12, #0x7F @ temp3 = (temp3>>7)<<7
- mov r12, r12, asr #6 @ temp3 = temp3>>6
- mul r11, r11, r12 @ tiled_y_index = tiled_y_index*temp3
- add r6, r6, r11 @ tiled_addr = tiled_addr+tiled_y_index
- mov r6, r6, lsl #11 @
- b GET_TILED_OFFSET_RETURN
-
-GET_TILED_OFFSET_EVEN_FORMULA_2:
- add r12, r2, #127 @ temp3 = linear_x_size+127
- bic r12, r12, #0x7F @ temp3 = (temp3>>7)<<7
- mov r12, r12, asr #6 @ temp3 = temp3>>6
- mul r6, r11, r12 @ tiled_addr = temp2*temp3
- add r6, r6, r10 @ tiled_addr = tiled_addr+temp3
- mov r6, r6, lsl #11 @ tiled_addr = tiled_addr<<11@
-
-GET_TILED_OFFSET_RETURN:
- mov pc, lr
- .fnend
-
diff --git a/sec_mm/sec_omx/sec_codecs/video/mfc_c110/csc/csc_yuv420_nv12t_uv_neon.s b/sec_mm/sec_omx/sec_codecs/video/mfc_c110/csc/csc_yuv420_nv12t_uv_neon.s
deleted file mode 100644
index dd2c879..0000000
--- a/sec_mm/sec_omx/sec_codecs/video/mfc_c110/csc/csc_yuv420_nv12t_uv_neon.s
+++ /dev/null
@@ -1,573 +0,0 @@
-/*
- *
- * Copyright 2011 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file csc_yuv420_nv12t_uv_neon.s
- * @brief SEC_OMX specific define
- * @author ShinWon Lee (shinwon.lee@samsung.com)
- * @version 1.0
- * @history
- * 2011.7.01 : Create
- */
-
-/*
- * Converts and Interleaves linear to tiled
- * 1. UV of YUV420P to UV of NV12T
- *
- * @param nv12t_uv_dest
- * UV plane address of NV12T[out]
- *
- * @param yuv420p_u_src
- * U plane address of YUV420P[in]
- *
- * @param yuv420p_v_src
- * V plane address of YUV420P[in]
- *
- * @param yuv420_width
- * Width of YUV420[in]
- *
- * @param yuv420_uv_height
- * Height/2 of YUV420[in]
- */
-
- .arch armv7-a
- .text
- .global csc_linear_to_tiled_interleave
- .type csc_linear_to_tiled_interleave, %function
-csc_linear_to_tiled_interleave:
- .fnstart
-
- @r0 tiled_dest
- @r1 linear_src_u
- @r2 linear_src_v
- @r3 linear_x_size
- @r4 linear_y_size
- @r5 j
- @r6 i
- @r7 tiled_addr
- @r8 linear_addr
- @r9 aligned_x_size
- @r10 aligned_y_size
- @r11 temp1
- @r12 temp2
- @r14 temp3
-
- stmfd sp!, {r4-r12,r14} @ backup registers
-
- ldr r4, [sp, #40] @ load linear_y_size to r4
-
- bic r10, r4, #0x1F @ aligned_y_size = (linear_y_size>>5)<<5
- bic r9, r3, #0x3F @ aligned_x_size = (linear_x_size>>6)<<6
-
- mov r6, #0 @ i = 0
-LOOP_ALIGNED_Y_SIZE:
-
- mov r5, #0 @ j = 0
-LOOP_ALIGNED_X_SIZE:
-
- bl GET_TILED_OFFSET
-
- mov r11, r3, asr #1 @ temp1 = linear_x_size/2
- mul r11, r11, r6 @ temp1 = temp1*(i)
- add r11, r11, r5, asr #1 @ temp1 = temp1+j/2
- mov r12, r3, asr #1 @ temp2 = linear_x_size/2
- sub r12, r12, #16 @ temp2 = linear_x_size-16
-
- add r8, r1, r11 @ linear_addr = linear_src_u+temp1
- add r11, r2, r11 @ temp1 = linear_src_v+temp1
- add r7, r0, r7 @ tiled_addr = tiled_dest+tiled_addr
-
- pld [r8, r3]
- vld1.8 {q0}, [r8]!
- vld1.8 {q2}, [r8], r12
- pld [r11, r3]
- vld1.8 {q1}, [r11]!
- vld1.8 {q3}, [r11], r12
- pld [r8, r3]
- vld1.8 {q4}, [r8]!
- vld1.8 {q6}, [r8], r12
- pld [r11, r3]
- vld1.8 {q5}, [r11]!
- vld1.8 {q7}, [r11], r12
- pld [r8, r3]
- vld1.8 {q8}, [r8]!
- vld1.8 {q10}, [r8], r12
- pld [r11, r3]
- vld1.8 {q9}, [r11]!
- vld1.8 {q11}, [r11], r12
- pld [r8, r3]
- vld1.8 {q12}, [r8]!
- vld1.8 {q14}, [r8], r12
- pld [r11, r3]
- vld1.8 {q13}, [r11]!
- vld1.8 {q15}, [r11], r12
-
- vst2.8 {q0, q1}, [r7]!
- vst2.8 {q2, q3}, [r7]!
- vst2.8 {q4, q5}, [r7]!
- vst2.8 {q6, q7}, [r7]!
- vst2.8 {q8, q9}, [r7]!
- vst2.8 {q10, q11}, [r7]!
- vst2.8 {q12, q13}, [r7]!
- vst2.8 {q14, q15}, [r7]!
-
- pld [r8, r3]
- vld1.8 {q0}, [r8]!
- vld1.8 {q2}, [r8], r12
- pld [r11, r3]
- vld1.8 {q1}, [r11]!
- vld1.8 {q3}, [r11], r12
- pld [r8, r3]
- vld1.8 {q4}, [r8]!
- vld1.8 {q6}, [r8], r12
- pld [r11, r3]
- vld1.8 {q5}, [r11]!
- vld1.8 {q7}, [r11], r12
- pld [r8, r3]
- vld1.8 {q8}, [r8]!
- vld1.8 {q10}, [r8], r12
- pld [r11, r3]
- vld1.8 {q9}, [r11]!
- vld1.8 {q11}, [r11], r12
- pld [r8, r3]
- vld1.8 {q12}, [r8]!
- vld1.8 {q14}, [r8], r12
- pld [r11, r3]
- vld1.8 {q13}, [r11]!
- vld1.8 {q15}, [r11], r12
-
- vst2.8 {q0, q1}, [r7]!
- vst2.8 {q2, q3}, [r7]!
- vst2.8 {q4, q5}, [r7]!
- vst2.8 {q6, q7}, [r7]!
- vst2.8 {q8, q9}, [r7]!
- vst2.8 {q10, q11}, [r7]!
- vst2.8 {q12, q13}, [r7]!
- vst2.8 {q14, q15}, [r7]!
-
- pld [r8, r3]
- vld1.8 {q0}, [r8]!
- vld1.8 {q2}, [r8], r12
- pld [r11, r3]
- vld1.8 {q1}, [r11]!
- vld1.8 {q3}, [r11], r12
- pld [r8, r3]
- vld1.8 {q4}, [r8]!
- vld1.8 {q6}, [r8], r12
- pld [r11, r3]
- vld1.8 {q5}, [r11]!
- vld1.8 {q7}, [r11], r12
- pld [r8, r3]
- vld1.8 {q8}, [r8]!
- vld1.8 {q10}, [r8], r12
- pld [r11, r3]
- vld1.8 {q9}, [r11]!
- vld1.8 {q11}, [r11], r12
- pld [r8, r3]
- vld1.8 {q12}, [r8]!
- vld1.8 {q14}, [r8], r12
- pld [r11, r3]
- vld1.8 {q13}, [r11]!
- vld1.8 {q15}, [r11], r12
-
- vst2.8 {q0, q1}, [r7]!
- vst2.8 {q2, q3}, [r7]!
- vst2.8 {q4, q5}, [r7]!
- vst2.8 {q6, q7}, [r7]!
- vst2.8 {q8, q9}, [r7]!
- vst2.8 {q10, q11}, [r7]!
- vst2.8 {q12, q13}, [r7]!
- vst2.8 {q14, q15}, [r7]!
-
- pld [r8, r3]
- vld1.8 {q0}, [r8]!
- vld1.8 {q2}, [r8], r12
- pld [r11, r3]
- vld1.8 {q1}, [r11]!
- vld1.8 {q3}, [r11], r12
- pld [r8, r3]
- vld1.8 {q4}, [r8]!
- vld1.8 {q6}, [r8], r12
- pld [r11, r3]
- vld1.8 {q5}, [r11]!
- vld1.8 {q7}, [r11], r12
- pld [r8, r3]
- vld1.8 {q8}, [r8]!
- vld1.8 {q10}, [r8], r12
- pld [r11, r3]
- vld1.8 {q9}, [r11]!
- vld1.8 {q11}, [r11], r12
- pld [r8, r3]
- vld1.8 {q12}, [r8]!
- vld1.8 {q14}, [r8], r12
- pld [r11, r3]
- vld1.8 {q13}, [r11]!
- vld1.8 {q15}, [r11], r12
-
- vst2.8 {q0, q1}, [r7]!
- vst2.8 {q2, q3}, [r7]!
- vst2.8 {q4, q5}, [r7]!
- vst2.8 {q6, q7}, [r7]!
- vst2.8 {q8, q9}, [r7]!
- vst2.8 {q10, q11}, [r7]!
- vst2.8 {q12, q13}, [r7]!
- vst2.8 {q14, q15}, [r7]!
-
- pld [r8, r3]
- vld1.8 {q0}, [r8]!
- vld1.8 {q2}, [r8], r12
- pld [r11, r3]
- vld1.8 {q1}, [r11]!
- vld1.8 {q3}, [r11], r12
- pld [r8, r3]
- vld1.8 {q4}, [r8]!
- vld1.8 {q6}, [r8], r12
- pld [r11, r3]
- vld1.8 {q5}, [r11]!
- vld1.8 {q7}, [r11], r12
- pld [r8, r3]
- vld1.8 {q8}, [r8]!
- vld1.8 {q10}, [r8], r12
- pld [r11, r3]
- vld1.8 {q9}, [r11]!
- vld1.8 {q11}, [r11], r12
- pld [r8, r3]
- vld1.8 {q12}, [r8]!
- vld1.8 {q14}, [r8], r12
- pld [r11, r3]
- vld1.8 {q13}, [r11]!
- vld1.8 {q15}, [r11], r12
-
- vst2.8 {q0, q1}, [r7]!
- vst2.8 {q2, q3}, [r7]!
- vst2.8 {q4, q5}, [r7]!
- vst2.8 {q6, q7}, [r7]!
- vst2.8 {q8, q9}, [r7]!
- vst2.8 {q10, q11}, [r7]!
- vst2.8 {q12, q13}, [r7]!
- vst2.8 {q14, q15}, [r7]!
-
- pld [r8, r3]
- vld1.8 {q0}, [r8]!
- vld1.8 {q2}, [r8], r12
- pld [r11, r3]
- vld1.8 {q1}, [r11]!
- vld1.8 {q3}, [r11], r12
- pld [r8, r3]
- vld1.8 {q4}, [r8]!
- vld1.8 {q6}, [r8], r12
- pld [r11, r3]
- vld1.8 {q5}, [r11]!
- vld1.8 {q7}, [r11], r12
- pld [r8, r3]
- vld1.8 {q8}, [r8]!
- vld1.8 {q10}, [r8], r12
- pld [r11, r3]
- vld1.8 {q9}, [r11]!
- vld1.8 {q11}, [r11], r12
- pld [r8, r3]
- vld1.8 {q12}, [r8]!
- vld1.8 {q14}, [r8], r12
- pld [r11, r3]
- vld1.8 {q13}, [r11]!
- vld1.8 {q15}, [r11], r12
-
- vst2.8 {q0, q1}, [r7]!
- vst2.8 {q2, q3}, [r7]!
- vst2.8 {q4, q5}, [r7]!
- vst2.8 {q6, q7}, [r7]!
- vst2.8 {q8, q9}, [r7]!
- vst2.8 {q10, q11}, [r7]!
- vst2.8 {q12, q13}, [r7]!
- vst2.8 {q14, q15}, [r7]!
-
- pld [r8, r3]
- vld1.8 {q0}, [r8]!
- vld1.8 {q2}, [r8], r12
- pld [r11, r3]
- vld1.8 {q1}, [r11]!
- vld1.8 {q3}, [r11], r12
- pld [r8, r3]
- vld1.8 {q4}, [r8]!
- vld1.8 {q6}, [r8], r12
- pld [r11, r3]
- vld1.8 {q5}, [r11]!
- vld1.8 {q7}, [r11], r12
- pld [r8, r3]
- vld1.8 {q8}, [r8]!
- vld1.8 {q10}, [r8], r12
- pld [r11, r3]
- vld1.8 {q9}, [r11]!
- vld1.8 {q11}, [r11], r12
- pld [r8, r3]
- vld1.8 {q12}, [r8]!
- vld1.8 {q14}, [r8], r12
- pld [r11, r3]
- vld1.8 {q13}, [r11]!
- vld1.8 {q15}, [r11], r12
-
- vst2.8 {q0, q1}, [r7]!
- vst2.8 {q2, q3}, [r7]!
- vst2.8 {q4, q5}, [r7]!
- vst2.8 {q6, q7}, [r7]!
- vst2.8 {q8, q9}, [r7]!
- vst2.8 {q10, q11}, [r7]!
- vst2.8 {q12, q13}, [r7]!
- vst2.8 {q14, q15}, [r7]!
-
- pld [r8, r3]
- vld1.8 {q0}, [r8]!
- vld1.8 {q2}, [r8], r12
- pld [r11, r3]
- vld1.8 {q1}, [r11]!
- vld1.8 {q3}, [r11], r12
- pld [r8, r3]
- vld1.8 {q4}, [r8]!
- vld1.8 {q6}, [r8], r12
- pld [r11, r3]
- vld1.8 {q5}, [r11]!
- vld1.8 {q7}, [r11], r12
- pld [r8, r3]
- vld1.8 {q8}, [r8]!
- vld1.8 {q10}, [r8], r12
- pld [r11, r3]
- vld1.8 {q9}, [r11]!
- vld1.8 {q11}, [r11], r12
- pld [r8, r3]
- vld1.8 {q12}, [r8]!
- vld1.8 {q14}, [r8], r12
- pld [r11, r3]
- vld1.8 {q13}, [r11]!
- vld1.8 {q15}, [r11], r12
-
- vst2.8 {q0, q1}, [r7]!
- vst2.8 {q2, q3}, [r7]!
- vst2.8 {q4, q5}, [r7]!
- vst2.8 {q6, q7}, [r7]!
- vst2.8 {q8, q9}, [r7]!
- vst2.8 {q10, q11}, [r7]!
- vst2.8 {q12, q13}, [r7]!
- vst2.8 {q14, q15}, [r7]!
-
- add r5, r5, #64 @ j = j+64
- cmp r5, r9 @ j<aligned_x_size
- blt LOOP_ALIGNED_X_SIZE
-
- add r6, r6, #32 @ i = i+32
- cmp r6, r10 @ i<aligned_y_size
- blt LOOP_ALIGNED_Y_SIZE
-
- ldr r4, [sp, #40] @ load linear_y_size to r4
- cmp r6, r4
- beq LOOP_LINEAR_Y_SIZE_2_START
-
-LOOP_LINEAR_Y_SIZE_1:
-
- mov r5, #0 @ j = 0
-LOOP_ALIGNED_X_SIZE_1:
-
- bl GET_TILED_OFFSET
-
- mov r11, r3, asr #1 @ temp1 = linear_x_size/2
- mul r11, r11, r6 @ temp1 = temp1*(i)
- add r11, r11, r5, asr #1 @ temp1 = temp1+j/2
- mov r12, r3, asr #1 @ temp2 = linear_x_size/2
- sub r12, r12, #16 @ temp2 = linear_x_size-16
-
- add r8, r1, r11 @ linear_addr = linear_src_u+temp1
- add r11, r2, r11 @ temp1 = linear_src_v+temp1
- add r7, r0, r7 @ tiled_addr = tiled_dest+tiled_addr
- and r14, r6, #0x1F @ temp3 = i&0x1F@
- mov r14, r14, lsl #6 @ temp3 = temp3*64
- add r7, r7, r14 @ tiled_addr = tiled_addr+temp3
-
- pld [r8, r3]
- vld1.8 {q0}, [r8]!
- vld1.8 {q2}, [r8], r12
- pld [r11, r3]
- vld1.8 {q1}, [r11]!
- vld1.8 {q3}, [r11], r12
- pld [r8, r3]
- vld1.8 {q4}, [r8]!
- vld1.8 {q6}, [r8], r12
- pld [r11, r3]
- vld1.8 {q5}, [r11]!
- vld1.8 {q7}, [r11], r12
- pld [r8, r3]
- vld1.8 {q8}, [r8]!
- vld1.8 {q10}, [r8], r12
- pld [r11, r3]
- vld1.8 {q9}, [r11]!
- vld1.8 {q11}, [r11], r12
- pld [r8, r3]
- vld1.8 {q12}, [r8]!
- vld1.8 {q14}, [r8], r12
- pld [r11, r3]
- vld1.8 {q13}, [r11]!
- vld1.8 {q15}, [r11], r12
-
- vst2.8 {q0, q1}, [r7]! @ store {tiled_addr}
- vst2.8 {q2, q3}, [r7]!
- vst2.8 {q4, q5}, [r7]! @ store {tiled_addr+64*1}
- vst2.8 {q6, q7}, [r7]!
- vst2.8 {q8, q9}, [r7]! @ store {tiled_addr+64*2}
- vst2.8 {q10, q11}, [r7]!
- vst2.8 {q12, q13}, [r7]! @ store {tiled_addr+64*3}
- vst2.8 {q14, q15}, [r7]!
-
- add r5, r5, #64 @ j = j+64
- cmp r5, r9 @ j<aligned_x_size
- blt LOOP_ALIGNED_X_SIZE_1
-
- add r6, r6, #4 @ i = i+4
- cmp r6, r4 @ i<linear_y_size
- blt LOOP_LINEAR_Y_SIZE_1
-
-LOOP_LINEAR_Y_SIZE_2_START:
- cmp r5, r3
- beq RESTORE_REG
-
- mov r6, #0 @ i = 0
-LOOP_LINEAR_Y_SIZE_2:
-
- mov r5, r9 @ j = aligned_x_size
-LOOP_LINEAR_X_SIZE_2:
-
- bl GET_TILED_OFFSET
-
- mov r11, r3, asr #1 @ temp1 = linear_x_size/2
- mul r11, r11, r6 @ temp1 = temp1*(i)
- add r11, r11, r5, asr #1 @ temp1 = temp1+j/2
- mov r12, r3, asr #1 @ temp2 = linear_x_size/2
- sub r12, r12, #1 @ temp2 = linear_x_size-1
-
- add r8, r1, r11 @ linear_addr = linear_src_u+temp1
- add r11, r2, r11 @ temp1 = linear_src_v+temp1
- add r7, r0, r7 @ tiled_addr = tiled_dest+tiled_addr
- and r14, r6, #0x1F @ temp3 = i&0x1F@
- mov r14, r14, lsl #6 @ temp3 = temp3*64
- add r7, r7, r14 @ tiled_addr = tiled_addr+temp3
- and r14, r5, #0x3F @ temp3 = j&0x3F
- add r7, r7, r14 @ tiled_addr = tiled_addr+temp3
-
- ldrb r10, [r8], #1
- ldrb r14, [r11], #1
- mov r14, r14, lsl #8
- orr r10, r10, r14
- strh r10, [r7], #2
- ldrb r10, [r8], r12
- ldrb r14, [r11], r12
- mov r14, r14, lsl #8
- orr r10, r10, r14
- strh r10, [r7], #62
-
- ldrb r10, [r8], #1
- ldrb r14, [r11], #1
- mov r14, r14, lsl #8
- orr r10, r10, r14
- strh r10, [r7], #2
- ldrb r10, [r8], r12
- ldrb r14, [r11], r12
- mov r14, r14, lsl #8
- orr r10, r10, r14
- strh r10, [r7], #62
-
- ldrb r10, [r8], #1
- ldrb r14, [r11], #1
- mov r14, r14, lsl #8
- orr r10, r10, r14
- strh r10, [r7], #2
- ldrb r10, [r8], r12
- ldrb r14, [r11], r12
- mov r14, r14, lsl #8
- orr r10, r10, r14
- strh r10, [r7], #62
-
- ldrb r10, [r8], #1
- ldrb r14, [r11], #1
- mov r14, r14, lsl #8
- orr r10, r10, r14
- strh r10, [r7], #2
- ldrb r10, [r8], r12
- ldrb r14, [r11], r12
- mov r14, r14, lsl #8
- orr r10, r10, r14
- strh r10, [r7], #62
-
- add r5, r5, #4 @ j = j+4
- cmp r5, r3 @ j<linear_x_size
- blt LOOP_LINEAR_X_SIZE_2
-
- add r6, r6, #4 @ i = i+4
- cmp r6, r4 @ i<linear_y_size
- blt LOOP_LINEAR_Y_SIZE_2
-
-RESTORE_REG:
- ldmfd sp!, {r4-r12,r15} @ restore registers
-
-GET_TILED_OFFSET:
- stmfd sp!, {r14}
-
- mov r12, r6, asr #5 @ temp2 = i>>5
- mov r11, r5, asr #6 @ temp1 = j>>6
-
- and r14, r12, #0x1 @ if (temp2 & 0x1)
- cmp r14, #0x1
- bne GET_TILED_OFFSET_EVEN_FORMULA_1
-
-GET_TILED_OFFSET_ODD_FORMULA:
- sub r7, r12, #1 @ tiled_addr = temp2-1
- add r14, r3, #127 @ temp3 = linear_x_size+127
- bic r14, r14, #0x7F @ temp3 = (temp3 >>7)<<7
- mov r14, r14, asr #6 @ temp3 = temp3>>6
- mul r7, r7, r14 @ tiled_addr = tiled_addr*temp3
- add r7, r7, r11 @ tiled_addr = tiled_addr+temp1
- add r7, r7, #2 @ tiled_addr = tiled_addr+2
- bic r14, r11, #0x3 @ temp3 = (temp1>>2)<<2
- add r7, r7, r14 @ tiled_addr = tiled_addr+temp3
- mov r7, r7, lsl #11 @ tiled_addr = tiled_addr<<11
- b GET_TILED_OFFSET_RETURN
-
-GET_TILED_OFFSET_EVEN_FORMULA_1:
- add r14, r4, #31 @ temp3 = linear_y_size+31
- bic r14, r14, #0x1F @ temp3 = (temp3>>5)<<5
- sub r14, r14, #32 @ temp3 = temp3 - 32
- cmp r6, r14 @ if (i<(temp3-32)) {
- bge GET_TILED_OFFSET_EVEN_FORMULA_2
- add r14, r11, #2 @ temp3 = temp1+2
- bic r14, r14, #3 @ temp3 = (temp3>>2)<<2
- add r7, r11, r14 @ tiled_addr = temp1+temp3
- add r14, r3, #127 @ temp3 = linear_x_size+127
- bic r14, r14, #0x7F @ temp3 = (temp3>>7)<<7
- mov r14, r14, asr #6 @ temp3 = temp3>>6
- mul r12, r12, r14 @ tiled_y_index = tiled_y_index*temp3
- add r7, r7, r12 @ tiled_addr = tiled_addr+tiled_y_index
- mov r7, r7, lsl #11 @
- b GET_TILED_OFFSET_RETURN
-
-GET_TILED_OFFSET_EVEN_FORMULA_2:
- add r14, r3, #127 @ temp3 = linear_x_size+127
- bic r14, r14, #0x7F @ temp3 = (temp3>>7)<<7
- mov r14, r14, asr #6 @ temp3 = temp3>>6
- mul r7, r12, r14 @ tiled_addr = temp2*temp3
- add r7, r7, r11 @ tiled_addr = tiled_addr+temp3
- mov r7, r7, lsl #11 @ tiled_addr = tiled_addr<<11@
-
-GET_TILED_OFFSET_RETURN:
- ldmfd sp!, {r15} @ restore registers
- .fnend
-
diff --git a/sec_mm/sec_omx/sec_codecs/video/mfc_c110/csc/csc_yuv420_nv12t_y_neon.s b/sec_mm/sec_omx/sec_codecs/video/mfc_c110/csc/csc_yuv420_nv12t_y_neon.s
deleted file mode 100644
index 3f8932a..0000000
--- a/sec_mm/sec_omx/sec_codecs/video/mfc_c110/csc/csc_yuv420_nv12t_y_neon.s
+++ /dev/null
@@ -1,451 +0,0 @@
-/*
- *
- * Copyright 2011 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file csc_yuv420_nv12t_y_neon.s
- * @brief SEC_OMX specific define
- * @author ShinWon Lee (shinwon.lee@samsung.com)
- * @version 1.0
- * @history
- * 2011.7.01 : Create
- */
-
-/*
- * Converts linear data to tiled.
- * 1. Y of YUV420P to Y of NV12T
- * 2. Y of YUV420S to Y of NV12T
- * 3. UV of YUV420S to UV of NV12T
- *
- * @param nv12t_dest
- * Y or UV plane address of NV12T[out]
- *
- * @param yuv420_src
- * Y or UV plane address of YUV420P(S)[in]
- *
- * @param yuv420_width
- * Width of YUV420[in]
- *
- * @param yuv420_height
- * Y: Height of YUV420, UV: Height/2 of YUV420[in]
- */
-
- .arch armv7-a
- .text
- .global csc_linear_to_tiled
- .type csc_linear_to_tiled, %function
-csc_linear_to_tiled:
- .fnstart
-
- @r0 tiled_dest
- @r1 linear_src
- @r2 linear_x_size
- @r3 linear_y_size
- @r4 j
- @r5 i
- @r6 nn(tiled_addr)
- @r7 mm(linear_addr)
- @r8 aligned_x_size
- @r9 aligned_y_size
- @r10 temp1
- @r11 temp2
- @r12 temp3
- @r14 temp4
-
- stmfd sp!, {r4-r12,r14} @ backup registers
-
- bic r9, r3, #0x1F @ aligned_y_size = (linear_y_size>>5)<<5
- bic r8, r2, #0x3F @ aligned_x_size = (linear_x_size>>6)<<6
-
- mov r5, #0 @ i = 0
-LOOP_ALIGNED_Y_SIZE:
-
- mov r4, #0 @ j = 0
-LOOP_ALIGNED_X_SIZE:
-
- bl GET_TILED_OFFSET
-
- mul r10, r2, r5 @ temp1 = linear_x_size*(i)
- add r7, r1, r4 @ linear_addr = linear_src+j
- add r7, r7, r10 @ linear_addr = linear_addr+temp1
- sub r10, r2, #32
-
- pld [r7, r2, lsl #1]
- vld1.8 {q0, q1}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q2, q3}, [r7], r10
- pld [r7, r2, lsl #1]
- vld1.8 {q4, q5}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q6, q7}, [r7], r10
- pld [r7, r2, lsl #1]
- vld1.8 {q8, q9}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q10, q11}, [r7], r10
- pld [r7, r2, lsl #1]
- vld1.8 {q12, q13}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q14, q15}, [r7], r10
-
- add r6, r0, r6 @ tiled_addr = tiled_dest+tiled_addr
-
- vst1.8 {q0, q1}, [r6]!
- vst1.8 {q2, q3}, [r6]!
- vst1.8 {q4, q5}, [r6]!
- vst1.8 {q6, q7}, [r6]!
- vst1.8 {q8, q9}, [r6]!
- vst1.8 {q10, q11}, [r6]!
- vst1.8 {q12, q13}, [r6]!
- vst1.8 {q14, q15}, [r6]!
-
- pld [r7, r2, lsl #1]
- vld1.8 {q0, q1}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q2, q3}, [r7], r10
- pld [r7, r2, lsl #1]
- vld1.8 {q4, q5}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q6, q7}, [r7], r10
- pld [r7, r2, lsl #1]
- vld1.8 {q8, q9}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q10, q11}, [r7], r10
- pld [r7, r2, lsl #1]
- vld1.8 {q12, q13}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q14, q15}, [r7], r10
-
- vst1.8 {q0, q1}, [r6]!
- vst1.8 {q2, q3}, [r6]!
- vst1.8 {q4, q5}, [r6]!
- vst1.8 {q6, q7}, [r6]!
- vst1.8 {q8, q9}, [r6]!
- vst1.8 {q10, q11}, [r6]!
- vst1.8 {q12, q13}, [r6]!
- vst1.8 {q14, q15}, [r6]!
-
- pld [r7, r2, lsl #1]
- vld1.8 {q0, q1}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q2, q3}, [r7], r10
- pld [r7, r2, lsl #1]
- vld1.8 {q4, q5}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q6, q7}, [r7], r10
- pld [r7, r2, lsl #1]
- vld1.8 {q8, q9}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q10, q11}, [r7], r10
- pld [r7, r2, lsl #1]
- vld1.8 {q12, q13}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q14, q15}, [r7], r10
-
- vst1.8 {q0, q1}, [r6]!
- vst1.8 {q2, q3}, [r6]!
- vst1.8 {q4, q5}, [r6]!
- vst1.8 {q6, q7}, [r6]!
- vst1.8 {q8, q9}, [r6]!
- vst1.8 {q10, q11}, [r6]!
- vst1.8 {q12, q13}, [r6]!
- vst1.8 {q14, q15}, [r6]!
-
- pld [r7, r2, lsl #1]
- vld1.8 {q0, q1}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q2, q3}, [r7], r10
- pld [r7, r2, lsl #1]
- vld1.8 {q4, q5}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q6, q7}, [r7], r10
- pld [r7, r2, lsl #1]
- vld1.8 {q8, q9}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q10, q11}, [r7], r10
- pld [r7, r2, lsl #1]
- vld1.8 {q12, q13}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q14, q15}, [r7], r10
-
- vst1.8 {q0, q1}, [r6]!
- vst1.8 {q2, q3}, [r6]!
- vst1.8 {q4, q5}, [r6]!
- vst1.8 {q6, q7}, [r6]!
- vst1.8 {q8, q9}, [r6]!
- vst1.8 {q10, q11}, [r6]!
- vst1.8 {q12, q13}, [r6]!
- vst1.8 {q14, q15}, [r6]!
-
- pld [r7, r2, lsl #1]
- vld1.8 {q0, q1}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q2, q3}, [r7], r10
- pld [r7, r2, lsl #1]
- vld1.8 {q4, q5}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q6, q7}, [r7], r10
- pld [r7, r2, lsl #1]
- vld1.8 {q8, q9}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q10, q11}, [r7], r10
- pld [r7, r2, lsl #1]
- vld1.8 {q12, q13}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q14, q15}, [r7], r10
-
- vst1.8 {q0, q1}, [r6]!
- vst1.8 {q2, q3}, [r6]!
- vst1.8 {q4, q5}, [r6]!
- vst1.8 {q6, q7}, [r6]!
- vst1.8 {q8, q9}, [r6]!
- vst1.8 {q10, q11}, [r6]!
- vst1.8 {q12, q13}, [r6]!
- vst1.8 {q14, q15}, [r6]!
-
- pld [r7, r2, lsl #1]
- vld1.8 {q0, q1}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q2, q3}, [r7], r10
- pld [r7, r2, lsl #1]
- vld1.8 {q4, q5}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q6, q7}, [r7], r10
- pld [r7, r2, lsl #1]
- vld1.8 {q8, q9}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q10, q11}, [r7], r10
- pld [r7, r2, lsl #1]
- vld1.8 {q12, q13}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q14, q15}, [r7], r10
-
- vst1.8 {q0, q1}, [r6]!
- vst1.8 {q2, q3}, [r6]!
- vst1.8 {q4, q5}, [r6]!
- vst1.8 {q6, q7}, [r6]!
- vst1.8 {q8, q9}, [r6]!
- vst1.8 {q10, q11}, [r6]!
- vst1.8 {q12, q13}, [r6]!
- vst1.8 {q14, q15}, [r6]!
-
- pld [r7, r2, lsl #1]
- vld1.8 {q0, q1}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q2, q3}, [r7], r10
- pld [r7, r2, lsl #1]
- vld1.8 {q4, q5}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q6, q7}, [r7], r10
- pld [r7, r2, lsl #1]
- vld1.8 {q8, q9}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q10, q11}, [r7], r10
- pld [r7, r2, lsl #1]
- vld1.8 {q12, q13}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q14, q15}, [r7], r10
-
- vst1.8 {q0, q1}, [r6]!
- vst1.8 {q2, q3}, [r6]!
- vst1.8 {q4, q5}, [r6]!
- vst1.8 {q6, q7}, [r6]!
- vst1.8 {q8, q9}, [r6]!
- vst1.8 {q10, q11}, [r6]!
- vst1.8 {q12, q13}, [r6]!
- vst1.8 {q14, q15}, [r6]!
-
- pld [r7, r2, lsl #1]
- vld1.8 {q0, q1}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q2, q3}, [r7], r10
- pld [r7, r2, lsl #1]
- vld1.8 {q4, q5}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q6, q7}, [r7], r10
- pld [r7, r2, lsl #1]
- vld1.8 {q8, q9}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q10, q11}, [r7], r10
- pld [r7, r2, lsl #1]
- vld1.8 {q12, q13}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q14, q15}, [r7], r10
-
- vst1.8 {q0, q1}, [r6]!
- vst1.8 {q2, q3}, [r6]!
- vst1.8 {q4, q5}, [r6]!
- vst1.8 {q6, q7}, [r6]!
- vst1.8 {q8, q9}, [r6]!
- vst1.8 {q10, q11}, [r6]!
- vst1.8 {q12, q13}, [r6]!
- vst1.8 {q14, q15}, [r6]!
-
- add r4, r4, #64 @ j = j+64
- cmp r4, r8 @ j<aligned_x_size
- blt LOOP_ALIGNED_X_SIZE
-
- add r5, r5, #32 @ i = i+32
- cmp r5, r9 @ i<aligned_y_size
- blt LOOP_ALIGNED_Y_SIZE
-
- cmp r5, r3
- beq LOOP_LINEAR_Y_SIZE_2_START
-
-LOOP_LINEAR_Y_SIZE_1:
-
- mov r4, #0 @ j = 0
-LOOP_ALIGNED_X_SIZE_1:
-
- bl GET_TILED_OFFSET
-
- mul r10, r2, r5 @ temp1 = linear_x_size*(i)
- add r7, r1, r4 @ linear_addr = linear_src+j
- add r7, r7, r10 @ linear_addr = linear_addr+temp1
- sub r10, r2, #32 @ temp1 = linear_x_size-32
-
- pld [r7, r2, lsl #1]
- vld1.8 {q0, q1}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q2, q3}, [r7], r10
- pld [r7, r2, lsl #1]
- vld1.8 {q4, q5}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q6, q7}, [r7], r10
- pld [r7, r2, lsl #1]
- vld1.8 {q8, q9}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q10, q11}, [r7], r10
- pld [r7, r2, lsl #1]
- vld1.8 {q12, q13}, [r7]!
- pld [r7, r2, lsl #1]
- vld1.8 {q14, q15}, [r7], r10
-
- add r6, r0, r6 @ tiled_addr = tiled_dest+tiled_addr
- and r11, r5, #0x1F @ temp2 = i&0x1F
- mov r11, r11, lsl #6 @ temp2 = 64*temp2
- add r6, r6, r11 @ tiled_addr = tiled_addr+temp2
-
- vst1.8 {q0, q1}, [r6]!
- vst1.8 {q2, q3}, [r6]!
- vst1.8 {q4, q5}, [r6]!
- vst1.8 {q6, q7}, [r6]!
- vst1.8 {q8, q9}, [r6]!
- vst1.8 {q10, q11}, [r6]!
- vst1.8 {q12, q13}, [r6]!
- vst1.8 {q14, q15}, [r6]!
-
- add r4, r4, #64 @ j = j+64
- cmp r4, r8 @ j<aligned_x_size
- blt LOOP_ALIGNED_X_SIZE_1
-
- add r5, r5, #4 @ i = i+4
- cmp r5, r3 @ i<linear_y_size
- blt LOOP_LINEAR_Y_SIZE_1
-
-LOOP_LINEAR_Y_SIZE_2_START:
- cmp r4, r2
- beq RESTORE_REG
-
- mov r5, #0 @ i = 0
-LOOP_LINEAR_Y_SIZE_2:
-
- mov r4, r8 @ j = aligned_x_size
-LOOP_LINEAR_X_SIZE_2:
-
- bl GET_TILED_OFFSET
-
- mul r10, r2, r5 @ temp1 = linear_x_size*(i)
- add r7, r1, r4 @ linear_addr = linear_src+j
- add r7, r7, r10 @ linear_addr = linear_addr+temp1
-
- add r6, r0, r6 @ tiled_addr = tiled_dest+tiled_addr
- and r11, r5, #0x1F @ temp2 = i&0x1F
- mov r11, r11, lsl #6 @ temp2 = 64*temp2
- add r6, r6, r11 @ tiled_addr = tiled_addr+temp2
- and r11, r4, #0x3F @ temp2 = j&0x3F
- add r6, r6, r11 @ tiled_addr = tiled_addr+temp2
-
- ldr r10, [r7], r2
- ldr r11, [r7], r2
- ldr r12, [r7], r2
- ldr r14, [r7], r2
- str r10, [r6], #64
- str r11, [r6], #64
- str r12, [r6], #64
- str r14, [r6], #64
-
- add r4, r4, #4 @ j = j+4
- cmp r4, r2 @ j<linear_x_size
- blt LOOP_LINEAR_X_SIZE_2
-
- add r5, r5, #4 @ i = i+4
- cmp r5, r3 @ i<linear_y_size
- blt LOOP_LINEAR_Y_SIZE_2
-
-RESTORE_REG:
- ldmfd sp!, {r4-r12,r15} @ restore registers
-
-GET_TILED_OFFSET:
-
- mov r11, r5, asr #5 @ temp2 = i>>5
- mov r10, r4, asr #6 @ temp1 = j>>6
-
- and r12, r11, #0x1 @ if (temp2 & 0x1)
- cmp r12, #0x1
- bne GET_TILED_OFFSET_EVEN_FORMULA_1
-
-GET_TILED_OFFSET_ODD_FORMULA:
- sub r6, r11, #1 @ tiled_addr = temp2-1
- add r12, r2, #127 @ temp3 = linear_x_size+127
- bic r12, r12, #0x7F @ temp3 = (temp3 >>7)<<7
- mov r12, r12, asr #6 @ temp3 = temp3>>6
- mul r6, r6, r12 @ tiled_addr = tiled_addr*temp3
- add r6, r6, r10 @ tiled_addr = tiled_addr+temp1
- add r6, r6, #2 @ tiled_addr = tiled_addr+2
- bic r12, r10, #0x3 @ temp3 = (temp1>>2)<<2
- add r6, r6, r12 @ tiled_addr = tiled_addr+temp3
- mov r6, r6, lsl #11 @ tiled_addr = tiled_addr<<11
- b GET_TILED_OFFSET_RETURN
-
-GET_TILED_OFFSET_EVEN_FORMULA_1:
- add r12, r3, #31 @ temp3 = linear_y_size+31
- bic r12, r12, #0x1F @ temp3 = (temp3>>5)<<5
- sub r12, r12, #32 @ temp3 = temp3 - 32
- cmp r5, r12 @ if (i<(temp3-32)) {
- bge GET_TILED_OFFSET_EVEN_FORMULA_2
- add r12, r10, #2 @ temp3 = temp1+2
- bic r12, r12, #3 @ temp3 = (temp3>>2)<<2
- add r6, r10, r12 @ tiled_addr = temp1+temp3
- add r12, r2, #127 @ temp3 = linear_x_size+127
- bic r12, r12, #0x7F @ temp3 = (temp3>>7)<<7
- mov r12, r12, asr #6 @ temp3 = temp3>>6
- mul r11, r11, r12 @ tiled_y_index = tiled_y_index*temp3
- add r6, r6, r11 @ tiled_addr = tiled_addr+tiled_y_index
- mov r6, r6, lsl #11 @
- b GET_TILED_OFFSET_RETURN
-
-GET_TILED_OFFSET_EVEN_FORMULA_2:
- add r12, r2, #127 @ temp3 = linear_x_size+127
- bic r12, r12, #0x7F @ temp3 = (temp3>>7)<<7
- mov r12, r12, asr #6 @ temp3 = temp3>>6
- mul r6, r11, r12 @ tiled_addr = temp2*temp3
- add r6, r6, r10 @ tiled_addr = tiled_addr+temp3
- mov r6, r6, lsl #11 @ tiled_addr = tiled_addr<<11@
-
-GET_TILED_OFFSET_RETURN:
- mov pc, lr
- .fnend
-
diff --git a/sec_mm/sec_omx/sec_codecs/video/mfc_c110/dec/Android.mk b/sec_mm/sec_omx/sec_codecs/video/mfc_c110/dec/Android.mk
deleted file mode 100644
index bafc854..0000000
--- a/sec_mm/sec_omx/sec_codecs/video/mfc_c110/dec/Android.mk
+++ /dev/null
@@ -1,26 +0,0 @@
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := \
- src/SsbSipMfcDecAPI.c
-
-LOCAL_MODULE := libsecmfcdecapi.aries
-
-
-
-LOCAL_CFLAGS :=
-
-LOCAL_ARM_MODE := arm
-
-LOCAL_STATIC_LIBRARIES :=
-
-LOCAL_SHARED_LIBRARIES := liblog
-
-LOCAL_C_INCLUDES := \
- $(SEC_CODECS)/video/mfc_c110/include
-
-include $(BUILD_STATIC_LIBRARY)
-
diff --git a/sec_mm/sec_omx/sec_codecs/video/mfc_c110/dec/src/SsbSipMfcDecAPI.c b/sec_mm/sec_omx/sec_codecs/video/mfc_c110/dec/src/SsbSipMfcDecAPI.c
deleted file mode 100644
index 6c64ef8..0000000
--- a/sec_mm/sec_omx/sec_codecs/video/mfc_c110/dec/src/SsbSipMfcDecAPI.c
+++ /dev/null
@@ -1,518 +0,0 @@
-/*
- * Copyright 2010 Samsung Electronics Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <fcntl.h>
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/ioctl.h>
-#include <sys/mman.h>
-#include <utils/Log.h>
-
-#include "mfc_interface.h"
-#include "SsbSipMfcApi.h"
-
-#define _MFCLIB_MAGIC_NUMBER 0x92241000
-
-#define USR_DATA_START_CODE (0x000001B2)
-#define VOP_START_CODE (0x000001B6)
-#define MP4_START_CODE (0x000001)
-
-static void getAByte(char *buff, int *code)
-{
- int byte;
-
- *code = (*code << 8);
- byte = (int)*buff;
- byte &= 0xFF;
- *code |= byte;
-}
-
-static mfc_packed_mode isPBPacked(_MFCLIB *pCtx, int length)
-{
- char *strmBuffer = NULL;
- char *strmBufferEnd = NULL;
- int startCode = 0xFFFFFFFF;
-
- strmBuffer = (char *)pCtx->virStrmBuf;
- strmBufferEnd = (char *)pCtx->virStrmBuf + length;
-
- while (1) {
- while (startCode != USR_DATA_START_CODE) {
- if (startCode == VOP_START_CODE) {
- ALOGV("isPBPacked: VOP START Found !!.....return\n");
- ALOGV("isPBPacked: Non Packed PB\n");
- return MFC_UNPACKED_PB;
- }
- getAByte(strmBuffer, &startCode);
- strmBuffer++;
- if (strmBuffer >= strmBufferEnd)
- goto out;
- }
- ALOGV("isPBPacked: User Data Found !!\n");
-
- do {
- if (*strmBuffer == 'p') {
- ALOGI("isPBPacked: Packed PB\n");
- return MFC_PACKED_PB;
- }
- getAByte(strmBuffer, &startCode);
- strmBuffer++;
- if (strmBuffer >= strmBufferEnd)
- goto out;
- } while ((startCode >> 8) != MP4_START_CODE);
- }
-
-out:
- ALOGV("isPBPacked: Non Packed PB\n");
- return MFC_UNPACKED_PB;
-}
-
-void *SsbSipMfcDecOpen(void *value)
-{
- int hMFCOpen;
- unsigned int mapped_addr;
- _MFCLIB *pCTX;
- mfc_common_args DecArg;
- int ret_code;
-
- pCTX = (_MFCLIB *)malloc(sizeof(_MFCLIB));
- if (pCTX == NULL) {
- ALOGE("SsbSipMfcDecOpen: malloc failed.\n");
- return NULL;
- }
- memset(pCTX, 0, sizeof(_MFCLIB));
-
- hMFCOpen = open(S5PC110_MFC_DEV_NAME, O_RDWR | O_NDELAY);
- if (hMFCOpen < 0) {
- ALOGE("SsbSipMfcDecOpen: MFC Open failure\n");
- return NULL;
- }
-
- if (*(unsigned int *)value == NO_CACHE ||
- *(unsigned int *)value == CACHE) {
- DecArg.args.buf_type = *(unsigned int *)value;
- ret_code = ioctl(hMFCOpen, IOCTL_MFC_BUF_CACHE, &DecArg);
- if (DecArg.ret_code != MFC_RET_OK) {
- ALOGE("SsbSipMfcDecOpenExt: IOCTL_MFC_BUF_CACHE (%d) failed\n", DecArg.ret_code);
- }
- } else {
- ALOGE("SsbSipMfcDecOpenExt: value is invalid, value: %d\n", *(int *)value);
- }
-
- mapped_addr = (unsigned int)mmap(0, MMAP_BUFFER_SIZE_MMAP, PROT_READ | PROT_WRITE, MAP_SHARED, hMFCOpen, 0);
- if (!mapped_addr) {
- ALOGE("SsbSipMfcDecOpen: FIMV5.0 driver address mapping failed\n");
- return NULL;
- }
-
- pCTX->magic = _MFCLIB_MAGIC_NUMBER;
- pCTX->hMFC = hMFCOpen;
- pCTX->mapped_addr = mapped_addr;
- pCTX->inter_buff_status = MFC_USE_NONE;
-
- return (void *)pCTX;
-}
-
-SSBSIP_MFC_ERROR_CODE SsbSipMfcDecInit(void *openHandle, SSBSIP_MFC_CODEC_TYPE codec_type, int Frameleng)
-{
- int ret_code;
- int packedPB = MFC_UNPACKED_PB;
- mfc_common_args DecArg;
- _MFCLIB *pCTX;
-
- if (openHandle == NULL) {
- ALOGE("SsbSipMfcDecSetConfig: openHandle is NULL\n");
- return MFC_RET_INVALID_PARAM;
- }
-
- pCTX = (_MFCLIB *)openHandle;
- memset(&DecArg, 0x00, sizeof(DecArg));
-
- if ((codec_type != MPEG4_DEC) &&
- (codec_type != H264_DEC) &&
- (codec_type != H263_DEC) &&
- (codec_type != MPEG1_DEC) &&
- (codec_type != MPEG2_DEC) &&
- (codec_type != FIMV1_DEC) &&
- (codec_type != FIMV2_DEC) &&
- (codec_type != FIMV3_DEC) &&
- (codec_type != FIMV4_DEC) &&
- (codec_type != XVID_DEC) &&
- (codec_type != VC1RCV_DEC) &&
- (codec_type != VC1_DEC)) {
- ALOGE("SsbSipMfcDecOpen: Undefined codec type.\n");
- return MFC_RET_INVALID_PARAM;
- }
-
- pCTX->codec_type = codec_type;
-
- if ((pCTX->codec_type == MPEG4_DEC) ||
- (pCTX->codec_type == FIMV1_DEC) ||
- (pCTX->codec_type == FIMV2_DEC) ||
- (pCTX->codec_type == FIMV3_DEC) ||
- (pCTX->codec_type == FIMV4_DEC) ||
- (pCTX->codec_type == XVID_DEC))
- packedPB = isPBPacked(pCTX, Frameleng);
-
- /* init args */
- DecArg.args.dec_init.in_codec_type = pCTX->codec_type;
- DecArg.args.dec_init.in_strm_size = Frameleng;
- DecArg.args.dec_init.in_strm_buf = pCTX->phyStrmBuf;
- DecArg.args.dec_init.in_packed_PB = packedPB;
-
- /* mem alloc args */
- DecArg.args.dec_init.in_mapped_addr = pCTX->mapped_addr;
-
- ret_code = ioctl(pCTX->hMFC, IOCTL_MFC_DEC_INIT, &DecArg);
- if (DecArg.ret_code != MFC_RET_OK) {
- ALOGE("SsbSipMfcDecInit: IOCTL_MFC_DEC_INIT (%d) failed\n", DecArg.ret_code);
- return MFC_RET_DEC_INIT_FAIL;
- }
-
- pCTX->decOutInfo.img_width = DecArg.args.dec_init.out_img_width;
- pCTX->decOutInfo.img_height = DecArg.args.dec_init.out_img_height;
- pCTX->decOutInfo.buf_width = DecArg.args.dec_init.out_buf_width;
- pCTX->decOutInfo.buf_height = DecArg.args.dec_init.out_buf_height;
-
- /* by RainAde : crop information */
- pCTX->decOutInfo.crop_top_offset = DecArg.args.dec_init.out_crop_top_offset;
- pCTX->decOutInfo.crop_bottom_offset = DecArg.args.dec_init.out_crop_bottom_offset;
- pCTX->decOutInfo.crop_left_offset = DecArg.args.dec_init.out_crop_left_offset;
- pCTX->decOutInfo.crop_right_offset = DecArg.args.dec_init.out_crop_right_offset;
-
- pCTX->virFrmBuf.luma = DecArg.args.dec_init.out_u_addr.luma;
- pCTX->virFrmBuf.chroma = DecArg.args.dec_init.out_u_addr.chroma;
-
- pCTX->phyFrmBuf.luma = DecArg.args.dec_init.out_p_addr.luma;
- pCTX->phyFrmBuf.chroma = DecArg.args.dec_init.out_p_addr.chroma;
- pCTX->sizeFrmBuf.luma = DecArg.args.dec_init.out_frame_buf_size.luma;
- pCTX->sizeFrmBuf.chroma = DecArg.args.dec_init.out_frame_buf_size.chroma;
- pCTX->inter_buff_status |= MFC_USE_YUV_BUFF;
-
- return MFC_RET_OK;
-}
-
-SSBSIP_MFC_ERROR_CODE SsbSipMfcDecExe(void *openHandle, int lengthBufFill)
-{
- int ret_code;
- int Yoffset;
- int Coffset;
- _MFCLIB *pCTX;
- mfc_common_args DecArg;
-
- if (openHandle == NULL) {
- ALOGE("SsbSipMfcDecExe: openHandle is NULL\n");
- return MFC_RET_INVALID_PARAM;
- }
-
- if ((lengthBufFill < 0) || (lengthBufFill > MAX_DECODER_INPUT_BUFFER_SIZE)) {
- ALOGE("SsbSipMfcDecExe: lengthBufFill is invalid. (lengthBufFill=%d)\n", lengthBufFill);
- return MFC_RET_INVALID_PARAM;
- }
-
- pCTX = (_MFCLIB *)openHandle;
- memset(&DecArg, 0x00, sizeof(DecArg));
-
- DecArg.args.dec_exe.in_codec_type = pCTX->codec_type;
- DecArg.args.dec_exe.in_strm_buf = pCTX->phyStrmBuf;
- DecArg.args.dec_exe.in_strm_size = lengthBufFill;
- DecArg.args.dec_exe.in_frm_buf.luma = pCTX->phyFrmBuf.luma;
- DecArg.args.dec_exe.in_frm_buf.chroma = pCTX->phyFrmBuf.chroma;
- DecArg.args.dec_exe.in_frm_size.luma = pCTX->sizeFrmBuf.luma;
- DecArg.args.dec_exe.in_frm_size.chroma = pCTX->sizeFrmBuf.chroma;
- DecArg.args.dec_exe.in_frametag = pCTX->in_frametag;
-
- ret_code = ioctl(pCTX->hMFC, IOCTL_MFC_DEC_EXE, &DecArg);
- if (DecArg.ret_code != MFC_RET_OK) {
- ALOGE("SsbSipMfcDecExe: IOCTL_MFC_DEC_EXE failed(ret : %d)\n", DecArg.ret_code);
- return MFC_RET_DEC_EXE_ERR;
- }
-
- Yoffset = DecArg.args.dec_exe.out_display_Y_addr - DecArg.args.dec_exe.in_frm_buf.luma;
- Coffset = DecArg.args.dec_exe.out_display_C_addr - DecArg.args.dec_exe.in_frm_buf.chroma;
-
- pCTX->decOutInfo.YPhyAddr = (void *)(DecArg.args.dec_exe.out_display_Y_addr);
- pCTX->decOutInfo.CPhyAddr = (void *)(DecArg.args.dec_exe.out_display_C_addr);
- pCTX->decOutInfo.YVirAddr = (void *)(pCTX->virFrmBuf.luma + Yoffset);
- pCTX->decOutInfo.CVirAddr = (void *)(pCTX->virFrmBuf.chroma + Coffset);
- pCTX->decOutInfo.timestamp_top = DecArg.args.dec_exe.out_timestamp_top;
- pCTX->decOutInfo.timestamp_bottom = DecArg.args.dec_exe.out_timestamp_bottom;
- pCTX->decOutInfo.consumedByte = DecArg.args.dec_exe.out_consume_bytes;
- pCTX->decOutInfo.res_change = DecArg.args.dec_exe.out_res_change;
- pCTX->decOutInfo.crop_top_offset = DecArg.args.dec_exe.out_crop_top_offset;
- pCTX->decOutInfo.crop_bottom_offset = DecArg.args.dec_exe.out_crop_bottom_offset;
- pCTX->decOutInfo.crop_left_offset = DecArg.args.dec_exe.out_crop_left_offset;
- pCTX->decOutInfo.crop_right_offset = DecArg.args.dec_exe.out_crop_right_offset;
- pCTX->out_frametag_top = DecArg.args.dec_exe.out_frametag_top;
- pCTX->out_frametag_bottom = DecArg.args.dec_exe.out_frametag_bottom;
- pCTX->displayStatus = DecArg.args.dec_exe.out_display_status;
-
- return MFC_RET_OK;
-}
-
-SSBSIP_MFC_ERROR_CODE SsbSipMfcDecClose(void *openHandle)
-{
- int ret_code;
- _MFCLIB *pCTX;
- mfc_common_args free_arg;
-
- if (openHandle == NULL) {
- ALOGE("SsbSipMfcDecClose: openHandle is NULL\n");
- return MFC_RET_INVALID_PARAM;
- }
-
- pCTX = (_MFCLIB *)openHandle;
-
- if (pCTX->inter_buff_status & MFC_USE_YUV_BUFF) {
- free_arg.args.mem_free.u_addr = pCTX->virFrmBuf.luma;
- ret_code = ioctl(pCTX->hMFC, IOCTL_MFC_FREE_BUF, &free_arg);
- free_arg.args.mem_free.u_addr = pCTX->virFrmBuf.chroma;
- ret_code = ioctl(pCTX->hMFC, IOCTL_MFC_FREE_BUF, &free_arg);
- }
-
- if (pCTX->inter_buff_status & MFC_USE_STRM_BUFF) {
- free_arg.args.mem_free.u_addr = pCTX->virStrmBuf;
- ret_code = ioctl(pCTX->hMFC, IOCTL_MFC_FREE_BUF, &free_arg);
- }
-
- pCTX->inter_buff_status = MFC_USE_NONE;
-
- munmap((void *)pCTX->mapped_addr, MMAP_BUFFER_SIZE_MMAP);
- close(pCTX->hMFC);
- free(pCTX);
-
- return MFC_RET_OK;
-}
-
-void *SsbSipMfcDecGetInBuf(void *openHandle, void **phyInBuf, int inputBufferSize)
-{
- int ret_code;
- _MFCLIB *pCTX;
- mfc_common_args user_addr_arg, phys_addr_arg;
-
- if (inputBufferSize < 0) {
- ALOGE("SsbSipMfcDecGetInBuf: inputBufferSize = %d is invalid\n", inputBufferSize);
- return NULL;
- }
-
- if (openHandle == NULL) {
- ALOGE("SsbSipMfcDecGetInBuf: openHandle is NULL\n");
- return NULL;
- }
-
- pCTX = (_MFCLIB *)openHandle;
-
- user_addr_arg.args.mem_alloc.codec_type = pCTX->codec_type;
- user_addr_arg.args.mem_alloc.buff_size = inputBufferSize;
- user_addr_arg.args.mem_alloc.mapped_addr = pCTX->mapped_addr;
- ret_code = ioctl(pCTX->hMFC, IOCTL_MFC_GET_IN_BUF, &user_addr_arg);
- if (ret_code < 0) {
- ALOGE("SsbSipMfcDecGetInBuf: IOCTL_MFC_GET_IN_BUF failed\n");
- return NULL;
- }
- pCTX->virStrmBuf = user_addr_arg.args.mem_alloc.out_uaddr;
- pCTX->phyStrmBuf = user_addr_arg.args.mem_alloc.out_paddr;
- pCTX->sizeStrmBuf = inputBufferSize;
- pCTX->inter_buff_status |= MFC_USE_STRM_BUFF;
-
- *phyInBuf = (void *)pCTX->phyStrmBuf;
-
- return (void *)pCTX->virStrmBuf;
-}
-
-SSBSIP_MFC_ERROR_CODE SsbSipMfcDecSetInBuf(void *openHandle, void *phyInBuf, void *virInBuf, int inputBufferSize)
-{
- _MFCLIB *pCTX;
-
- if (openHandle == NULL) {
- ALOGE("SsbSipMfcDecSetInBuf: openHandle is NULL\n");
- return MFC_RET_INVALID_PARAM;
- }
-
- pCTX = (_MFCLIB *)openHandle;
-
- pCTX->phyStrmBuf = (int)phyInBuf;
- pCTX->virStrmBuf = (int)virInBuf;
- pCTX->sizeStrmBuf = inputBufferSize;
- return MFC_RET_OK;
-}
-
-SSBSIP_MFC_DEC_OUTBUF_STATUS SsbSipMfcDecGetOutBuf(void *openHandle, SSBSIP_MFC_DEC_OUTPUT_INFO *output_info)
-{
- _MFCLIB *pCTX;
-
- if (openHandle == NULL) {
- ALOGE("SsbSipMfcDecGetOutBuf: openHandle is NULL\n");
- return MFC_GETOUTBUF_DISPLAY_END;
- }
-
- pCTX = (_MFCLIB *)openHandle;
-
- output_info->YPhyAddr = pCTX->decOutInfo.YPhyAddr;
- output_info->CPhyAddr = pCTX->decOutInfo.CPhyAddr;
-
- output_info->YVirAddr = pCTX->decOutInfo.YVirAddr;
- output_info->CVirAddr = pCTX->decOutInfo.CVirAddr;
-
- output_info->img_width = pCTX->decOutInfo.img_width;
- output_info->img_height= pCTX->decOutInfo.img_height;
-
- output_info->buf_width = pCTX->decOutInfo.buf_width;
- output_info->buf_height= pCTX->decOutInfo.buf_height;
-
- /* by RainAde : for crop information */
- output_info->crop_top_offset = pCTX->decOutInfo.crop_top_offset;
- output_info->crop_bottom_offset= pCTX->decOutInfo.crop_bottom_offset;
- output_info->crop_left_offset = pCTX->decOutInfo.crop_left_offset;
- output_info->crop_right_offset= pCTX->decOutInfo.crop_right_offset;
-
- if (pCTX->displayStatus == 0)
- return MFC_GETOUTBUF_DISPLAY_END;
- else if (pCTX->displayStatus == 1)
- return MFC_GETOUTBUF_DISPLAY_DECODING;
- else if (pCTX->displayStatus == 2)
- return MFC_GETOUTBUF_DISPLAY_ONLY;
- else
- return MFC_GETOUTBUF_DECODING_ONLY;
-}
-
-SSBSIP_MFC_ERROR_CODE SsbSipMfcDecSetConfig(void *openHandle, SSBSIP_MFC_DEC_CONF conf_type, void *value)
-{
- int ret_code;
- _MFCLIB *pCTX;
- mfc_common_args DecArg;
- SSBSIP_MFC_IMG_RESOLUTION *img_resolution;
-
- if (openHandle == NULL) {
- ALOGE("SsbSipMfcDecSetConfig: openHandle is NULL\n");
- return MFC_RET_INVALID_PARAM;
- }
-
- if (value == NULL) {
- ALOGE("SsbSipMfcDecSetConfig: value is NULL\n");
- return MFC_RET_INVALID_PARAM;
- }
-
- pCTX = (_MFCLIB *)openHandle;
- memset(&DecArg, 0x00, sizeof(DecArg));
-
- switch (conf_type) {
- case MFC_DEC_SETCONF_POST_ENABLE:
- case MFC_DEC_SETCONF_EXTRA_BUFFER_NUM:
- case MFC_DEC_SETCONF_DISPLAY_DELAY:
- case MFC_DEC_SETCONF_IS_LAST_FRAME:
- case MFC_DEC_SETCONF_SLICE_ENABLE:
- case MFC_DEC_SETCONF_CRC_ENABLE:
- DecArg.args.set_config.in_config_param = conf_type;
- DecArg.args.set_config.in_config_value[0] = *((unsigned int *)value);
- DecArg.args.set_config.in_config_value[1] = 0;
- break;
-
- case MFC_DEC_SETCONF_FIMV1_WIDTH_HEIGHT:
- img_resolution = (SSBSIP_MFC_IMG_RESOLUTION *)value;
- DecArg.args.set_config.in_config_param = conf_type;
- DecArg.args.set_config.in_config_value[0] = img_resolution->width;
- DecArg.args.set_config.in_config_value[1] = img_resolution->height;
- break;
-
- case MFC_DEC_SETCONF_FRAME_TAG:
- pCTX->in_frametag = *((int *)value);
- return MFC_RET_OK;
-
- default:
- ALOGE("SsbSipMfcDecSetConfig: No such conf_type is supported.\n");
- return MFC_RET_INVALID_PARAM;
- }
-
- ret_code = ioctl(pCTX->hMFC, IOCTL_MFC_SET_CONFIG, &DecArg);
- if (DecArg.ret_code != MFC_RET_OK) {
- ALOGE("SsbSipMfcDecSetConfig: IOCTL_MFC_SET_CONFIG failed(ret : %d, conf_type: %d)\n", DecArg.ret_code, conf_type);
- return MFC_RET_DEC_SET_CONF_FAIL;
- }
-
- return MFC_RET_OK;
-}
-
-SSBSIP_MFC_ERROR_CODE SsbSipMfcDecGetConfig(void *openHandle, SSBSIP_MFC_DEC_CONF conf_type, void *value)
-{
- int ret_code;
- _MFCLIB *pCTX;
- mfc_common_args DecArg;
-
- SSBSIP_MFC_IMG_RESOLUTION *img_resolution;
- SSBSIP_MFC_CROP_INFORMATION *crop_information;
- MFC_CRC_DATA *crc_data;
-
- if (openHandle == NULL) {
- ALOGE("SsbSipMfcDecGetConfig: openHandle is NULL\n");
- return MFC_RET_FAIL;
- }
-
- if (value == NULL) {
- ALOGE("SsbSipMfcDecGetConfig: value is NULL\n");
- return MFC_RET_FAIL;
- }
-
- pCTX = (_MFCLIB *)openHandle;
- memset(&DecArg, 0x00, sizeof(DecArg));
-
- switch (conf_type) {
- case MFC_DEC_GETCONF_BUF_WIDTH_HEIGHT:
- img_resolution = (SSBSIP_MFC_IMG_RESOLUTION *)value;
- img_resolution->width = pCTX->decOutInfo.img_width;
- img_resolution->height = pCTX->decOutInfo.img_height;
- img_resolution->buf_width = pCTX->decOutInfo.buf_width;
- img_resolution->buf_height = pCTX->decOutInfo.buf_height;
- break;
-
- /* Added by RainAde */
- case MFC_DEC_GETCONF_CROP_INFO:
- crop_information = (SSBSIP_MFC_CROP_INFORMATION*)value;
- crop_information->crop_top_offset = pCTX->decOutInfo.crop_top_offset;
- crop_information->crop_bottom_offset= pCTX->decOutInfo.crop_bottom_offset;
- crop_information->crop_left_offset = pCTX->decOutInfo.crop_left_offset;
- crop_information->crop_right_offset= pCTX->decOutInfo.crop_right_offset;
- break;
-
- case MFC_DEC_GETCONF_CRC_DATA:
- crc_data = (MFC_CRC_DATA *)value;
-
- DecArg.args.get_config.in_config_param = conf_type;
-
- ret_code = ioctl(pCTX->hMFC, IOCTL_MFC_GET_CONFIG, &DecArg);
- if (DecArg.ret_code != MFC_RET_OK) {
- ALOGE("SsbSipMfcDecGetConfig: IOCTL_MFC_GET_CONFIG failed(ret : %d, conf_type: %d)\n", DecArg.ret_code, conf_type);
- return MFC_RET_DEC_GET_CONF_FAIL;
- }
- crc_data->luma0 = DecArg.args.get_config.out_config_value[0];
- crc_data->chroma0 = DecArg.args.get_config.out_config_value[1];
- break;
-
- case MFC_DEC_GETCONF_FRAME_TAG:
- *((unsigned int *)value) = pCTX->out_frametag_top;
- break;
-
- default:
- ALOGE("SsbSipMfcDecGetConfig: No such conf_type is supported.\n");
- return MFC_RET_INVALID_PARAM;
- }
-
- return MFC_RET_OK;
-}
diff --git a/sec_mm/sec_omx/sec_codecs/video/mfc_c110/enc/Android.mk b/sec_mm/sec_omx/sec_codecs/video/mfc_c110/enc/Android.mk
deleted file mode 100644
index d364b1c..0000000
--- a/sec_mm/sec_omx/sec_codecs/video/mfc_c110/enc/Android.mk
+++ /dev/null
@@ -1,26 +0,0 @@
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := \
- src/SsbSipMfcEncAPI.c
-
-LOCAL_MODULE := libsecmfcencapi.aries
-
-
-
-LOCAL_CFLAGS := -DUSE_FIMC_FRAME_BUFFER
-
-LOCAL_ARM_MODE := arm
-
-LOCAL_STATIC_LIBRARIES :=
-
-LOCAL_SHARED_LIBRARIES := liblog
-
-LOCAL_C_INCLUDES := \
- $(SEC_CODECS)/video/mfc_c110/include
-
-include $(BUILD_STATIC_LIBRARY)
-
diff --git a/sec_mm/sec_omx/sec_codecs/video/mfc_c110/enc/src/SsbSipMfcEncAPI.c b/sec_mm/sec_omx/sec_codecs/video/mfc_c110/enc/src/SsbSipMfcEncAPI.c
deleted file mode 100644
index a27fcc0..0000000
--- a/sec_mm/sec_omx/sec_codecs/video/mfc_c110/enc/src/SsbSipMfcEncAPI.c
+++ /dev/null
@@ -1,686 +0,0 @@
-/*
- * Copyright 2010 Samsung Electronics Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <fcntl.h>
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/ioctl.h>
-#include <sys/mman.h>
-#include <utils/Log.h>
-
-#include "SsbSipMfcApi.h"
-#include "mfc_interface.h"
-
-#define _MFCLIB_MAGIC_NUMBER 0x92241001
-
-void *SsbSipMfcEncOpen(void *value)
-{
- int hMFCOpen;
- _MFCLIB *pCTX;
- unsigned int mapped_addr;
- mfc_common_args EncArg;
- int ret_code;
-
- hMFCOpen = open(S5PC110_MFC_DEV_NAME, O_RDWR | O_NDELAY);
- if (hMFCOpen < 0) {
- ALOGE("SsbSipMfcEncOpen: MFC Open failure\n");
- return NULL;
- }
-
- pCTX = (_MFCLIB *)malloc(sizeof(_MFCLIB));
- if (pCTX == NULL) {
- ALOGE("SsbSipMfcEncOpen: malloc failed.\n");
- close(hMFCOpen);
- return NULL;
- }
-
- if (*(unsigned int *)value == NO_CACHE ||
- *(unsigned int *)value == CACHE) {
- EncArg.args.buf_type = *(unsigned int *)value;
- ret_code = ioctl(hMFCOpen, IOCTL_MFC_BUF_CACHE, &EncArg);
- if (EncArg.ret_code != MFC_RET_OK) {
- ALOGE("SsbSipMfcDecOpenExt: IOCTL_MFC_BUF_CACHE (%d) failed\n", EncArg.ret_code);
- }
- } else {
- ALOGE("SsbSipMfcDecOpenExt: value is invalid, value: %d\n", *(int *)value);
- }
-
- mapped_addr = (unsigned int)mmap(0, MMAP_BUFFER_SIZE_MMAP, PROT_READ | PROT_WRITE, MAP_SHARED, hMFCOpen, 0);
- if (!mapped_addr) {
- ALOGE("SsbSipMfcEncOpen: FIMV5.0 driver address mapping failed\n");
- return NULL;
- }
-
- memset(pCTX, 0, sizeof(_MFCLIB));
-
- pCTX->magic = _MFCLIB_MAGIC_NUMBER;
- pCTX->hMFC = hMFCOpen;
- pCTX->mapped_addr = mapped_addr;
- pCTX->inter_buff_status = MFC_USE_NONE;
-
- return (void *)pCTX;
-}
-
-SSBSIP_MFC_ERROR_CODE SsbSipMfcEncInit(void *openHandle, void *param)
-{
- int ret_code;
- int dpbBufSize;
-
- _MFCLIB *pCTX;
- mfc_common_args EncArg;
- mfc_common_args user_addr_arg, phys_addr_arg;
- SSBSIP_MFC_ENC_H264_PARAM *h264_arg;
- SSBSIP_MFC_ENC_MPEG4_PARAM *mpeg4_arg;
- SSBSIP_MFC_ENC_H263_PARAM *h263_arg;
- SSBSIP_MFC_CODEC_TYPE codec_type;
-
- pCTX = (_MFCLIB *)openHandle;
- memset(&EncArg, 0, sizeof(mfc_common_args));
-
- ALOGV("SsbSipMfcEncInit: Encode Init start\n");
-
- mpeg4_arg = (SSBSIP_MFC_ENC_MPEG4_PARAM *)param;
- codec_type = mpeg4_arg->codecType;
-
- if ((codec_type != MPEG4_ENC) &&
- (codec_type != H264_ENC) &&
- (codec_type != H263_ENC)) {
- ALOGE("SsbSipMfcEncOpen: Undefined codec type.\n");
- return MFC_RET_INVALID_PARAM;
- }
-
- pCTX->codec_type = codec_type;
-
- switch (pCTX->codec_type) {
- case MPEG4_ENC:
- ALOGV("SsbSipMfcEncInit: MPEG4 Encode\n");
- mpeg4_arg = (SSBSIP_MFC_ENC_MPEG4_PARAM *)param;
-
- pCTX->width = mpeg4_arg->SourceWidth;
- pCTX->height = mpeg4_arg->SourceHeight;
- break;
-
- case H263_ENC:
- ALOGV("SsbSipMfcEncInit: H263 Encode\n");
- h263_arg = (SSBSIP_MFC_ENC_H263_PARAM *)param;
-
- pCTX->width = h263_arg->SourceWidth;
- pCTX->height = h263_arg->SourceHeight;
- break;
-
- case H264_ENC:
- ALOGV("SsbSipMfcEncInit: H264 Encode\n");
- h264_arg = (SSBSIP_MFC_ENC_H264_PARAM *)param;
-
- pCTX->width = h264_arg->SourceWidth;
- pCTX->height = h264_arg->SourceHeight;
- break;
-
- default:
- break;
- }
-
- switch (pCTX->codec_type) {
- case MPEG4_ENC:
- mpeg4_arg = (SSBSIP_MFC_ENC_MPEG4_PARAM*)param;
-
- EncArg.args.enc_init_mpeg4.in_codec_type = pCTX->codec_type;
- EncArg.args.enc_init_mpeg4.in_profile_level = ENC_PROFILE_LEVEL(mpeg4_arg->ProfileIDC, mpeg4_arg->LevelIDC);
-
- EncArg.args.enc_init_mpeg4.in_width = mpeg4_arg->SourceWidth;
- EncArg.args.enc_init_mpeg4.in_height = mpeg4_arg->SourceHeight;
- EncArg.args.enc_init_mpeg4.in_gop_num = mpeg4_arg->IDRPeriod;
- if (mpeg4_arg->DisableQpelME)
- EncArg.args.enc_init_mpeg4.in_qpelME_enable = 0;
- else
- EncArg.args.enc_init_mpeg4.in_qpelME_enable = 1;
-
- EncArg.args.enc_init_mpeg4.in_MS_mode = mpeg4_arg->SliceMode;
- EncArg.args.enc_init_mpeg4.in_MS_size = mpeg4_arg->SliceArgument;
-
- if (mpeg4_arg->NumberBFrames > 2) {
- ALOGE("SsbSipMfcEncInit: No such BframeNum is supported.\n");
- return MFC_RET_INVALID_PARAM;
- }
- EncArg.args.enc_init_mpeg4.in_BframeNum = mpeg4_arg->NumberBFrames;
- EncArg.args.enc_init_mpeg4.in_mb_refresh = mpeg4_arg->RandomIntraMBRefresh;
-
- /* rate control*/
- EncArg.args.enc_init_mpeg4.in_RC_frm_enable = mpeg4_arg->EnableFRMRateControl;
- if ((mpeg4_arg->QSCodeMin > 51) || (mpeg4_arg->QSCodeMax > 51)) {
- ALOGE("SsbSipMfcEncInit: No such Min/Max QP is supported.\n");
- return MFC_RET_INVALID_PARAM;
- }
- EncArg.args.enc_init_mpeg4.in_RC_qbound = ENC_RC_QBOUND(mpeg4_arg->QSCodeMin, mpeg4_arg->QSCodeMax);
- EncArg.args.enc_init_mpeg4.in_RC_rpara = mpeg4_arg->CBRPeriodRf;
-
- /* pad control */
- EncArg.args.enc_init_mpeg4.in_pad_ctrl_on = mpeg4_arg->PadControlOn;
- if ((mpeg4_arg->LumaPadVal > 255) || (mpeg4_arg->CbPadVal > 255) || (mpeg4_arg->CrPadVal > 255)) {
- ALOGE("SsbSipMfcEncInit: No such Pad value is supported.\n");
- return MFC_RET_INVALID_PARAM;
- }
- EncArg.args.enc_init_mpeg4.in_luma_pad_val = mpeg4_arg->LumaPadVal;
- EncArg.args.enc_init_mpeg4.in_cb_pad_val = mpeg4_arg->CbPadVal;
- EncArg.args.enc_init_mpeg4.in_cr_pad_val = mpeg4_arg->CrPadVal;
- EncArg.args.enc_init_mpeg4.in_frame_map = mpeg4_arg->FrameMap;
-
- EncArg.args.enc_init_mpeg4.in_time_increament_res = mpeg4_arg->TimeIncreamentRes;
- EncArg.args.enc_init_mpeg4.in_time_vop_time_increament = mpeg4_arg->VopTimeIncreament;
- EncArg.args.enc_init_mpeg4.in_RC_framerate = (mpeg4_arg->TimeIncreamentRes / mpeg4_arg->VopTimeIncreament);
- EncArg.args.enc_init_mpeg4.in_RC_bitrate = mpeg4_arg->Bitrate;
- if ((mpeg4_arg->FrameQp > 51) || (mpeg4_arg->FrameQp_P) > 51 || (mpeg4_arg->FrameQp_B > 51)) {
- ALOGE("SsbSipMfcEncInit: No such FrameQp is supported.\n");
- return MFC_RET_INVALID_PARAM;
- }
- EncArg.args.enc_init_mpeg4.in_frame_qp = mpeg4_arg->FrameQp;
- if (mpeg4_arg->FrameQp_P)
- EncArg.args.enc_init_mpeg4.in_frame_P_qp = mpeg4_arg->FrameQp_P;
- else
- EncArg.args.enc_init_mpeg4.in_frame_P_qp = mpeg4_arg->FrameQp;
- if (mpeg4_arg->FrameQp_B)
- EncArg.args.enc_init_mpeg4.in_frame_B_qp = mpeg4_arg->FrameQp_B;
- else
- EncArg.args.enc_init_mpeg4.in_frame_B_qp = mpeg4_arg->FrameQp;
-
- break;
-
- case H263_ENC:
- h263_arg = (SSBSIP_MFC_ENC_H263_PARAM *)param;
-
- EncArg.args.enc_init_mpeg4.in_codec_type = pCTX->codec_type;
- EncArg.args.enc_init_mpeg4.in_profile_level = ENC_PROFILE_LEVEL(66, 40);
- EncArg.args.enc_init_mpeg4.in_width = h263_arg->SourceWidth;
- EncArg.args.enc_init_mpeg4.in_height = h263_arg->SourceHeight;
- EncArg.args.enc_init_mpeg4.in_gop_num = h263_arg->IDRPeriod;
- EncArg.args.enc_init_mpeg4.in_mb_refresh = h263_arg->RandomIntraMBRefresh;
- EncArg.args.enc_init_mpeg4.in_MS_mode = h263_arg->SliceMode;
- EncArg.args.enc_init_mpeg4.in_MS_size = 0;
-
- /* rate control*/
- EncArg.args.enc_init_mpeg4.in_RC_frm_enable = h263_arg->EnableFRMRateControl;
- if ((h263_arg->QSCodeMin > 51) || (h263_arg->QSCodeMax > 51)) {
- ALOGE("SsbSipMfcEncInit: No such Min/Max QP is supported.\n");
- return MFC_RET_INVALID_PARAM;
- }
- EncArg.args.enc_init_mpeg4.in_RC_qbound = ENC_RC_QBOUND(h263_arg->QSCodeMin, h263_arg->QSCodeMax);
- EncArg.args.enc_init_mpeg4.in_RC_rpara = h263_arg->CBRPeriodRf;
-
- /* pad control */
- EncArg.args.enc_init_mpeg4.in_pad_ctrl_on = h263_arg->PadControlOn;
- if ((h263_arg->LumaPadVal > 255) || (h263_arg->CbPadVal > 255) || (h263_arg->CrPadVal > 255)) {
- ALOGE("SsbSipMfcEncInit: No such Pad value is supported.\n");
- return MFC_RET_INVALID_PARAM;
- }
- EncArg.args.enc_init_mpeg4.in_luma_pad_val = h263_arg->LumaPadVal;
- EncArg.args.enc_init_mpeg4.in_cb_pad_val = h263_arg->CbPadVal;
- EncArg.args.enc_init_mpeg4.in_cr_pad_val = h263_arg->CrPadVal;
- EncArg.args.enc_init_mpeg4.in_frame_map = mpeg4_arg->FrameMap;
-
- EncArg.args.enc_init_mpeg4.in_RC_framerate = h263_arg->FrameRate;
- EncArg.args.enc_init_mpeg4.in_RC_bitrate = h263_arg->Bitrate;
- if (h263_arg->FrameQp > 51) {
- ALOGE("SsbSipMfcEncInit: No such FrameQp is supported.\n");
- return MFC_RET_INVALID_PARAM;
- }
- EncArg.args.enc_init_mpeg4.in_frame_qp = h263_arg->FrameQp;
- if (h263_arg->FrameQp_P)
- EncArg.args.enc_init_mpeg4.in_frame_P_qp = h263_arg->FrameQp_P;
- else
- EncArg.args.enc_init_mpeg4.in_frame_P_qp = h263_arg->FrameQp;
-
- break;
-
- case H264_ENC:
- h264_arg = (SSBSIP_MFC_ENC_H264_PARAM *)param;
-
- EncArg.args.enc_init_h264.in_codec_type = H264_ENC;
- EncArg.args.enc_init_h264.in_profile_level = ENC_PROFILE_LEVEL(h264_arg->ProfileIDC, h264_arg->LevelIDC);
-
- EncArg.args.enc_init_h264.in_width = h264_arg->SourceWidth;
- EncArg.args.enc_init_h264.in_height = h264_arg->SourceHeight;
- EncArg.args.enc_init_h264.in_gop_num = h264_arg->IDRPeriod;
-
- if ((h264_arg->NumberRefForPframes > 2) || (h264_arg->NumberReferenceFrames > 2)) {
- ALOGE("SsbSipMfcEncInit: No such ref Num is supported.\n");
- return MFC_RET_INVALID_PARAM;
- }
- EncArg.args.enc_init_h264.in_reference_num = h264_arg->NumberReferenceFrames;
- EncArg.args.enc_init_h264.in_ref_num_p = h264_arg->NumberRefForPframes;
-
- if ((h264_arg->SliceMode == 0) || (h264_arg->SliceMode == 1) ||
- (h264_arg->SliceMode == 2) || (h264_arg->SliceMode == 4)) {
- EncArg.args.enc_init_h264.in_MS_mode = h264_arg->SliceMode;
- } else {
- ALOGE("SsbSipMfcEncInit: No such slice mode is supported.\n");
- return MFC_RET_INVALID_PARAM;
- }
- EncArg.args.enc_init_h264.in_MS_size = h264_arg->SliceArgument;
-
- if (h264_arg->NumberBFrames > 2) {
- ALOGE("SsbSipMfcEncInit: No such BframeNum is supported.\n");
- return MFC_RET_INVALID_PARAM;
- }
- EncArg.args.enc_init_h264.in_BframeNum = h264_arg->NumberBFrames;
-
- EncArg.args.enc_init_h264.in_deblock_filt = h264_arg->LoopFilterDisable;
- if ((abs(h264_arg->LoopFilterAlphaC0Offset) > 6) || (abs(h264_arg->LoopFilterBetaOffset) > 6)) {
- ALOGE("SsbSipMfcEncInit: No such AlphaC0Offset or BetaOffset is supported.\n");
- return MFC_RET_INVALID_PARAM;
- }
- EncArg.args.enc_init_h264.in_deblock_alpha_C0 = h264_arg->LoopFilterAlphaC0Offset;
- EncArg.args.enc_init_h264.in_deblock_beta = h264_arg->LoopFilterBetaOffset;
-
- EncArg.args.enc_init_h264.in_symbolmode = h264_arg->SymbolMode;
- EncArg.args.enc_init_h264.in_interlace_mode = h264_arg->PictureInterlace;
- EncArg.args.enc_init_h264.in_transform8x8_mode = h264_arg->Transform8x8Mode;
-
- EncArg.args.enc_init_h264.in_mb_refresh = h264_arg->RandomIntraMBRefresh;
-
- /* pad control */
- EncArg.args.enc_init_h264.in_pad_ctrl_on = h264_arg->PadControlOn;
- if ((h264_arg->LumaPadVal > 255) || (h264_arg->CbPadVal > 255) || (h264_arg->CrPadVal > 255)) {
- ALOGE("SsbSipMfcEncInit: No such Pad value is supported.\n");
- return MFC_RET_INVALID_PARAM;
- }
- EncArg.args.enc_init_h264.in_luma_pad_val = h264_arg->LumaPadVal;
- EncArg.args.enc_init_h264.in_cb_pad_val = h264_arg->CbPadVal;
- EncArg.args.enc_init_h264.in_cr_pad_val = h264_arg->CrPadVal;
- EncArg.args.enc_init_mpeg4.in_frame_map = mpeg4_arg->FrameMap;
-
- /* rate control*/
- EncArg.args.enc_init_h264.in_RC_frm_enable = h264_arg->EnableFRMRateControl;
- EncArg.args.enc_init_h264.in_RC_mb_enable = h264_arg->EnableMBRateControl;
- EncArg.args.enc_init_h264.in_RC_framerate = h264_arg->FrameRate;
- EncArg.args.enc_init_h264.in_RC_bitrate = h264_arg->Bitrate;
- if (h264_arg->FrameQp > 51) {
- ALOGE("SsbSipMfcEncInit: No such FrameQp is supported.\n");
- return MFC_RET_INVALID_PARAM;
- }
- EncArg.args.enc_init_h264.in_frame_qp = h264_arg->FrameQp;
- if (h264_arg->FrameQp_P)
- EncArg.args.enc_init_h264.in_frame_P_qp = h264_arg->FrameQp_P;
- else
- EncArg.args.enc_init_h264.in_frame_P_qp = h264_arg->FrameQp;
- if (h264_arg->FrameQp_B)
- EncArg.args.enc_init_h264.in_frame_B_qp = h264_arg->FrameQp_B;
- else
- EncArg.args.enc_init_h264.in_frame_B_qp = h264_arg->FrameQp;
-
- if ((h264_arg->QSCodeMin > 51) || (h264_arg->QSCodeMax > 51)) {
- ALOGE("SsbSipMfcEncInit: No such Min/Max QP is supported.\n");
- return MFC_RET_INVALID_PARAM;
- }
- EncArg.args.enc_init_h264.in_RC_qbound = ENC_RC_QBOUND(h264_arg->QSCodeMin, h264_arg->QSCodeMax);
- EncArg.args.enc_init_h264.in_RC_rpara = h264_arg->CBRPeriodRf;
- EncArg.args.enc_init_h264.in_RC_mb_dark_disable = h264_arg->DarkDisable;
- EncArg.args.enc_init_h264.in_RC_mb_smooth_disable = h264_arg->SmoothDisable;
- EncArg.args.enc_init_h264.in_RC_mb_static_disable = h264_arg->StaticDisable;
- EncArg.args.enc_init_h264.in_RC_mb_activity_disable = h264_arg->ActivityDisable;
-
- /* default setting */
- EncArg.args.enc_init_h264.in_md_interweight_pps = 0;
- EncArg.args.enc_init_h264.in_md_intraweight_pps = 0;
- break;
-
- default:
- break;
- }
-
- EncArg.args.enc_init_mpeg4.in_mapped_addr = pCTX->mapped_addr;
-
- ret_code = ioctl(pCTX->hMFC, IOCTL_MFC_ENC_INIT, &EncArg);
- if (EncArg.ret_code != MFC_RET_OK) {
- ALOGE("SsbSipMfcEncInit: IOCTL_MFC_ENC_INIT (%d) failed\n", EncArg.ret_code);
- return MFC_RET_ENC_INIT_FAIL;
- }
-
- pCTX->virStrmBuf = EncArg.args.enc_init_mpeg4.out_u_addr.strm_ref_y;
- pCTX->phyStrmBuf = EncArg.args.enc_init_mpeg4.out_p_addr.strm_ref_y;
- pCTX->sizeStrmBuf = MAX_ENCODER_OUTPUT_BUFFER_SIZE;
- pCTX->encodedHeaderSize = EncArg.args.enc_init_mpeg4.out_header_size;
-
- pCTX->virMvRefYC = EncArg.args.enc_init_mpeg4.out_u_addr.mv_ref_yc;
-
- pCTX->inter_buff_status |= MFC_USE_STRM_BUFF;
-
- return MFC_RET_OK;
-}
-
-SSBSIP_MFC_ERROR_CODE SsbSipMfcEncExe(void *openHandle)
-{
- int ret_code;
- _MFCLIB *pCTX;
- mfc_common_args EncArg;
-
- if (openHandle == NULL) {
- ALOGE("SsbSipMfcEncExe: openHandle is NULL\n");
- return MFC_RET_INVALID_PARAM;
- }
-
- pCTX = (_MFCLIB *)openHandle;
-
- memset(&EncArg, 0x00, sizeof(mfc_common_args));
-
- EncArg.args.enc_exe.in_codec_type = pCTX->codec_type;
- EncArg.args.enc_exe.in_Y_addr = (unsigned int)pCTX->phyFrmBuf.luma;
- EncArg.args.enc_exe.in_CbCr_addr = (unsigned int)pCTX->phyFrmBuf.chroma;
- EncArg.args.enc_exe.in_Y_addr_vir = (unsigned int)pCTX->virFrmBuf.luma;
- EncArg.args.enc_exe.in_CbCr_addr_vir = (unsigned int)pCTX->virFrmBuf.chroma;
- EncArg.args.enc_exe.in_strm_st = (unsigned int)pCTX->phyStrmBuf;
- EncArg.args.enc_exe.in_strm_end = (unsigned int)pCTX->phyStrmBuf + pCTX->sizeStrmBuf;
- EncArg.args.enc_exe.in_frametag = pCTX->in_frametag;
- if (pCTX->encode_cnt == 0) {
- EncArg.args.enc_exe.in_strm_st = (unsigned int)pCTX->phyStrmBuf;
- EncArg.args.enc_exe.in_strm_end = (unsigned int)pCTX->phyStrmBuf + pCTX->sizeStrmBuf;
- } else {
- EncArg.args.enc_exe.in_strm_st = (unsigned int)pCTX->phyStrmBuf + (MAX_ENCODER_OUTPUT_BUFFER_SIZE/2);
- EncArg.args.enc_exe.in_strm_end = (unsigned int)pCTX->phyStrmBuf + (MAX_ENCODER_OUTPUT_BUFFER_SIZE/2) + pCTX->sizeStrmBuf;
- }
-
- ret_code = ioctl(pCTX->hMFC, IOCTL_MFC_ENC_EXE, &EncArg);
- if (EncArg.ret_code != MFC_RET_OK) {
- ALOGE("SsbSipMfcDecExe: IOCTL_MFC_ENC_EXE failed(ret : %d)\n", EncArg.ret_code);
- return MFC_RET_ENC_EXE_ERR;
- }
-
- pCTX->encodedDataSize = EncArg.args.enc_exe.out_encoded_size;
- pCTX->encodedframeType = EncArg.args.enc_exe.out_frame_type;
- pCTX->encoded_Y_paddr = EncArg.args.enc_exe.out_encoded_Y_paddr;
- pCTX->encoded_C_paddr = EncArg.args.enc_exe.out_encoded_C_paddr;
- pCTX->out_frametag_top = EncArg.args.enc_exe.out_frametag_top;
- pCTX->out_frametag_bottom = EncArg.args.enc_exe.out_frametag_bottom;
-
- return MFC_RET_OK;
-}
-
-SSBSIP_MFC_ERROR_CODE SsbSipMfcEncClose(void *openHandle)
-{
- int ret_code;
- _MFCLIB *pCTX;
- mfc_common_args free_arg;
-
- if (openHandle == NULL) {
- ALOGE("SsbSipMfcEncClose: openHandle is NULL\n");
- return MFC_RET_INVALID_PARAM;
- }
-
- pCTX = (_MFCLIB *)openHandle;
-
- if (pCTX->inter_buff_status & MFC_USE_YUV_BUFF) {
- free_arg.args.mem_free.u_addr = pCTX->virFrmBuf.luma;
- ret_code = ioctl(pCTX->hMFC, IOCTL_MFC_FREE_BUF, &free_arg);
- }
-
- if (pCTX->inter_buff_status & MFC_USE_STRM_BUFF) {
- free_arg.args.mem_free.u_addr = pCTX->virStrmBuf;
- ret_code = ioctl(pCTX->hMFC, IOCTL_MFC_FREE_BUF, &free_arg);
- free_arg.args.mem_free.u_addr = pCTX->virMvRefYC;
- ret_code = ioctl(pCTX->hMFC, IOCTL_MFC_FREE_BUF, &free_arg);
- }
-
- pCTX->inter_buff_status = MFC_USE_NONE;
-
- munmap((void *)pCTX->mapped_addr, MMAP_BUFFER_SIZE_MMAP);
- close(pCTX->hMFC);
- free(pCTX);
-
- return MFC_RET_OK;
-}
-
-SSBSIP_MFC_ERROR_CODE SsbSipMfcEncSetSize(void *openHandle, SSBSIP_MFC_CODEC_TYPE codecType, int nWidth, int nHeight)
-{
- _MFCLIB *pCTX = (_MFCLIB *)openHandle;
-
- if (pCTX == NULL)
- return MFC_RET_INVALID_PARAM;
-
- if (nWidth <= 0 || nHeight <= 0)
- return MFC_RET_INVALID_PARAM;
- pCTX->width = nWidth;
- pCTX->height = nHeight;
-
- if ((H264_ENC != codecType) &&
- (MPEG4_ENC != codecType) &&
- (H263_ENC != codecType))
- return MFC_RET_INVALID_PARAM;
- pCTX->codec_type = codecType;
-
- return MFC_RET_OK;
-}
-
-SSBSIP_MFC_ERROR_CODE SsbSipMfcEncGetInBuf(void *openHandle, SSBSIP_MFC_ENC_INPUT_INFO *input_info)
-{
- int ret_code;
- _MFCLIB *pCTX;
- mfc_common_args user_addr_arg, phys_addr_arg;
- int y_size, c_size;
- int aligned_y_size, aligned_c_size;
-
- if (openHandle == NULL) {
- ALOGE("SsbSipMfcEncGetInBuf: openHandle is NULL\n");
- return MFC_RET_INVALID_PARAM;
- }
-
- pCTX = (_MFCLIB *)openHandle;
-
- user_addr_arg.args.mem_alloc.codec_type = pCTX->codec_type;
-
- y_size = pCTX->width * pCTX->height;
- c_size = (pCTX->width * pCTX->height) >> 1;
-
- aligned_y_size = ALIGN_TO_8KB(ALIGN_TO_128B(pCTX->width) * ALIGN_TO_32B(pCTX->height));
- aligned_c_size = ALIGN_TO_8KB(ALIGN_TO_128B(pCTX->width) * ALIGN_TO_32B(pCTX->height/2));
-
- /* Allocate luma & chroma buf */
- user_addr_arg.args.mem_alloc.buff_size = aligned_y_size + aligned_c_size;
- user_addr_arg.args.mem_alloc.mapped_addr = pCTX->mapped_addr;
- ret_code = ioctl(pCTX->hMFC, IOCTL_MFC_GET_IN_BUF, &user_addr_arg);
- if (ret_code < 0) {
- ALOGE("SsbSipMfcEncGetInBuf: IOCTL_MFC_GET_IN_BUF failed\n");
- return MFC_RET_ENC_GET_INBUF_FAIL;
- }
- pCTX->virFrmBuf.luma = user_addr_arg.args.mem_alloc.out_uaddr;
- pCTX->virFrmBuf.chroma = user_addr_arg.args.mem_alloc.out_uaddr + (unsigned int)aligned_y_size;
- pCTX->phyFrmBuf.luma = user_addr_arg.args.mem_alloc.out_paddr;
- pCTX->phyFrmBuf.chroma = user_addr_arg.args.mem_alloc.out_paddr + (unsigned int)aligned_y_size;
-
- pCTX->sizeFrmBuf.luma = (unsigned int)y_size;
- pCTX->sizeFrmBuf.chroma = (unsigned int)c_size;
- pCTX->inter_buff_status |= MFC_USE_YUV_BUFF;
-
- input_info->YPhyAddr = (void*)pCTX->phyFrmBuf.luma;
- input_info->CPhyAddr = (void*)pCTX->phyFrmBuf.chroma;
- input_info->YVirAddr = (void*)pCTX->virFrmBuf.luma;
- input_info->CVirAddr = (void*)pCTX->virFrmBuf.chroma;
-
- input_info->YSize = aligned_y_size;
- input_info->CSize = aligned_c_size;
-
- return MFC_RET_OK;
-}
-
-SSBSIP_MFC_ERROR_CODE SsbSipMfcEncSetInBuf(void *openHandle, SSBSIP_MFC_ENC_INPUT_INFO *input_info)
-{
- _MFCLIB *pCTX;
-
- if (openHandle == NULL) {
- ALOGE("SsbSipMfcEncSetInBuf: openHandle is NULL\n");
- return MFC_RET_INVALID_PARAM;
- }
-
- ALOGV("SsbSipMfcEncSetInBuf: input_info->YPhyAddr & input_info->CPhyAddr should be 64KB aligned\n");
-
- pCTX = (_MFCLIB *)openHandle;
-
- pCTX->phyFrmBuf.luma = (unsigned int)input_info->YPhyAddr;
- pCTX->phyFrmBuf.chroma = (unsigned int)input_info->CPhyAddr;
- pCTX->virFrmBuf.luma = (unsigned int)input_info->YVirAddr;
- pCTX->virFrmBuf.chroma = (unsigned int)input_info->CVirAddr;
-
- pCTX->sizeFrmBuf.luma = (unsigned int)input_info->YSize;
- pCTX->sizeFrmBuf.chroma = (unsigned int)input_info->CSize;
-
- return MFC_RET_OK;
-}
-
-SSBSIP_MFC_ERROR_CODE SsbSipMfcEncGetOutBuf(void *openHandle, SSBSIP_MFC_ENC_OUTPUT_INFO *output_info)
-{
- _MFCLIB *pCTX;
-
- if (openHandle == NULL) {
- ALOGE("SsbSipMfcEncGetOutBuf: openHandle is NULL\n");
- return MFC_RET_INVALID_PARAM;
- }
-
- pCTX = (_MFCLIB *)openHandle;
-
- output_info->headerSize = pCTX->encodedHeaderSize;
- output_info->dataSize = pCTX->encodedDataSize;
-
- if (pCTX->encode_cnt == 0) {
- output_info->StrmPhyAddr = (void *)pCTX->phyStrmBuf;
- output_info->StrmVirAddr = (void *)pCTX->virStrmBuf;
- } else {
- output_info->StrmPhyAddr = (unsigned char *)pCTX->phyStrmBuf + (MAX_ENCODER_OUTPUT_BUFFER_SIZE/2);
- output_info->StrmVirAddr = (unsigned char *)pCTX->virStrmBuf + (MAX_ENCODER_OUTPUT_BUFFER_SIZE/2);
- }
-
- pCTX->encode_cnt ++;
- pCTX->encode_cnt %= 2;
-
- if (pCTX->encodedframeType == 0)
- output_info->frameType = MFC_FRAME_TYPE_NOT_CODED;
- else if (pCTX->encodedframeType == 1)
- output_info->frameType = MFC_FRAME_TYPE_I_FRAME;
- else if (pCTX->encodedframeType == 2)
- output_info->frameType = MFC_FRAME_TYPE_P_FRAME;
- else if (pCTX->encodedframeType == 3)
- output_info->frameType = MFC_FRAME_TYPE_B_FRAME;
- else if (pCTX->encodedframeType == 4)
- output_info->frameType = MFC_FRAME_TYPE_OTHERS;
- else {
- ALOGE("Strange encoded frame type = %d\n", pCTX->encodedframeType);
- return MFC_RET_INVALID_PARAM;
- }
-
- output_info->encodedYPhyAddr = (void *)pCTX->encoded_Y_paddr;
- output_info->encodedCPhyAddr = (void *)pCTX->encoded_C_paddr;
-
- return MFC_RET_OK;
-}
-
-SSBSIP_MFC_ERROR_CODE SsbSipMfcEncSetOutBuf(void *openHandle, void *phyOutbuf, void *virOutbuf, int outputBufferSize)
-{
- _MFCLIB *pCTX;
-
- if (openHandle == NULL) {
- ALOGE("SsbSipMfcEncSetOutBuf: openHandle is NULL\n");
- return MFC_RET_INVALID_PARAM;
- }
-
- pCTX = (_MFCLIB *)openHandle;
-
- pCTX->phyStrmBuf = (int)phyOutbuf;
- pCTX->virStrmBuf = (int)virOutbuf;
- pCTX->sizeStrmBuf = outputBufferSize;
-
- return MFC_RET_OK;
-}
-
-SSBSIP_MFC_ERROR_CODE SsbSipMfcEncSetConfig(void *openHandle, SSBSIP_MFC_ENC_CONF conf_type, void *value)
-{
- int ret_code;
- _MFCLIB *pCTX;
- mfc_common_args EncArg;
-
- if (openHandle == NULL) {
- ALOGE("SsbSipMfcEncSetConfig: openHandle is NULL\n");
- return MFC_RET_INVALID_PARAM;
- }
-
- if (value == NULL) {
- ALOGE("SsbSipMfcEncSetConfig: value is NULL\n");
- return MFC_RET_INVALID_PARAM;
- }
-
- pCTX = (_MFCLIB *)openHandle;
- memset(&EncArg, 0x00, sizeof(mfc_common_args));
-
- switch (conf_type) {
- case MFC_ENC_SETCONF_FRAME_TYPE:
- case MFC_ENC_SETCONF_CHANGE_FRAME_RATE:
- case MFC_ENC_SETCONF_CHANGE_BIT_RATE:
- case MFC_ENC_SETCONF_ALLOW_FRAME_SKIP:
- EncArg.args.set_config.in_config_param = conf_type;
- EncArg.args.set_config.in_config_value[0] = *((unsigned int *) value);
- EncArg.args.set_config.in_config_value[1] = 0;
- break;
-
- case MFC_ENC_SETCONF_FRAME_TAG:
- pCTX->in_frametag = *((int *)value);
- return MFC_RET_OK;
-
- default:
- ALOGE("SsbSipMfcEncSetConfig: No such conf_type is supported.\n");
- return MFC_RET_INVALID_PARAM;
- }
-
- ret_code = ioctl(pCTX->hMFC, IOCTL_MFC_SET_CONFIG, &EncArg);
- if (EncArg.ret_code != MFC_RET_OK) {
- ALOGE("SsbSipMfcEncSetConfig: IOCTL_MFC_SET_CONFIG failed(ret : %d)\n", EncArg.ret_code);
- return MFC_RET_ENC_SET_CONF_FAIL;
- }
-
- return MFC_RET_OK;
-}
-
-SSBSIP_MFC_ERROR_CODE SsbSipMfcEncGetConfig(void *openHandle, SSBSIP_MFC_ENC_CONF conf_type, void *value)
-{
- int ret_code;
- _MFCLIB *pCTX;
- mfc_common_args EncArg;
-
- pCTX = (_MFCLIB *)openHandle;
-
- if (openHandle == NULL) {
- ALOGE("SsbSipMfcEncGetConfig: openHandle is NULL\n");
- return MFC_RET_INVALID_PARAM;
- }
- if (value == NULL) {
- ALOGE("SsbSipMfcEncGetConfig: value is NULL\n");
- return MFC_RET_INVALID_PARAM;
- }
-
- pCTX = (_MFCLIB *)openHandle;
- memset(&EncArg, 0x00, sizeof(mfc_common_args));
-
- switch (conf_type) {
- case MFC_ENC_GETCONF_FRAME_TAG:
- *((unsigned int *)value) = pCTX->out_frametag_top;
- break;
-
- default:
- ALOGE("SsbSipMfcEncGetConfig: No such conf_type is supported.\n");
- return MFC_RET_INVALID_PARAM;
- }
-
- return MFC_RET_OK;
-}
diff --git a/sec_mm/sec_omx/sec_codecs/video/mfc_c110/include/SsbSipMfcApi.h b/sec_mm/sec_omx/sec_codecs/video/mfc_c110/include/SsbSipMfcApi.h
deleted file mode 100644
index 118e1ba..0000000
--- a/sec_mm/sec_omx/sec_codecs/video/mfc_c110/include/SsbSipMfcApi.h
+++ /dev/null
@@ -1,332 +0,0 @@
-/*
- * Copyright 2010 Samsung Electronics Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _SSBSIP_MFC_API_H_
-#define _SSBSIP_MFC_API_H_
-
-/*--------------------------------------------------------------------------------*/
-/* Definition */
-/*--------------------------------------------------------------------------------*/
-#define MAX_DECODER_INPUT_BUFFER_SIZE (1024 * 3072)
-#define MAX_ENCODER_OUTPUT_BUFFER_SIZE (1024 * 3072)
-
-#define MMAP_BUFFER_SIZE_MMAP (35328*1024) // 34.5*1024*1024
-
-#define S5PC110_MFC_DEV_NAME "/dev/s3c-mfc"
-
-/*--------------------------------------------------------------------------------*/
-/* Structure and Type */
-/*--------------------------------------------------------------------------------*/
-typedef enum {
- H264_DEC,
- VC1_DEC, /* VC1 advaced Profile decoding */
- MPEG4_DEC,
- XVID_DEC,
- MPEG1_DEC,
- MPEG2_DEC,
- H263_DEC,
- VC1RCV_DEC, /* VC1 simple/main profile decoding */
- FIMV1_DEC,
- FIMV2_DEC,
- FIMV3_DEC,
- FIMV4_DEC,
- H264_ENC,
- MPEG4_ENC,
- H263_ENC,
- UNKNOWN_TYPE
-} SSBSIP_MFC_CODEC_TYPE;
-
-typedef enum {
- DONT_CARE = 0,
- I_FRAME = 1,
- NOT_CODED = 2
-} SSBSIP_MFC_FORCE_SET_FRAME_TYPE;
-
-typedef enum {
- NV12_LINEAR = 0,
- NV12_TILE
-} SSBSIP_MFC_INSTRM_MODE_TYPE;
-
-typedef enum {
- NO_CACHE = 0,
- CACHE = 1
-} SSBIP_MFC_BUFFER_TYPE;
-
-typedef enum {
- MFC_DEC_SETCONF_POST_ENABLE = 1,
- MFC_DEC_SETCONF_EXTRA_BUFFER_NUM,
- MFC_DEC_SETCONF_DISPLAY_DELAY,
- MFC_DEC_SETCONF_IS_LAST_FRAME,
- MFC_DEC_SETCONF_SLICE_ENABLE,
- MFC_DEC_SETCONF_CRC_ENABLE,
- MFC_DEC_SETCONF_FIMV1_WIDTH_HEIGHT,
- MFC_DEC_SETCONF_FRAME_TAG,
- MFC_DEC_GETCONF_CRC_DATA,
- MFC_DEC_GETCONF_BUF_WIDTH_HEIGHT,
- MFC_DEC_GETCONF_CROP_INFO,
- MFC_DEC_GETCONF_FRAME_TAG
-} SSBSIP_MFC_DEC_CONF;
-
-typedef enum {
- MFC_ENC_SETCONF_FRAME_TYPE = 100,
- MFC_ENC_SETCONF_CHANGE_FRAME_RATE,
- MFC_ENC_SETCONF_CHANGE_BIT_RATE,
- MFC_ENC_SETCONF_FRAME_TAG,
- MFC_ENC_SETCONF_ALLOW_FRAME_SKIP,
- MFC_ENC_GETCONF_FRAME_TAG
-} SSBSIP_MFC_ENC_CONF;
-
-typedef enum {
- MFC_GETOUTBUF_STATUS_NULL = 0,
- MFC_GETOUTBUF_DECODING_ONLY = 1,
- MFC_GETOUTBUF_DISPLAY_DECODING,
- MFC_GETOUTBUF_DISPLAY_ONLY,
- MFC_GETOUTBUF_DISPLAY_END
-} SSBSIP_MFC_DEC_OUTBUF_STATUS;
-
-typedef enum {
- MFC_FRAME_TYPE_NOT_CODED,
- MFC_FRAME_TYPE_I_FRAME,
- MFC_FRAME_TYPE_P_FRAME,
- MFC_FRAME_TYPE_B_FRAME,
- MFC_FRAME_TYPE_OTHERS
-} SSBSIP_MFC_FRAME_TYPE;
-
-typedef enum {
- MFC_RET_OK = 1,
- MFC_RET_FAIL = -1000,
- MFC_RET_OPEN_FAIL = -1001,
- MFC_RET_CLOSE_FAIL = -1002,
-
- MFC_RET_DEC_INIT_FAIL = -2000,
- MFC_RET_DEC_EXE_TIME_OUT = -2001,
- MFC_RET_DEC_EXE_ERR = -2002,
- MFC_RET_DEC_GET_INBUF_FAIL = -2003,
- MFC_RET_DEC_SET_INBUF_FAIL = -2004,
- MFC_RET_DEC_GET_OUTBUF_FAIL = -2005,
- MFC_RET_DEC_GET_CONF_FAIL = -2006,
- MFC_RET_DEC_SET_CONF_FAIL = -2007,
-
- MFC_RET_ENC_INIT_FAIL = -3000,
- MFC_RET_ENC_EXE_TIME_OUT = -3001,
- MFC_RET_ENC_EXE_ERR = -3002,
- MFC_RET_ENC_GET_INBUF_FAIL = -3003,
- MFC_RET_ENC_SET_INBUF_FAIL = -3004,
- MFC_RET_ENC_GET_OUTBUF_FAIL = -3005,
- MFC_RET_ENC_SET_OUTBUF_FAIL = -3006,
- MFC_RET_ENC_GET_CONF_FAIL = -3007,
- MFC_RET_ENC_SET_CONF_FAIL = -3008,
-
- MFC_RET_INVALID_PARAM = -4000
-} SSBSIP_MFC_ERROR_CODE;
-
-typedef struct {
- void *YPhyAddr; // [OUT] physical address of Y
- void *CPhyAddr; // [OUT] physical address of CbCr
- void *YVirAddr; // [OUT] virtual address of Y
- void *CVirAddr; // [OUT] virtual address of CbCr
-
- int img_width; // [OUT] width of real image
- int img_height; // [OUT] height of real image
- int buf_width; // [OUT] width aligned to 16
- int buf_height; // [OUT] height alighed to 16
-
- int timestamp_top; // [OUT] timestamp of top filed(This is used for interlaced stream)
- int timestamp_bottom; // [OUT] timestamp of bottom filed(This is used for interlaced stream)
- int consumedByte; // [OUT] the number of byte consumed during decoding
- int res_change; // [OUT] whether resolution is changed or not. 0: not change, 1: increased, 2: decreased
- int crop_top_offset; // [OUT] crop information, top_offset
- int crop_bottom_offset; // [OUT] crop information, bottom_offset
- int crop_left_offset; // [OUT] crop information, left_offset
- int crop_right_offset; // [OUT] crop information, right_offset
-} SSBSIP_MFC_DEC_OUTPUT_INFO;
-
-typedef struct {
- void *YPhyAddr; // [IN/OUT] physical address of Y
- void *CPhyAddr; // [IN/OUT] physical address of CbCr
- void *YVirAddr; // [IN/OUT] virtual address of Y
- void *CVirAddr; // [IN/OUT] virtual address of CbCr
- int YSize; // [IN/OUT] input size of Y data
- int CSize; // [IN/OUT] input size of CbCr data
-} SSBSIP_MFC_ENC_INPUT_INFO;
-
-typedef struct {
- unsigned int dataSize; // [OUT] encoded data size(without header)
- unsigned int headerSize; // [OUT] encoded header size
- unsigned int frameType; // [OUT] frame type of encoded stream
- void *StrmPhyAddr; // [OUT] physical address of Y
- void *StrmVirAddr; // [OUT] virtual address of Y
- void *encodedYPhyAddr; // [OUT] physical address of Y which is flushed
- void *encodedCPhyAddr; // [OUT] physical address of C which is flushed
-} SSBSIP_MFC_ENC_OUTPUT_INFO;
-
-typedef struct {
- // common parameters
- SSBSIP_MFC_CODEC_TYPE codecType; // [IN] codec type
- int SourceWidth; // [IN] width of video to be encoded
- int SourceHeight; // [IN] height of video to be encoded
- int IDRPeriod; // [IN] GOP number(interval of I-frame)
- int SliceMode; // [IN] Multi slice mode
- int RandomIntraMBRefresh; // [IN] cyclic intra refresh
- int EnableFRMRateControl; // [IN] frame based rate control enable
- int Bitrate; // [IN] rate control parameter(bit rate)
- int FrameQp; // [IN] The quantization parameter of the frame
- int FrameQp_P; // [IN] The quantization parameter of the P frame
- int QSCodeMax; // [IN] Maximum Quantization value
- int QSCodeMin; // [IN] Minimum Quantization value
- int CBRPeriodRf; // [IN] Reaction coefficient parameter for rate control
- int PadControlOn; // [IN] Enable padding control
- int LumaPadVal; // [IN] Luma pel value used to fill padding area
- int CbPadVal; // [IN] CB pel value used to fill padding area
- int CrPadVal; // [IN] CR pel value used to fill padding area
- int FrameMap; // [IN] Encoding input mode(tile mode or linear mode)
-
- // H.264 specific parameters
- int ProfileIDC; // [IN] profile
- int LevelIDC; // [IN] level
- int FrameQp_B; // [IN] The quantization parameter of the B frame
- int FrameRate; // [IN] rate control parameter(frame rate)
- int SliceArgument; // [IN] MB number or byte number
- int NumberBFrames; // [IN] The number of consecutive B frame inserted
- int NumberReferenceFrames; // [IN] The number of reference pictures used
- int NumberRefForPframes; // [IN] The number of reference pictures used for encoding P pictures
- int LoopFilterDisable; // [IN] disable the loop filter
- int LoopFilterAlphaC0Offset; // [IN] Alpha & C0 offset for H.264 loop filter
- int LoopFilterBetaOffset; // [IN] Beta offset for H.264 loop filter
- int SymbolMode; // [IN] The mode of entropy coding(CABAC, CAVLC)
- int PictureInterlace; // [IN] Enables the interlace mode
- int Transform8x8Mode; // [IN] Allow 8x8 transform(This is allowed only for high profile)
- int EnableMBRateControl; // [IN] Enable macroblock-level rate control
- int DarkDisable; // [IN] Disable adaptive rate control on dark region
- int SmoothDisable; // [IN] Disable adaptive rate control on smooth region
- int StaticDisable; // [IN] Disable adaptive rate control on static region
- int ActivityDisable; // [IN] Disable adaptive rate control on high activity region
-} SSBSIP_MFC_ENC_H264_PARAM;
-
-typedef struct {
- // common parameters
- SSBSIP_MFC_CODEC_TYPE codecType; // [IN] codec type
- int SourceWidth; // [IN] width of video to be encoded
- int SourceHeight; // [IN] height of video to be encoded
- int IDRPeriod; // [IN] GOP number(interval of I-frame)
- int SliceMode; // [IN] Multi slice mode
- int RandomIntraMBRefresh; // [IN] cyclic intra refresh
- int EnableFRMRateControl; // [IN] frame based rate control enable
- int Bitrate; // [IN] rate control parameter(bit rate)
- int FrameQp; // [IN] The quantization parameter of the frame
- int FrameQp_P; // [IN] The quantization parameter of the P frame
- int QSCodeMax; // [IN] Maximum Quantization value
- int QSCodeMin; // [IN] Minimum Quantization value
- int CBRPeriodRf; // [IN] Reaction coefficient parameter for rate control
- int PadControlOn; // [IN] Enable padding control
- int LumaPadVal; // [IN] Luma pel value used to fill padding area
- int CbPadVal; // [IN] CB pel value used to fill padding area
- int CrPadVal; // [IN] CR pel value used to fill padding area
- int FrameMap; // [IN] Encoding input mode(tile mode or linear mode)
-
- // MPEG4 specific parameters
- int ProfileIDC; // [IN] profile
- int LevelIDC; // [IN] level
- int FrameQp_B; // [IN] The quantization parameter of the B frame
- int TimeIncreamentRes; // [IN] frame rate
- int VopTimeIncreament; // [IN] frame rate
- int SliceArgument; // [IN] MB number or byte number
- int NumberBFrames; // [IN] The number of consecutive B frame inserted
- int DisableQpelME; // [IN] disable quarter-pixel motion estimation
-} SSBSIP_MFC_ENC_MPEG4_PARAM;
-
-typedef struct {
- // common parameters
- SSBSIP_MFC_CODEC_TYPE codecType; // [IN] codec type
- int SourceWidth; // [IN] width of video to be encoded
- int SourceHeight; // [IN] height of video to be encoded
- int IDRPeriod; // [IN] GOP number(interval of I-frame)
- int SliceMode; // [IN] Multi slice mode
- int RandomIntraMBRefresh; // [IN] cyclic intra refresh
- int EnableFRMRateControl; // [IN] frame based rate control enable
- int Bitrate; // [IN] rate control parameter(bit rate)
- int FrameQp; // [IN] The quantization parameter of the frame
- int FrameQp_P; // [IN] The quantization parameter of the P frame
- int QSCodeMax; // [IN] Maximum Quantization value
- int QSCodeMin; // [IN] Minimum Quantization value
- int CBRPeriodRf; // [IN] Reaction coefficient parameter for rate control
- int PadControlOn; // [IN] Enable padding control
- int LumaPadVal; // [IN] Luma pel value used to fill padding area
- int CbPadVal; // [IN] CB pel value used to fill padding area
- int CrPadVal; // [IN] CR pel value used to fill padding area
- int FrameMap; // [IN] Encoding input mode(tile mode or linear mode)
-
- // H.263 specific parameters
- int FrameRate; // [IN] rate control parameter(frame rate)
-} SSBSIP_MFC_ENC_H263_PARAM;
-
-typedef struct {
- int width;
- int height;
- int buf_width;
- int buf_height;
-} SSBSIP_MFC_IMG_RESOLUTION;
-
-typedef struct {
- int crop_top_offset;
- int crop_bottom_offset;
- int crop_left_offset;
- int crop_right_offset;
-} SSBSIP_MFC_CROP_INFORMATION;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*--------------------------------------------------------------------------------*/
-/* Decoding APIs */
-/*--------------------------------------------------------------------------------*/
-void *SsbSipMfcDecOpen(void *value);
-SSBSIP_MFC_ERROR_CODE SsbSipMfcDecInit(void *openHandle, SSBSIP_MFC_CODEC_TYPE codec_type, int Frameleng);
-SSBSIP_MFC_ERROR_CODE SsbSipMfcDecExe(void *openHandle, int lengthBufFill);
-SSBSIP_MFC_ERROR_CODE SsbSipMfcDecClose(void *openHandle);
-
-void *SsbSipMfcDecGetInBuf(void *openHandle, void **phyInBuf, int inputBufferSize);
-SSBSIP_MFC_ERROR_CODE SsbSipMfcDecSetInBuf(void *openHandle, void *phyInBuf, void *virInBuf, int inputBufferSize);
-
-SSBSIP_MFC_DEC_OUTBUF_STATUS SsbSipMfcDecGetOutBuf(void *openHandle, SSBSIP_MFC_DEC_OUTPUT_INFO *output_info);
-
-SSBSIP_MFC_ERROR_CODE SsbSipMfcDecSetConfig(void *openHandle, SSBSIP_MFC_DEC_CONF conf_type, void *value);
-SSBSIP_MFC_ERROR_CODE SsbSipMfcDecGetConfig(void *openHandle, SSBSIP_MFC_DEC_CONF conf_type, void *value);
-
-/*--------------------------------------------------------------------------------*/
-/* Encoding APIs */
-/*--------------------------------------------------------------------------------*/
-void *SsbSipMfcEncOpen(void *value);
-SSBSIP_MFC_ERROR_CODE SsbSipMfcEncInit(void *openHandle, void *param);
-SSBSIP_MFC_ERROR_CODE SsbSipMfcEncExe(void *openHandle);
-SSBSIP_MFC_ERROR_CODE SsbSipMfcEncClose(void *openHandle);
-
-SSBSIP_MFC_ERROR_CODE SsbSipMfcEncSetSize(void *openHandle, SSBSIP_MFC_CODEC_TYPE codecType, int nWidth, int nHeight);
-SSBSIP_MFC_ERROR_CODE SsbSipMfcEncGetInBuf(void *openHandle, SSBSIP_MFC_ENC_INPUT_INFO *input_info);
-SSBSIP_MFC_ERROR_CODE SsbSipMfcEncSetInBuf(void *openHandle, SSBSIP_MFC_ENC_INPUT_INFO *input_info);
-
-SSBSIP_MFC_ERROR_CODE SsbSipMfcEncGetOutBuf(void *openHandle, SSBSIP_MFC_ENC_OUTPUT_INFO *output_info);
-SSBSIP_MFC_ERROR_CODE SsbSipMfcEncSetOutBuf (void *openHandle, void *phyOutbuf, void *virOutbuf, int outputBufferSize);
-
-SSBSIP_MFC_ERROR_CODE SsbSipMfcEncSetConfig(void *openHandle, SSBSIP_MFC_ENC_CONF conf_type, void *value);
-SSBSIP_MFC_ERROR_CODE SsbSipMfcEncGetConfig(void *openHandle, SSBSIP_MFC_ENC_CONF conf_type, void *value);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _SSBSIP_MFC_API_H_ */
diff --git a/sec_mm/sec_omx/sec_codecs/video/mfc_c110/include/color_space_convertor.h b/sec_mm/sec_omx/sec_codecs/video/mfc_c110/include/color_space_convertor.h
deleted file mode 100644
index 4ad5bda..0000000
--- a/sec_mm/sec_omx/sec_codecs/video/mfc_c110/include/color_space_convertor.h
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- *
- * Copyright 2011 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file color_space_convertor.h
- * @brief SEC_OMX specific define.
- * NV12T(tiled) layout:
- * Each element is not pixel. It is 64x32 pixel block.
- * uv pixel block is interleaved as u v u v u v ...
- * y1 y2 y7 y8 y9 y10 y15 y16
- * y3 y4 y5 y6 y11 y12 y13 y14
- * y17 y18 y23 y24 y25 y26 y31 y32
- * y19 y20 y21 y22 y27 y28 y29 y30
- * uv1 uv2 uv7 uv8 uv9 uv10 uv15 uv16
- * uv3 uv4 uv5 uv6 uv11 uv12 uv13 uv14
- * YUV420Planar(linear) layout:
- * Each element is not pixel. It is 64x32 pixel block.
- * y1 y2 y3 y4 y5 y6 y7 y8
- * y9 y10 y11 y12 y13 y14 y15 y16
- * y17 y18 y19 y20 y21 y22 y23 y24
- * y25 y26 y27 y28 y29 y30 y31 y32
- * u1 u2 u3 u4 u5 u6 u7 u8
- * v1 v2 v3 v4 v5 v6 v7 v8
- * YUV420Semiplanar(linear) layout:
- * Each element is not pixel. It is 64x32 pixel block.
- * uv pixel block is interleaved as u v u v u v ...
- * y1 y2 y3 y4 y5 y6 y7 y8
- * y9 y10 y11 y12 y13 y14 y15 y16
- * y17 y18 y19 y20 y21 y22 y23 y24
- * y25 y26 y27 y28 y29 y30 y31 y32
- * uv1 uv2 uv3 uv4 uv5 uv6 uv7 uv8
- * uv9 uv10 uv11 uv12 uv13 uv14 uv15 uv16
- * @author ShinWon Lee (shinwon.lee@samsung.com)
- * @version 1.0
- * @history
- * 2011.7.01 : Create
- */
-
-#ifndef COLOR_SPACE_CONVERTOR_H_
-#define COLOR_SPACE_CONVERTOR_H_
-
-/*--------------------------------------------------------------------------------*/
-/* Format Conversion API */
-/*--------------------------------------------------------------------------------*/
-/* C Code */
-/*
- * De-interleaves src to dest1, dest2
- *
- * @param dest1
- * Address of de-interleaved data[out]
- *
- * @param dest2
- * Address of de-interleaved data[out]
- *
- * @param src
- * Address of interleaved data[in]
- *
- * @param src_size
- * Size of interleaved data[in]
- */
-void csc_deinterleave_memcpy(char *dest1, char *dest2, char *src, int src_size);
-
-/*
- * Interleaves src1, src2 to dest
- *
- * @param dest
- * Address of interleaved data[out]
- *
- * @param src1
- * Address of de-interleaved data[in]
- *
- * @param src2
- * Address of de-interleaved data[in]
- *
- * @param src_size
- * Size of de-interleaved data[in]
- */
-void csc_interleave_memcpy(char *dest, char *src1, char *src2, int src_size);
-
-/*
- * Converts tiled data to linear.
- * 1. Y of NV12T to Y of YUV420P
- * 2. Y of NV12T to Y of YUV420S
- * 3. UV of NV12T to UV of YUV420S
- *
- * @param yuv420_dest
- * Y or UV plane address of YUV420[out]
- *
- * @param nv12t_src
- * Y or UV plane address of NV12T[in]
- *
- * @param yuv420_width
- * Width of YUV420[in]
- *
- * @param yuv420_height
- * Y: Height of YUV420, UV: Height/2 of YUV420[in]
- */
-void csc_tiled_to_linear(char *yuv420p_y_dest, char *nv12t_y_src, int yuv420p_width, int yuv420p_y_height);
-
-/*
- * Converts and Deinterleaves tiled data to linear
- * 1. UV of NV12T to UV of YUV420P
- *
- * @param yuv420_u_dest
- * U plane address of YUV420P[out]
- *
- * @param yuv420_v_dest
- * V plane address of YUV420P[out]
- *
- * @param nv12t_src
- * UV plane address of NV12T[in]
- *
- * @param yuv420_width
- * Width of YUV420[in]
- *
- * @param yuv420_uv_height
- * Height/2 of YUV420[in]
- */
-void csc_tiled_to_linear_deinterleave(char *yuv420p_u_dest, char *yuv420p_v_dest, char *nv12t_uv_src, int yuv420p_width, int yuv420p_uv_height);
-
-/*
- * Converts linear data to tiled.
- * 1. Y of YUV420P to Y of NV12T
- * 2. Y of YUV420S to Y of NV12T
- * 3. UV of YUV420S to UV of NV12T
- *
- * @param nv12t_dest
- * Y or UV plane address of NV12T[out]
- *
- * @param yuv420_src
- * Y or UV plane address of YUV420P(S)[in]
- *
- * @param yuv420_width
- * Width of YUV420[in]
- *
- * @param yuv420_height
- * Y: Height of YUV420, UV: Height/2 of YUV420[in]
- */
-void csc_linear_to_tiled(char *nv12t_dest, char *yuv420p_src, int yuv420p_width, int yuv420p_y_height);
-
-/*
- * Converts and Interleaves linear to tiled
- * 1. UV of YUV420P to UV of NV12T
- *
- * @param nv12t_uv_dest
- * UV plane address of NV12T[out]
- *
- * @param yuv420p_u_src
- * U plane address of YUV420P[in]
- *
- * @param yuv420p_v_src
- * V plane address of YUV420P[in]
- *
- * @param yuv420_width
- * Width of YUV420[in]
- *
- * @param yuv420_uv_height
- * Height/2 of YUV420[in]
- */
-void csc_linear_to_tiled_interleave(char *nv12t_uv_dest, char *yuv420p_u_src, char *yuv420p_v_src, int yuv420p_width, int yuv420p_uv_height);
-
-#endif /*COLOR_SPACE_CONVERTOR_H_*/
diff --git a/sec_mm/sec_omx/sec_codecs/video/mfc_c110/include/mfc_interface.h b/sec_mm/sec_omx/sec_codecs/video/mfc_c110/include/mfc_interface.h
deleted file mode 100644
index 466860d..0000000
--- a/sec_mm/sec_omx/sec_codecs/video/mfc_c110/include/mfc_interface.h
+++ /dev/null
@@ -1,347 +0,0 @@
-/*
- * Copyright 2010 Samsung Electronics Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _MFC_INTERFACE_H_
-#define _MFC_INTERFACE_H_
-
-#include "SsbSipMfcApi.h"
-
-#define IOCTL_MFC_DEC_INIT 0x00800001
-#define IOCTL_MFC_ENC_INIT 0x00800002
-#define IOCTL_MFC_DEC_EXE 0x00800003
-#define IOCTL_MFC_ENC_EXE 0x00800004
-
-#define IOCTL_MFC_GET_IN_BUF 0x00800010
-#define IOCTL_MFC_FREE_BUF 0x00800011
-#define IOCTL_MFC_GET_PHYS_ADDR 0x00800012
-
-#define IOCTL_MFC_SET_CONFIG 0x00800101
-#define IOCTL_MFC_GET_CONFIG 0x00800102
-
-#define IOCTL_MFC_BUF_CACHE 0x00801000
-
-/* MFC H/W support maximum 32 extra DPB */
-#define MFC_MAX_EXTRA_DPB 5
-
-#define ENC_PROFILE_LEVEL(profile, level) ((profile) | ((level) << 8))
-
-#define ENC_PROFILE_MPEG4_SP 0
-#define ENC_PROFILE_MPEG4_ASP 1
-#define ENC_PROFILE_H264_BP 0
-#define ENC_PROFILE_H264_MAIN 1
-#define ENC_PROFILE_H264_HIGH 2
-
-#define ENC_RC_DISABLE 0
-#define ENC_RC_ENABLE_MACROBLOCK 1
-#define ENC_RC_ENABLE_FRAME 2
-
-#define ENC_RC_QBOUND(min_qp, max_qp) ((min_qp) | ((max_qp) << 8))
-#define ENC_RC_MB_CTRL_DARK_DISABLE (1 << 3)
-#define ENC_RC_MB_CTRL_SMOOTH_DISABLE (1 << 2)
-#define ENC_RC_MB_CTRL_STATIC_DISABLE (1 << 1)
-#define ENC_RC_MB_CTRL_ACTIVITY_DISABLE (1 << 0)
-
-#define ALIGN_TO_16B(x) ((((x) + (1 << 4) - 1) >> 4) << 4)
-#define ALIGN_TO_32B(x) ((((x) + (1 << 5) - 1) >> 5) << 5)
-#define ALIGN_TO_64B(x) ((((x) + (1 << 6) - 1) >> 6) << 6)
-#define ALIGN_TO_128B(x) ((((x) + (1 << 7) - 1) >> 7) << 7)
-#define ALIGN_TO_2KB(x) ((((x) + (1 << 11) - 1) >> 11) << 11)
-#define ALIGN_TO_4KB(x) ((((x) + (1 << 12) - 1) >> 12) << 12)
-#define ALIGN_TO_8KB(x) ((((x) + (1 << 13) - 1) >> 13) << 13)
-#define ALIGN_TO_64KB(x) ((((x) + (1 << 16) - 1) >> 16) << 16)
-#define ALIGN_TO_128KB(x) ((((x) + (1 << 17) - 1) >> 17) << 17)
-
-typedef struct {
- int luma0; // per frame (or top field)
- int chroma0; // per frame (or top field)
- int luma1; // per frame (or bottom field)
- int chroma1; // per frame (or bottom field)
-} MFC_CRC_DATA;
-
-typedef enum {
- MFC_USE_NONE = 0x00,
- MFC_USE_YUV_BUFF = 0x01,
- MFC_USE_STRM_BUFF = 0x10
-} mfc_interbuff_status;
-
-typedef enum {
- MFC_UNPACKED_PB = 0,
- MFC_PACKED_PB = 1
-} mfc_packed_mode;
-
-typedef struct tag_strm_ref_buf_arg {
- unsigned int strm_ref_y;
- unsigned int mv_ref_yc;
-} mfc_strm_ref_buf_arg_t;
-
-typedef struct tag_frame_buf_arg {
- unsigned int luma;
- unsigned int chroma;
-} mfc_frame_buf_arg_t;
-
-typedef struct {
- SSBSIP_MFC_CODEC_TYPE in_codec_type; /* [IN] codec type */
- int in_width; /* [IN] width of YUV420 frame to be encoded */
- int in_height; /* [IN] height of YUV420 frame to be encoded */
- int in_profile_level; /* [IN] profile & level */
- int in_gop_num; /* [IN] GOP Number (interval of I-frame) */
- int in_frame_qp; /* [IN] the quantization parameter of the frame */
- int in_frame_P_qp; /* [IN] the quantization parameter of the P frame */
- int in_frame_B_qp; /* [IN] the quantization parameter of the B frame */
-
- int in_RC_frm_enable; /* [IN] RC enable (0:disable, 1:frame level RC) */
- int in_RC_framerate; /* [IN] RC parameter (framerate) */
- int in_RC_bitrate; /* [IN] RC parameter (bitrate in kbps) */
- int in_RC_qbound; /* [IN] RC parameter (Q bound) */
- int in_RC_rpara; /* [IN] RC parameter (Reaction Coefficient) */
-
- int in_MS_mode; /* [IN] Multi-slice mode (0:single, 1:multiple) */
- int in_MS_size; /* [IN] Multi-slice size (in num. of mb or byte) */
- int in_mb_refresh; /* [IN] Macroblock refresh */
- int in_interlace_mode; /* [IN] interlace mode(0:progressive, 1:interlace) */
- int in_BframeNum; /* [IN] B frame number */
-
- int in_pad_ctrl_on; /* [IN] Enable (1) / Disable (0) padding */
- int in_luma_pad_val; /* [IN] pad value if pad_ctrl_on is Enable */
- int in_cb_pad_val;
- int in_cr_pad_val;
-
- int in_frame_map; /* [IN] Encoding input NV12 type linear(0) TILE(1) */
-
- unsigned int in_mapped_addr;
- mfc_strm_ref_buf_arg_t out_u_addr;
- mfc_strm_ref_buf_arg_t out_p_addr;
- mfc_strm_ref_buf_arg_t out_buf_size;
- unsigned int out_header_size;
-
- /* MPEG4 Only */
- int in_qpelME_enable; /* [IN] Quarter-pel MC enable(1:enable, 0:disable) */
- int in_time_increament_res; /* [IN] time increment resolution */
- int in_time_vop_time_increament; /* [IN] time increment */
-} mfc_enc_init_mpeg4_arg_t;
-
-typedef mfc_enc_init_mpeg4_arg_t mfc_enc_init_h263_arg_t;
-
-typedef struct {
- SSBSIP_MFC_CODEC_TYPE in_codec_type; /* [IN] codec type */
- int in_width; /* [IN] width of YUV420 frame to be encoded */
- int in_height; /* [IN] height of YUV420 frame to be encoded */
- int in_profile_level; /* [IN] profile & level */
- int in_gop_num; /* [IN] GOP Number (interval of I-frame) */
- int in_frame_qp; /* [IN] the quantization parameter of the frame */
- int in_frame_P_qp; /* [IN] the quantization parameter of the P frame */
- int in_frame_B_qp; /* [IN] the quantization parameter of the B frame */
-
- int in_RC_frm_enable; /* [IN] RC enable (0:disable, 1:frame level RC) */
- int in_RC_framerate; /* [IN] RC parameter (framerate) */
- int in_RC_bitrate; /* [IN] RC parameter (bitrate in kbps) */
- int in_RC_qbound; /* [IN] RC parameter (Q bound) */
- int in_RC_rpara; /* [IN] RC parameter (Reaction Coefficient) */
-
- int in_MS_mode; /* [IN] Multi-slice mode (0:single, 1:multiple) */
- int in_MS_size; /* [IN] Multi-slice size (in num. of mb or byte) */
- int in_mb_refresh; /* [IN] Macroblock refresh */
- int in_interlace_mode; /* [IN] interlace mode(0:progressive, 1:interlace) */
- int in_BframeNum;
-
- int in_pad_ctrl_on; /* [IN] Enable padding control */
- int in_luma_pad_val; /* [IN] Luma pel value used to fill padding area */
- int in_cb_pad_val; /* [IN] CB pel value used to fill padding area */
- int in_cr_pad_val; /* [IN] CR pel value used to fill padding area */
-
- int in_frame_map; /* [IN] Encoding input NV12 type linear(0) TILE(1) */
-
- unsigned int in_mapped_addr;
- mfc_strm_ref_buf_arg_t out_u_addr;
- mfc_strm_ref_buf_arg_t out_p_addr;
- mfc_strm_ref_buf_arg_t out_buf_size;
- unsigned int out_header_size;
-
- /* H264 Only */
- int in_RC_mb_enable; /* [IN] RC enable (0:disable, 1:MB level RC) */
- int in_reference_num; /* [IN] The number of reference pictures used */
- int in_ref_num_p; /* [IN] The number of reference pictures used for P pictures */
- int in_RC_mb_dark_disable; /* [IN] Disable adaptive rate control on dark region */
- int in_RC_mb_smooth_disable; /* [IN] Disable adaptive rate control on smooth region */
- int in_RC_mb_static_disable; /* [IN] Disable adaptive rate control on static region */
- int in_RC_mb_activity_disable; /* [IN] Disable adaptive rate control on static region */
- int in_deblock_filt; /* [IN] disable the loop filter */
- int in_deblock_alpha_C0; /* [IN] Alpha & C0 offset for H.264 loop filter */
- int in_deblock_beta; /* [IN] Beta offset for H.264 loop filter */
- int in_symbolmode; /* [IN] The mode of entropy coding(CABAC, CAVLC) */
- int in_transform8x8_mode; /* [IN] Allow 8x8 transform(only for high profile) */
- int in_md_interweight_pps; /* [IN] Inter weighted parameter for mode decision */
- int in_md_intraweight_pps; /* [IN] Intra weighted parameter for mode decision */
-} mfc_enc_init_h264_arg_t;
-
-typedef struct {
- SSBSIP_MFC_CODEC_TYPE in_codec_type; /* [IN] codec type */
- unsigned int in_Y_addr; /* [IN] In-buffer addr of Y component */
- unsigned int in_CbCr_addr; /* [IN] In-buffer addr of CbCr component */
- unsigned int in_Y_addr_vir; /* [IN] In-buffer addr of Y component */
- unsigned int in_CbCr_addr_vir; /* [IN] In-buffer addr of CbCr component */
- unsigned int in_strm_st; /* [IN] Out-buffer start addr of encoded strm */
- unsigned int in_strm_end; /* [IN] Out-buffer end addr of encoded strm */
- int in_frametag; /* [IN] unique frame ID */
-
- unsigned int out_frame_type; /* [OUT] frame type */
- int out_encoded_size; /* [OUT] Length of Encoded video stream */
- unsigned int out_encoded_Y_paddr; /* [OUT] physical Y address which is flushed */
- unsigned int out_encoded_C_paddr; /* [OUT] physical C address which is flushed */
- int out_frametag_top; /* [OUT] unique frame ID of an output frame or top field */
- int out_frametag_bottom; /* [OUT] unique frame ID of bottom field */
-} mfc_enc_exe_arg;
-
-typedef struct {
- SSBSIP_MFC_CODEC_TYPE in_codec_type; /* [IN] codec type */
- unsigned int in_strm_buf; /* [IN] the physical address of STRM_BUF */
- int in_strm_size; /* [IN] size of video stream filled in STRM_BUF */
- int in_packed_PB; /* [IN] Is packed PB frame or not, 1: packedPB 0: unpacked */
-
- int out_img_width; /* [OUT] width of YUV420 frame */
- int out_img_height; /* [OUT] height of YUV420 frame */
- int out_buf_width; /* [OUT] width of YUV420 frame */
- int out_buf_height; /* [OUT] height of YUV420 frame */
- int out_dpb_cnt; /* [OUT] the number of buffers which is nessary during decoding */
-
- int out_crop_top_offset; /* [OUT] crop information, top offset */
- int out_crop_bottom_offset; /* [OUT] crop information, bottom offset */
- int out_crop_left_offset; /* [OUT] crop information, left offset */
- int out_crop_right_offset; /* [OUT] crop information, right offset */
-
- mfc_frame_buf_arg_t in_frm_buf; /* [IN] the address of dpb FRAME_BUF */
- mfc_frame_buf_arg_t in_frm_size; /* [IN] size of dpb FRAME_BUF */
- unsigned int in_mapped_addr;
-
- mfc_frame_buf_arg_t out_u_addr;
- mfc_frame_buf_arg_t out_p_addr;
- mfc_frame_buf_arg_t out_frame_buf_size;
-} mfc_dec_init_arg_t;
-
-typedef struct {
- SSBSIP_MFC_CODEC_TYPE in_codec_type; /* [IN] codec type */
- unsigned int in_strm_buf; /* [IN] the physical address of STRM_BUF */
- int in_strm_size; /* [IN] Size of video stream filled in STRM_BUF */
- mfc_frame_buf_arg_t in_frm_buf; /* [IN] the address of dpb FRAME_BUF */
- mfc_frame_buf_arg_t in_frm_size; /* [IN] size of dpb FRAME_BUF */
- int in_frametag; /* [IN] unique frame ID */
-
- unsigned int out_display_Y_addr; /* [OUT] the physical address of display buf */
- unsigned int out_display_C_addr; /* [OUT] the physical address of display buf */
- int out_display_status; /* [OUT] whether display frame exist or not. */
- int out_timestamp_top; /* [OUT] presentation time of an output frame or top field */
- int out_timestamp_bottom; /* [OUT] presentation time of bottom field */
- int out_consume_bytes; /* [OUT] consumed bytes when decoding finished */
- int out_frametag_top; /* [OUT] unique frame ID of an output frame or top field */
- int out_frametag_bottom; /* [OUT] unique frame ID of bottom field */
- int out_res_change; /* [OUT] whether resolution is changed or not (0, 1, 2) */
- int out_crop_top_offset; /* [OUT] crop information, top offset */
- int out_crop_bottom_offset; /* [OUT] crop information, bottom offset */
- int out_crop_left_offset; /* [OUT] crop information, left offset */
- int out_crop_right_offset; /* [OUT] crop information, right offset */
-} mfc_dec_exe_arg_t;
-
-typedef struct {
- int in_config_param; /* [IN] Configurable parameter type */
- int out_config_value[4]; /* [IN] Values to get for the configurable parameter. */
-} mfc_get_config_arg_t;
-
-typedef struct {
- int in_config_param; /* [IN] Configurable parameter type */
- int in_config_value[2]; /* [IN] Values to be set for the configurable parameter. */
- int out_config_value_old[2]; /* [OUT] Old values of the configurable parameters */
-} mfc_set_config_arg_t;
-
-typedef struct tag_get_phys_addr_arg
-{
- unsigned int u_addr;
- unsigned int p_addr;
-} mfc_get_phys_addr_arg_t;
-
-typedef struct tag_mem_alloc_arg
-{
- SSBSIP_MFC_CODEC_TYPE codec_type;
- int buff_size;
- unsigned int mapped_addr;
- unsigned int out_uaddr;
- unsigned int out_paddr;
-} mfc_mem_alloc_arg_t;
-
-typedef struct tag_mem_free_arg_t
-{
- unsigned int u_addr;
-} mfc_mem_free_arg_t;
-
-typedef enum {
- MFC_BUFFER_NO_CACHE = 0,
- MFC_BUFFER_CACHE = 1
-} mfc_buffer_type;
-
-typedef union {
- mfc_enc_init_mpeg4_arg_t enc_init_mpeg4;
- mfc_enc_init_h263_arg_t enc_init_h263;
- mfc_enc_init_h264_arg_t enc_init_h264;
- mfc_enc_exe_arg enc_exe;
-
- mfc_dec_init_arg_t dec_init;
- mfc_dec_exe_arg_t dec_exe;
-
- mfc_get_config_arg_t get_config;
- mfc_set_config_arg_t set_config;
-
- mfc_mem_alloc_arg_t mem_alloc;
- mfc_mem_free_arg_t mem_free;
- mfc_get_phys_addr_arg_t get_phys_addr;
-
- mfc_buffer_type buf_type;
-} mfc_args;
-
-typedef struct tag_mfc_args {
- SSBSIP_MFC_ERROR_CODE ret_code; /* [OUT] error code */
- mfc_args args;
-} mfc_common_args;
-
-typedef struct {
- int magic;
- int hMFC;
- int width;
- int height;
- int sizeStrmBuf;
- mfc_frame_buf_arg_t sizeFrmBuf;
- int displayStatus;
- int inter_buff_status;
- unsigned int virFreeStrmAddr;
- unsigned int phyStrmBuf;
- unsigned int virStrmBuf;
- unsigned int virMvRefYC;
- mfc_frame_buf_arg_t phyFrmBuf;
- mfc_frame_buf_arg_t virFrmBuf;
- unsigned int mapped_addr;
- mfc_common_args MfcArg;
- SSBSIP_MFC_CODEC_TYPE codec_type;
- SSBSIP_MFC_DEC_OUTPUT_INFO decOutInfo;
- unsigned int encodedHeaderSize;
- int encodedDataSize;
- unsigned int encodedframeType;
- int in_frametag;
- int out_frametag_top;
- int out_frametag_bottom;
- unsigned int encoded_Y_paddr;
- unsigned int encoded_C_paddr;
- unsigned int encode_cnt;
-} _MFCLIB;
-
-#endif /* _MFC_INTERFACE_H_ */
diff --git a/sec_mm/sec_omx/sec_omx_component/common/Android.mk b/sec_mm/sec_omx/sec_omx_component/common/Android.mk
deleted file mode 100644
index aa32005..0000000
--- a/sec_mm/sec_omx/sec_omx_component/common/Android.mk
+++ /dev/null
@@ -1,24 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := \
- SEC_OMX_Basecomponent.c \
- SEC_OMX_Baseport.c \
- SEC_OMX_Resourcemanager.c
-
-
-LOCAL_MODULE := libsecbasecomponent.aries
-
-LOCAL_CFLAGS :=
-
-LOCAL_STATIC_LIBRARIES := libsecosal.aries
-LOCAL_SHARED_LIBRARIES := libcutils libutils
-
-LOCAL_C_INCLUDES := $(SEC_OMX_INC)/khronos \
- $(SEC_OMX_INC)/sec \
- $(SEC_OMX_TOP)/sec_osal
-
-include $(BUILD_STATIC_LIBRARY)
-
diff --git a/sec_mm/sec_omx/sec_omx_component/common/SEC_OMX_Basecomponent.c b/sec_mm/sec_omx/sec_omx_component/common/SEC_OMX_Basecomponent.c
deleted file mode 100644
index 89e9aeb..0000000
--- a/sec_mm/sec_omx/sec_omx_component/common/SEC_OMX_Basecomponent.c
+++ /dev/null
@@ -1,1486 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OMX_Basecomponent.c
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * Yunji Kim (yunji.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "SEC_OSAL_Event.h"
-#include "SEC_OSAL_Thread.h"
-#include "SEC_OMX_Baseport.h"
-#include "SEC_OMX_Basecomponent.h"
-#include "SEC_OMX_Macros.h"
-
-#undef SEC_LOG_TAG
-#define SEC_LOG_TAG "SEC_BASE_COMP"
-#define SEC_LOG_OFF
-#include "SEC_OSAL_Log.h"
-
-
-/* Change CHECK_SIZE_VERSION Macro */
-OMX_ERRORTYPE SEC_OMX_Check_SizeVersion(OMX_PTR header, OMX_U32 size)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
-
- OMX_VERSIONTYPE* version = NULL;
- if (header == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- version = (OMX_VERSIONTYPE*)((char*)header + sizeof(OMX_U32));
- if (*((OMX_U32*)header) != size) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- if (version->s.nVersionMajor != VERSIONMAJOR_NUMBER ||
- version->s.nVersionMinor != VERSIONMINOR_NUMBER) {
- ret = OMX_ErrorVersionMismatch;
- goto EXIT;
- }
- ret = OMX_ErrorNone;
-EXIT:
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_GetComponentVersion(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_OUT OMX_STRING pComponentName,
- OMX_OUT OMX_VERSIONTYPE *pComponentVersion,
- OMX_OUT OMX_VERSIONTYPE *pSpecVersion,
- OMX_OUT OMX_UUIDTYPE *pComponentUUID)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- OMX_U32 compUUID[3];
-
- FunctionIn();
-
- /* check parameters */
- if (hComponent == NULL ||
- pComponentName == NULL || pComponentVersion == NULL ||
- pSpecVersion == NULL || pComponentUUID == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- if (pSECComponent->currentState == OMX_StateInvalid) {
- ret = OMX_ErrorInvalidState;
- goto EXIT;
- }
-
- SEC_OSAL_Strcpy(pComponentName, pSECComponent->componentName);
- SEC_OSAL_Memcpy(pComponentVersion, &(pSECComponent->componentVersion), sizeof(OMX_VERSIONTYPE));
- SEC_OSAL_Memcpy(pSpecVersion, &(pSECComponent->specVersion), sizeof(OMX_VERSIONTYPE));
-
- /* Fill UUID with handle address, PID and UID.
- * This should guarantee uiniqness */
- compUUID[0] = (OMX_U32)pOMXComponent;
- compUUID[1] = getpid();
- compUUID[2] = getuid();
- SEC_OSAL_Memcpy(*pComponentUUID, compUUID, 3 * sizeof(*compUUID));
-
- ret = OMX_ErrorNone;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_GetState (
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_OUT OMX_STATETYPE *pState)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL || pState == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- *pState = pSECComponent->currentState;
- ret = OMX_ErrorNone;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-static OMX_ERRORTYPE SEC_OMX_BufferProcessThread(OMX_PTR threadData)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_MESSAGE *message = NULL;
-
- FunctionIn();
-
- if (threadData == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)threadData;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- pSECComponent->sec_BufferProcess(pOMXComponent);
-
- SEC_OSAL_ThreadExit(NULL);
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_ComponentStateSet(OMX_COMPONENTTYPE *pOMXComponent, OMX_U32 messageParam)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- SEC_OMX_MESSAGE *message;
- OMX_STATETYPE destState = messageParam;
- OMX_STATETYPE currentState = pSECComponent->currentState;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- OMX_S32 countValue = 0;
- int i = 0, j = 0;
-
- FunctionIn();
-
- /* check parameters */
- if (currentState == destState) {
- ret = OMX_ErrorSameState;
- goto EXIT;
- }
- if (currentState == OMX_StateInvalid) {
- ret = OMX_ErrorInvalidState;
- goto EXIT;
- }
-
- if ((currentState == OMX_StateLoaded) && (destState == OMX_StateIdle)) {
- ret = SEC_OMX_Get_Resource(pOMXComponent);
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
- }
- if (((currentState == OMX_StateIdle) && (destState == OMX_StateLoaded)) ||
- ((currentState == OMX_StateIdle) && (destState == OMX_StateInvalid)) ||
- ((currentState == OMX_StateExecuting) && (destState == OMX_StateInvalid)) ||
- ((currentState == OMX_StatePause) && (destState == OMX_StateInvalid))) {
- SEC_OMX_Release_Resource(pOMXComponent);
- }
-
- SEC_OSAL_Log(SEC_LOG_TRACE, "destState: %d", destState);
-
- switch (destState) {
- case OMX_StateInvalid:
- switch (currentState) {
- case OMX_StateIdle:
- case OMX_StateExecuting:
- case OMX_StatePause:
- case OMX_StateLoaded:
- case OMX_StateWaitForResources:
- pSECComponent->currentState = OMX_StateInvalid;
- if (pSECComponent->hBufferProcess) {
- pSECComponent->bExitBufferProcessThread = OMX_TRUE;
-
- for (i = 0; i < ALL_PORT_NUM; i++) {
- SEC_OSAL_Get_SemaphoreCount(pSECComponent->pSECPort[i].bufferSemID, &countValue);
- if (countValue == 0)
- SEC_OSAL_SemaphorePost(pSECComponent->pSECPort[i].bufferSemID);
- }
-
- SEC_OSAL_SignalSet(pSECComponent->pauseEvent);
- SEC_OSAL_ThreadTerminate(pSECComponent->hBufferProcess);
- pSECComponent->hBufferProcess = NULL;
-
- for (i = 0; i < ALL_PORT_NUM; i++) {
- SEC_OSAL_MutexTerminate(pSECComponent->secDataBuffer[i].bufferMutex);
- pSECComponent->secDataBuffer[i].bufferMutex = NULL;
- }
-
- SEC_OSAL_SignalTerminate(pSECComponent->pauseEvent);
- for (i = 0; i < ALL_PORT_NUM; i++) {
- SEC_OSAL_SemaphoreTerminate(pSECComponent->pSECPort[i].bufferSemID);
- pSECComponent->pSECPort[i].bufferSemID = NULL;
- }
- }
- if (pSECComponent->sec_mfc_componentTerminate != NULL)
- pSECComponent->sec_mfc_componentTerminate(pOMXComponent);
- break;
- }
- ret = OMX_ErrorInvalidState;
- break;
- case OMX_StateLoaded:
- switch (currentState) {
- case OMX_StateIdle:
- pSECComponent->bExitBufferProcessThread = OMX_TRUE;
-
- for (i = 0; i < ALL_PORT_NUM; i++) {
- SEC_OSAL_Get_SemaphoreCount(pSECComponent->pSECPort[i].bufferSemID, &countValue);
- if (countValue == 0)
- SEC_OSAL_SemaphorePost(pSECComponent->pSECPort[i].bufferSemID);
- }
-
- SEC_OSAL_SignalSet(pSECComponent->pauseEvent);
- SEC_OSAL_ThreadTerminate(pSECComponent->hBufferProcess);
- pSECComponent->hBufferProcess = NULL;
-
- for (i = 0; i < ALL_PORT_NUM; i++) {
- SEC_OSAL_MutexTerminate(pSECComponent->secDataBuffer[i].bufferMutex);
- pSECComponent->secDataBuffer[i].bufferMutex = NULL;
- }
-
- SEC_OSAL_SignalTerminate(pSECComponent->pauseEvent);
- for (i = 0; i < ALL_PORT_NUM; i++) {
- SEC_OSAL_SemaphoreTerminate(pSECComponent->pSECPort[i].bufferSemID);
- pSECComponent->pSECPort[i].bufferSemID = NULL;
- }
-
- pSECComponent->sec_mfc_componentTerminate(pOMXComponent);
-
- for (i = 0; i < (pSECComponent->portParam.nPorts); i++) {
- pSECPort = (pSECComponent->pSECPort + i);
- if (CHECK_PORT_TUNNELED(pSECPort) && CHECK_PORT_BUFFER_SUPPLIER(pSECPort)) {
- while (SEC_OSAL_GetElemNum(&pSECPort->bufferQ) > 0) {
- message = (SEC_OMX_MESSAGE*)SEC_OSAL_Dequeue(&pSECPort->bufferQ);
- if (message != NULL)
- SEC_OSAL_Free(message);
- }
- ret = pSECComponent->sec_FreeTunnelBuffer(pSECComponent, i);
- if (OMX_ErrorNone != ret) {
- goto EXIT;
- }
- } else {
- if (CHECK_PORT_ENABLED(pSECPort)) {
- SEC_OSAL_SemaphoreWait(pSECPort->unloadedResource);
- pSECPort->portDefinition.bPopulated = OMX_FALSE;
- }
- }
- }
- pSECComponent->currentState = OMX_StateLoaded;
- break;
- case OMX_StateWaitForResources:
- ret = SEC_OMX_Out_WaitForResource(pOMXComponent);
- pSECComponent->currentState = OMX_StateLoaded;
- break;
- case OMX_StateExecuting:
- case OMX_StatePause:
- default:
- ret = OMX_ErrorIncorrectStateTransition;
- break;
- }
- break;
- case OMX_StateIdle:
- switch (currentState) {
- case OMX_StateLoaded:
- for (i = 0; i < pSECComponent->portParam.nPorts; i++) {
- pSECPort = (pSECComponent->pSECPort + i);
- if (pSECPort == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- if (CHECK_PORT_TUNNELED(pSECPort) && CHECK_PORT_BUFFER_SUPPLIER(pSECPort)) {
- if (CHECK_PORT_ENABLED(pSECPort)) {
- ret = pSECComponent->sec_AllocateTunnelBuffer(pSECPort, i);
- if (ret!=OMX_ErrorNone)
- goto EXIT;
- }
- } else {
- if (CHECK_PORT_ENABLED(pSECPort)) {
- SEC_OSAL_SemaphoreWait(pSECComponent->pSECPort[i].loadedResource);
- pSECPort->portDefinition.bPopulated = OMX_TRUE;
- }
- }
- }
- ret = pSECComponent->sec_mfc_componentInit(pOMXComponent);
- if (ret != OMX_ErrorNone) {
- /*
- * if (CHECK_PORT_TUNNELED == OMX_TRUE) thenTunnel Buffer Free
- */
- goto EXIT;
- }
- pSECComponent->bExitBufferProcessThread = OMX_FALSE;
- SEC_OSAL_SignalCreate(&pSECComponent->pauseEvent);
- for (i = 0; i < ALL_PORT_NUM; i++) {
- SEC_OSAL_SemaphoreCreate(&pSECComponent->pSECPort[i].bufferSemID);
- }
- for (i = 0; i < ALL_PORT_NUM; i++) {
- SEC_OSAL_MutexCreate(&pSECComponent->secDataBuffer[i].bufferMutex);
- }
- ret = SEC_OSAL_ThreadCreate(&pSECComponent->hBufferProcess,
- SEC_OMX_BufferProcessThread,
- pOMXComponent);
- if (ret != OMX_ErrorNone) {
- /*
- * if (CHECK_PORT_TUNNELED == OMX_TRUE) thenTunnel Buffer Free
- */
-
- SEC_OSAL_SignalTerminate(pSECComponent->pauseEvent);
- for (i = 0; i < ALL_PORT_NUM; i++) {
- SEC_OSAL_MutexTerminate(pSECComponent->secDataBuffer[i].bufferMutex);
- pSECComponent->secDataBuffer[i].bufferMutex = NULL;
- }
- for (i = 0; i < ALL_PORT_NUM; i++) {
- SEC_OSAL_SemaphoreTerminate(pSECComponent->pSECPort[i].bufferSemID);
- pSECComponent->pSECPort[i].bufferSemID = NULL;
- }
-
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
- pSECComponent->currentState = OMX_StateIdle;
- break;
- case OMX_StateExecuting:
- case OMX_StatePause:
- SEC_OMX_BufferFlushProcessNoEvent(pOMXComponent, ALL_PORT_INDEX);
- pSECComponent->currentState = OMX_StateIdle;
- break;
- case OMX_StateWaitForResources:
- pSECComponent->currentState = OMX_StateIdle;
- break;
- }
- break;
- case OMX_StateExecuting:
- switch (currentState) {
- case OMX_StateLoaded:
- ret = OMX_ErrorIncorrectStateTransition;
- break;
- case OMX_StateIdle:
- for (i = 0; i < pSECComponent->portParam.nPorts; i++) {
- pSECPort = &pSECComponent->pSECPort[i];
- if (CHECK_PORT_TUNNELED(pSECPort) && CHECK_PORT_BUFFER_SUPPLIER(pSECPort) && CHECK_PORT_ENABLED(pSECPort)) {
- for (j = 0; j < pSECPort->tunnelBufferNum; j++) {
- SEC_OSAL_SemaphorePost(pSECComponent->pSECPort[i].bufferSemID);
- }
- }
- }
-
- pSECComponent->transientState = SEC_OMX_TransStateMax;
- pSECComponent->currentState = OMX_StateExecuting;
- SEC_OSAL_SignalSet(pSECComponent->pauseEvent);
- break;
- case OMX_StatePause:
- for (i = 0; i < pSECComponent->portParam.nPorts; i++) {
- pSECPort = &pSECComponent->pSECPort[i];
- if (CHECK_PORT_TUNNELED(pSECPort) && CHECK_PORT_BUFFER_SUPPLIER(pSECPort) && CHECK_PORT_ENABLED(pSECPort)) {
- OMX_U32 semaValue = 0, cnt = 0;
- SEC_OSAL_Get_SemaphoreCount(pSECComponent->pSECPort[i].bufferSemID, &semaValue);
- if (SEC_OSAL_GetElemNum(&pSECPort->bufferQ) > semaValue) {
- cnt = SEC_OSAL_GetElemNum(&pSECPort->bufferQ) - semaValue;
- for (j = 0; j < cnt; j++) {
- SEC_OSAL_SemaphorePost(pSECComponent->pSECPort[i].bufferSemID);
- }
- }
- }
- }
-
- pSECComponent->currentState = OMX_StateExecuting;
- SEC_OSAL_SignalSet(pSECComponent->pauseEvent);
- break;
- case OMX_StateWaitForResources:
- ret = OMX_ErrorIncorrectStateTransition;
- break;
- }
- break;
- case OMX_StatePause:
- switch (currentState) {
- case OMX_StateLoaded:
- ret = OMX_ErrorIncorrectStateTransition;
- break;
- case OMX_StateIdle:
- pSECComponent->currentState = OMX_StatePause;
- break;
- case OMX_StateExecuting:
- pSECComponent->currentState = OMX_StatePause;
- break;
- case OMX_StateWaitForResources:
- ret = OMX_ErrorIncorrectStateTransition;
- break;
- }
- break;
- case OMX_StateWaitForResources:
- switch (currentState) {
- case OMX_StateLoaded:
- ret = SEC_OMX_In_WaitForResource(pOMXComponent);
- pSECComponent->currentState = OMX_StateWaitForResources;
- break;
- case OMX_StateIdle:
- case OMX_StateExecuting:
- case OMX_StatePause:
- ret = OMX_ErrorIncorrectStateTransition;
- break;
- }
- break;
- }
-
-EXIT:
- if (ret == OMX_ErrorNone) {
- if (pSECComponent->pCallbacks != NULL) {
- pSECComponent->pCallbacks->EventHandler((OMX_HANDLETYPE)pOMXComponent,
- pSECComponent->callbackData,
- OMX_EventCmdComplete, OMX_CommandStateSet,
- destState, NULL);
- }
- } else {
- if (pSECComponent->pCallbacks != NULL) {
- pSECComponent->pCallbacks->EventHandler((OMX_HANDLETYPE)pOMXComponent,
- pSECComponent->callbackData,
- OMX_EventError, ret, 0, NULL);
- }
- }
- FunctionOut();
-
- return ret;
-}
-
-static OMX_ERRORTYPE SEC_OMX_MessageHandlerThread(OMX_PTR threadData)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_MESSAGE *message = NULL;
- OMX_U32 messageType = 0, portIndex = 0;
-
- FunctionIn();
-
- if (threadData == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- pOMXComponent = (OMX_COMPONENTTYPE *)threadData;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- while (pSECComponent->bExitMessageHandlerThread != OMX_TRUE) {
- SEC_OSAL_SemaphoreWait(pSECComponent->msgSemaphoreHandle);
- message = (SEC_OMX_MESSAGE *)SEC_OSAL_Dequeue(&pSECComponent->messageQ);
- if (message != NULL) {
- messageType = message->messageType;
- switch (messageType) {
- case OMX_CommandStateSet:
- ret = SEC_OMX_ComponentStateSet(pOMXComponent, message->messageParam);
- break;
- case OMX_CommandFlush:
- ret = SEC_OMX_BufferFlushProcess(pOMXComponent, message->messageParam);
- break;
- case OMX_CommandPortDisable:
- ret = SEC_OMX_PortDisableProcess(pOMXComponent, message->messageParam);
- break;
- case OMX_CommandPortEnable:
- ret = SEC_OMX_PortEnableProcess(pOMXComponent, message->messageParam);
- break;
- case OMX_CommandMarkBuffer:
- portIndex = message->messageParam;
- pSECComponent->pSECPort[portIndex].markType.hMarkTargetComponent = ((OMX_MARKTYPE *)message->pCmdData)->hMarkTargetComponent;
- pSECComponent->pSECPort[portIndex].markType.pMarkData = ((OMX_MARKTYPE *)message->pCmdData)->pMarkData;
- break;
- case (OMX_COMMANDTYPE)SEC_OMX_CommandComponentDeInit:
- pSECComponent->bExitMessageHandlerThread = OMX_TRUE;
- break;
- default:
- break;
- }
- SEC_OSAL_Free(message);
- message = NULL;
- }
- }
-
- SEC_OSAL_ThreadExit(NULL);
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-static OMX_ERRORTYPE SEC_StateSet(SEC_OMX_BASECOMPONENT *pSECComponent, OMX_U32 nParam)
-{
- OMX_U32 destState = nParam;
- OMX_U32 i = 0;
-
- if ((destState == OMX_StateIdle) && (pSECComponent->currentState == OMX_StateLoaded)) {
- pSECComponent->transientState = SEC_OMX_TransStateLoadedToIdle;
- for(i = 0; i < pSECComponent->portParam.nPorts; i++) {
- pSECComponent->pSECPort[i].portState = OMX_StateIdle;
- }
- SEC_OSAL_Log(SEC_LOG_TRACE, "to OMX_StateIdle");
- } else if ((destState == OMX_StateLoaded) && (pSECComponent->currentState == OMX_StateIdle)) {
- pSECComponent->transientState = SEC_OMX_TransStateIdleToLoaded;
- for (i = 0; i < pSECComponent->portParam.nPorts; i++) {
- pSECComponent->pSECPort[i].portState = OMX_StateLoaded;
- }
- SEC_OSAL_Log(SEC_LOG_TRACE, "to OMX_StateLoaded");
- } else if ((destState == OMX_StateIdle) && (pSECComponent->currentState == OMX_StateExecuting)) {
- pSECComponent->transientState = SEC_OMX_TransStateExecutingToIdle;
- SEC_OSAL_Log(SEC_LOG_TRACE, "to OMX_StateIdle");
- } else if ((destState == OMX_StateExecuting) && (pSECComponent->currentState == OMX_StateIdle)) {
- pSECComponent->transientState = SEC_OMX_TransStateIdleToExecuting;
- SEC_OSAL_Log(SEC_LOG_TRACE, "to OMX_StateExecuting");
- } else if (destState == OMX_StateInvalid) {
- for (i = 0; i < pSECComponent->portParam.nPorts; i++) {
- pSECComponent->pSECPort[i].portState = OMX_StateInvalid;
- }
- }
-
- return OMX_ErrorNone;
-}
-
-static OMX_ERRORTYPE SEC_SetPortFlush(SEC_OMX_BASECOMPONENT *pSECComponent, OMX_U32 nParam)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- OMX_U32 portIndex = nParam;
- OMX_U16 i = 0, cnt = 0, index = 0;
-
-
- if ((pSECComponent->currentState == OMX_StateExecuting) ||
- (pSECComponent->currentState == OMX_StatePause)) {
- if ((portIndex != ALL_PORT_INDEX) &&
- ((OMX_S32)portIndex >= (OMX_S32)pSECComponent->portParam.nPorts)) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- /*********************
- * need flush event set ?????
- **********************/
- cnt = (portIndex == ALL_PORT_INDEX ) ? ALL_PORT_NUM : 1;
- for (i = 0; i < cnt; i++) {
- if (portIndex == ALL_PORT_INDEX)
- index = i;
- else
- index = portIndex;
- pSECComponent->pSECPort[index].bIsPortFlushed = OMX_TRUE;
- }
- } else {
- ret = OMX_ErrorIncorrectStateOperation;
- goto EXIT;
- }
- ret = OMX_ErrorNone;
-
-EXIT:
- return ret;
-}
-
-static OMX_ERRORTYPE SEC_SetPortEnable(SEC_OMX_BASECOMPONENT *pSECComponent, OMX_U32 nParam)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- OMX_U32 portIndex = nParam;
- OMX_U16 i = 0, cnt = 0;
-
- FunctionIn();
-
- if ((portIndex != ALL_PORT_INDEX) &&
- ((OMX_S32)portIndex >= (OMX_S32)pSECComponent->portParam.nPorts)) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- if (portIndex == ALL_PORT_INDEX) {
- for (i = 0; i < pSECComponent->portParam.nPorts; i++) {
- pSECPort = &pSECComponent->pSECPort[i];
- if (CHECK_PORT_ENABLED(pSECPort)) {
- ret = OMX_ErrorIncorrectStateOperation;
- goto EXIT;
- } else {
- pSECPort->portState = OMX_StateIdle;
- }
- }
- } else {
- pSECPort = &pSECComponent->pSECPort[portIndex];
- if (CHECK_PORT_ENABLED(pSECPort)) {
- ret = OMX_ErrorIncorrectStateOperation;
- goto EXIT;
- } else {
- pSECPort->portState = OMX_StateIdle;
- }
- }
- ret = OMX_ErrorNone;
-
-EXIT:
- FunctionOut();
-
- return ret;
-
-}
-
-static OMX_ERRORTYPE SEC_SetPortDisable(SEC_OMX_BASECOMPONENT *pSECComponent, OMX_U32 nParam)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- OMX_U32 portIndex = nParam;
- OMX_U16 i = 0, cnt = 0;
-
- FunctionIn();
-
- if ((portIndex != ALL_PORT_INDEX) &&
- ((OMX_S32)portIndex >= (OMX_S32)pSECComponent->portParam.nPorts)) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- if (portIndex == ALL_PORT_INDEX) {
- for (i = 0; i < pSECComponent->portParam.nPorts; i++) {
- pSECPort = &pSECComponent->pSECPort[i];
- if (!CHECK_PORT_ENABLED(pSECPort)) {
- ret = OMX_ErrorIncorrectStateOperation;
- goto EXIT;
- }
- pSECPort->portState = OMX_StateLoaded;
- pSECPort->bIsPortDisabled = OMX_TRUE;
- }
- } else {
- pSECPort = &pSECComponent->pSECPort[portIndex];
- pSECPort->portState = OMX_StateLoaded;
- pSECPort->bIsPortDisabled = OMX_TRUE;
- }
- ret = OMX_ErrorNone;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-static OMX_ERRORTYPE SEC_SetMarkBuffer(SEC_OMX_BASECOMPONENT *pSECComponent, OMX_U32 nParam)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- OMX_U32 portIndex = nParam;
- OMX_U16 i = 0, cnt = 0;
-
-
- if (nParam >= pSECComponent->portParam.nPorts) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- if ((pSECComponent->currentState == OMX_StateExecuting) ||
- (pSECComponent->currentState == OMX_StatePause)) {
- ret = OMX_ErrorNone;
- } else {
- ret = OMX_ErrorIncorrectStateOperation;
- }
-
-EXIT:
- return ret;
-}
-
-static OMX_ERRORTYPE SEC_OMX_CommandQueue(
- SEC_OMX_BASECOMPONENT *pSECComponent,
- OMX_COMMANDTYPE Cmd,
- OMX_U32 nParam,
- OMX_PTR pCmdData)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_MESSAGE *command = (SEC_OMX_MESSAGE *)SEC_OSAL_Malloc(sizeof(SEC_OMX_MESSAGE));
-
- if (command == NULL) {
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
- command->messageType = (OMX_U32)Cmd;
- command->messageParam = nParam;
- command->pCmdData = pCmdData;
-
- ret = SEC_OSAL_Queue(&pSECComponent->messageQ, (void *)command);
- if (ret != 0) {
- ret = OMX_ErrorUndefined;
- goto EXIT;
- }
- ret = SEC_OSAL_SemaphorePost(pSECComponent->msgSemaphoreHandle);
-
-EXIT:
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_SendCommand(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_COMMANDTYPE Cmd,
- OMX_IN OMX_U32 nParam,
- OMX_IN OMX_PTR pCmdData)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_MESSAGE *message = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- if (pSECComponent->currentState == OMX_StateInvalid) {
- ret = OMX_ErrorInvalidState;
- goto EXIT;
- }
-
- switch (Cmd) {
- case OMX_CommandStateSet :
- SEC_OSAL_Log(SEC_LOG_TRACE, "Command: OMX_CommandStateSet");
- SEC_StateSet(pSECComponent, nParam);
- break;
- case OMX_CommandFlush :
- SEC_OSAL_Log(SEC_LOG_TRACE, "Command: OMX_CommandFlush");
- ret = SEC_SetPortFlush(pSECComponent, nParam);
- if (ret != OMX_ErrorNone)
- goto EXIT;
- break;
- case OMX_CommandPortDisable :
- SEC_OSAL_Log(SEC_LOG_TRACE, "Command: OMX_CommandPortDisable");
- ret = SEC_SetPortDisable(pSECComponent, nParam);
- if (ret != OMX_ErrorNone)
- goto EXIT;
- break;
- case OMX_CommandPortEnable :
- SEC_OSAL_Log(SEC_LOG_TRACE, "Command: OMX_CommandPortEnable");
- ret = SEC_SetPortEnable(pSECComponent, nParam);
- if (ret != OMX_ErrorNone)
- goto EXIT;
- break;
- case OMX_CommandMarkBuffer :
- SEC_OSAL_Log(SEC_LOG_TRACE, "Command: OMX_CommandMarkBuffer");
- ret = SEC_SetMarkBuffer(pSECComponent, nParam);
- if (ret != OMX_ErrorNone)
- goto EXIT;
- break;
-/*
- case SEC_CommandFillBuffer :
- case SEC_CommandEmptyBuffer :
- case SEC_CommandDeInit :
-*/
- default:
- break;
- }
-
- ret = SEC_OMX_CommandQueue(pSECComponent, Cmd, nParam, pCmdData);
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_GetParameter(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_INDEXTYPE nParamIndex,
- OMX_INOUT OMX_PTR ComponentParameterStructure)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- if (ComponentParameterStructure == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- if (pSECComponent->currentState == OMX_StateInvalid) {
- ret = OMX_ErrorInvalidState;
- goto EXIT;
- }
-
- switch (nParamIndex) {
- case (OMX_INDEXTYPE)OMX_COMPONENT_CAPABILITY_TYPE_INDEX:
- {
- /* For Android PV OpenCORE */
- OMXComponentCapabilityFlagsType *capabilityFlags = (OMXComponentCapabilityFlagsType *)ComponentParameterStructure;
- SEC_OSAL_Memcpy(capabilityFlags, &pSECComponent->capabilityFlags, sizeof(OMXComponentCapabilityFlagsType));
- }
- break;
- case OMX_IndexParamAudioInit:
- case OMX_IndexParamVideoInit:
- case OMX_IndexParamImageInit:
- case OMX_IndexParamOtherInit:
- {
- OMX_PORT_PARAM_TYPE *portParam = (OMX_PORT_PARAM_TYPE *)ComponentParameterStructure;
- ret = SEC_OMX_Check_SizeVersion(portParam, sizeof(OMX_PORT_PARAM_TYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
- portParam->nPorts = 0;
- portParam->nStartPortNumber = 0;
- }
- break;
- case OMX_IndexParamPortDefinition:
- {
- OMX_PARAM_PORTDEFINITIONTYPE *portDefinition = (OMX_PARAM_PORTDEFINITIONTYPE *)ComponentParameterStructure;
- OMX_U32 portIndex = portDefinition->nPortIndex;
- SEC_OMX_BASEPORT *pSECPort;
-
- if (portIndex >= pSECComponent->portParam.nPorts) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
- ret = SEC_OMX_Check_SizeVersion(portDefinition, sizeof(OMX_PARAM_PORTDEFINITIONTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- pSECPort = &pSECComponent->pSECPort[portIndex];
- SEC_OSAL_Memcpy(portDefinition, &pSECPort->portDefinition, portDefinition->nSize);
- }
- break;
- case OMX_IndexParamPriorityMgmt:
- {
- OMX_PRIORITYMGMTTYPE *compPriority = (OMX_PRIORITYMGMTTYPE *)ComponentParameterStructure;
-
- ret = SEC_OMX_Check_SizeVersion(compPriority, sizeof(OMX_PRIORITYMGMTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- compPriority->nGroupID = pSECComponent->compPriority.nGroupID;
- compPriority->nGroupPriority = pSECComponent->compPriority.nGroupPriority;
- }
- break;
-
- case OMX_IndexParamCompBufferSupplier:
- {
- OMX_PARAM_BUFFERSUPPLIERTYPE *bufferSupplier = (OMX_PARAM_BUFFERSUPPLIERTYPE *)ComponentParameterStructure;
- OMX_U32 portIndex = bufferSupplier->nPortIndex;
- SEC_OMX_BASEPORT *pSECPort;
-
- if ((pSECComponent->currentState == OMX_StateLoaded) ||
- (pSECComponent->currentState == OMX_StateWaitForResources)) {
- if (portIndex >= pSECComponent->portParam.nPorts) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
- ret = SEC_OMX_Check_SizeVersion(bufferSupplier, sizeof(OMX_PARAM_BUFFERSUPPLIERTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- pSECPort = &pSECComponent->pSECPort[portIndex];
-
-
- if (pSECPort->portDefinition.eDir == OMX_DirInput) {
- if (CHECK_PORT_BUFFER_SUPPLIER(pSECPort)) {
- bufferSupplier->eBufferSupplier = OMX_BufferSupplyInput;
- } else if (CHECK_PORT_TUNNELED(pSECPort)) {
- bufferSupplier->eBufferSupplier = OMX_BufferSupplyOutput;
- } else {
- bufferSupplier->eBufferSupplier = OMX_BufferSupplyUnspecified;
- }
- } else {
- if (CHECK_PORT_BUFFER_SUPPLIER(pSECPort)) {
- bufferSupplier->eBufferSupplier = OMX_BufferSupplyOutput;
- } else if (CHECK_PORT_TUNNELED(pSECPort)) {
- bufferSupplier->eBufferSupplier = OMX_BufferSupplyInput;
- } else {
- bufferSupplier->eBufferSupplier = OMX_BufferSupplyUnspecified;
- }
- }
- }
- else
- {
- ret = OMX_ErrorIncorrectStateOperation;
- goto EXIT;
- }
- }
- break;
- default:
- {
- ret = OMX_ErrorUnsupportedIndex;
- goto EXIT;
- }
- break;
- }
-
- ret = OMX_ErrorNone;
-
-EXIT:
-
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_SetParameter(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_INDEXTYPE nIndex,
- OMX_IN OMX_PTR ComponentParameterStructure)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- if (ComponentParameterStructure == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- if (pSECComponent->currentState == OMX_StateInvalid) {
- ret = OMX_ErrorInvalidState;
- goto EXIT;
- }
-
- switch (nIndex) {
- case OMX_IndexParamAudioInit:
- case OMX_IndexParamVideoInit:
- case OMX_IndexParamImageInit:
- case OMX_IndexParamOtherInit:
- {
- OMX_PORT_PARAM_TYPE *portParam = (OMX_PORT_PARAM_TYPE *)ComponentParameterStructure;
- ret = SEC_OMX_Check_SizeVersion(portParam, sizeof(OMX_PORT_PARAM_TYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if ((pSECComponent->currentState != OMX_StateLoaded) &&
- (pSECComponent->currentState != OMX_StateWaitForResources)) {
- ret = OMX_ErrorIncorrectStateOperation;
- goto EXIT;
- }
- ret = OMX_ErrorUndefined;
- /* SEC_OSAL_Memcpy(&pSECComponent->portParam, portParam, sizeof(OMX_PORT_PARAM_TYPE)); */
- }
- break;
- case OMX_IndexParamPortDefinition:
- {
- OMX_PARAM_PORTDEFINITIONTYPE *portDefinition = (OMX_PARAM_PORTDEFINITIONTYPE *)ComponentParameterStructure;
- OMX_U32 portIndex = portDefinition->nPortIndex;
- SEC_OMX_BASEPORT *pSECPort;
-
- if (portIndex >= pSECComponent->portParam.nPorts) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
- ret = SEC_OMX_Check_SizeVersion(portDefinition, sizeof(OMX_PARAM_PORTDEFINITIONTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- pSECPort = &pSECComponent->pSECPort[portIndex];
-
- if ((pSECComponent->currentState != OMX_StateLoaded) && (pSECComponent->currentState != OMX_StateWaitForResources)) {
- if (pSECPort->portDefinition.bEnabled == OMX_TRUE) {
- ret = OMX_ErrorIncorrectStateOperation;
- goto EXIT;
- }
- }
- if (portDefinition->nBufferCountActual < pSECPort->portDefinition.nBufferCountMin) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- SEC_OSAL_Memcpy(&pSECPort->portDefinition, portDefinition, portDefinition->nSize);
- }
- break;
- case OMX_IndexParamPriorityMgmt:
- {
- OMX_PRIORITYMGMTTYPE *compPriority = (OMX_PRIORITYMGMTTYPE *)ComponentParameterStructure;
-
- if ((pSECComponent->currentState != OMX_StateLoaded) &&
- (pSECComponent->currentState != OMX_StateWaitForResources)) {
- ret = OMX_ErrorIncorrectStateOperation;
- goto EXIT;
- }
-
- ret = SEC_OMX_Check_SizeVersion(compPriority, sizeof(OMX_PRIORITYMGMTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- pSECComponent->compPriority.nGroupID = compPriority->nGroupID;
- pSECComponent->compPriority.nGroupPriority = compPriority->nGroupPriority;
- }
- break;
- case OMX_IndexParamCompBufferSupplier:
- {
- OMX_PARAM_BUFFERSUPPLIERTYPE *bufferSupplier = (OMX_PARAM_BUFFERSUPPLIERTYPE *)ComponentParameterStructure;
- OMX_U32 portIndex = bufferSupplier->nPortIndex;
- SEC_OMX_BASEPORT *pSECPort = &pSECComponent->pSECPort[portIndex];
-
- if ((pSECComponent->currentState != OMX_StateLoaded) && (pSECComponent->currentState != OMX_StateWaitForResources)) {
- if (pSECPort->portDefinition.bEnabled == OMX_TRUE) {
- ret = OMX_ErrorIncorrectStateOperation;
- goto EXIT;
- }
- }
-
- if (portIndex >= pSECComponent->portParam.nPorts) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
- ret = SEC_OMX_Check_SizeVersion(bufferSupplier, sizeof(OMX_PARAM_BUFFERSUPPLIERTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (bufferSupplier->eBufferSupplier == OMX_BufferSupplyUnspecified) {
- ret = OMX_ErrorNone;
- goto EXIT;
- }
- if (CHECK_PORT_TUNNELED(pSECPort) == 0) {
- ret = OMX_ErrorNone; /*OMX_ErrorNone ?????*/
- goto EXIT;
- }
-
- if (pSECPort->portDefinition.eDir == OMX_DirInput) {
- if (bufferSupplier->eBufferSupplier == OMX_BufferSupplyInput) {
- /*
- if (CHECK_PORT_BUFFER_SUPPLIER(pSECPort)) {
- ret = OMX_ErrorNone;
- }
- */
- pSECPort->tunnelFlags |= SEC_TUNNEL_IS_SUPPLIER;
- bufferSupplier->nPortIndex = pSECPort->tunneledPort;
- ret = OMX_SetParameter(pSECPort->tunneledComponent, OMX_IndexParamCompBufferSupplier, bufferSupplier);
- goto EXIT;
- } else if (bufferSupplier->eBufferSupplier == OMX_BufferSupplyOutput) {
- ret = OMX_ErrorNone;
- if (CHECK_PORT_BUFFER_SUPPLIER(pSECPort)) {
- pSECPort->tunnelFlags &= ~SEC_TUNNEL_IS_SUPPLIER;
- bufferSupplier->nPortIndex = pSECPort->tunneledPort;
- ret = OMX_SetParameter(pSECPort->tunneledComponent, OMX_IndexParamCompBufferSupplier, bufferSupplier);
- }
- goto EXIT;
- }
- } else if (pSECPort->portDefinition.eDir == OMX_DirOutput) {
- if (bufferSupplier->eBufferSupplier == OMX_BufferSupplyInput) {
- ret = OMX_ErrorNone;
- if (CHECK_PORT_BUFFER_SUPPLIER(pSECPort)) {
- pSECPort->tunnelFlags &= ~SEC_TUNNEL_IS_SUPPLIER;
- ret = OMX_ErrorNone;
- }
- goto EXIT;
- } else if (bufferSupplier->eBufferSupplier == OMX_BufferSupplyOutput) {
- /*
- if (CHECK_PORT_BUFFER_SUPPLIER(pSECPort)) {
- ret = OMX_ErrorNone;
- }
- */
- pSECPort->tunnelFlags |= SEC_TUNNEL_IS_SUPPLIER;
- ret = OMX_ErrorNone;
- goto EXIT;
- }
- }
- }
- break;
- default:
- {
- ret = OMX_ErrorUnsupportedIndex;
- goto EXIT;
- }
- break;
- }
-
- ret = OMX_ErrorNone;
-
-EXIT:
-
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_GetConfig(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_INDEXTYPE nIndex,
- OMX_INOUT OMX_PTR pComponentConfigStructure)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- if (pComponentConfigStructure == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- if (pSECComponent->currentState == OMX_StateInvalid) {
- ret = OMX_ErrorInvalidState;
- goto EXIT;
- }
- ret = OMX_ErrorUnsupportedIndex;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_SetConfig(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_INDEXTYPE nIndex,
- OMX_IN OMX_PTR pComponentConfigStructure)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- if (pComponentConfigStructure == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- if (pSECComponent->currentState == OMX_StateInvalid) {
- ret = OMX_ErrorInvalidState;
- goto EXIT;
- }
- ret = OMX_ErrorUnsupportedIndex;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_GetExtensionIndex(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_STRING cParameterName,
- OMX_OUT OMX_INDEXTYPE *pIndexType)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- if ((cParameterName == NULL) || (pIndexType == NULL)) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- if (pSECComponent->currentState == OMX_StateInvalid) {
- ret = OMX_ErrorInvalidState;
- goto EXIT;
- }
-
- ret = OMX_ErrorBadParameter;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_SetCallbacks (
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_CALLBACKTYPE* pCallbacks,
- OMX_IN OMX_PTR pAppData)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- if (pCallbacks == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- if (pSECComponent->currentState == OMX_StateInvalid) {
- ret = OMX_ErrorInvalidState;
- goto EXIT;
- }
- if (pSECComponent->currentState != OMX_StateLoaded) {
- ret = OMX_ErrorIncorrectStateOperation;
- goto EXIT;
- }
-
- pSECComponent->pCallbacks = pCallbacks;
- pSECComponent->callbackData = pAppData;
-
- ret = OMX_ErrorNone;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_UseEGLImage(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_INOUT OMX_BUFFERHEADERTYPE **ppBufferHdr,
- OMX_IN OMX_U32 nPortIndex,
- OMX_IN OMX_PTR pAppPrivate,
- OMX_IN void *eglImage)
-{
- return OMX_ErrorNotImplemented;
-}
-
-OMX_ERRORTYPE SEC_OMX_BaseComponent_Constructor(
- OMX_IN OMX_HANDLETYPE hComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- SEC_OSAL_Log(SEC_LOG_ERROR, "OMX_ErrorBadParameter, Line:%d", __LINE__);
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- pSECComponent = SEC_OSAL_Malloc(sizeof(SEC_OMX_BASECOMPONENT));
- if (pSECComponent == NULL) {
- ret = OMX_ErrorInsufficientResources;
- SEC_OSAL_Log(SEC_LOG_ERROR, "OMX_ErrorInsufficientResources, Line:%d", __LINE__);
- goto EXIT;
- }
- SEC_OSAL_Memset(pSECComponent, 0, sizeof(SEC_OMX_BASECOMPONENT));
- pOMXComponent->pComponentPrivate = (OMX_PTR)pSECComponent;
-
- ret = SEC_OSAL_SemaphoreCreate(&pSECComponent->msgSemaphoreHandle);
- if (ret != OMX_ErrorNone) {
- ret = OMX_ErrorInsufficientResources;
- SEC_OSAL_Log(SEC_LOG_ERROR, "OMX_ErrorInsufficientResources, Line:%d", __LINE__);
- goto EXIT;
- }
- ret = SEC_OSAL_MutexCreate(&pSECComponent->compMutex);
- if (ret != OMX_ErrorNone) {
- ret = OMX_ErrorInsufficientResources;
- SEC_OSAL_Log(SEC_LOG_ERROR, "OMX_ErrorInsufficientResources, Line:%d", __LINE__);
- goto EXIT;
- }
-
- pSECComponent->bExitMessageHandlerThread = OMX_FALSE;
- SEC_OSAL_QueueCreate(&pSECComponent->messageQ);
- ret = SEC_OSAL_ThreadCreate(&pSECComponent->hMessageHandler, SEC_OMX_MessageHandlerThread, pOMXComponent);
- if (ret != OMX_ErrorNone) {
- ret = OMX_ErrorInsufficientResources;
- SEC_OSAL_Log(SEC_LOG_ERROR, "OMX_ErrorInsufficientResources, Line:%d", __LINE__);
- goto EXIT;
- }
-
- pOMXComponent->GetComponentVersion = &SEC_OMX_GetComponentVersion;
- pOMXComponent->SendCommand = &SEC_OMX_SendCommand;
- pOMXComponent->GetExtensionIndex = &SEC_OMX_GetExtensionIndex;
- pOMXComponent->GetState = &SEC_OMX_GetState;
- pOMXComponent->SetCallbacks = &SEC_OMX_SetCallbacks;
- pOMXComponent->UseEGLImage = &SEC_OMX_UseEGLImage;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_BaseComponent_Destructor(
- OMX_IN OMX_HANDLETYPE hComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- OMX_U32 semaValue = 0;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- SEC_OMX_CommandQueue(pSECComponent, SEC_OMX_CommandComponentDeInit, 0, NULL);
- SEC_OSAL_SleepMillisec(0);
- SEC_OSAL_Get_SemaphoreCount(pSECComponent->msgSemaphoreHandle, &semaValue);
- if (semaValue == 0)
- SEC_OSAL_SemaphorePost(pSECComponent->msgSemaphoreHandle);
- SEC_OSAL_SemaphorePost(pSECComponent->msgSemaphoreHandle);
-
- SEC_OSAL_ThreadTerminate(pSECComponent->hMessageHandler);
- pSECComponent->hMessageHandler = NULL;
-
- SEC_OSAL_MutexTerminate(pSECComponent->compMutex);
- pSECComponent->compMutex = NULL;
- SEC_OSAL_SemaphoreTerminate(pSECComponent->msgSemaphoreHandle);
- pSECComponent->msgSemaphoreHandle = NULL;
- SEC_OSAL_QueueTerminate(&pSECComponent->messageQ);
-
- SEC_OSAL_Free(pSECComponent);
- pSECComponent = NULL;
-
- ret = OMX_ErrorNone;
-EXIT:
- FunctionOut();
-
- return ret;
-}
diff --git a/sec_mm/sec_omx/sec_omx_component/common/SEC_OMX_Basecomponent.h b/sec_mm/sec_omx/sec_omx_component/common/SEC_OMX_Basecomponent.h
deleted file mode 100644
index d413257..0000000
--- a/sec_mm/sec_omx/sec_omx_component/common/SEC_OMX_Basecomponent.h
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OMX_Basecomponent.h
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * Yunji Kim (yunji.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#ifndef SEC_OMX_BASECOMP
-#define SEC_OMX_BASECOMP
-
-#include "SEC_OMX_Def.h"
-#include "OMX_Component.h"
-#include "SEC_OSAL_Queue.h"
-#include "SEC_OMX_Baseport.h"
-
-
-typedef struct _SEC_OMX_MESSAGE
-{
- OMX_U32 messageType;
- OMX_U32 messageParam;
- OMX_PTR pCmdData;
-} SEC_OMX_MESSAGE;
-
-typedef struct _SEC_OMX_DATABUFFER
-{
- OMX_HANDLETYPE bufferMutex;
- OMX_BUFFERHEADERTYPE* bufferHeader;
- OMX_BOOL dataValid;
- OMX_U32 allocSize;
- OMX_U32 dataLen;
- OMX_U32 usedDataLen;
- OMX_U32 remainDataLen;
- OMX_U32 nFlags;
- OMX_TICKS timeStamp;
-} SEC_OMX_DATABUFFER;
-
-typedef struct _SEC_BUFFER_HEADER{
- void *YPhyAddr; // [IN/OUT] physical address of Y
- void *CPhyAddr; // [IN/OUT] physical address of CbCr
- void *YVirAddr; // [IN/OUT] virtual address of Y
- void *CVirAddr; // [IN/OUT] virtual address of CbCr
- int YSize; // [IN/OUT] input size of Y data
- int CSize; // [IN/OUT] input size of CbCr data
-} SEC_BUFFER_HEADER;
-
-typedef struct _SEC_OMX_DATA
-{
- OMX_BYTE dataBuffer;
- OMX_U32 allocSize;
- OMX_U32 dataLen;
- OMX_U32 usedDataLen;
- OMX_U32 remainDataLen;
- OMX_U32 previousDataLen;
- OMX_U32 nFlags;
- OMX_TICKS timeStamp;
- SEC_BUFFER_HEADER specificBufferHeader;
-} SEC_OMX_DATA;
-
-/* for Check TimeStamp after Seek */
-typedef struct _SEC_OMX_TIMESTAPM
-{
- OMX_BOOL needSetStartTimeStamp;
- OMX_BOOL needCheckStartTimeStamp;
- OMX_TICKS startTimeStamp;
- OMX_U32 nStartFlags;
-} SEC_OMX_TIMESTAMP;
-
-typedef struct _SEC_OMX_BASECOMPONENT
-{
- OMX_STRING componentName;
- OMX_VERSIONTYPE componentVersion;
- OMX_VERSIONTYPE specVersion;
-
- OMX_STATETYPE currentState;
- SEC_OMX_TRANS_STATETYPE transientState;
-
- SEC_CODEC_TYPE codecType;
- SEC_OMX_PRIORITYMGMTTYPE compPriority;
- OMX_MARKTYPE propagateMarkType;
- OMX_HANDLETYPE compMutex;
-
- OMX_HANDLETYPE hCodecHandle;
-
- /* Message Handler */
- OMX_BOOL bExitMessageHandlerThread;
- OMX_HANDLETYPE hMessageHandler;
- OMX_HANDLETYPE msgSemaphoreHandle;
- SEC_QUEUE messageQ;
-
- /* Buffer Process */
- OMX_BOOL bExitBufferProcessThread;
- OMX_HANDLETYPE hBufferProcess;
-
- /* Buffer */
- SEC_OMX_DATABUFFER secDataBuffer[2];
-
- /* Data */
- SEC_OMX_DATA processData[2];
-
- /* Port */
- OMX_PORT_PARAM_TYPE portParam;
- SEC_OMX_BASEPORT *pSECPort;
-
- OMX_HANDLETYPE pauseEvent;
-
- /* Callback function */
- OMX_CALLBACKTYPE *pCallbacks;
- OMX_PTR callbackData;
-
- /* Save Timestamp */
- OMX_TICKS timeStamp[MAX_TIMESTAMP];
- SEC_OMX_TIMESTAMP checkTimeStamp;
-
- /* Save Flags */
- OMX_U32 nFlags[MAX_FLAGS];
-
- OMX_BOOL getAllDelayBuffer;
- OMX_BOOL remainOutputData;
- OMX_BOOL reInputData;
-
- /* Android CapabilityFlags */
- OMXComponentCapabilityFlagsType capabilityFlags;
-
- OMX_BOOL bUseFlagEOF;
- OMX_BOOL bSaveFlagEOS;
-
- OMX_ERRORTYPE (*sec_mfc_componentInit)(OMX_COMPONENTTYPE *pOMXComponent);
- OMX_ERRORTYPE (*sec_mfc_componentTerminate)(OMX_COMPONENTTYPE *pOMXComponent);
- OMX_ERRORTYPE (*sec_mfc_bufferProcess) (OMX_COMPONENTTYPE *pOMXComponent, SEC_OMX_DATA *pInputData, SEC_OMX_DATA *pOutputData);
-
- OMX_ERRORTYPE (*sec_AllocateTunnelBuffer)(SEC_OMX_BASEPORT *pOMXBasePort, OMX_U32 nPortIndex);
- OMX_ERRORTYPE (*sec_FreeTunnelBuffer)(SEC_OMX_BASEPORT *pOMXBasePort, OMX_U32 nPortIndex);
- OMX_ERRORTYPE (*sec_BufferProcess)(OMX_HANDLETYPE hComponent);
- OMX_ERRORTYPE (*sec_BufferReset)(OMX_COMPONENTTYPE *pOMXComponent, OMX_U32 nPortIndex);
- OMX_ERRORTYPE (*sec_InputBufferReturn)(OMX_COMPONENTTYPE *pOMXComponent);
- OMX_ERRORTYPE (*sec_OutputBufferReturn)(OMX_COMPONENTTYPE *pOMXComponent);
-
- int (*sec_checkInputFrame)(unsigned char *pInputStream, int buffSize, OMX_U32 flag, OMX_BOOL bPreviousFrameEOF, OMX_BOOL *pbEndOfFrame);
-
-} SEC_OMX_BASECOMPONENT;
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
- OMX_ERRORTYPE SEC_OMX_Check_SizeVersion(OMX_PTR header, OMX_U32 size);
-
-
-#ifdef __cplusplus
-};
-#endif
-
-#endif
diff --git a/sec_mm/sec_omx/sec_omx_component/common/SEC_OMX_Baseport.c b/sec_mm/sec_omx/sec_omx_component/common/SEC_OMX_Baseport.c
deleted file mode 100644
index 97e00af..0000000
--- a/sec_mm/sec_omx/sec_omx_component/common/SEC_OMX_Baseport.c
+++ /dev/null
@@ -1,1009 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OMX_Baseport.c
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * HyeYeon Chung (hyeon.chung@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "SEC_OMX_Macros.h"
-#include "SEC_OSAL_Event.h"
-#include "SEC_OSAL_Semaphore.h"
-#include "SEC_OSAL_Mutex.h"
-
-#include "SEC_OMX_Baseport.h"
-#include "SEC_OMX_Basecomponent.h"
-
-#undef SEC_LOG_TAG
-#define SEC_LOG_TAG "SEC_BASE_PORT"
-#define SEC_LOG_OFF
-#include "SEC_OSAL_Log.h"
-
-
-OMX_ERRORTYPE SEC_OMX_FlushPort(OMX_COMPONENTTYPE *pOMXComponent, OMX_S32 portIndex)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- OMX_BUFFERHEADERTYPE *bufferHeader = NULL;
- SEC_OMX_MESSAGE *message = NULL;
- OMX_U32 flushNum = 0;
- OMX_S32 semValue = 0;
-
- FunctionIn();
-
- pSECPort = &pSECComponent->pSECPort[portIndex];
- while (SEC_OSAL_GetElemNum(&pSECPort->bufferQ) > 0) {
- SEC_OSAL_Get_SemaphoreCount(pSECComponent->pSECPort[portIndex].bufferSemID, &semValue);
- if (semValue == 0)
- SEC_OSAL_SemaphorePost(pSECComponent->pSECPort[portIndex].bufferSemID);
- SEC_OSAL_SemaphoreWait(pSECComponent->pSECPort[portIndex].bufferSemID);
-
- message = (SEC_OMX_MESSAGE *)SEC_OSAL_Dequeue(&pSECPort->bufferQ);
- if (message != NULL) {
- bufferHeader = (OMX_BUFFERHEADERTYPE *)message->pCmdData;
- bufferHeader->nFilledLen = 0;
-
- if (CHECK_PORT_TUNNELED(pSECPort) && !CHECK_PORT_BUFFER_SUPPLIER(pSECPort)) {
- if (portIndex) {
- OMX_EmptyThisBuffer(pSECPort->tunneledComponent, bufferHeader);
- } else {
- OMX_FillThisBuffer(pSECPort->tunneledComponent, bufferHeader);
- }
- SEC_OSAL_Free(message);
- message = NULL;
- } else if (CHECK_PORT_TUNNELED(pSECPort) && CHECK_PORT_BUFFER_SUPPLIER(pSECPort)) {
- SEC_OSAL_Log(SEC_LOG_ERROR, "Tunneled mode is not working, Line:%d", __LINE__);
- ret = OMX_ErrorNotImplemented;
- SEC_OSAL_Queue(&pSECPort->bufferQ, pSECPort);
- goto EXIT;
- } else {
- if (portIndex == OUTPUT_PORT_INDEX) {
- pSECComponent->pCallbacks->FillBufferDone(pOMXComponent, pSECComponent->callbackData, bufferHeader);
- } else {
- pSECComponent->pCallbacks->EmptyBufferDone(pOMXComponent, pSECComponent->callbackData, bufferHeader);
- }
-
- SEC_OSAL_Free(message);
- message = NULL;
- }
- }
- }
-
- if (pSECComponent->secDataBuffer[portIndex].dataValid == OMX_TRUE) {
- if (CHECK_PORT_TUNNELED(pSECPort) && CHECK_PORT_BUFFER_SUPPLIER(pSECPort)) {
- message = SEC_OSAL_Malloc(sizeof(SEC_OMX_MESSAGE));
- message->pCmdData = pSECComponent->secDataBuffer[portIndex].bufferHeader;
- message->messageType = 0;
- message->messageParam = -1;
- SEC_OSAL_Queue(&pSECPort->bufferQ, message);
- pSECComponent->sec_BufferReset(pOMXComponent, portIndex);
- } else {
- if (portIndex == INPUT_PORT_INDEX)
- pSECComponent->sec_InputBufferReturn(pOMXComponent);
- else if (portIndex == OUTPUT_PORT_INDEX)
- pSECComponent->sec_OutputBufferReturn(pOMXComponent);
- }
- }
-
- if (CHECK_PORT_TUNNELED(pSECPort) && CHECK_PORT_BUFFER_SUPPLIER(pSECPort)) {
- while (SEC_OSAL_GetElemNum(&pSECPort->bufferQ) < pSECPort->assignedBufferNum) {
- SEC_OSAL_SemaphoreWait(pSECComponent->pSECPort[portIndex].bufferSemID);
- }
- if (SEC_OSAL_GetElemNum(&pSECPort->bufferQ) != pSECPort->assignedBufferNum)
- SEC_OSAL_SetElemNum(&pSECPort->bufferQ, pSECPort->assignedBufferNum);
- } else {
- while(1) {
- int cnt;
- SEC_OSAL_Get_SemaphoreCount(pSECComponent->pSECPort[portIndex].bufferSemID, &cnt);
- if (cnt == 0)
- break;
- SEC_OSAL_SemaphoreWait(pSECComponent->pSECPort[portIndex].bufferSemID);
- }
- SEC_OSAL_SetElemNum(&pSECPort->bufferQ, 0);
- }
-
- pSECComponent->processData[portIndex].dataLen = 0;
- pSECComponent->processData[portIndex].nFlags = 0;
- pSECComponent->processData[portIndex].remainDataLen = 0;
- pSECComponent->processData[portIndex].timeStamp = 0;
- pSECComponent->processData[portIndex].usedDataLen = 0;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_BufferFlushProcess(OMX_COMPONENTTYPE *pOMXComponent, OMX_S32 nPortIndex)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- OMX_S32 portIndex = 0;
- OMX_U32 i = 0, cnt = 0;
- SEC_OMX_DATABUFFER *flushBuffer = NULL;
-
- FunctionIn();
-
- if (pOMXComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- cnt = (nPortIndex == ALL_PORT_INDEX ) ? ALL_PORT_NUM : 1;
-
- for (i = 0; i < cnt; i++) {
- if (nPortIndex == ALL_PORT_INDEX)
- portIndex = i;
- else
- portIndex = nPortIndex;
-
- SEC_OSAL_SignalSet(pSECComponent->pauseEvent);
-
- flushBuffer = &pSECComponent->secDataBuffer[portIndex];
-
- SEC_OSAL_MutexLock(flushBuffer->bufferMutex);
- ret = SEC_OMX_FlushPort(pOMXComponent, portIndex);
- SEC_OSAL_MutexUnlock(flushBuffer->bufferMutex);
-
- pSECComponent->pSECPort[portIndex].bIsPortFlushed = OMX_FALSE;
-
- if (ret == OMX_ErrorNone) {
- SEC_OSAL_Log(SEC_LOG_TRACE,"OMX_CommandFlush EventCmdComplete");
- pSECComponent->pCallbacks->EventHandler((OMX_HANDLETYPE)pOMXComponent,
- pSECComponent->callbackData,
- OMX_EventCmdComplete,
- OMX_CommandFlush, portIndex, NULL);
- }
-
- if (portIndex == INPUT_PORT_INDEX) {
- pSECComponent->checkTimeStamp.needSetStartTimeStamp = OMX_TRUE;
- pSECComponent->checkTimeStamp.needCheckStartTimeStamp = OMX_FALSE;
- SEC_OSAL_Memset(pSECComponent->timeStamp, -19771003, sizeof(OMX_TICKS) * MAX_TIMESTAMP);
- SEC_OSAL_Memset(pSECComponent->nFlags, 0, sizeof(OMX_U32) * MAX_FLAGS);
- pSECComponent->getAllDelayBuffer = OMX_FALSE;
- pSECComponent->bSaveFlagEOS = OMX_FALSE;
- pSECComponent->reInputData = OMX_FALSE;
- } else if (portIndex == OUTPUT_PORT_INDEX) {
- pSECComponent->remainOutputData = OMX_FALSE;
- }
- }
-
-EXIT:
- if (ret != OMX_ErrorNone) {
- pSECComponent->pCallbacks->EventHandler(pOMXComponent,
- pSECComponent->callbackData,
- OMX_EventError,
- ret, 0, NULL);
- }
-
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_BufferFlushProcessNoEvent(OMX_COMPONENTTYPE *pOMXComponent, OMX_S32 nPortIndex)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- OMX_S32 portIndex = 0;
- OMX_U32 i = 0, cnt = 0;
- SEC_OMX_DATABUFFER *flushBuffer = NULL;
-
- FunctionIn();
-
- if (pOMXComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- cnt = (nPortIndex == ALL_PORT_INDEX ) ? ALL_PORT_NUM : 1;
-
- for (i = 0; i < cnt; i++) {
- if (nPortIndex == ALL_PORT_INDEX)
- portIndex = i;
- else
- portIndex = nPortIndex;
-
- pSECComponent->pSECPort[portIndex].bIsPortFlushed = OMX_TRUE;
-
- SEC_OSAL_SignalSet(pSECComponent->pauseEvent);
-
- flushBuffer = &pSECComponent->secDataBuffer[portIndex];
-
- SEC_OSAL_MutexLock(flushBuffer->bufferMutex);
- ret = SEC_OMX_FlushPort(pOMXComponent, portIndex);
- SEC_OSAL_MutexUnlock(flushBuffer->bufferMutex);
-
- pSECComponent->pSECPort[portIndex].bIsPortFlushed = OMX_FALSE;
-
- if (portIndex == INPUT_PORT_INDEX) {
- pSECComponent->checkTimeStamp.needSetStartTimeStamp = OMX_TRUE;
- pSECComponent->checkTimeStamp.needCheckStartTimeStamp = OMX_FALSE;
- SEC_OSAL_Memset(pSECComponent->timeStamp, -19771003, sizeof(OMX_TICKS) * MAX_TIMESTAMP);
- SEC_OSAL_Memset(pSECComponent->nFlags, 0, sizeof(OMX_U32) * MAX_FLAGS);
- pSECComponent->getAllDelayBuffer = OMX_FALSE;
- pSECComponent->bSaveFlagEOS = OMX_FALSE;
- pSECComponent->remainOutputData = OMX_FALSE;
- pSECComponent->reInputData = OMX_FALSE;
- }
- }
-
-EXIT:
- if (ret != OMX_ErrorNone) {
- pSECComponent->pCallbacks->EventHandler(pOMXComponent,
- pSECComponent->callbackData,
- OMX_EventError,
- ret, 0, NULL);
- }
-
- FunctionOut();
-
- return ret;
-}
-
-
-OMX_ERRORTYPE SEC_OMX_EnablePort(OMX_COMPONENTTYPE *pOMXComponent, OMX_S32 portIndex)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- OMX_U32 i = 0, cnt = 0;
-
- FunctionIn();
-
- pSECPort = &pSECComponent->pSECPort[portIndex];
- pSECPort->portDefinition.bEnabled = OMX_TRUE;
-
- if (CHECK_PORT_TUNNELED(pSECPort) && CHECK_PORT_BUFFER_SUPPLIER(pSECPort)) {
- ret = pSECComponent->sec_AllocateTunnelBuffer(pSECPort, portIndex);
- if (OMX_ErrorNone != ret) {
- goto EXIT;
- }
- pSECPort->portDefinition.bPopulated = OMX_TRUE;
- if (pSECComponent->currentState == OMX_StateExecuting) {
- for (i=0; i<pSECPort->tunnelBufferNum; i++) {
- SEC_OSAL_SemaphorePost(pSECComponent->pSECPort[portIndex].bufferSemID);
- }
- }
- } else if (CHECK_PORT_TUNNELED(pSECPort) && !CHECK_PORT_BUFFER_SUPPLIER(pSECPort)) {
- if ((pSECComponent->currentState != OMX_StateLoaded) && (pSECComponent->currentState != OMX_StateWaitForResources)) {
- SEC_OSAL_SemaphoreWait(pSECPort->loadedResource);
- pSECPort->portDefinition.bPopulated = OMX_TRUE;
- }
- } else {
- if ((pSECComponent->currentState != OMX_StateLoaded) && (pSECComponent->currentState != OMX_StateWaitForResources)) {
- SEC_OSAL_SemaphoreWait(pSECPort->loadedResource);
- pSECPort->portDefinition.bPopulated = OMX_TRUE;
- }
- }
- ret = OMX_ErrorNone;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_PortEnableProcess(OMX_COMPONENTTYPE *pOMXComponent, OMX_S32 nPortIndex)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- OMX_S32 portIndex = 0;
- OMX_U32 i = 0, cnt = 0;
-
- FunctionIn();
-
- if (pOMXComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- cnt = (nPortIndex == ALL_PORT_INDEX) ? ALL_PORT_NUM : 1;
-
- for (i = 0; i < cnt; i++) {
- if (nPortIndex == ALL_PORT_INDEX)
- portIndex = i;
- else
- portIndex = nPortIndex;
-
- ret = SEC_OMX_EnablePort(pOMXComponent, portIndex);
- if (ret == OMX_ErrorNone) {
- pSECComponent->pCallbacks->EventHandler(pOMXComponent,
- pSECComponent->callbackData,
- OMX_EventCmdComplete,
- OMX_CommandPortEnable, portIndex, NULL);
- }
- }
-
-EXIT:
- if (ret != OMX_ErrorNone) {
- pSECComponent->pCallbacks->EventHandler(pOMXComponent,
- pSECComponent->callbackData,
- OMX_EventError,
- ret, 0, NULL);
- }
-
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_DisablePort(OMX_COMPONENTTYPE *pOMXComponent, OMX_S32 portIndex)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- OMX_U32 i = 0, elemNum = 0;
- SEC_OMX_MESSAGE *message;
-
- FunctionIn();
-
- pSECPort = &pSECComponent->pSECPort[portIndex];
-
- if (!CHECK_PORT_ENABLED(pSECPort)) {
- ret = OMX_ErrorNone;
- goto EXIT;
- }
-
- if (pSECComponent->currentState!=OMX_StateLoaded) {
- if (CHECK_PORT_TUNNELED(pSECPort) && CHECK_PORT_BUFFER_SUPPLIER(pSECPort)) {
- while (SEC_OSAL_GetElemNum(&pSECPort->bufferQ) >0 ) {
- message = (SEC_OMX_MESSAGE*)SEC_OSAL_Dequeue(&pSECPort->bufferQ);
- SEC_OSAL_Free(message);
- }
- ret = pSECComponent->sec_FreeTunnelBuffer(pSECPort, portIndex);
- if (OMX_ErrorNone != ret) {
- goto EXIT;
- }
- pSECPort->portDefinition.bPopulated = OMX_FALSE;
- } else if (CHECK_PORT_TUNNELED(pSECPort) && !CHECK_PORT_BUFFER_SUPPLIER(pSECPort)) {
- pSECPort->portDefinition.bPopulated = OMX_FALSE;
- SEC_OSAL_SemaphoreWait(pSECPort->unloadedResource);
- } else {
- if (CHECK_PORT_BUFFER_SUPPLIER(pSECPort)) {
- while (SEC_OSAL_GetElemNum(&pSECPort->bufferQ) >0 ) {
- message = (SEC_OMX_MESSAGE*)SEC_OSAL_Dequeue(&pSECPort->bufferQ);
- SEC_OSAL_Free(message);
- }
- }
- pSECPort->portDefinition.bPopulated = OMX_FALSE;
- SEC_OSAL_SemaphoreWait(pSECPort->unloadedResource);
- }
- }
- pSECPort->portDefinition.bEnabled = OMX_FALSE;
- ret = OMX_ErrorNone;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_PortDisableProcess(OMX_COMPONENTTYPE *pOMXComponent, OMX_S32 nPortIndex)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- OMX_S32 portIndex = 0;
- OMX_U32 i = 0, cnt = 0;
- SEC_OMX_DATABUFFER *flushBuffer = NULL;
-
- FunctionIn();
-
- if (pOMXComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- cnt = (nPortIndex == ALL_PORT_INDEX ) ? ALL_PORT_NUM : 1;
-
- /* port flush*/
- for(i = 0; i < cnt; i++) {
- if (nPortIndex == ALL_PORT_INDEX)
- portIndex = i;
- else
- portIndex = nPortIndex;
-
- pSECComponent->pSECPort[portIndex].bIsPortFlushed = OMX_TRUE;
-
- flushBuffer = &pSECComponent->secDataBuffer[portIndex];
-
- SEC_OSAL_MutexLock(flushBuffer->bufferMutex);
- ret = SEC_OMX_FlushPort(pOMXComponent, portIndex);
- SEC_OSAL_MutexUnlock(flushBuffer->bufferMutex);
-
- pSECComponent->pSECPort[portIndex].bIsPortFlushed = OMX_FALSE;
-
- if (portIndex == INPUT_PORT_INDEX) {
- pSECComponent->checkTimeStamp.needSetStartTimeStamp = OMX_TRUE;
- pSECComponent->checkTimeStamp.needCheckStartTimeStamp = OMX_FALSE;
- SEC_OSAL_Memset(pSECComponent->timeStamp, -19771003, sizeof(OMX_TICKS) * MAX_TIMESTAMP);
- SEC_OSAL_Memset(pSECComponent->nFlags, 0, sizeof(OMX_U32) * MAX_FLAGS);
- pSECComponent->getAllDelayBuffer = OMX_FALSE;
- pSECComponent->bSaveFlagEOS = OMX_FALSE;
- pSECComponent->reInputData = OMX_FALSE;
- } else if (portIndex == OUTPUT_PORT_INDEX) {
- pSECComponent->remainOutputData = OMX_FALSE;
- }
- }
-
- for(i = 0; i < cnt; i++) {
- if (nPortIndex == ALL_PORT_INDEX)
- portIndex = i;
- else
- portIndex = nPortIndex;
-
- ret = SEC_OMX_DisablePort(pOMXComponent, portIndex);
- pSECComponent->pSECPort[portIndex].bIsPortDisabled = OMX_FALSE;
- if (ret == OMX_ErrorNone) {
- pSECComponent->pCallbacks->EventHandler(pOMXComponent,
- pSECComponent->callbackData,
- OMX_EventCmdComplete,
- OMX_CommandPortDisable, portIndex, NULL);
- }
- }
-
-EXIT:
- if (ret != OMX_ErrorNone) {
- pSECComponent->pCallbacks->EventHandler(pOMXComponent,
- pSECComponent->callbackData,
- OMX_EventError,
- ret, 0, NULL);
- }
-
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_EmptyThisBuffer(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_BUFFERHEADERTYPE *pBuffer)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- OMX_BOOL findBuffer = OMX_FALSE;
- SEC_OMX_MESSAGE *message;
- OMX_U32 i = 0;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- if (pSECComponent->currentState == OMX_StateInvalid) {
- ret = OMX_ErrorInvalidState;
- goto EXIT;
- }
-
- if (pBuffer == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- if (pBuffer->nInputPortIndex != INPUT_PORT_INDEX) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- ret = SEC_OMX_Check_SizeVersion(pBuffer, sizeof(OMX_BUFFERHEADERTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if ((pSECComponent->currentState != OMX_StateIdle) &&
- (pSECComponent->currentState != OMX_StateExecuting) &&
- (pSECComponent->currentState != OMX_StatePause)) {
- ret = OMX_ErrorIncorrectStateOperation;
- goto EXIT;
- }
-
- pSECPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- if ((!CHECK_PORT_ENABLED(pSECPort)) ||
- ((CHECK_PORT_BEING_FLUSHED(pSECPort) || CHECK_PORT_BEING_DISABLED(pSECPort)) &&
- (!CHECK_PORT_TUNNELED(pSECPort) || !CHECK_PORT_BUFFER_SUPPLIER(pSECPort))) ||
- ((pSECComponent->transientState == SEC_OMX_TransStateExecutingToIdle) &&
- (CHECK_PORT_TUNNELED(pSECPort) && !CHECK_PORT_BUFFER_SUPPLIER(pSECPort)))) {
- ret = OMX_ErrorIncorrectStateOperation;
- goto EXIT;
- }
-
- for (i = 0; i < pSECPort->portDefinition.nBufferCountActual; i++) {
- if (pBuffer == pSECPort->bufferHeader[i]) {
- findBuffer = OMX_TRUE;
- break;
- }
- }
-
- if (findBuffer == OMX_FALSE) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- } else {
- ret = OMX_ErrorNone;
- }
-
- message = SEC_OSAL_Malloc(sizeof(SEC_OMX_MESSAGE));
- if (message == NULL) {
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
- message->messageType = SEC_OMX_CommandEmptyBuffer;
- message->messageParam = (OMX_U32) i;
- message->pCmdData = (OMX_PTR)pBuffer;
-
- SEC_OSAL_Queue(&pSECPort->bufferQ, (void *)message);
- SEC_OSAL_SemaphorePost(pSECPort->bufferSemID);
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_FillThisBuffer(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_BUFFERHEADERTYPE *pBuffer)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- OMX_BOOL findBuffer = OMX_FALSE;
- SEC_OMX_MESSAGE *message;
- OMX_U32 i = 0;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- if (pSECComponent->currentState == OMX_StateInvalid) {
- ret = OMX_ErrorInvalidState;
- goto EXIT;
- }
-
- if (pBuffer == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- if (pBuffer->nOutputPortIndex != OUTPUT_PORT_INDEX) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- ret = SEC_OMX_Check_SizeVersion(pBuffer, sizeof(OMX_BUFFERHEADERTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if ((pSECComponent->currentState != OMX_StateIdle) &&
- (pSECComponent->currentState != OMX_StateExecuting) &&
- (pSECComponent->currentState != OMX_StatePause)) {
- ret = OMX_ErrorIncorrectStateOperation;
- goto EXIT;
- }
-
- pSECPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
- if ((!CHECK_PORT_ENABLED(pSECPort)) ||
- ((CHECK_PORT_BEING_FLUSHED(pSECPort) || CHECK_PORT_BEING_DISABLED(pSECPort)) &&
- (!CHECK_PORT_TUNNELED(pSECPort) || !CHECK_PORT_BUFFER_SUPPLIER(pSECPort))) ||
- ((pSECComponent->transientState == SEC_OMX_TransStateExecutingToIdle) &&
- (CHECK_PORT_TUNNELED(pSECPort) && !CHECK_PORT_BUFFER_SUPPLIER(pSECPort)))) {
- ret = OMX_ErrorIncorrectStateOperation;
- goto EXIT;
- }
-
- for (i = 0; i < pSECPort->portDefinition.nBufferCountActual; i++) {
- if (pBuffer == pSECPort->bufferHeader[i]) {
- findBuffer = OMX_TRUE;
- break;
- }
- }
-
- if (findBuffer == OMX_FALSE) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- } else {
- ret = OMX_ErrorNone;
- }
-
- message = SEC_OSAL_Malloc(sizeof(SEC_OMX_MESSAGE));
- if (message == NULL) {
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
- message->messageType = SEC_OMX_CommandFillBuffer;
- message->messageParam = (OMX_U32) i;
- message->pCmdData = (OMX_PTR)pBuffer;
-
- SEC_OSAL_Queue(&pSECPort->bufferQ, (void *)message);
- SEC_OSAL_SemaphorePost(pSECPort->bufferSemID);
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_Port_Constructor(OMX_HANDLETYPE hComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- SEC_OMX_BASEPORT *pSECInputPort = NULL;
- SEC_OMX_BASEPORT *pSECOutputPort = NULL;
- int i = 0;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- SEC_OSAL_Log(SEC_LOG_ERROR, "OMX_ErrorBadParameter, Line:%d", __LINE__);
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- SEC_OSAL_Log(SEC_LOG_ERROR, "OMX_ErrorBadParameter, Line:%d", __LINE__);
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- INIT_SET_SIZE_VERSION(&pSECComponent->portParam, OMX_PORT_PARAM_TYPE);
- pSECComponent->portParam.nPorts = ALL_PORT_NUM;
- pSECComponent->portParam.nStartPortNumber = INPUT_PORT_INDEX;
-
- pSECPort = SEC_OSAL_Malloc(sizeof(SEC_OMX_BASEPORT) * ALL_PORT_NUM);
- if (pSECPort == NULL) {
- ret = OMX_ErrorInsufficientResources;
- SEC_OSAL_Log(SEC_LOG_ERROR, "OMX_ErrorInsufficientResources, Line:%d", __LINE__);
- goto EXIT;
- }
- SEC_OSAL_Memset(pSECPort, 0, sizeof(SEC_OMX_BASEPORT) * ALL_PORT_NUM);
- pSECComponent->pSECPort = pSECPort;
-
- /* Input Port */
- pSECInputPort = &pSECPort[INPUT_PORT_INDEX];
-
- SEC_OSAL_QueueCreate(&pSECInputPort->bufferQ);
-
- pSECInputPort->bufferHeader = SEC_OSAL_Malloc(sizeof(OMX_BUFFERHEADERTYPE*) * MAX_BUFFER_NUM);
- if (pSECInputPort->bufferHeader == NULL) {
- SEC_OSAL_Free(pSECPort);
- pSECPort = NULL;
- ret = OMX_ErrorInsufficientResources;
- SEC_OSAL_Log(SEC_LOG_ERROR, "OMX_ErrorInsufficientResources, Line:%d", __LINE__);
- goto EXIT;
- }
- SEC_OSAL_Memset(pSECInputPort->bufferHeader, 0, sizeof(OMX_BUFFERHEADERTYPE*) * MAX_BUFFER_NUM);
-
- pSECInputPort->bufferStateAllocate = SEC_OSAL_Malloc(sizeof(OMX_U32) * MAX_BUFFER_NUM);
- if (pSECInputPort->bufferStateAllocate == NULL) {
- SEC_OSAL_Free(pSECInputPort->bufferHeader);
- pSECInputPort->bufferHeader = NULL;
- SEC_OSAL_Free(pSECPort);
- pSECPort = NULL;
- ret = OMX_ErrorInsufficientResources;
- SEC_OSAL_Log(SEC_LOG_ERROR, "OMX_ErrorInsufficientResources, Line:%d", __LINE__);
- goto EXIT;
- }
- SEC_OSAL_Memset(pSECInputPort->bufferStateAllocate, 0, sizeof(OMX_U32) * MAX_BUFFER_NUM);
-
- pSECInputPort->bufferSemID = NULL;
- pSECInputPort->assignedBufferNum = 0;
- pSECInputPort->portState = OMX_StateMax;
- pSECInputPort->bIsPortFlushed = OMX_FALSE;
- pSECInputPort->bIsPortDisabled = OMX_FALSE;
- pSECInputPort->tunneledComponent = NULL;
- pSECInputPort->tunneledPort = 0;
- pSECInputPort->tunnelBufferNum = 0;
- pSECInputPort->bufferSupplier = OMX_BufferSupplyUnspecified;
- pSECInputPort->tunnelFlags = 0;
- pSECInputPort->eControlRate = OMX_Video_ControlRateDisable;
- ret = SEC_OSAL_SemaphoreCreate(&pSECInputPort->loadedResource);
- if (ret != OMX_ErrorNone) {
- SEC_OSAL_Free(pSECInputPort->bufferStateAllocate);
- pSECInputPort->bufferStateAllocate = NULL;
- SEC_OSAL_Free(pSECInputPort->bufferHeader);
- pSECInputPort->bufferHeader = NULL;
- SEC_OSAL_Free(pSECPort);
- pSECPort = NULL;
- goto EXIT;
- }
- ret = SEC_OSAL_SemaphoreCreate(&pSECInputPort->unloadedResource);
- if (ret != OMX_ErrorNone) {
- SEC_OSAL_SemaphoreTerminate(pSECInputPort->loadedResource);
- pSECInputPort->loadedResource = NULL;
- SEC_OSAL_Free(pSECInputPort->bufferStateAllocate);
- pSECInputPort->bufferStateAllocate = NULL;
- SEC_OSAL_Free(pSECInputPort->bufferHeader);
- pSECInputPort->bufferHeader = NULL;
- SEC_OSAL_Free(pSECPort);
- pSECPort = NULL;
- goto EXIT;
- }
-
- INIT_SET_SIZE_VERSION(&pSECInputPort->portDefinition, OMX_PARAM_PORTDEFINITIONTYPE);
- pSECInputPort->portDefinition.nPortIndex = INPUT_PORT_INDEX;
- pSECInputPort->portDefinition.eDir = OMX_DirInput;
- pSECInputPort->portDefinition.nBufferCountActual = 0;
- pSECInputPort->portDefinition.nBufferCountMin = 0;
- pSECInputPort->portDefinition.nBufferSize = 0;
- pSECInputPort->portDefinition.bEnabled = OMX_FALSE;
- pSECInputPort->portDefinition.bPopulated = OMX_FALSE;
- pSECInputPort->portDefinition.eDomain = OMX_PortDomainMax;
- pSECInputPort->portDefinition.bBuffersContiguous = OMX_FALSE;
- pSECInputPort->portDefinition.nBufferAlignment = 0;
- pSECInputPort->markType.hMarkTargetComponent = NULL;
- pSECInputPort->markType.pMarkData = NULL;
- pSECInputPort->bUseAndroidNativeBuffer = OMX_FALSE;
- pSECInputPort->bStoreMetaDataInBuffer = OMX_FALSE;
-
- /* Output Port */
- pSECOutputPort = &pSECPort[OUTPUT_PORT_INDEX];
-
- SEC_OSAL_QueueCreate(&pSECOutputPort->bufferQ);
-
- pSECOutputPort->bufferHeader = SEC_OSAL_Malloc(sizeof(OMX_BUFFERHEADERTYPE*) * MAX_BUFFER_NUM);
- if (pSECOutputPort->bufferHeader == NULL) {
- SEC_OSAL_SemaphoreTerminate(pSECInputPort->unloadedResource);
- pSECInputPort->unloadedResource = NULL;
- SEC_OSAL_SemaphoreTerminate(pSECInputPort->loadedResource);
- pSECInputPort->loadedResource = NULL;
- SEC_OSAL_Free(pSECInputPort->bufferStateAllocate);
- pSECInputPort->bufferStateAllocate = NULL;
- SEC_OSAL_Free(pSECInputPort->bufferHeader);
- pSECInputPort->bufferHeader = NULL;
- SEC_OSAL_Free(pSECPort);
- pSECPort = NULL;
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
- SEC_OSAL_Memset(pSECOutputPort->bufferHeader, 0, sizeof(OMX_BUFFERHEADERTYPE*) * MAX_BUFFER_NUM);
-
- pSECOutputPort->bufferStateAllocate = SEC_OSAL_Malloc(sizeof(OMX_U32) * MAX_BUFFER_NUM);
- if (pSECOutputPort->bufferStateAllocate == NULL) {
- SEC_OSAL_Free(pSECOutputPort->bufferHeader);
- pSECOutputPort->bufferHeader = NULL;
-
- SEC_OSAL_SemaphoreTerminate(pSECInputPort->unloadedResource);
- pSECInputPort->unloadedResource = NULL;
- SEC_OSAL_SemaphoreTerminate(pSECInputPort->loadedResource);
- pSECInputPort->loadedResource = NULL;
- SEC_OSAL_Free(pSECInputPort->bufferStateAllocate);
- pSECInputPort->bufferStateAllocate = NULL;
- SEC_OSAL_Free(pSECInputPort->bufferHeader);
- pSECInputPort->bufferHeader = NULL;
- SEC_OSAL_Free(pSECPort);
- pSECPort = NULL;
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
- SEC_OSAL_Memset(pSECOutputPort->bufferStateAllocate, 0, sizeof(OMX_U32) * MAX_BUFFER_NUM);
-
- pSECOutputPort->bufferSemID = NULL;
- pSECOutputPort->assignedBufferNum = 0;
- pSECOutputPort->portState = OMX_StateMax;
- pSECOutputPort->bIsPortFlushed = OMX_FALSE;
- pSECOutputPort->bIsPortDisabled = OMX_FALSE;
- pSECOutputPort->tunneledComponent = NULL;
- pSECOutputPort->tunneledPort = 0;
- pSECOutputPort->tunnelBufferNum = 0;
- pSECOutputPort->bufferSupplier = OMX_BufferSupplyUnspecified;
- pSECOutputPort->tunnelFlags = 0;
- pSECOutputPort->eControlRate = OMX_Video_ControlRateDisable;
- ret = SEC_OSAL_SemaphoreCreate(&pSECOutputPort->loadedResource);
- if (ret != OMX_ErrorNone) {
- SEC_OSAL_Free(pSECOutputPort->bufferStateAllocate);
- pSECOutputPort->bufferStateAllocate = NULL;
- SEC_OSAL_Free(pSECOutputPort->bufferHeader);
- pSECOutputPort->bufferHeader = NULL;
-
- SEC_OSAL_SemaphoreTerminate(pSECInputPort->unloadedResource);
- pSECInputPort->unloadedResource = NULL;
- SEC_OSAL_SemaphoreTerminate(pSECInputPort->loadedResource);
- pSECInputPort->loadedResource = NULL;
- SEC_OSAL_Free(pSECInputPort->bufferStateAllocate);
- pSECInputPort->bufferStateAllocate = NULL;
- SEC_OSAL_Free(pSECInputPort->bufferHeader);
- pSECInputPort->bufferHeader = NULL;
- SEC_OSAL_Free(pSECPort);
- pSECPort = NULL;
- goto EXIT;
- }
- ret = SEC_OSAL_SemaphoreCreate(&pSECOutputPort->unloadedResource);
- if (ret != OMX_ErrorNone) {
- SEC_OSAL_SemaphoreTerminate(pSECOutputPort->loadedResource);
- pSECOutputPort->loadedResource = NULL;
- SEC_OSAL_Free(pSECOutputPort->bufferStateAllocate);
- pSECOutputPort->bufferStateAllocate = NULL;
- SEC_OSAL_Free(pSECOutputPort->bufferHeader);
- pSECOutputPort->bufferHeader = NULL;
-
- SEC_OSAL_SemaphoreTerminate(pSECInputPort->unloadedResource);
- pSECInputPort->unloadedResource = NULL;
- SEC_OSAL_SemaphoreTerminate(pSECInputPort->loadedResource);
- pSECInputPort->loadedResource = NULL;
- SEC_OSAL_Free(pSECInputPort->bufferStateAllocate);
- pSECInputPort->bufferStateAllocate = NULL;
- SEC_OSAL_Free(pSECInputPort->bufferHeader);
- pSECInputPort->bufferHeader = NULL;
- SEC_OSAL_Free(pSECPort);
- pSECPort = NULL;
- goto EXIT;
- }
-
- INIT_SET_SIZE_VERSION(&pSECOutputPort->portDefinition, OMX_PARAM_PORTDEFINITIONTYPE);
- pSECOutputPort->portDefinition.nPortIndex = OUTPUT_PORT_INDEX;
- pSECOutputPort->portDefinition.eDir = OMX_DirOutput;
- pSECOutputPort->portDefinition.nBufferCountActual = 0;
- pSECOutputPort->portDefinition.nBufferCountMin = 0;
- pSECOutputPort->portDefinition.nBufferSize = 0;
- pSECOutputPort->portDefinition.bEnabled = OMX_FALSE;
- pSECOutputPort->portDefinition.bPopulated = OMX_FALSE;
- pSECOutputPort->portDefinition.eDomain = OMX_PortDomainMax;
- pSECOutputPort->portDefinition.bBuffersContiguous = OMX_FALSE;
- pSECOutputPort->portDefinition.nBufferAlignment = 0;
- pSECOutputPort->markType.hMarkTargetComponent = NULL;
- pSECOutputPort->markType.pMarkData = NULL;
- pSECOutputPort->bUseAndroidNativeBuffer = OMX_FALSE;
- pSECOutputPort->bStoreMetaDataInBuffer = OMX_FALSE;
-
- pSECComponent->checkTimeStamp.needSetStartTimeStamp = OMX_FALSE;
- pSECComponent->checkTimeStamp.needCheckStartTimeStamp = OMX_FALSE;
- pSECComponent->checkTimeStamp.startTimeStamp = 0;
- pSECComponent->checkTimeStamp.nStartFlags = 0x0;
-
- pOMXComponent->EmptyThisBuffer = &SEC_OMX_EmptyThisBuffer;
- pOMXComponent->FillThisBuffer = &SEC_OMX_FillThisBuffer;
-
- ret = OMX_ErrorNone;
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_Port_Destructor(OMX_HANDLETYPE hComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_BASEPORT *pSECPort = NULL;
-
- FunctionIn();
-
- int i = 0;
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- for (i = 0; i < ALL_PORT_NUM; i++) {
- pSECPort = &pSECComponent->pSECPort[i];
-
- SEC_OSAL_SemaphoreTerminate(pSECPort->loadedResource);
- pSECPort->loadedResource = NULL;
- SEC_OSAL_SemaphoreTerminate(pSECPort->unloadedResource);
- pSECPort->unloadedResource = NULL;
- SEC_OSAL_Free(pSECPort->bufferStateAllocate);
- pSECPort->bufferStateAllocate = NULL;
- SEC_OSAL_Free(pSECPort->bufferHeader);
- pSECPort->bufferHeader = NULL;
-
- SEC_OSAL_QueueTerminate(&pSECPort->bufferQ);
- }
- SEC_OSAL_Free(pSECComponent->pSECPort);
- pSECComponent->pSECPort = NULL;
- ret = OMX_ErrorNone;
-EXIT:
- FunctionOut();
-
- return ret;
-}
diff --git a/sec_mm/sec_omx/sec_omx_component/common/SEC_OMX_Baseport.h b/sec_mm/sec_omx/sec_omx_component/common/SEC_OMX_Baseport.h
deleted file mode 100644
index 147f940..0000000
--- a/sec_mm/sec_omx/sec_omx_component/common/SEC_OMX_Baseport.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OMX_Baseport.h
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * HyeYeon Chung (hyeon.chung@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#ifndef SEC_OMX_BASE_PORT
-#define SEC_OMX_BASE_PORT
-
-
-#include "OMX_Component.h"
-#include "SEC_OMX_Def.h"
-#include "SEC_OSAL_Queue.h"
-
-
-#define BUFFER_STATE_ALLOCATED (1 << 0)
-#define BUFFER_STATE_ASSIGNED (1 << 1)
-#define HEADER_STATE_ALLOCATED (1 << 2)
-#define BUFFER_STATE_FREE 0
-
-#define MAX_BUFFER_NUM 20
-
-#define INPUT_PORT_INDEX 0
-#define OUTPUT_PORT_INDEX 1
-#define ALL_PORT_INDEX -1
-#define ALL_PORT_NUM 2
-
-typedef struct _SEC_OMX_BASEPORT
-{
- OMX_BUFFERHEADERTYPE **bufferHeader;
- OMX_U32 *bufferStateAllocate;
- OMX_PARAM_PORTDEFINITIONTYPE portDefinition;
- OMX_HANDLETYPE bufferSemID;
- SEC_QUEUE bufferQ;
- OMX_U32 assignedBufferNum;
- OMX_STATETYPE portState;
- OMX_HANDLETYPE loadedResource;
- OMX_HANDLETYPE unloadedResource;
-
- OMX_BOOL bIsPortFlushed;
- OMX_BOOL bIsPortDisabled;
- OMX_MARKTYPE markType;
-
- OMX_CONFIG_RECTTYPE cropRectangle;
-
- /* Tunnel Info */
- OMX_HANDLETYPE tunneledComponent;
- OMX_U32 tunneledPort;
- OMX_U32 tunnelBufferNum;
- OMX_BUFFERSUPPLIERTYPE bufferSupplier;
- OMX_U32 tunnelFlags;
-
- OMX_VIDEO_CONTROLRATETYPE eControlRate;
-
- /* For Android Native Buffer */
- OMX_BOOL bUseAndroidNativeBuffer;
- /* For Android Store Meta Data inBuffer */
- OMX_BOOL bStoreMetaDataInBuffer;
- OMX_PTR pIMGGrallocModule;
-} SEC_OMX_BASEPORT;
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-OMX_ERRORTYPE SEC_OMX_PortEnableProcess(OMX_COMPONENTTYPE *pOMXComponent, OMX_S32 nPortIndex);
-OMX_ERRORTYPE SEC_OMX_PortDisableProcess(OMX_COMPONENTTYPE *pOMXComponent, OMX_S32 nPortIndex);
-OMX_ERRORTYPE SEC_OMX_BufferFlushProcess(OMX_COMPONENTTYPE *pOMXComponent, OMX_S32 nPortIndex);
-OMX_ERRORTYPE SEC_OMX_BufferFlushProcessNoEvent(OMX_COMPONENTTYPE *pOMXComponent, OMX_S32 nPortIndex);
-
-#ifdef __cplusplus
-};
-#endif
-
-
-#endif
diff --git a/sec_mm/sec_omx/sec_omx_component/common/SEC_OMX_Resourcemanager.c b/sec_mm/sec_omx/sec_omx_component/common/SEC_OMX_Resourcemanager.c
deleted file mode 100644
index 41673ad..0000000
--- a/sec_mm/sec_omx/sec_omx_component/common/SEC_OMX_Resourcemanager.c
+++ /dev/null
@@ -1,383 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OMX_Resourcemanager.c
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "SEC_OMX_Resourcemanager.h"
-#include "SEC_OMX_Basecomponent.h"
-
-#undef SEC_LOG_TAG
-#define SEC_LOG_TAG "SEC_RM"
-#define SEC_LOG_OFF
-#include "SEC_OSAL_Log.h"
-
-
-#define MAX_RESOURCE_VIDEO 4
-
-/* Max allowable video scheduler component instance */
-static SEC_OMX_RM_COMPONENT_LIST *gpVideoRMComponentList = NULL;
-static SEC_OMX_RM_COMPONENT_LIST *gpVideoRMWaitingList = NULL;
-static OMX_HANDLETYPE ghVideoRMComponentListMutex = NULL;
-
-
-OMX_ERRORTYPE addElementList(SEC_OMX_RM_COMPONENT_LIST **ppList, OMX_COMPONENTTYPE *pOMXComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_RM_COMPONENT_LIST *pTempComp = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- if (*ppList != NULL) {
- pTempComp = *ppList;
- while (pTempComp->pNext != NULL) {
- pTempComp = pTempComp->pNext;
- }
- pTempComp->pNext = (SEC_OMX_RM_COMPONENT_LIST *)SEC_OSAL_Malloc(sizeof(SEC_OMX_RM_COMPONENT_LIST));
- if (pTempComp->pNext == NULL) {
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
- ((SEC_OMX_RM_COMPONENT_LIST *)(pTempComp->pNext))->pNext = NULL;
- ((SEC_OMX_RM_COMPONENT_LIST *)(pTempComp->pNext))->pOMXStandComp = pOMXComponent;
- ((SEC_OMX_RM_COMPONENT_LIST *)(pTempComp->pNext))->groupPriority = pSECComponent->compPriority.nGroupPriority;
- goto EXIT;
- } else {
- *ppList = (SEC_OMX_RM_COMPONENT_LIST *)SEC_OSAL_Malloc(sizeof(SEC_OMX_RM_COMPONENT_LIST));
- if (*ppList == NULL) {
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
- pTempComp = *ppList;
- pTempComp->pNext = NULL;
- pTempComp->pOMXStandComp = pOMXComponent;
- pTempComp->groupPriority = pSECComponent->compPriority.nGroupPriority;
- }
-
-EXIT:
- return ret;
-}
-
-OMX_ERRORTYPE removeElementList(SEC_OMX_RM_COMPONENT_LIST **ppList, OMX_COMPONENTTYPE *pOMXComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_RM_COMPONENT_LIST *pCurrComp = NULL;
- SEC_OMX_RM_COMPONENT_LIST *pPrevComp = NULL;
- OMX_BOOL bDetectComp = OMX_FALSE;
-
- if (*ppList == NULL) {
- ret = OMX_ErrorUndefined;
- goto EXIT;
- }
-
- pCurrComp = *ppList;
- while (pCurrComp != NULL) {
- if (pCurrComp->pOMXStandComp == pOMXComponent) {
- if (*ppList == pCurrComp) {
- *ppList = pCurrComp->pNext;
- SEC_OSAL_Free(pCurrComp);
- } else {
- pPrevComp->pNext = pCurrComp->pNext;
- SEC_OSAL_Free(pCurrComp);
- }
- bDetectComp = OMX_TRUE;
- break;
- } else {
- pPrevComp = pCurrComp;
- pCurrComp = pCurrComp->pNext;
- }
- }
-
- if (bDetectComp == OMX_FALSE)
- ret = OMX_ErrorComponentNotFound;
- else
- ret = OMX_ErrorNone;
-
-EXIT:
- return ret;
-}
-
-int searchLowPriority(SEC_OMX_RM_COMPONENT_LIST *RMComp_list, int inComp_priority, SEC_OMX_RM_COMPONENT_LIST **outLowComp)
-{
- int ret = 0;
- SEC_OMX_RM_COMPONENT_LIST *pTempComp = NULL;
- SEC_OMX_RM_COMPONENT_LIST *pCandidateComp = NULL;
-
- if (RMComp_list == NULL)
- ret = -1;
-
- pTempComp = RMComp_list;
- *outLowComp = 0;
-
- while (pTempComp != NULL) {
- if (pTempComp->groupPriority > inComp_priority) {
- if (pCandidateComp != NULL) {
- if (pCandidateComp->groupPriority < pTempComp->groupPriority)
- pCandidateComp = pTempComp;
- } else {
- pCandidateComp = pTempComp;
- }
- }
-
- pTempComp = pTempComp->pNext;
- }
-
- *outLowComp = pCandidateComp;
- if (pCandidateComp == NULL)
- ret = 0;
- else
- ret = 1;
-
-EXIT:
- return ret;
-}
-
-OMX_ERRORTYPE removeComponent(OMX_COMPONENTTYPE *pOMXComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- if (pSECComponent->currentState == OMX_StateIdle) {
- (*(pSECComponent->pCallbacks->EventHandler))
- (pOMXComponent, pSECComponent->callbackData,
- OMX_EventError, OMX_ErrorResourcesLost, 0, NULL);
- ret = OMX_SendCommand(pOMXComponent, OMX_CommandStateSet, OMX_StateLoaded, NULL);
- if (ret != OMX_ErrorNone) {
- ret = OMX_ErrorUndefined;
- goto EXIT;
- }
- } else if ((pSECComponent->currentState == OMX_StateExecuting) || (pSECComponent->currentState == OMX_StatePause)) {
- /* Todo */
- }
-
- ret = OMX_ErrorNone;
-
-EXIT:
- return ret;
-}
-
-
-OMX_ERRORTYPE SEC_OMX_ResourceManager_Init()
-{
- FunctionIn();
- SEC_OSAL_MutexCreate(&ghVideoRMComponentListMutex);
- FunctionOut();
- return OMX_ErrorNone;
-}
-
-OMX_ERRORTYPE SEC_OMX_ResourceManager_Deinit()
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_RM_COMPONENT_LIST *pCurrComponent;
- SEC_OMX_RM_COMPONENT_LIST *pNextComponent;
-
- FunctionIn();
-
- SEC_OSAL_MutexLock(ghVideoRMComponentListMutex);
-
- if (gpVideoRMComponentList) {
- pCurrComponent = gpVideoRMComponentList;
- while (pCurrComponent != NULL) {
- pNextComponent = pCurrComponent->pNext;
- SEC_OSAL_Free(pCurrComponent);
- pCurrComponent = pNextComponent;
- }
- gpVideoRMComponentList = NULL;
- }
-
- if (gpVideoRMWaitingList) {
- pCurrComponent = gpVideoRMWaitingList;
- while (pCurrComponent != NULL) {
- pNextComponent = pCurrComponent->pNext;
- SEC_OSAL_Free(pCurrComponent);
- pCurrComponent = pNextComponent;
- }
- gpVideoRMWaitingList = NULL;
- }
- SEC_OSAL_MutexUnlock(ghVideoRMComponentListMutex);
-
- SEC_OSAL_MutexTerminate(ghVideoRMComponentListMutex);
- ghVideoRMComponentListMutex = NULL;
-
- ret = OMX_ErrorNone;
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_Get_Resource(OMX_COMPONENTTYPE *pOMXComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_RM_COMPONENT_LIST *pComponentTemp = NULL;
- SEC_OMX_RM_COMPONENT_LIST *pComponentCandidate = NULL;
- int numElem = 0;
- int lowCompDetect = 0;
-
- FunctionIn();
-
- SEC_OSAL_MutexLock(ghVideoRMComponentListMutex);
-
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- pComponentTemp = gpVideoRMComponentList;
- if (pSECComponent->codecType == HW_VIDEO_CODEC) {
- if (pComponentTemp != NULL) {
- while (pComponentTemp) {
- numElem++;
- pComponentTemp = pComponentTemp->pNext;
- }
- } else {
- numElem = 0;
- }
- if (numElem >= MAX_RESOURCE_VIDEO) {
- lowCompDetect = searchLowPriority(gpVideoRMComponentList, pSECComponent->compPriority.nGroupPriority, &pComponentCandidate);
- if (lowCompDetect <= 0) {
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- } else {
- ret = removeComponent(pComponentCandidate->pOMXStandComp);
- if (ret != OMX_ErrorNone) {
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- } else {
- ret = removeElementList(&gpVideoRMComponentList, pComponentCandidate->pOMXStandComp);
- ret = addElementList(&gpVideoRMComponentList, pOMXComponent);
- if (ret != OMX_ErrorNone) {
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
- }
- }
- } else {
- ret = addElementList(&gpVideoRMComponentList, pOMXComponent);
- if (ret != OMX_ErrorNone) {
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
- }
- }
- ret = OMX_ErrorNone;
-
-EXIT:
-
- SEC_OSAL_MutexUnlock(ghVideoRMComponentListMutex);
-
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_Release_Resource(OMX_COMPONENTTYPE *pOMXComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_RM_COMPONENT_LIST *pComponentTemp = NULL;
- OMX_COMPONENTTYPE *pOMXWaitComponent = NULL;
- int numElem = 0;
-
- FunctionIn();
-
- SEC_OSAL_MutexLock(ghVideoRMComponentListMutex);
-
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- pComponentTemp = gpVideoRMWaitingList;
- if (pSECComponent->codecType == HW_VIDEO_CODEC) {
- if (gpVideoRMComponentList == NULL) {
- ret = OMX_ErrorUndefined;
- goto EXIT;
- }
-
- ret = removeElementList(&gpVideoRMComponentList, pOMXComponent);
- if (ret != OMX_ErrorNone) {
- ret = OMX_ErrorUndefined;
- goto EXIT;
- }
- while (pComponentTemp) {
- numElem++;
- pComponentTemp = pComponentTemp->pNext;
- }
- if (numElem > 0) {
- pOMXWaitComponent = gpVideoRMWaitingList->pOMXStandComp;
- removeElementList(&gpVideoRMWaitingList, pOMXWaitComponent);
- ret = OMX_SendCommand(pOMXWaitComponent, OMX_CommandStateSet, OMX_StateIdle, NULL);
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
- }
- }
-
-EXIT:
-
- SEC_OSAL_MutexUnlock(ghVideoRMComponentListMutex);
-
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_In_WaitForResource(OMX_COMPONENTTYPE *pOMXComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- FunctionIn();
-
- SEC_OSAL_MutexLock(ghVideoRMComponentListMutex);
-
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- if (pSECComponent->codecType == HW_VIDEO_CODEC)
- ret = addElementList(&gpVideoRMWaitingList, pOMXComponent);
-
- SEC_OSAL_MutexUnlock(ghVideoRMComponentListMutex);
-
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_Out_WaitForResource(OMX_COMPONENTTYPE *pOMXComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- FunctionIn();
-
- SEC_OSAL_MutexLock(ghVideoRMComponentListMutex);
-
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- if (pSECComponent->codecType == HW_VIDEO_CODEC)
- ret = removeElementList(&gpVideoRMWaitingList, pOMXComponent);
-
- SEC_OSAL_MutexUnlock(ghVideoRMComponentListMutex);
-
- FunctionOut();
-
- return ret;
-}
-
diff --git a/sec_mm/sec_omx/sec_omx_component/common/SEC_OMX_Resourcemanager.h b/sec_mm/sec_omx/sec_omx_component/common/SEC_OMX_Resourcemanager.h
deleted file mode 100644
index b958575..0000000
--- a/sec_mm/sec_omx/sec_omx_component/common/SEC_OMX_Resourcemanager.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OMX_Resourcemanager.h
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#ifndef SEC_OMX_RESOURCEMANAGER
-#define SEC_OMX_RESOURCEMANAGER
-
-
-#include "SEC_OMX_Def.h"
-#include "OMX_Component.h"
-
-
-struct SEC_OMX_RM_COMPONENT_LIST;
-typedef struct _SEC_OMX_RM_COMPONENT_LIST
-{
- OMX_COMPONENTTYPE *pOMXStandComp;
- OMX_U32 groupPriority;
- struct SEC_OMX_RM_COMPONENT_LIST *pNext;
-} SEC_OMX_RM_COMPONENT_LIST;
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-OMX_ERRORTYPE SEC_OMX_ResourceManager_Init();
-OMX_ERRORTYPE SEC_OMX_ResourceManager_Deinit();
-OMX_ERRORTYPE SEC_OMX_Get_Resource(OMX_COMPONENTTYPE *pOMXComponent);
-OMX_ERRORTYPE SEC_OMX_Release_Resource(OMX_COMPONENTTYPE *pOMXComponent);
-OMX_ERRORTYPE SEC_OMX_In_WaitForResource(OMX_COMPONENTTYPE *pOMXComponent);
-OMX_ERRORTYPE SEC_OMX_Out_WaitForResource(OMX_COMPONENTTYPE *pOMXComponent);
-
-#ifdef __cplusplus
-};
-#endif
-
-#endif
diff --git a/sec_mm/sec_omx/sec_omx_component/video/dec/Android.mk b/sec_mm/sec_omx/sec_omx_component/video/dec/Android.mk
deleted file mode 100644
index 401449b..0000000
--- a/sec_mm/sec_omx/sec_omx_component/video/dec/Android.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := \
- SEC_OMX_Vdec.c
-
-LOCAL_MODULE := libSEC_OMX_Vdec.aries
-LOCAL_ARM_MODE := arm
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_C_INCLUDES := $(SEC_OMX_INC)/khronos \
- $(SEC_OMX_INC)/sec \
- $(SEC_OMX_TOP)/sec_osal \
- $(SEC_OMX_TOP)/sec_omx_core \
- $(SEC_OMX_COMPONENT)/common \
- $(SEC_OMX_COMPONENT)/video/dec
-
-LOCAL_C_INCLUDES += $(SEC_OMX_TOP)/sec_codecs/video/mfc_c110/include
-
-include $(BUILD_STATIC_LIBRARY)
diff --git a/sec_mm/sec_omx/sec_omx_component/video/dec/SEC_OMX_Vdec.c b/sec_mm/sec_omx/sec_omx_component/video/dec/SEC_OMX_Vdec.c
deleted file mode 100644
index 30a1acb..0000000
--- a/sec_mm/sec_omx/sec_omx_component/video/dec/SEC_OMX_Vdec.c
+++ /dev/null
@@ -1,1389 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OMX_Vdec.c
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * HyeYeon Chung (hyeon.chung@samsung.com)
- * Yunji Kim (yunji.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "SEC_OMX_Macros.h"
-#include "SEC_OSAL_Event.h"
-#include "SEC_OMX_Vdec.h"
-#include "SEC_OMX_Basecomponent.h"
-#include "SEC_OSAL_Thread.h"
-#include "color_space_convertor.h"
-
-#undef SEC_LOG_TAG
-#define SEC_LOG_TAG "SEC_VIDEO_DEC"
-#define SEC_LOG_OFF
-#include "SEC_OSAL_Log.h"
-
-
-inline void SEC_UpdateFrameSize(OMX_COMPONENTTYPE *pOMXComponent)
-{
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- SEC_OMX_BASEPORT *secInputPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- SEC_OMX_BASEPORT *secOutputPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
-
- if ((secOutputPort->portDefinition.format.video.nFrameWidth !=
- secInputPort->portDefinition.format.video.nFrameWidth) ||
- (secOutputPort->portDefinition.format.video.nFrameHeight !=
- secInputPort->portDefinition.format.video.nFrameHeight)) {
- OMX_U32 width = 0, height = 0;
-
- secOutputPort->portDefinition.format.video.nFrameWidth =
- secInputPort->portDefinition.format.video.nFrameWidth;
- secOutputPort->portDefinition.format.video.nFrameHeight =
- secInputPort->portDefinition.format.video.nFrameHeight;
- width = secOutputPort->portDefinition.format.video.nStride =
- secInputPort->portDefinition.format.video.nStride;
- height = secOutputPort->portDefinition.format.video.nSliceHeight =
- secInputPort->portDefinition.format.video.nSliceHeight;
-
- switch(secOutputPort->portDefinition.format.video.eColorFormat) {
- case OMX_COLOR_FormatYUV420Planar:
- case OMX_COLOR_FormatYUV420SemiPlanar:
- case OMX_SEC_COLOR_FormatANBYUV420SemiPlanar:
- if (width && height)
- secOutputPort->portDefinition.nBufferSize = (width * height * 3) / 2;
- break;
- default:
- if (width && height)
- secOutputPort->portDefinition.nBufferSize = width * height * 2;
- break;
- }
- }
-
- return ;
-}
-
-OMX_ERRORTYPE SEC_OMX_UseBuffer(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_INOUT OMX_BUFFERHEADERTYPE **ppBufferHdr,
- OMX_IN OMX_U32 nPortIndex,
- OMX_IN OMX_PTR pAppPrivate,
- OMX_IN OMX_U32 nSizeBytes,
- OMX_IN OMX_U8 *pBuffer)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- OMX_BUFFERHEADERTYPE *temp_bufferHeader = NULL;
- int i = 0;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- pSECPort = &pSECComponent->pSECPort[nPortIndex];
- if (nPortIndex >= pSECComponent->portParam.nPorts) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
- if (pSECPort->portState != OMX_StateIdle) {
- ret = OMX_ErrorIncorrectStateOperation;
- goto EXIT;
- }
-
- if (CHECK_PORT_TUNNELED(pSECPort) && CHECK_PORT_BUFFER_SUPPLIER(pSECPort)) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- temp_bufferHeader = (OMX_BUFFERHEADERTYPE *)SEC_OSAL_Malloc(sizeof(OMX_BUFFERHEADERTYPE));
- if (temp_bufferHeader == NULL) {
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
- SEC_OSAL_Memset(temp_bufferHeader, 0, sizeof(OMX_BUFFERHEADERTYPE));
-
- for (i = 0; i < pSECPort->portDefinition.nBufferCountActual; i++) {
- if (pSECPort->bufferStateAllocate[i] == BUFFER_STATE_FREE) {
- pSECPort->bufferHeader[i] = temp_bufferHeader;
- pSECPort->bufferStateAllocate[i] = (BUFFER_STATE_ASSIGNED | HEADER_STATE_ALLOCATED);
- INIT_SET_SIZE_VERSION(temp_bufferHeader, OMX_BUFFERHEADERTYPE);
- temp_bufferHeader->pBuffer = pBuffer;
- temp_bufferHeader->nAllocLen = nSizeBytes;
- temp_bufferHeader->pAppPrivate = pAppPrivate;
- if ( nPortIndex == INPUT_PORT_INDEX)
- temp_bufferHeader->nInputPortIndex = INPUT_PORT_INDEX;
- else
- temp_bufferHeader->nOutputPortIndex = OUTPUT_PORT_INDEX;
-
- pSECPort->assignedBufferNum++;
- if (pSECPort->assignedBufferNum == pSECPort->portDefinition.nBufferCountActual) {
- pSECPort->portDefinition.bPopulated = OMX_TRUE;
- /* SEC_OSAL_MutexLock(pSECComponent->compMutex); */
- SEC_OSAL_SemaphorePost(pSECPort->loadedResource);
- /* SEC_OSAL_MutexUnlock(pSECComponent->compMutex); */
- }
- *ppBufferHdr = temp_bufferHeader;
- ret = OMX_ErrorNone;
- goto EXIT;
- }
- }
-
- SEC_OSAL_Free(temp_bufferHeader);
- ret = OMX_ErrorInsufficientResources;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_AllocateBuffer(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_INOUT OMX_BUFFERHEADERTYPE **ppBuffer,
- OMX_IN OMX_U32 nPortIndex,
- OMX_IN OMX_PTR pAppPrivate,
- OMX_IN OMX_U32 nSizeBytes)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- OMX_BUFFERHEADERTYPE *temp_bufferHeader = NULL;
- OMX_U8 *temp_buffer = NULL;
- int i = 0;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- pSECPort = &pSECComponent->pSECPort[nPortIndex];
- if (nPortIndex >= pSECComponent->portParam.nPorts) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-/*
- if (pSECPort->portState != OMX_StateIdle ) {
- ret = OMX_ErrorIncorrectStateOperation;
- goto EXIT;
- }
-*/
- if (CHECK_PORT_TUNNELED(pSECPort) && CHECK_PORT_BUFFER_SUPPLIER(pSECPort)) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- temp_buffer = SEC_OSAL_Malloc(sizeof(OMX_U8) * nSizeBytes);
- if (temp_buffer == NULL) {
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
-
- temp_bufferHeader = (OMX_BUFFERHEADERTYPE *)SEC_OSAL_Malloc(sizeof(OMX_BUFFERHEADERTYPE));
- if (temp_bufferHeader == NULL) {
- SEC_OSAL_Free(temp_buffer);
- temp_buffer = NULL;
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
- SEC_OSAL_Memset(temp_bufferHeader, 0, sizeof(OMX_BUFFERHEADERTYPE));
-
- for (i = 0; i < pSECPort->portDefinition.nBufferCountActual; i++) {
- if (pSECPort->bufferStateAllocate[i] == BUFFER_STATE_FREE) {
- pSECPort->bufferHeader[i] = temp_bufferHeader;
- pSECPort->bufferStateAllocate[i] = (BUFFER_STATE_ALLOCATED | HEADER_STATE_ALLOCATED);
- INIT_SET_SIZE_VERSION(temp_bufferHeader, OMX_BUFFERHEADERTYPE);
- temp_bufferHeader->pBuffer = temp_buffer;
- temp_bufferHeader->nAllocLen = nSizeBytes;
- temp_bufferHeader->pAppPrivate = pAppPrivate;
- if ( nPortIndex == INPUT_PORT_INDEX)
- temp_bufferHeader->nInputPortIndex = INPUT_PORT_INDEX;
- else
- temp_bufferHeader->nOutputPortIndex = OUTPUT_PORT_INDEX;
- pSECPort->assignedBufferNum++;
- if (pSECPort->assignedBufferNum == pSECPort->portDefinition.nBufferCountActual) {
- pSECPort->portDefinition.bPopulated = OMX_TRUE;
- /* SEC_OSAL_MutexLock(pSECComponent->compMutex); */
- SEC_OSAL_SemaphorePost(pSECPort->loadedResource);
- /* SEC_OSAL_MutexUnlock(pSECComponent->compMutex); */
- }
- *ppBuffer = temp_bufferHeader;
- ret = OMX_ErrorNone;
- goto EXIT;
- }
- }
-
- SEC_OSAL_Free(temp_bufferHeader);
- SEC_OSAL_Free(temp_buffer);
- ret = OMX_ErrorInsufficientResources;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_FreeBuffer(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_U32 nPortIndex,
- OMX_IN OMX_BUFFERHEADERTYPE *pBufferHdr)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- OMX_BUFFERHEADERTYPE *temp_bufferHeader = NULL;
- OMX_U8 *temp_buffer = NULL;
- int i = 0;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- pSECPort = &pSECComponent->pSECPort[nPortIndex];
-
- if (CHECK_PORT_TUNNELED(pSECPort) && CHECK_PORT_BUFFER_SUPPLIER(pSECPort)) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- if ((pSECPort->portState != OMX_StateLoaded) && (pSECPort->portState != OMX_StateInvalid)) {
- (*(pSECComponent->pCallbacks->EventHandler)) (pOMXComponent,
- pSECComponent->callbackData,
- (OMX_U32)OMX_EventError,
- (OMX_U32)OMX_ErrorPortUnpopulated,
- nPortIndex, NULL);
- }
-
- for (i = 0; i < pSECPort->portDefinition.nBufferCountActual; i++) {
- if (((pSECPort->bufferStateAllocate[i] | BUFFER_STATE_FREE) != 0) && (pSECPort->bufferHeader[i] != NULL)) {
- if (pSECPort->bufferHeader[i]->pBuffer == pBufferHdr->pBuffer) {
- if (pSECPort->bufferStateAllocate[i] & BUFFER_STATE_ALLOCATED) {
- SEC_OSAL_Free(pSECPort->bufferHeader[i]->pBuffer);
- pSECPort->bufferHeader[i]->pBuffer = NULL;
- pBufferHdr->pBuffer = NULL;
- } else if (pSECPort->bufferStateAllocate[i] & BUFFER_STATE_ASSIGNED) {
- ; /* None*/
- }
- pSECPort->assignedBufferNum--;
- if (pSECPort->bufferStateAllocate[i] & HEADER_STATE_ALLOCATED) {
- SEC_OSAL_Free(pSECPort->bufferHeader[i]);
- pSECPort->bufferHeader[i] = NULL;
- pBufferHdr = NULL;
- }
- pSECPort->bufferStateAllocate[i] = BUFFER_STATE_FREE;
- ret = OMX_ErrorNone;
- goto EXIT;
- }
- }
- }
-
-EXIT:
- if (ret == OMX_ErrorNone) {
- if ( pSECPort->assignedBufferNum == 0 ) {
- SEC_OSAL_Log(SEC_LOG_TRACE, "pSECPort->unloadedResource signal set");
- /* SEC_OSAL_MutexLock(pSECComponent->compMutex); */
- SEC_OSAL_SemaphorePost(pSECPort->unloadedResource);
- /* SEC_OSAL_MutexUnlock(pSECComponent->compMutex); */
- pSECPort->portDefinition.bPopulated = OMX_FALSE;
- }
- }
-
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_AllocateTunnelBuffer(SEC_OMX_BASEPORT *pOMXBasePort, OMX_U32 nPortIndex)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- OMX_BUFFERHEADERTYPE *temp_bufferHeader = NULL;
- OMX_U8 *temp_buffer = NULL;
- OMX_U32 bufferSize = 0;
- OMX_PARAM_PORTDEFINITIONTYPE portDefinition;
-
- ret = OMX_ErrorTunnelingUnsupported;
-EXIT:
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_FreeTunnelBuffer(SEC_OMX_BASEPORT *pOMXBasePort, OMX_U32 nPortIndex)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASEPORT* pSECPort = NULL;
- OMX_BUFFERHEADERTYPE* temp_bufferHeader = NULL;
- OMX_U8 *temp_buffer = NULL;
- OMX_U32 bufferSize = 0;
-
- ret = OMX_ErrorTunnelingUnsupported;
-EXIT:
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_ComponentTunnelRequest(
- OMX_IN OMX_HANDLETYPE hComp,
- OMX_IN OMX_U32 nPort,
- OMX_IN OMX_HANDLETYPE hTunneledComp,
- OMX_IN OMX_U32 nTunneledPort,
- OMX_INOUT OMX_TUNNELSETUPTYPE *pTunnelSetup)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
-
- ret = OMX_ErrorTunnelingUnsupported;
-EXIT:
- return ret;
-}
-
-OMX_BOOL SEC_Check_BufferProcess_State(SEC_OMX_BASECOMPONENT *pSECComponent)
-{
- if ((pSECComponent->currentState == OMX_StateExecuting) &&
- (pSECComponent->pSECPort[INPUT_PORT_INDEX].portState == OMX_StateIdle) &&
- (pSECComponent->pSECPort[OUTPUT_PORT_INDEX].portState == OMX_StateIdle) &&
- (pSECComponent->transientState != SEC_OMX_TransStateExecutingToIdle) &&
- (pSECComponent->transientState != SEC_OMX_TransStateIdleToExecuting)) {
- return OMX_TRUE;
- } else {
- return OMX_FALSE;
- }
-}
-
-static OMX_ERRORTYPE SEC_InputBufferReturn(OMX_COMPONENTTYPE *pOMXComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- SEC_OMX_BASEPORT *secOMXInputPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- SEC_OMX_BASEPORT *secOMXOutputPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
- SEC_OMX_DATABUFFER *dataBuffer = &pSECComponent->secDataBuffer[INPUT_PORT_INDEX];
- OMX_BUFFERHEADERTYPE *bufferHeader = dataBuffer->bufferHeader;
-
- FunctionIn();
-
- if (bufferHeader != NULL) {
- if (secOMXInputPort->markType.hMarkTargetComponent != NULL ) {
- bufferHeader->hMarkTargetComponent = secOMXInputPort->markType.hMarkTargetComponent;
- bufferHeader->pMarkData = secOMXInputPort->markType.pMarkData;
- secOMXInputPort->markType.hMarkTargetComponent = NULL;
- secOMXInputPort->markType.pMarkData = NULL;
- }
-
- if (bufferHeader->hMarkTargetComponent != NULL) {
- if (bufferHeader->hMarkTargetComponent == pOMXComponent) {
- pSECComponent->pCallbacks->EventHandler(pOMXComponent,
- pSECComponent->callbackData,
- OMX_EventMark,
- 0, 0, bufferHeader->pMarkData);
- } else {
- pSECComponent->propagateMarkType.hMarkTargetComponent = bufferHeader->hMarkTargetComponent;
- pSECComponent->propagateMarkType.pMarkData = bufferHeader->pMarkData;
- }
- }
-
- if (CHECK_PORT_TUNNELED(secOMXInputPort)) {
- OMX_FillThisBuffer(secOMXInputPort->tunneledComponent, bufferHeader);
- } else {
- bufferHeader->nFilledLen = 0;
- pSECComponent->pCallbacks->EmptyBufferDone(pOMXComponent, pSECComponent->callbackData, bufferHeader);
- }
- }
-
- if ((pSECComponent->currentState == OMX_StatePause) &&
- ((!CHECK_PORT_BEING_FLUSHED(secOMXInputPort) && !CHECK_PORT_BEING_FLUSHED(secOMXOutputPort)))) {
- SEC_OSAL_SignalReset(pSECComponent->pauseEvent);
- SEC_OSAL_SignalWait(pSECComponent->pauseEvent, DEF_MAX_WAIT_TIME);
- }
-
- dataBuffer->dataValid = OMX_FALSE;
- dataBuffer->dataLen = 0;
- dataBuffer->remainDataLen = 0;
- dataBuffer->usedDataLen = 0;
- dataBuffer->bufferHeader = NULL;
- dataBuffer->nFlags = 0;
- dataBuffer->timeStamp = 0;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_InputBufferGetQueue(SEC_OMX_BASECOMPONENT *pSECComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- SEC_OMX_DATABUFFER *dataBuffer = NULL;
- SEC_OMX_MESSAGE* message = NULL;
- SEC_OMX_DATABUFFER *inputUseBuffer = &pSECComponent->secDataBuffer[INPUT_PORT_INDEX];
-
- FunctionIn();
-
- pSECPort= &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- dataBuffer = &pSECComponent->secDataBuffer[INPUT_PORT_INDEX];
-
- if (pSECComponent->currentState != OMX_StateExecuting) {
- ret = OMX_ErrorUndefined;
- goto EXIT;
- } else {
- SEC_OSAL_SemaphoreWait(pSECPort->bufferSemID);
- SEC_OSAL_MutexLock(inputUseBuffer->bufferMutex);
- if (dataBuffer->dataValid != OMX_TRUE) {
- message = (SEC_OMX_MESSAGE *)SEC_OSAL_Dequeue(&pSECPort->bufferQ);
- if (message == NULL) {
- ret = OMX_ErrorUndefined;
- SEC_OSAL_MutexUnlock(inputUseBuffer->bufferMutex);
- goto EXIT;
- }
-
- dataBuffer->bufferHeader = (OMX_BUFFERHEADERTYPE *)(message->pCmdData);
- dataBuffer->allocSize = dataBuffer->bufferHeader->nAllocLen;
- dataBuffer->dataLen = dataBuffer->bufferHeader->nFilledLen;
- dataBuffer->remainDataLen = dataBuffer->dataLen;
- dataBuffer->usedDataLen = 0;
- dataBuffer->dataValid = OMX_TRUE;
- dataBuffer->nFlags = dataBuffer->bufferHeader->nFlags;
- dataBuffer->timeStamp = dataBuffer->bufferHeader->nTimeStamp;
-
- SEC_OSAL_Free(message);
-
- if (dataBuffer->allocSize <= dataBuffer->dataLen)
- SEC_OSAL_Log(SEC_LOG_WARNING, "Input Buffer Full, Check input buffer size! allocSize:%d, dataLen:%d", dataBuffer->allocSize, dataBuffer->dataLen);
- }
- SEC_OSAL_MutexUnlock(inputUseBuffer->bufferMutex);
- ret = OMX_ErrorNone;
- }
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-static OMX_ERRORTYPE SEC_OutputBufferReturn(OMX_COMPONENTTYPE *pOMXComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- SEC_OMX_BASEPORT *secOMXInputPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- SEC_OMX_BASEPORT *secOMXOutputPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
- SEC_OMX_DATABUFFER *dataBuffer = &pSECComponent->secDataBuffer[OUTPUT_PORT_INDEX];
- OMX_BUFFERHEADERTYPE *bufferHeader = dataBuffer->bufferHeader;
-
- FunctionIn();
-
- if (bufferHeader != NULL) {
- bufferHeader->nFilledLen = dataBuffer->remainDataLen;
- bufferHeader->nOffset = 0;
- bufferHeader->nFlags = dataBuffer->nFlags;
- bufferHeader->nTimeStamp = dataBuffer->timeStamp;
-
- if (pSECComponent->propagateMarkType.hMarkTargetComponent != NULL) {
- bufferHeader->hMarkTargetComponent = pSECComponent->propagateMarkType.hMarkTargetComponent;
- bufferHeader->pMarkData = pSECComponent->propagateMarkType.pMarkData;
- pSECComponent->propagateMarkType.hMarkTargetComponent = NULL;
- pSECComponent->propagateMarkType.pMarkData = NULL;
- }
-
- if (bufferHeader->nFlags & OMX_BUFFERFLAG_EOS) {
- pSECComponent->pCallbacks->EventHandler(pOMXComponent,
- pSECComponent->callbackData,
- OMX_EventBufferFlag,
- OUTPUT_PORT_INDEX,
- bufferHeader->nFlags, NULL);
- }
-
- if (CHECK_PORT_TUNNELED(secOMXOutputPort)) {
- OMX_EmptyThisBuffer(secOMXOutputPort->tunneledComponent, bufferHeader);
- } else {
- pSECComponent->pCallbacks->FillBufferDone(pOMXComponent, pSECComponent->callbackData, bufferHeader);
- }
- }
-
- if ((pSECComponent->currentState == OMX_StatePause) &&
- ((!CHECK_PORT_BEING_FLUSHED(secOMXInputPort) && !CHECK_PORT_BEING_FLUSHED(secOMXOutputPort)))) {
- SEC_OSAL_SignalReset(pSECComponent->pauseEvent);
- SEC_OSAL_SignalWait(pSECComponent->pauseEvent, DEF_MAX_WAIT_TIME);
- }
-
- /* reset dataBuffer */
- dataBuffer->dataValid = OMX_FALSE;
- dataBuffer->dataLen = 0;
- dataBuffer->remainDataLen = 0;
- dataBuffer->usedDataLen = 0;
- dataBuffer->bufferHeader = NULL;
- dataBuffer->nFlags = 0;
- dataBuffer->timeStamp = 0;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OutputBufferGetQueue(SEC_OMX_BASECOMPONENT *pSECComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- SEC_OMX_DATABUFFER *dataBuffer = NULL;
- SEC_OMX_MESSAGE *message = NULL;
- SEC_OMX_DATABUFFER *outputUseBuffer = &pSECComponent->secDataBuffer[OUTPUT_PORT_INDEX];
-
- FunctionIn();
-
- pSECPort= &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
- dataBuffer = &pSECComponent->secDataBuffer[OUTPUT_PORT_INDEX];
-
- if (pSECComponent->currentState != OMX_StateExecuting) {
- ret = OMX_ErrorUndefined;
- goto EXIT;
- } else {
- SEC_OSAL_SemaphoreWait(pSECPort->bufferSemID);
- SEC_OSAL_MutexLock(outputUseBuffer->bufferMutex);
- if (dataBuffer->dataValid != OMX_TRUE) {
- message = (SEC_OMX_MESSAGE *)SEC_OSAL_Dequeue(&pSECPort->bufferQ);
- if (message == NULL) {
- ret = OMX_ErrorUndefined;
- SEC_OSAL_MutexUnlock(outputUseBuffer->bufferMutex);
- goto EXIT;
- }
-
- dataBuffer->bufferHeader = (OMX_BUFFERHEADERTYPE *)(message->pCmdData);
- dataBuffer->allocSize = dataBuffer->bufferHeader->nAllocLen;
- dataBuffer->dataLen = 0; //dataBuffer->bufferHeader->nFilledLen;
- dataBuffer->remainDataLen = dataBuffer->dataLen;
- dataBuffer->usedDataLen = 0; //dataBuffer->bufferHeader->nOffset;
- dataBuffer->dataValid =OMX_TRUE;
- /* dataBuffer->nFlags = dataBuffer->bufferHeader->nFlags; */
- /* dataBuffer->nTimeStamp = dataBuffer->bufferHeader->nTimeStamp; */
- pSECComponent->processData[OUTPUT_PORT_INDEX].dataBuffer = dataBuffer->bufferHeader->pBuffer;
- pSECComponent->processData[OUTPUT_PORT_INDEX].allocSize = dataBuffer->bufferHeader->nAllocLen;
-
- SEC_OSAL_Free(message);
- }
- SEC_OSAL_MutexUnlock(outputUseBuffer->bufferMutex);
- ret = OMX_ErrorNone;
- }
-EXIT:
- FunctionOut();
-
- return ret;
-
-}
-
-static OMX_ERRORTYPE SEC_BufferReset(OMX_COMPONENTTYPE *pOMXComponent, OMX_U32 portIndex)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- /* SEC_OMX_BASEPORT *pSECPort = &pSECComponent->pSECPort[portIndex]; */
- SEC_OMX_DATABUFFER *dataBuffer = &pSECComponent->secDataBuffer[portIndex];
- /* OMX_BUFFERHEADERTYPE *bufferHeader = dataBuffer->bufferHeader; */
-
- dataBuffer->dataValid = OMX_FALSE;
- dataBuffer->dataLen = 0;
- dataBuffer->remainDataLen = 0;
- dataBuffer->usedDataLen = 0;
- dataBuffer->bufferHeader = NULL;
- dataBuffer->nFlags = 0;
- dataBuffer->timeStamp = 0;
-
- return ret;
-}
-
-static OMX_ERRORTYPE SEC_DataReset(OMX_COMPONENTTYPE *pOMXComponent, OMX_U32 portIndex)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- /* SEC_OMX_BASEPORT *pSECPort = &pSECComponent->pSECPort[portIndex]; */
- /* SEC_OMX_DATABUFFER *dataBuffer = &pSECComponent->secDataBuffer[portIndex]; */
- /* OMX_BUFFERHEADERTYPE *bufferHeader = dataBuffer->bufferHeader; */
- SEC_OMX_DATA *processData = &pSECComponent->processData[portIndex];
-
- processData->dataLen = 0;
- processData->remainDataLen = 0;
- processData->usedDataLen = 0;
- processData->nFlags = 0;
- processData->timeStamp = 0;
-
- return ret;
-}
-
-OMX_BOOL SEC_Preprocessor_InputData(OMX_COMPONENTTYPE *pOMXComponent)
-{
- OMX_BOOL ret = OMX_FALSE;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- SEC_OMX_DATABUFFER *inputUseBuffer = &pSECComponent->secDataBuffer[INPUT_PORT_INDEX];
- SEC_OMX_DATA *inputData = &pSECComponent->processData[INPUT_PORT_INDEX];
- OMX_U32 copySize = 0;
- OMX_BYTE checkInputStream = NULL;
- OMX_U32 checkInputStreamLen = 0;
- OMX_U32 checkedSize = 0;
- OMX_BOOL flagEOF = OMX_FALSE;
- OMX_BOOL previousFrameEOF = OMX_FALSE;
-
- FunctionIn();
-
- if (inputUseBuffer->dataValid == OMX_TRUE) {
- checkInputStream = inputUseBuffer->bufferHeader->pBuffer + inputUseBuffer->usedDataLen;
- checkInputStreamLen = inputUseBuffer->remainDataLen;
-
- if (inputData->dataLen == 0) {
- previousFrameEOF = OMX_TRUE;
- } else {
- previousFrameEOF = OMX_FALSE;
- }
- if ((pSECComponent->bUseFlagEOF == OMX_TRUE) &&
- !(inputUseBuffer->nFlags & OMX_BUFFERFLAG_CODECCONFIG)) {
- flagEOF = OMX_TRUE;
- checkedSize = checkInputStreamLen;
- } else {
- pSECComponent->bUseFlagEOF = OMX_FALSE;
- checkedSize = pSECComponent->sec_checkInputFrame(checkInputStream, checkInputStreamLen, inputUseBuffer->nFlags, previousFrameEOF, &flagEOF);
- }
-
- if (flagEOF == OMX_TRUE) {
- copySize = checkedSize;
- SEC_OSAL_Log(SEC_LOG_TRACE, "sec_checkInputFrame : OMX_TRUE");
- } else {
- copySize = checkInputStreamLen;
- SEC_OSAL_Log(SEC_LOG_TRACE, "sec_checkInputFrame : OMX_FALSE");
- }
-
- if (inputUseBuffer->nFlags & OMX_BUFFERFLAG_EOS)
- pSECComponent->bSaveFlagEOS = OMX_TRUE;
-
- if (((inputData->allocSize) - (inputData->dataLen)) >= copySize) {
- if (copySize > 0)
- SEC_OSAL_Memcpy(inputData->dataBuffer + inputData->dataLen, checkInputStream, copySize);
-
- inputUseBuffer->dataLen -= copySize;
- inputUseBuffer->remainDataLen -= copySize;
- inputUseBuffer->usedDataLen += copySize;
-
- inputData->dataLen += copySize;
- inputData->remainDataLen += copySize;
-
- if (previousFrameEOF == OMX_TRUE) {
- inputData->timeStamp = inputUseBuffer->timeStamp;
- inputData->nFlags = inputUseBuffer->nFlags;
- }
-
- if (pSECComponent->bUseFlagEOF == OMX_TRUE) {
- if (pSECComponent->bSaveFlagEOS == OMX_TRUE) {
- inputData->nFlags |= OMX_BUFFERFLAG_EOS;
- flagEOF = OMX_TRUE;
- pSECComponent->bSaveFlagEOS = OMX_FALSE;
- } else {
- inputData->nFlags = (inputData->nFlags & (~OMX_BUFFERFLAG_EOS));
- }
- } else {
- if ((checkedSize == checkInputStreamLen) && (pSECComponent->bSaveFlagEOS == OMX_TRUE)) {
- if ((inputUseBuffer->nFlags & OMX_BUFFERFLAG_EOS) &&
- ((inputData->nFlags & OMX_BUFFERFLAG_CODECCONFIG) ||
- (inputData->dataLen == 0))) {
- inputData->nFlags |= OMX_BUFFERFLAG_EOS;
- flagEOF = OMX_TRUE;
- pSECComponent->bSaveFlagEOS = OMX_FALSE;
- } else if ((inputUseBuffer->nFlags & OMX_BUFFERFLAG_EOS) &&
- (!(inputData->nFlags & OMX_BUFFERFLAG_CODECCONFIG)) &&
- (inputData->dataLen != 0)) {
- inputData->nFlags = (inputData->nFlags & (~OMX_BUFFERFLAG_EOS));
- flagEOF = OMX_TRUE;
- pSECComponent->bSaveFlagEOS = OMX_TRUE;
- }
- } else {
- inputData->nFlags = (inputUseBuffer->nFlags & (~OMX_BUFFERFLAG_EOS));
- }
- }
-
- if(((inputData->nFlags & OMX_BUFFERFLAG_EOS) == OMX_BUFFERFLAG_EOS) &&
- (inputData->dataLen <= 0) && (flagEOF == OMX_TRUE)) {
- inputData->dataLen = inputData->previousDataLen;
- inputData->remainDataLen = inputData->previousDataLen;
- }
- } else {
- /*????????????????????????????????? Error ?????????????????????????????????*/
- SEC_DataReset(pOMXComponent, INPUT_PORT_INDEX);
- flagEOF = OMX_FALSE;
- }
-
- if (inputUseBuffer->remainDataLen == 0)
- SEC_InputBufferReturn(pOMXComponent);
- else
- inputUseBuffer->dataValid = OMX_TRUE;
- }
-
- if (flagEOF == OMX_TRUE) {
- if (pSECComponent->checkTimeStamp.needSetStartTimeStamp == OMX_TRUE) {
- pSECComponent->checkTimeStamp.needCheckStartTimeStamp = OMX_TRUE;
- pSECComponent->checkTimeStamp.startTimeStamp = inputData->timeStamp;
- pSECComponent->checkTimeStamp.nStartFlags = inputData->nFlags;
- pSECComponent->checkTimeStamp.needSetStartTimeStamp = OMX_FALSE;
- }
-
- ret = OMX_TRUE;
- } else {
- ret = OMX_FALSE;
- }
-
- FunctionOut();
-
- return ret;
-}
-
-OMX_BOOL SEC_Postprocess_OutputData(OMX_COMPONENTTYPE *pOMXComponent)
-{
- OMX_BOOL ret = OMX_FALSE;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- SEC_OMX_DATABUFFER *outputUseBuffer = &pSECComponent->secDataBuffer[OUTPUT_PORT_INDEX];
- SEC_OMX_DATA *outputData = &pSECComponent->processData[OUTPUT_PORT_INDEX];
- OMX_U32 copySize = 0;
-
- FunctionIn();
-
- if (outputUseBuffer->dataValid == OMX_TRUE) {
- if (pSECComponent->checkTimeStamp.needCheckStartTimeStamp == OMX_TRUE) {
- if ((pSECComponent->checkTimeStamp.startTimeStamp == outputData->timeStamp) &&
- (pSECComponent->checkTimeStamp.nStartFlags == outputData->nFlags)){
- pSECComponent->checkTimeStamp.startTimeStamp = -19761123;
- pSECComponent->checkTimeStamp.nStartFlags = 0x0;
- pSECComponent->checkTimeStamp.needSetStartTimeStamp = OMX_FALSE;
- pSECComponent->checkTimeStamp.needCheckStartTimeStamp = OMX_FALSE;
- } else {
- SEC_DataReset(pOMXComponent, OUTPUT_PORT_INDEX);
-
- ret = OMX_TRUE;
- goto EXIT;
- }
- } else if (pSECComponent->checkTimeStamp.needSetStartTimeStamp == OMX_TRUE) {
- SEC_DataReset(pOMXComponent, OUTPUT_PORT_INDEX);
-
- ret = OMX_TRUE;
- goto EXIT;
- }
-
- if (outputData->remainDataLen <= (outputUseBuffer->allocSize - outputUseBuffer->dataLen)) {
- copySize = outputData->remainDataLen;
- outputUseBuffer->dataLen += copySize;
- outputUseBuffer->remainDataLen += copySize;
- outputUseBuffer->nFlags = outputData->nFlags;
- outputUseBuffer->timeStamp = outputData->timeStamp;
-
- ret = OMX_TRUE;
-
- /* reset outputData */
- SEC_DataReset(pOMXComponent, OUTPUT_PORT_INDEX);
-
- if ((outputUseBuffer->remainDataLen > 0) ||
- (outputUseBuffer->nFlags & OMX_BUFFERFLAG_EOS))
- SEC_OutputBufferReturn(pOMXComponent);
- } else {
- SEC_OSAL_Log(SEC_LOG_ERROR, "output buffer is smaller than decoded data size Out Length");
-
- copySize = outputUseBuffer->allocSize - outputUseBuffer->dataLen;
- outputUseBuffer->dataLen += copySize;
- outputUseBuffer->remainDataLen += copySize;
- outputUseBuffer->nFlags = 0;
- outputUseBuffer->timeStamp = outputData->timeStamp;
-
- ret = OMX_FALSE;
-
- outputData->remainDataLen -= copySize;
- outputData->usedDataLen += copySize;
-
- SEC_OutputBufferReturn(pOMXComponent);
- }
- } else {
- ret = OMX_FALSE;
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_BufferProcess(OMX_HANDLETYPE hComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- SEC_OMX_BASEPORT *secInputPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- SEC_OMX_BASEPORT *secOutputPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
- SEC_OMX_DATABUFFER *inputUseBuffer = &pSECComponent->secDataBuffer[INPUT_PORT_INDEX];
- SEC_OMX_DATABUFFER *outputUseBuffer = &pSECComponent->secDataBuffer[OUTPUT_PORT_INDEX];
- SEC_OMX_DATA *inputData = &pSECComponent->processData[INPUT_PORT_INDEX];
- SEC_OMX_DATA *outputData = &pSECComponent->processData[OUTPUT_PORT_INDEX];
- OMX_U32 copySize = 0;
-
- pSECComponent->remainOutputData = OMX_FALSE;
- pSECComponent->reInputData = OMX_FALSE;
-
- FunctionIn();
-
- while (!pSECComponent->bExitBufferProcessThread) {
- SEC_OSAL_SleepMillisec(0);
-
- if (((pSECComponent->currentState == OMX_StatePause) ||
- (pSECComponent->currentState == OMX_StateIdle) ||
- (pSECComponent->transientState == SEC_OMX_TransStateLoadedToIdle) ||
- (pSECComponent->transientState == SEC_OMX_TransStateExecutingToIdle)) &&
- (pSECComponent->transientState != SEC_OMX_TransStateIdleToLoaded)&&
- ((!CHECK_PORT_BEING_FLUSHED(secInputPort) && !CHECK_PORT_BEING_FLUSHED(secOutputPort)))) {
- SEC_OSAL_SignalReset(pSECComponent->pauseEvent);
- SEC_OSAL_SignalWait(pSECComponent->pauseEvent, DEF_MAX_WAIT_TIME);
- }
-
- while (SEC_Check_BufferProcess_State(pSECComponent) && !pSECComponent->bExitBufferProcessThread) {
- SEC_OSAL_SleepMillisec(0);
-
- SEC_OSAL_MutexLock(outputUseBuffer->bufferMutex);
- if ((outputUseBuffer->dataValid != OMX_TRUE) &&
- (!CHECK_PORT_BEING_FLUSHED(secOutputPort))) {
- SEC_OSAL_MutexUnlock(outputUseBuffer->bufferMutex);
- ret = SEC_OutputBufferGetQueue(pSECComponent);
- if ((ret == OMX_ErrorUndefined) ||
- (secInputPort->portState != OMX_StateIdle) ||
- (secOutputPort->portState != OMX_StateIdle)) {
- break;
- }
- } else {
- SEC_OSAL_MutexUnlock(outputUseBuffer->bufferMutex);
- }
-
- if (pSECComponent->remainOutputData == OMX_FALSE) {
- if (pSECComponent->reInputData == OMX_FALSE) {
- SEC_OSAL_MutexLock(inputUseBuffer->bufferMutex);
- if ((SEC_Preprocessor_InputData(pOMXComponent) == OMX_FALSE) &&
- (!CHECK_PORT_BEING_FLUSHED(secInputPort))) {
- SEC_OSAL_MutexUnlock(inputUseBuffer->bufferMutex);
- ret = SEC_InputBufferGetQueue(pSECComponent);
- break;
- }
-
- SEC_OSAL_MutexUnlock(inputUseBuffer->bufferMutex);
- }
-
- SEC_OSAL_MutexLock(inputUseBuffer->bufferMutex);
- SEC_OSAL_MutexLock(outputUseBuffer->bufferMutex);
- ret = pSECComponent->sec_mfc_bufferProcess(pOMXComponent, inputData, outputData);
- SEC_OSAL_MutexUnlock(outputUseBuffer->bufferMutex);
- SEC_OSAL_MutexUnlock(inputUseBuffer->bufferMutex);
-
- if (ret == OMX_ErrorInputDataDecodeYet)
- pSECComponent->reInputData = OMX_TRUE;
- else
- pSECComponent->reInputData = OMX_FALSE;
- }
-
- SEC_OSAL_MutexLock(outputUseBuffer->bufferMutex);
-
- if (SEC_Postprocess_OutputData(pOMXComponent) == OMX_FALSE)
- pSECComponent->remainOutputData = OMX_TRUE;
- else
- pSECComponent->remainOutputData = OMX_FALSE;
-
- SEC_OSAL_MutexUnlock(outputUseBuffer->bufferMutex);
- }
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_VideoDecodeGetParameter(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_INDEXTYPE nParamIndex,
- OMX_INOUT OMX_PTR ComponentParameterStructure)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_BASEPORT *pSECPort = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- if (pSECComponent->currentState == OMX_StateInvalid ) {
- ret = OMX_StateInvalid;
- goto EXIT;
- }
-
- if (ComponentParameterStructure == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- switch (nParamIndex) {
- case OMX_IndexParamVideoInit:
- {
- OMX_PORT_PARAM_TYPE *portParam = (OMX_PORT_PARAM_TYPE *)ComponentParameterStructure;
- ret = SEC_OMX_Check_SizeVersion(portParam, sizeof(OMX_PORT_PARAM_TYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- portParam->nPorts = pSECComponent->portParam.nPorts;
- portParam->nStartPortNumber = pSECComponent->portParam.nStartPortNumber;
- ret = OMX_ErrorNone;
- }
- break;
- case OMX_IndexParamVideoPortFormat:
- {
- OMX_VIDEO_PARAM_PORTFORMATTYPE *portFormat = (OMX_VIDEO_PARAM_PORTFORMATTYPE *)ComponentParameterStructure;
- OMX_U32 portIndex = portFormat->nPortIndex;
- OMX_U32 index = portFormat->nIndex;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- OMX_PARAM_PORTDEFINITIONTYPE *portDefinition = NULL;
- OMX_U32 supportFormatNum = 0; /* supportFormatNum = N-1 */
-
- ret = SEC_OMX_Check_SizeVersion(portFormat, sizeof(OMX_VIDEO_PARAM_PORTFORMATTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if ((portIndex >= pSECComponent->portParam.nPorts)) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
-
- if (portIndex == INPUT_PORT_INDEX) {
- supportFormatNum = INPUT_PORT_SUPPORTFORMAT_NUM_MAX - 1;
- if (index > supportFormatNum) {
- ret = OMX_ErrorNoMore;
- goto EXIT;
- }
-
- pSECPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- portDefinition = &pSECPort->portDefinition;
-
- portFormat->eCompressionFormat = portDefinition->format.video.eCompressionFormat;
- portFormat->eColorFormat = portDefinition->format.video.eColorFormat;
- portFormat->xFramerate = portDefinition->format.video.xFramerate;
- } else if (portIndex == OUTPUT_PORT_INDEX) {
- supportFormatNum = OUTPUT_PORT_SUPPORTFORMAT_NUM_MAX - 1;
- if (index > supportFormatNum) {
- ret = OMX_ErrorNoMore;
- goto EXIT;
- }
-
- pSECPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
- portDefinition = &pSECPort->portDefinition;
-
- switch (index) {
- case supportFormat_0:
- portFormat->eCompressionFormat = OMX_VIDEO_CodingUnused;
- portFormat->eColorFormat = OMX_COLOR_FormatYUV420Planar;//OMX_COLOR_FormatYUV420SemiPlanar;
- portFormat->xFramerate = portDefinition->format.video.xFramerate;
- break;
- case supportFormat_1:
- portFormat->eCompressionFormat = OMX_VIDEO_CodingUnused;
- portFormat->eColorFormat = OMX_COLOR_FormatYUV420SemiPlanar;//OMX_COLOR_FormatYUV420Planar;
- portFormat->xFramerate = portDefinition->format.video.xFramerate;
- break;
- case supportFormat_2:
- portFormat->eCompressionFormat = OMX_VIDEO_CodingUnused;
- portFormat->eColorFormat = OMX_SEC_COLOR_FormatNV12TPhysicalAddress;
- portFormat->xFramerate = portDefinition->format.video.xFramerate;
- break;
- }
- }
- ret = OMX_ErrorNone;
- }
- break;
- case OMX_IndexParamVideoBitrate:
- {
- OMX_VIDEO_PARAM_BITRATETYPE *videoRateControl = (OMX_VIDEO_PARAM_BITRATETYPE *)ComponentParameterStructure;
- OMX_U32 portIndex = videoRateControl->nPortIndex;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- OMX_PARAM_PORTDEFINITIONTYPE *portDefinition = NULL;
-
- if ((portIndex != INPUT_PORT_INDEX)) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- } else {
- pSECPort = &pSECComponent->pSECPort[portIndex];
- portDefinition = &pSECPort->portDefinition;
-
- videoRateControl->eControlRate = pSECPort->eControlRate;
- videoRateControl->nTargetBitrate = portDefinition->format.video.nBitrate;
- }
- ret = OMX_ErrorNone;
- }
- break;
-#ifdef USE_ANDROID_EXTENSION
- case OMX_IndexParamGetAndroidNativeBuffer:
- {
- if (OMX_ErrorNone != checkVersionANB(ComponentParameterStructure))
- goto EXIT;
-
- if (OUTPUT_PORT_INDEX != checkPortIndexANB(ComponentParameterStructure)) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
- ret = getAndroidNativeBuffer(hComponent, ComponentParameterStructure);
- }
- break;
-#endif
- default:
- {
- ret = SEC_OMX_GetParameter(hComponent, nParamIndex, ComponentParameterStructure);
- }
- break;
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-OMX_ERRORTYPE SEC_OMX_VideoDecodeSetParameter(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_INDEXTYPE nIndex,
- OMX_IN OMX_PTR ComponentParameterStructure)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_BASEPORT *pSECPort = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- if (pSECComponent->currentState == OMX_StateInvalid ) {
- ret = OMX_StateInvalid;
- goto EXIT;
- }
-
- if (ComponentParameterStructure == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- switch (nIndex) {
- case OMX_IndexParamVideoPortFormat:
- {
- OMX_VIDEO_PARAM_PORTFORMATTYPE *portFormat = (OMX_VIDEO_PARAM_PORTFORMATTYPE *)ComponentParameterStructure;
- OMX_U32 portIndex = portFormat->nPortIndex;
- OMX_U32 index = portFormat->nIndex;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- OMX_PARAM_PORTDEFINITIONTYPE *portDefinition = NULL;
- OMX_U32 supportFormatNum = 0;
-
- ret = SEC_OMX_Check_SizeVersion(portFormat, sizeof(OMX_VIDEO_PARAM_PORTFORMATTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if ((portIndex >= pSECComponent->portParam.nPorts)) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- } else {
- pSECPort = &pSECComponent->pSECPort[portIndex];
- portDefinition = &pSECPort->portDefinition;
-
- portDefinition->format.video.eColorFormat = portFormat->eColorFormat;
- portDefinition->format.video.eCompressionFormat = portFormat->eCompressionFormat;
- portDefinition->format.video.xFramerate = portFormat->xFramerate;
- }
- }
- break;
- case OMX_IndexParamVideoBitrate:
- {
- OMX_VIDEO_PARAM_BITRATETYPE *videoRateControl = (OMX_VIDEO_PARAM_BITRATETYPE *)ComponentParameterStructure;
- OMX_U32 portIndex = videoRateControl->nPortIndex;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- OMX_PARAM_PORTDEFINITIONTYPE *portDefinition = NULL;
-
- if ((portIndex != INPUT_PORT_INDEX)) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- } else {
- pSECPort = &pSECComponent->pSECPort[portIndex];
- portDefinition = &pSECPort->portDefinition;
-
- pSECPort->eControlRate = videoRateControl->eControlRate;
- portDefinition->format.video.nBitrate = videoRateControl->nTargetBitrate;
- }
- ret = OMX_ErrorNone;
- }
- break;
-#ifdef USE_ANDROID_EXTENSION
- case OMX_IndexParamEnableAndroidBuffers:
- {
- if (OMX_ErrorNone != checkVersionANB(ComponentParameterStructure))
- goto EXIT;
-
- if (OUTPUT_PORT_INDEX != checkPortIndexANB(ComponentParameterStructure)) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- ret = enableAndroidNativeBuffer(hComponent, ComponentParameterStructure);
- if (ret == OMX_ErrorNone) {
- SEC_OMX_BASECOMPONENT *pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- SEC_OMX_BASEPORT *pSECPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
- if (pSECPort->bUseAndroidNativeBuffer) {
- pSECPort->portDefinition.nBufferCountActual = ANDROID_MAX_VIDEO_OUTPUTBUFFER_NUM;
- pSECPort->portDefinition.nBufferCountMin = ANDROID_MAX_VIDEO_OUTPUTBUFFER_NUM;
- } else {
- pSECPort->portDefinition.nBufferCountActual = MAX_VIDEO_OUTPUTBUFFER_NUM;
- pSECPort->portDefinition.nBufferCountMin = MAX_VIDEO_OUTPUTBUFFER_NUM;
- }
- }
- }
- break;
- case OMX_IndexParamUseAndroidNativeBuffer:
- {
- if (OMX_ErrorNone != checkVersionANB(ComponentParameterStructure))
- goto EXIT;
-
- if (OUTPUT_PORT_INDEX != checkPortIndexANB(ComponentParameterStructure)) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- ret = useAndroidNativeBuffer(hComponent, ComponentParameterStructure);
- }
- break;
-#endif
- default:
- {
- ret = SEC_OMX_SetParameter(hComponent, nIndex, ComponentParameterStructure);
- }
- break;
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_VideoDecodeComponentInit(OMX_IN OMX_HANDLETYPE hComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_BASEPORT *pSECPort = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- SEC_OSAL_Log(SEC_LOG_ERROR, "OMX_Error, Line:%d", __LINE__);
- goto EXIT;
- }
-
- ret = SEC_OMX_BaseComponent_Constructor(pOMXComponent);
- if (ret != OMX_ErrorNone) {
- SEC_OSAL_Log(SEC_LOG_ERROR, "OMX_Error, Line:%d", __LINE__);
- goto EXIT;
- }
-
- ret = SEC_OMX_Port_Constructor(pOMXComponent);
- if (ret != OMX_ErrorNone) {
- SEC_OMX_BaseComponent_Destructor(pOMXComponent);
- SEC_OSAL_Log(SEC_LOG_ERROR, "OMX_Error, Line:%d", __LINE__);
- goto EXIT;
- }
-
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- pSECComponent->bSaveFlagEOS = OMX_FALSE;
-
- /* Input port */
- pSECPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- pSECPort->portDefinition.nBufferCountActual = MAX_VIDEO_INPUTBUFFER_NUM;
- pSECPort->portDefinition.nBufferCountMin = MAX_VIDEO_INPUTBUFFER_NUM;
- pSECPort->portDefinition.nBufferSize = 0;
- pSECPort->portDefinition.eDomain = OMX_PortDomainVideo;
-
- pSECPort->portDefinition.format.video.cMIMEType = SEC_OSAL_Malloc(MAX_OMX_MIMETYPE_SIZE);
- SEC_OSAL_Strcpy(pSECPort->portDefinition.format.video.cMIMEType, "raw/video");
- pSECPort->portDefinition.format.video.pNativeRender = 0;
- pSECPort->portDefinition.format.video.bFlagErrorConcealment = OMX_FALSE;
- pSECPort->portDefinition.format.video.eCompressionFormat = OMX_VIDEO_CodingUnused;
-
- pSECPort->portDefinition.format.video.nFrameWidth = 0;
- pSECPort->portDefinition.format.video.nFrameHeight= 0;
- pSECPort->portDefinition.format.video.nStride = 0;
- pSECPort->portDefinition.format.video.nSliceHeight = 0;
- pSECPort->portDefinition.format.video.nBitrate = 64000;
- pSECPort->portDefinition.format.video.xFramerate = (15 << 16);
- pSECPort->portDefinition.format.video.eColorFormat = OMX_COLOR_FormatUnused;
- pSECPort->portDefinition.format.video.pNativeWindow = NULL;
-
- /* Output port */
- pSECPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
- pSECPort->portDefinition.nBufferCountActual = MAX_VIDEO_OUTPUTBUFFER_NUM;
- pSECPort->portDefinition.nBufferCountMin = MAX_VIDEO_OUTPUTBUFFER_NUM;
- pSECPort->portDefinition.nBufferSize = DEFAULT_VIDEO_OUTPUT_BUFFER_SIZE;
- pSECPort->portDefinition.eDomain = OMX_PortDomainVideo;
-
- pSECPort->portDefinition.format.video.cMIMEType = SEC_OSAL_Malloc(MAX_OMX_MIMETYPE_SIZE);
- SEC_OSAL_Strcpy(pSECPort->portDefinition.format.video.cMIMEType, "raw/video");
- pSECPort->portDefinition.format.video.pNativeRender = 0;
- pSECPort->portDefinition.format.video.bFlagErrorConcealment = OMX_FALSE;
- pSECPort->portDefinition.format.video.eCompressionFormat = OMX_VIDEO_CodingUnused;
-
- pSECPort->portDefinition.format.video.nFrameWidth = 0;
- pSECPort->portDefinition.format.video.nFrameHeight= 0;
- pSECPort->portDefinition.format.video.nStride = 0;
- pSECPort->portDefinition.format.video.nSliceHeight = 0;
- pSECPort->portDefinition.format.video.nBitrate = 64000;
- pSECPort->portDefinition.format.video.xFramerate = (15 << 16);
- pSECPort->portDefinition.format.video.eColorFormat = OMX_COLOR_FormatUnused;
- pSECPort->portDefinition.format.video.pNativeWindow = NULL;
-
- pOMXComponent->UseBuffer = &SEC_OMX_UseBuffer;
- pOMXComponent->AllocateBuffer = &SEC_OMX_AllocateBuffer;
- pOMXComponent->FreeBuffer = &SEC_OMX_FreeBuffer;
- pOMXComponent->ComponentTunnelRequest = &SEC_OMX_ComponentTunnelRequest;
-
- pSECComponent->sec_AllocateTunnelBuffer = &SEC_OMX_AllocateTunnelBuffer;
- pSECComponent->sec_FreeTunnelBuffer = &SEC_OMX_FreeTunnelBuffer;
- pSECComponent->sec_BufferProcess = &SEC_OMX_BufferProcess;
- pSECComponent->sec_BufferReset = &SEC_BufferReset;
- pSECComponent->sec_InputBufferReturn = &SEC_InputBufferReturn;
- pSECComponent->sec_OutputBufferReturn = &SEC_OutputBufferReturn;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_VideoDecodeComponentDeinit(OMX_IN OMX_HANDLETYPE hComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- int i = 0;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- for(i = 0; i < ALL_PORT_NUM; i++) {
- pSECPort = &pSECComponent->pSECPort[i];
- SEC_OSAL_Free(pSECPort->portDefinition.format.video.cMIMEType);
- pSECPort->portDefinition.format.video.cMIMEType = NULL;
- }
-
- ret = SEC_OMX_Port_Destructor(pOMXComponent);
-
- ret = SEC_OMX_BaseComponent_Destructor(hComponent);
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
diff --git a/sec_mm/sec_omx/sec_omx_component/video/dec/SEC_OMX_Vdec.h b/sec_mm/sec_omx/sec_omx_component/video/dec/SEC_OMX_Vdec.h
deleted file mode 100644
index 52130f0..0000000
--- a/sec_mm/sec_omx/sec_omx_component/video/dec/SEC_OMX_Vdec.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OMX_Vdec.h
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * HyeYeon Chung (hyeon.chung@samsung.com)
- * Yunji Kim (yunji.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#ifndef SEC_OMX_VIDEO_DECODE
-#define SEC_OMX_VIDEO_DECODE
-
-#include "OMX_Component.h"
-#include "SEC_OMX_Def.h"
-#include "SEC_OSAL_Queue.h"
-#include "SEC_OMX_Baseport.h"
-
-#define MAX_VIDEO_INPUTBUFFER_NUM 5
-#define MAX_VIDEO_OUTPUTBUFFER_NUM 2
-
-#define DEFAULT_FRAME_WIDTH 176
-#define DEFAULT_FRAME_HEIGHT 144
-
-#define DEFAULT_VIDEO_INPUT_BUFFER_SIZE ((DEFAULT_FRAME_WIDTH * DEFAULT_FRAME_HEIGHT) * 2)
-#define DEFAULT_VIDEO_OUTPUT_BUFFER_SIZE ((DEFAULT_FRAME_WIDTH * DEFAULT_FRAME_HEIGHT * 3) / 2)
-
-#define MFC_INPUT_BUFFER_NUM_MAX 2
-#define DEFAULT_MFC_INPUT_BUFFER_SIZE ((1280 * 720 * 3) / 2)
-
-#define INPUT_PORT_SUPPORTFORMAT_NUM_MAX 1
-#define OUTPUT_PORT_SUPPORTFORMAT_NUM_MAX 3
-
-#ifdef USE_ANDROID_EXTENSION
-#define ANDROID_MAX_VIDEO_OUTPUTBUFFER_NUM 1
-#endif
-
-typedef struct
-{
- void *pAddrY;
- void *pAddrC;
-} MFC_DEC_ADDR_INFO;
-
-typedef struct _SEC_MFC_NBDEC_THREAD
-{
- OMX_HANDLETYPE hNBDecodeThread;
- OMX_HANDLETYPE hDecFrameStart;
- OMX_HANDLETYPE hDecFrameEnd;
- OMX_BOOL bExitDecodeThread;
- OMX_BOOL bDecoderRun;
-
- OMX_U32 oneFrameSize;
-} SEC_MFC_NBDEC_THREAD;
-
-typedef struct _MFC_DEC_INPUT_BUFFER
-{
- void *PhyAddr; // physical address
- void *VirAddr; // virtual address
- int bufferSize; // input buffer alloc size
- int dataSize; // Data length
-} MFC_DEC_INPUT_BUFFER;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-OMX_ERRORTYPE SEC_OMX_UseBuffer(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_INOUT OMX_BUFFERHEADERTYPE **ppBufferHdr,
- OMX_IN OMX_U32 nPortIndex,
- OMX_IN OMX_PTR pAppPrivate,
- OMX_IN OMX_U32 nSizeBytes,
- OMX_IN OMX_U8 *pBuffer);
-OMX_ERRORTYPE SEC_OMX_AllocateBuffer(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_INOUT OMX_BUFFERHEADERTYPE **ppBuffer,
- OMX_IN OMX_U32 nPortIndex,
- OMX_IN OMX_PTR pAppPrivate,
- OMX_IN OMX_U32 nSizeBytes);
-OMX_ERRORTYPE SEC_OMX_FreeBuffer(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_U32 nPortIndex,
- OMX_IN OMX_BUFFERHEADERTYPE *pBufferHdr);
-OMX_ERRORTYPE SEC_OMX_AllocateTunnelBuffer(
- SEC_OMX_BASEPORT *pOMXBasePort,
- OMX_U32 nPortIndex);
-OMX_ERRORTYPE SEC_OMX_FreeTunnelBuffer(
- SEC_OMX_BASEPORT *pOMXBasePort,
- OMX_U32 nPortIndex);
-OMX_ERRORTYPE SEC_OMX_ComponentTunnelRequest(
- OMX_IN OMX_HANDLETYPE hComp,
- OMX_IN OMX_U32 nPort,
- OMX_IN OMX_HANDLETYPE hTunneledComp,
- OMX_IN OMX_U32 nTunneledPort,
- OMX_INOUT OMX_TUNNELSETUPTYPE *pTunnelSetup);
-OMX_ERRORTYPE SEC_OMX_BufferProcess(OMX_HANDLETYPE hComponent);
-OMX_ERRORTYPE SEC_OMX_VideoDecodeGetParameter(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_INDEXTYPE nParamIndex,
- OMX_INOUT OMX_PTR ComponentParameterStructure);
-OMX_ERRORTYPE SEC_OMX_VideoDecodeSetParameter(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_INDEXTYPE nIndex,
- OMX_IN OMX_PTR ComponentParameterStructure);
-OMX_ERRORTYPE SEC_OMX_VideoDecodeComponentDeinit(OMX_IN OMX_HANDLETYPE hComponent);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/sec_mm/sec_omx/sec_omx_component/video/dec/h264dec/Android.mk b/sec_mm/sec_omx/sec_omx_component/video/dec/h264dec/Android.mk
deleted file mode 100644
index 6cb3d2d..0000000
--- a/sec_mm/sec_omx/sec_omx_component/video/dec/h264dec/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := \
- SEC_OMX_H264dec.c \
- library_register.c
-
-
-LOCAL_MODULE := libOMX.SEC.AVC.Decoder.aries
-
-LOCAL_CFLAGS :=
-
-LOCAL_ARM_MODE := arm
-
-LOCAL_STATIC_LIBRARIES := libSEC_OMX_Vdec.aries libsecosal.aries libsecbasecomponent.aries \
- libsecmfcdecapi.aries libseccsc.aries
-LOCAL_SHARED_LIBRARIES := libc libdl libcutils libutils libui libhardware
-
-LOCAL_C_INCLUDES := $(SEC_OMX_INC)/khronos \
- $(SEC_OMX_INC)/sec \
- $(SEC_OMX_TOP)/sec_osal \
- $(SEC_OMX_TOP)/sec_omx_core \
- $(SEC_OMX_COMPONENT)/common \
- $(SEC_OMX_COMPONENT)/video/dec
-
-LOCAL_C_INCLUDES += $(SEC_OMX_TOP)/sec_codecs/video/mfc_c110/include
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/sec_mm/sec_omx/sec_omx_component/video/dec/h264dec/SEC_OMX_H264dec.c b/sec_mm/sec_omx/sec_omx_component/video/dec/h264dec/SEC_OMX_H264dec.c
deleted file mode 100644
index 64ac7eb..0000000
--- a/sec_mm/sec_omx/sec_omx_component/video/dec/h264dec/SEC_OMX_H264dec.c
+++ /dev/null
@@ -1,1479 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OMX_H264dec.c
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "SEC_OMX_Macros.h"
-#include "SEC_OMX_Basecomponent.h"
-#include "SEC_OMX_Baseport.h"
-#include "SEC_OMX_Vdec.h"
-#include "library_register.h"
-#include "SEC_OMX_H264dec.h"
-#include "SsbSipMfcApi.h"
-#include "color_space_convertor.h"
-
-#undef SEC_LOG_TAG
-#define SEC_LOG_TAG "SEC_H264_DEC"
-#define SEC_LOG_OFF
-#include "SEC_OSAL_Log.h"
-
-//#define ADD_SPS_PPS_I_FRAME
-//#define FULL_FRAME_SEARCH
-
-/* H.264 Decoder Supported Levels & profiles */
-SEC_OMX_VIDEO_PROFILELEVEL supportedAVCProfileLevels[] ={
- {OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel1},
- {OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel1b},
- {OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel11},
- {OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel12},
- {OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel13},
- {OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel2},
- {OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel21},
- {OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel22},
- {OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel3},
- {OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel31},
-
- {OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel1},
- {OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel1b},
- {OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel11},
- {OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel12},
- {OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel13},
- {OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel2},
- {OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel21},
- {OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel22},
- {OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel3},
- {OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel31},
-
- {OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel1},
- {OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel1b},
- {OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel11},
- {OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel12},
- {OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel13},
- {OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel2},
- {OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel21},
- {OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel22},
- {OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel3},
- {OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel31}};
-
-
-static int Check_H264_Frame(OMX_U8 *pInputStream, int buffSize, OMX_U32 flag, OMX_BOOL bPreviousFrameEOF, OMX_BOOL *pbEndOfFrame)
-{
- OMX_U32 preFourByte = (OMX_U32)-1;
- int accessUnitSize = 0;
- int frameTypeBoundary = 0;
- int nextNaluSize = 0;
- int naluStart = 0;
-
- if (bPreviousFrameEOF == OMX_TRUE)
- naluStart = 0;
- else
- naluStart = 1;
-
- while (1) {
- int inputOneByte = 0;
-
- if (accessUnitSize == buffSize)
- goto EXIT;
-
- inputOneByte = *(pInputStream++);
- accessUnitSize += 1;
-
- if (preFourByte == 0x00000001 || (preFourByte << 8) == 0x00000100) {
- int naluType = inputOneByte & 0x1F;
-
- SEC_OSAL_Log(SEC_LOG_TRACE, "NaluType : %d", naluType);
- if (naluStart == 0) {
-#ifdef ADD_SPS_PPS_I_FRAME
- if (naluType == 1 || naluType == 5)
-#else
- if (naluType == 1 || naluType == 5 || naluType == 7 || naluType == 8)
-#endif
- naluStart = 1;
- } else {
-#ifdef OLD_DETECT
- frameTypeBoundary = (8 - naluType) & (naluType - 10); //AUD(9)
-#else
- if (naluType == 9)
- frameTypeBoundary = -2;
-#endif
- if (naluType == 1 || naluType == 5) {
- if (accessUnitSize == buffSize) {
- accessUnitSize--;
- goto EXIT;
- }
- inputOneByte = *pInputStream++;
- accessUnitSize += 1;
-
- if (inputOneByte >= 0x80)
- frameTypeBoundary = -1;
- }
- if (frameTypeBoundary < 0) {
- break;
- }
- }
-
- }
- preFourByte = (preFourByte << 8) + inputOneByte;
- }
-
- *pbEndOfFrame = OMX_TRUE;
- nextNaluSize = -5;
- if (frameTypeBoundary == -1)
- nextNaluSize = -6;
- if (preFourByte != 0x00000001)
- nextNaluSize++;
- return (accessUnitSize + nextNaluSize);
-
-EXIT:
- *pbEndOfFrame = OMX_FALSE;
-
- return accessUnitSize;
-}
-
-OMX_BOOL Check_H264_StartCode(OMX_U8 *pInputStream, OMX_U32 streamSize)
-{
- if (streamSize < 4) {
- return OMX_FALSE;
- } else if ((pInputStream[0] == 0x00) &&
- (pInputStream[1] == 0x00) &&
- (pInputStream[2] == 0x00) &&
- (pInputStream[3] != 0x00) &&
- ((pInputStream[3] >> 3) == 0x00)) {
- return OMX_TRUE;
- } else if ((pInputStream[0] == 0x00) &&
- (pInputStream[1] == 0x00) &&
- (pInputStream[2] != 0x00) &&
- ((pInputStream[2] >> 3) == 0x00)) {
- return OMX_TRUE;
- } else {
- return OMX_FALSE;
- }
-}
-
-OMX_ERRORTYPE SEC_MFC_H264Dec_GetParameter(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_INDEXTYPE nParamIndex,
- OMX_INOUT OMX_PTR pComponentParameterStructure)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL || pComponentParameterStructure == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- if (pSECComponent->currentState == OMX_StateInvalid ) {
- ret = OMX_StateInvalid;
- goto EXIT;
- }
-
- switch (nParamIndex) {
- case OMX_IndexParamVideoAvc:
- {
- OMX_VIDEO_PARAM_AVCTYPE *pDstAVCComponent = (OMX_VIDEO_PARAM_AVCTYPE *)pComponentParameterStructure;
- OMX_VIDEO_PARAM_AVCTYPE *pSrcAVCComponent = NULL;
- SEC_H264DEC_HANDLE *pH264Dec = NULL;
-
- ret = SEC_OMX_Check_SizeVersion(pDstAVCComponent, sizeof(OMX_VIDEO_PARAM_AVCTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pDstAVCComponent->nPortIndex >= ALL_PORT_NUM) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- pH264Dec = (SEC_H264DEC_HANDLE *)pSECComponent->hCodecHandle;
- pSrcAVCComponent = &pH264Dec->AVCComponent[pDstAVCComponent->nPortIndex];
-
- SEC_OSAL_Memcpy(pDstAVCComponent, pSrcAVCComponent, sizeof(OMX_VIDEO_PARAM_AVCTYPE));
- }
- break;
- case OMX_IndexParamStandardComponentRole:
- {
- OMX_PARAM_COMPONENTROLETYPE *pComponentRole = (OMX_PARAM_COMPONENTROLETYPE *)pComponentParameterStructure;
- ret = SEC_OMX_Check_SizeVersion(pComponentRole, sizeof(OMX_PARAM_COMPONENTROLETYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- SEC_OSAL_Strcpy((char *)pComponentRole->cRole, SEC_OMX_COMPONENT_H264_DEC_ROLE);
- }
- break;
- case OMX_IndexParamVideoProfileLevelQuerySupported:
- {
- OMX_VIDEO_PARAM_PROFILELEVELTYPE *pDstProfileLevel = (OMX_VIDEO_PARAM_PROFILELEVELTYPE*)pComponentParameterStructure;
- SEC_OMX_VIDEO_PROFILELEVEL *pProfileLevel = NULL;
- OMX_U32 maxProfileLevelNum = 0;
-
- ret = SEC_OMX_Check_SizeVersion(pDstProfileLevel, sizeof(OMX_VIDEO_PARAM_PROFILELEVELTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pDstProfileLevel->nPortIndex >= ALL_PORT_NUM) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- pProfileLevel = supportedAVCProfileLevels;
- maxProfileLevelNum = sizeof(supportedAVCProfileLevels) / sizeof(SEC_OMX_VIDEO_PROFILELEVEL);
-
- if (pDstProfileLevel->nProfileIndex >= maxProfileLevelNum) {
- ret = OMX_ErrorNoMore;
- goto EXIT;
- }
-
- pProfileLevel += pDstProfileLevel->nProfileIndex;
- pDstProfileLevel->eProfile = pProfileLevel->profile;
- pDstProfileLevel->eLevel = pProfileLevel->level;
- }
- break;
- case OMX_IndexParamVideoProfileLevelCurrent:
- {
- OMX_VIDEO_PARAM_PROFILELEVELTYPE *pDstProfileLevel = (OMX_VIDEO_PARAM_PROFILELEVELTYPE*)pComponentParameterStructure;
- OMX_VIDEO_PARAM_AVCTYPE *pSrcAVCComponent = NULL;
- SEC_H264DEC_HANDLE *pH264Dec = NULL;
-
- ret = SEC_OMX_Check_SizeVersion(pDstProfileLevel, sizeof(OMX_VIDEO_PARAM_PROFILELEVELTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pDstProfileLevel->nPortIndex >= ALL_PORT_NUM) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- pH264Dec = (SEC_H264DEC_HANDLE *)pSECComponent->hCodecHandle;
- pSrcAVCComponent = &pH264Dec->AVCComponent[pDstProfileLevel->nPortIndex];
-
- pDstProfileLevel->eProfile = pSrcAVCComponent->eProfile;
- pDstProfileLevel->eLevel = pSrcAVCComponent->eLevel;
- }
- break;
- case OMX_IndexParamVideoErrorCorrection:
- {
- OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE *pDstErrorCorrectionType = (OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE *)pComponentParameterStructure;
- OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE *pSrcErrorCorrectionType = NULL;
- SEC_H264DEC_HANDLE *pH264Dec = NULL;
-
- ret = SEC_OMX_Check_SizeVersion(pDstErrorCorrectionType, sizeof(OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pDstErrorCorrectionType->nPortIndex != INPUT_PORT_INDEX) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- pH264Dec = (SEC_H264DEC_HANDLE *)pSECComponent->hCodecHandle;
- pSrcErrorCorrectionType = &pH264Dec->errorCorrectionType[INPUT_PORT_INDEX];
-
- pDstErrorCorrectionType->bEnableHEC = pSrcErrorCorrectionType->bEnableHEC;
- pDstErrorCorrectionType->bEnableResync = pSrcErrorCorrectionType->bEnableResync;
- pDstErrorCorrectionType->nResynchMarkerSpacing = pSrcErrorCorrectionType->nResynchMarkerSpacing;
- pDstErrorCorrectionType->bEnableDataPartitioning = pSrcErrorCorrectionType->bEnableDataPartitioning;
- pDstErrorCorrectionType->bEnableRVLC = pSrcErrorCorrectionType->bEnableRVLC;
- }
- break;
- default:
- ret = SEC_OMX_VideoDecodeGetParameter(hComponent, nParamIndex, pComponentParameterStructure);
- break;
- }
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_MFC_H264Dec_SetParameter(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_INDEXTYPE nIndex,
- OMX_IN OMX_PTR pComponentParameterStructure)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL || pComponentParameterStructure == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- if (pSECComponent->currentState == OMX_StateInvalid ) {
- ret = OMX_StateInvalid;
- goto EXIT;
- }
-
- switch (nIndex) {
- case OMX_IndexParamVideoAvc:
- {
- OMX_VIDEO_PARAM_AVCTYPE *pDstAVCComponent = NULL;
- OMX_VIDEO_PARAM_AVCTYPE *pSrcAVCComponent = (OMX_VIDEO_PARAM_AVCTYPE *)pComponentParameterStructure;
- SEC_H264DEC_HANDLE *pH264Dec = NULL;
-
- ret = SEC_OMX_Check_SizeVersion(pSrcAVCComponent, sizeof(OMX_VIDEO_PARAM_AVCTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pSrcAVCComponent->nPortIndex >= ALL_PORT_NUM) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- pH264Dec = (SEC_H264DEC_HANDLE *)pSECComponent->hCodecHandle;
- pDstAVCComponent = &pH264Dec->AVCComponent[pSrcAVCComponent->nPortIndex];
-
- SEC_OSAL_Memcpy(pDstAVCComponent, pSrcAVCComponent, sizeof(OMX_VIDEO_PARAM_AVCTYPE));
- }
- break;
- case OMX_IndexParamStandardComponentRole:
- {
- OMX_PARAM_COMPONENTROLETYPE *pComponentRole = (OMX_PARAM_COMPONENTROLETYPE*)pComponentParameterStructure;
-
- ret = SEC_OMX_Check_SizeVersion(pComponentRole, sizeof(OMX_PARAM_COMPONENTROLETYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if ((pSECComponent->currentState != OMX_StateLoaded) && (pSECComponent->currentState != OMX_StateWaitForResources)) {
- ret = OMX_ErrorIncorrectStateOperation;
- goto EXIT;
- }
-
- if (!SEC_OSAL_Strcmp((char*)pComponentRole->cRole, SEC_OMX_COMPONENT_H264_DEC_ROLE)) {
- pSECComponent->pSECPort[INPUT_PORT_INDEX].portDefinition.format.video.eCompressionFormat = OMX_VIDEO_CodingAVC;
- } else {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- }
- break;
- case OMX_IndexParamPortDefinition:
- {
- OMX_PARAM_PORTDEFINITIONTYPE *pPortDefinition = (OMX_PARAM_PORTDEFINITIONTYPE *)pComponentParameterStructure;
- OMX_U32 portIndex = pPortDefinition->nPortIndex;
- SEC_OMX_BASEPORT *pSECPort;
- OMX_U32 width, height, size;
-
- if (portIndex >= pSECComponent->portParam.nPorts) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
- ret = SEC_OMX_Check_SizeVersion(pPortDefinition, sizeof(OMX_PARAM_PORTDEFINITIONTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- pSECPort = &pSECComponent->pSECPort[portIndex];
-
- if ((pSECComponent->currentState != OMX_StateLoaded) && (pSECComponent->currentState != OMX_StateWaitForResources)) {
- if (pSECPort->portDefinition.bEnabled == OMX_TRUE) {
- ret = OMX_ErrorIncorrectStateOperation;
- goto EXIT;
- }
- }
- if(pPortDefinition->nBufferCountActual < pSECPort->portDefinition.nBufferCountMin) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- SEC_OSAL_Memcpy(&pSECPort->portDefinition, pPortDefinition, pPortDefinition->nSize);
-
- width = ((pSECPort->portDefinition.format.video.nFrameWidth + 15) & (~15));
- height = ((pSECPort->portDefinition.format.video.nFrameHeight + 15) & (~15));
- size = (width * height * 3) / 2;
- pSECPort->portDefinition.format.video.nStride = width;
- pSECPort->portDefinition.format.video.nSliceHeight = height;
- pSECPort->portDefinition.nBufferSize = (size > pSECPort->portDefinition.nBufferSize) ? size : pSECPort->portDefinition.nBufferSize;
-
- if (portIndex == INPUT_PORT_INDEX) {
- SEC_OMX_BASEPORT *pSECOutputPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
- pSECOutputPort->portDefinition.format.video.nFrameWidth = pSECPort->portDefinition.format.video.nFrameWidth;
- pSECOutputPort->portDefinition.format.video.nFrameHeight = pSECPort->portDefinition.format.video.nFrameHeight;
- pSECOutputPort->portDefinition.format.video.nStride = width;
- pSECOutputPort->portDefinition.format.video.nSliceHeight = height;
-
- switch (pSECOutputPort->portDefinition.format.video.eColorFormat) {
- case OMX_COLOR_FormatYUV420Planar:
- case OMX_COLOR_FormatYUV420SemiPlanar:
- case OMX_SEC_COLOR_FormatNV12TPhysicalAddress:
- case OMX_SEC_COLOR_FormatANBYUV420SemiPlanar:
- pSECOutputPort->portDefinition.nBufferSize = (width * height * 3) / 2;
- break;
- default:
- SEC_OSAL_Log(SEC_LOG_ERROR, "Color format is not support!! use default YUV size!!");
- ret = OMX_ErrorUnsupportedSetting;
- break;
- }
- }
- }
- break;
- case OMX_IndexParamVideoProfileLevelCurrent:
- {
- OMX_VIDEO_PARAM_PROFILELEVELTYPE *pSrcProfileLevel = (OMX_VIDEO_PARAM_PROFILELEVELTYPE *)pComponentParameterStructure;
- OMX_VIDEO_PARAM_AVCTYPE *pDstAVCComponent = NULL;
- SEC_H264DEC_HANDLE *pH264Dec = NULL;
-
- ret = SEC_OMX_Check_SizeVersion(pSrcProfileLevel, sizeof(OMX_VIDEO_PARAM_PROFILELEVELTYPE));
- if (ret != OMX_ErrorNone)
- goto EXIT;
-
- if (pSrcProfileLevel->nPortIndex >= ALL_PORT_NUM) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- pH264Dec = (SEC_H264DEC_HANDLE *)pSECComponent->hCodecHandle;
-
- pDstAVCComponent = &pH264Dec->AVCComponent[pSrcProfileLevel->nPortIndex];
- pDstAVCComponent->eProfile = pSrcProfileLevel->eProfile;
- pDstAVCComponent->eLevel = pSrcProfileLevel->eLevel;
- }
- break;
- case OMX_IndexParamVideoErrorCorrection:
- {
- OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE *pSrcErrorCorrectionType = (OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE *)pComponentParameterStructure;
- OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE *pDstErrorCorrectionType = NULL;
- SEC_H264DEC_HANDLE *pH264Dec = NULL;
-
- ret = SEC_OMX_Check_SizeVersion(pSrcErrorCorrectionType, sizeof(OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pSrcErrorCorrectionType->nPortIndex != INPUT_PORT_INDEX) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- pH264Dec = (SEC_H264DEC_HANDLE *)pSECComponent->hCodecHandle;
- pDstErrorCorrectionType = &pH264Dec->errorCorrectionType[INPUT_PORT_INDEX];
-
- pDstErrorCorrectionType->bEnableHEC = pSrcErrorCorrectionType->bEnableHEC;
- pDstErrorCorrectionType->bEnableResync = pSrcErrorCorrectionType->bEnableResync;
- pDstErrorCorrectionType->nResynchMarkerSpacing = pSrcErrorCorrectionType->nResynchMarkerSpacing;
- pDstErrorCorrectionType->bEnableDataPartitioning = pSrcErrorCorrectionType->bEnableDataPartitioning;
- pDstErrorCorrectionType->bEnableRVLC = pSrcErrorCorrectionType->bEnableRVLC;
- }
- break;
- default:
- ret = SEC_OMX_VideoDecodeSetParameter(hComponent, nIndex, pComponentParameterStructure);
- break;
- }
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_MFC_H264Dec_GetConfig(
- OMX_HANDLETYPE hComponent,
- OMX_INDEXTYPE nIndex,
- OMX_PTR pComponentConfigStructure)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- if (pComponentConfigStructure == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- if (pSECComponent->currentState == OMX_StateInvalid) {
- ret = OMX_ErrorInvalidState;
- goto EXIT;
- }
-
- switch (nIndex) {
- case OMX_IndexConfigCommonOutputCrop:
- {
- SEC_H264DEC_HANDLE *pH264Dec = NULL;
- OMX_CONFIG_RECTTYPE *pSrcRectType = NULL;
- OMX_CONFIG_RECTTYPE *pDstRectType = NULL;
- pH264Dec = (SEC_H264DEC_HANDLE *)pSECComponent->hCodecHandle;
-
- if (pH264Dec->hMFCH264Handle.bConfiguredMFC == OMX_FALSE) {
- ret = OMX_ErrorNotReady;
- break;
- }
-
- pDstRectType = (OMX_CONFIG_RECTTYPE *)pComponentConfigStructure;
-
- if ((pDstRectType->nPortIndex != INPUT_PORT_INDEX) &&
- (pDstRectType->nPortIndex != OUTPUT_PORT_INDEX)) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- SEC_OMX_BASEPORT *pSECPort = &pSECComponent->pSECPort[pDstRectType->nPortIndex];
-
- pSrcRectType = &(pSECPort->cropRectangle);
-
- pDstRectType->nTop = pSrcRectType->nTop;
- pDstRectType->nLeft = pSrcRectType->nLeft;
- pDstRectType->nHeight = pSrcRectType->nHeight;
- pDstRectType->nWidth = pSrcRectType->nWidth;
- }
- break;
- default:
- ret = SEC_OMX_GetConfig(hComponent, nIndex, pComponentConfigStructure);
- break;
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_MFC_H264Dec_SetConfig(
- OMX_HANDLETYPE hComponent,
- OMX_INDEXTYPE nIndex,
- OMX_PTR pComponentConfigStructure)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- if (pComponentConfigStructure == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- if (pSECComponent->currentState == OMX_StateInvalid) {
- ret = OMX_ErrorInvalidState;
- goto EXIT;
- }
-
- switch (nIndex) {
- case OMX_IndexVendorThumbnailMode:
- {
- SEC_H264DEC_HANDLE *pH264Dec = (SEC_H264DEC_HANDLE *)pSECComponent->hCodecHandle;
-
- pH264Dec->hMFCH264Handle.bThumbnailMode = *((OMX_BOOL *)pComponentConfigStructure);
-
- ret = OMX_ErrorNone;
- }
- break;
- default:
- ret = SEC_OMX_SetConfig(hComponent, nIndex, pComponentConfigStructure);
- break;
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_MFC_H264Dec_GetExtensionIndex(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_STRING cParameterName,
- OMX_OUT OMX_INDEXTYPE *pIndexType)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- if ((cParameterName == NULL) || (pIndexType == NULL)) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- if (pSECComponent->currentState == OMX_StateInvalid) {
- ret = OMX_ErrorInvalidState;
- goto EXIT;
- }
-
- if (SEC_OSAL_Strcmp(cParameterName, SEC_INDEX_PARAM_ENABLE_THUMBNAIL) == 0) {
- SEC_H264DEC_HANDLE *pH264Dec = (SEC_H264DEC_HANDLE *)pSECComponent->hCodecHandle;
- *pIndexType = OMX_IndexVendorThumbnailMode;
- ret = OMX_ErrorNone;
-#ifdef USE_ANDROID_EXTENSION
- } else if (SEC_OSAL_Strcmp(cParameterName, SEC_INDEX_PARAM_ENABLE_ANB) == 0) {
- if (isTvOutEnabled()) {
- // Samsung normally pushes HW-decoded frames to the TV Out driver
- // but it's hard for us to do that without source, so return an error
- // and let Android fallback to software decoding
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
-
- *pIndexType = OMX_IndexParamEnableAndroidBuffers;
- ret = OMX_ErrorNone;
- } else if (SEC_OSAL_Strcmp(cParameterName, SEC_INDEX_PARAM_GET_ANB) == 0) {
- *pIndexType = OMX_IndexParamGetAndroidNativeBuffer;
- ret = OMX_ErrorNone;
- } else if (SEC_OSAL_Strcmp(cParameterName, SEC_INDEX_PARAM_USE_ANB) == 0) {
- *pIndexType = OMX_IndexParamUseAndroidNativeBuffer;
- ret = OMX_ErrorNone;
-#endif
- } else {
- ret = SEC_OMX_GetExtensionIndex(hComponent, cParameterName, pIndexType);
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_MFC_H264Dec_ComponentRoleEnum(OMX_HANDLETYPE hComponent, OMX_U8 *cRole, OMX_U32 nIndex)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- FunctionIn();
-
- if ((hComponent == NULL) || (cRole == NULL)) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- if (nIndex == (MAX_COMPONENT_ROLE_NUM-1)) {
- SEC_OSAL_Strcpy((char *)cRole, SEC_OMX_COMPONENT_H264_DEC_ROLE);
- ret = OMX_ErrorNone;
- } else {
- ret = OMX_ErrorNoMore;
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_MFC_DecodeThread(OMX_HANDLETYPE hComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_H264DEC_HANDLE *pH264Dec = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- pH264Dec = (SEC_H264DEC_HANDLE *)pSECComponent->hCodecHandle;
-
- while (pH264Dec->NBDecThread.bExitDecodeThread == OMX_FALSE) {
- SEC_OSAL_SemaphoreWait(pH264Dec->NBDecThread.hDecFrameStart);
-
- if (pH264Dec->NBDecThread.bExitDecodeThread == OMX_FALSE) {
- pH264Dec->hMFCH264Handle.returnCodec = SsbSipMfcDecExe(pH264Dec->hMFCH264Handle.hMFCHandle, pH264Dec->NBDecThread.oneFrameSize);
- SEC_OSAL_SemaphorePost(pH264Dec->NBDecThread.hDecFrameEnd);
- }
- }
-
-EXIT:
- SEC_OSAL_ThreadExit(NULL);
- FunctionOut();
-
- return ret;
-}
-
-/* MFC Init */
-OMX_ERRORTYPE SEC_MFC_H264Dec_Init(OMX_COMPONENTTYPE *pOMXComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- SEC_H264DEC_HANDLE *pH264Dec = NULL;
-
- OMX_PTR hMFCHandle = NULL;
- OMX_PTR pStreamBuffer = NULL;
- OMX_PTR pStreamPhyBuffer = NULL;
-
- pH264Dec = (SEC_H264DEC_HANDLE *)pSECComponent->hCodecHandle;
- pH264Dec->hMFCH264Handle.bConfiguredMFC = OMX_FALSE;
- pSECComponent->bUseFlagEOF = OMX_FALSE;
- pSECComponent->bSaveFlagEOS = OMX_FALSE;
-
- /* MFC(Multi Function Codec) decoder and CMM(Codec Memory Management) driver open */
- SSBIP_MFC_BUFFER_TYPE buf_type = CACHE;
- hMFCHandle = (OMX_PTR)SsbSipMfcDecOpen(&buf_type);
- if (hMFCHandle == NULL) {
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
- pH264Dec->hMFCH264Handle.hMFCHandle = hMFCHandle;
-
- /* Allocate decoder's input buffer */
- pStreamBuffer = SsbSipMfcDecGetInBuf(hMFCHandle, &pStreamPhyBuffer, DEFAULT_MFC_INPUT_BUFFER_SIZE * MFC_INPUT_BUFFER_NUM_MAX);
- if (pStreamBuffer == NULL) {
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
-
- pH264Dec->MFCDecInputBuffer[0].VirAddr = pStreamBuffer;
- pH264Dec->MFCDecInputBuffer[0].PhyAddr = pStreamPhyBuffer;
- pH264Dec->MFCDecInputBuffer[0].bufferSize = DEFAULT_MFC_INPUT_BUFFER_SIZE;
- pH264Dec->MFCDecInputBuffer[0].dataSize = 0;
- pH264Dec->MFCDecInputBuffer[1].VirAddr = (unsigned char *)pStreamBuffer + pH264Dec->MFCDecInputBuffer[0].bufferSize;
- pH264Dec->MFCDecInputBuffer[1].PhyAddr = (unsigned char *)pStreamPhyBuffer + pH264Dec->MFCDecInputBuffer[0].bufferSize;
- pH264Dec->MFCDecInputBuffer[1].bufferSize = DEFAULT_MFC_INPUT_BUFFER_SIZE;
- pH264Dec->MFCDecInputBuffer[1].dataSize = 0;
- pH264Dec->indexInputBuffer = 0;
-
- pH264Dec->bFirstFrame = OMX_TRUE;
-
- pH264Dec->NBDecThread.bExitDecodeThread = OMX_FALSE;
- pH264Dec->NBDecThread.bDecoderRun = OMX_FALSE;
- pH264Dec->NBDecThread.oneFrameSize = 0;
- SEC_OSAL_SemaphoreCreate(&(pH264Dec->NBDecThread.hDecFrameStart));
- SEC_OSAL_SemaphoreCreate(&(pH264Dec->NBDecThread.hDecFrameEnd));
- if (OMX_ErrorNone == SEC_OSAL_ThreadCreate(&pH264Dec->NBDecThread.hNBDecodeThread,
- SEC_MFC_DecodeThread,
- pOMXComponent)) {
- pH264Dec->hMFCH264Handle.returnCodec = MFC_RET_OK;
- }
-
- pH264Dec->hMFCH264Handle.pMFCStreamBuffer = pH264Dec->MFCDecInputBuffer[0].VirAddr;
- pH264Dec->hMFCH264Handle.pMFCStreamPhyBuffer = pH264Dec->MFCDecInputBuffer[0].PhyAddr;
- pSECComponent->processData[INPUT_PORT_INDEX].dataBuffer = pH264Dec->MFCDecInputBuffer[0].VirAddr;
- pSECComponent->processData[INPUT_PORT_INDEX].allocSize = pH264Dec->MFCDecInputBuffer[0].bufferSize;
-
- SEC_OSAL_Memset(pSECComponent->timeStamp, -19771003, sizeof(OMX_TICKS) * MAX_TIMESTAMP);
- SEC_OSAL_Memset(pSECComponent->nFlags, 0, sizeof(OMX_U32) * MAX_FLAGS);
- pH264Dec->hMFCH264Handle.indexTimestamp = 0;
- pSECComponent->getAllDelayBuffer = OMX_FALSE;
-
-EXIT:
- return ret;
-}
-
-/* MFC Terminate */
-OMX_ERRORTYPE SEC_MFC_H264Dec_Terminate(OMX_COMPONENTTYPE *pOMXComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- SEC_H264DEC_HANDLE *pH264Dec = NULL;
- OMX_PTR hMFCHandle = NULL;
-
- FunctionIn();
-
- pH264Dec = (SEC_H264DEC_HANDLE *)pSECComponent->hCodecHandle;
- hMFCHandle = pH264Dec->hMFCH264Handle.hMFCHandle;
-
- pH264Dec->hMFCH264Handle.pMFCStreamBuffer = NULL;
- pH264Dec->hMFCH264Handle.pMFCStreamPhyBuffer = NULL;
- pSECComponent->processData[INPUT_PORT_INDEX].dataBuffer = NULL;
- pSECComponent->processData[INPUT_PORT_INDEX].allocSize = 0;
-
- if (pH264Dec->NBDecThread.hNBDecodeThread != NULL) {
- pH264Dec->NBDecThread.bExitDecodeThread = OMX_TRUE;
- SEC_OSAL_SemaphorePost(pH264Dec->NBDecThread.hDecFrameStart);
- SEC_OSAL_ThreadTerminate(pH264Dec->NBDecThread.hNBDecodeThread);
- pH264Dec->NBDecThread.hNBDecodeThread = NULL;
- }
-
- if(pH264Dec->NBDecThread.hDecFrameEnd != NULL) {
- SEC_OSAL_SemaphoreTerminate(pH264Dec->NBDecThread.hDecFrameEnd);
- pH264Dec->NBDecThread.hDecFrameEnd = NULL;
- }
-
- if(pH264Dec->NBDecThread.hDecFrameStart != NULL) {
- SEC_OSAL_SemaphoreTerminate(pH264Dec->NBDecThread.hDecFrameStart);
- pH264Dec->NBDecThread.hDecFrameStart = NULL;
- }
-
- if (hMFCHandle != NULL) {
- SsbSipMfcDecClose(hMFCHandle);
- hMFCHandle = pH264Dec->hMFCH264Handle.hMFCHandle = NULL;
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_MFC_H264_Decode(OMX_COMPONENTTYPE *pOMXComponent, SEC_OMX_DATA *pInputData, SEC_OMX_DATA *pOutputData)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- SEC_H264DEC_HANDLE *pH264Dec = (SEC_H264DEC_HANDLE *)pSECComponent->hCodecHandle;
- OMX_U32 oneFrameSize = pInputData->dataLen;
- SSBSIP_MFC_DEC_OUTPUT_INFO outputInfo;
- OMX_S32 setConfVal = 0;
- int bufWidth = 0;
- int bufHeight = 0;
- OMX_BOOL outputDataValid = OMX_FALSE;
-
- FunctionIn();
-
- if (pH264Dec->hMFCH264Handle.bConfiguredMFC == OMX_FALSE) {
- SSBSIP_MFC_CODEC_TYPE eCodecType = H264_DEC;
-
- if ((oneFrameSize <= 0) && (pInputData->nFlags & OMX_BUFFERFLAG_EOS)) {
- pOutputData->timeStamp = pInputData->timeStamp;
- pOutputData->nFlags = pInputData->nFlags;
- ret = OMX_ErrorNone;
- goto EXIT;
- }
-
- setConfVal = 0;
- SsbSipMfcDecSetConfig(pH264Dec->hMFCH264Handle.hMFCHandle, MFC_DEC_SETCONF_EXTRA_BUFFER_NUM, &setConfVal);
-
- /* Default number in the driver is optimized */
- if (pH264Dec->hMFCH264Handle.bThumbnailMode == OMX_TRUE) {
- setConfVal = 1;
- SsbSipMfcDecSetConfig(pH264Dec->hMFCH264Handle.hMFCHandle, MFC_DEC_SETCONF_DISPLAY_DELAY, &setConfVal);
- } else {
- setConfVal = 8;
- SsbSipMfcDecSetConfig(pH264Dec->hMFCH264Handle.hMFCHandle, MFC_DEC_SETCONF_DISPLAY_DELAY, &setConfVal);
- }
-
- pH264Dec->hMFCH264Handle.returnCodec = SsbSipMfcDecInit(pH264Dec->hMFCH264Handle.hMFCHandle, eCodecType, oneFrameSize);
- if (pH264Dec->hMFCH264Handle.returnCodec == MFC_RET_OK) {
- SSBSIP_MFC_IMG_RESOLUTION imgResol;
- SSBSIP_MFC_CROP_INFORMATION cropInfo;
- SEC_OMX_BASEPORT *secInputPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- SEC_OMX_BASEPORT *secOutputPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
-
- SsbSipMfcDecGetConfig(pH264Dec->hMFCH264Handle.hMFCHandle, MFC_DEC_GETCONF_BUF_WIDTH_HEIGHT, &imgResol);
- SEC_OSAL_Log(SEC_LOG_TRACE, "set width height information : %d, %d",
- secInputPort->portDefinition.format.video.nFrameWidth,
- secInputPort->portDefinition.format.video.nFrameHeight);
- SEC_OSAL_Log(SEC_LOG_TRACE, "mfc width height information : %d, %d",
- imgResol.width, imgResol.height);
-
- SsbSipMfcDecGetConfig(pH264Dec->hMFCH264Handle.hMFCHandle, MFC_DEC_GETCONF_CROP_INFO, &cropInfo);
- SEC_OSAL_Log(SEC_LOG_TRACE, "mfc crop_top crop_bottom crop_left crop_right : %d, %d, %d, %d",
- cropInfo.crop_top_offset , cropInfo.crop_bottom_offset ,
- cropInfo.crop_left_offset , cropInfo.crop_right_offset);
-
- secOutputPort->cropRectangle.nTop = cropInfo.crop_top_offset;
- secOutputPort->cropRectangle.nLeft = cropInfo.crop_left_offset;
- secOutputPort->cropRectangle.nWidth = imgResol.width - cropInfo.crop_left_offset - cropInfo.crop_right_offset;
- secOutputPort->cropRectangle.nHeight = imgResol.height - cropInfo.crop_top_offset - cropInfo.crop_bottom_offset;
-
- pH264Dec->hMFCH264Handle.bConfiguredMFC = OMX_TRUE;
-
- /** Update Frame Size **/
- if ((cropInfo.crop_left_offset != 0) || (cropInfo.crop_right_offset != 0) ||
- (cropInfo.crop_top_offset != 0) || (cropInfo.crop_bottom_offset != 0)) {
- /* change width and height information */
- secInputPort->portDefinition.format.video.nFrameWidth = imgResol.width;
- secInputPort->portDefinition.format.video.nFrameHeight = imgResol.height;
- secInputPort->portDefinition.format.video.nStride = ((imgResol.width + 15) & (~15));
- secInputPort->portDefinition.format.video.nSliceHeight = ((imgResol.height + 15) & (~15));
-
- SEC_UpdateFrameSize(pOMXComponent);
-
- /** Send crop info call back */
- (*(pSECComponent->pCallbacks->EventHandler))
- (pOMXComponent,
- pSECComponent->callbackData,
- OMX_EventPortSettingsChanged, /* The command was completed */
- OMX_DirOutput, /* This is the port index */
- OMX_IndexConfigCommonOutputCrop,
- NULL);
- } else if((secInputPort->portDefinition.format.video.nFrameWidth != imgResol.width) ||
- (secInputPort->portDefinition.format.video.nFrameHeight != imgResol.height)) {
- SEC_OSAL_Log(SEC_LOG_TRACE, "change width height information : OMX_EventPortSettingsChanged");
- /* change width and height information */
- secInputPort->portDefinition.format.video.nFrameWidth = imgResol.width;
- secInputPort->portDefinition.format.video.nFrameHeight = imgResol.height;
- secInputPort->portDefinition.format.video.nStride = ((imgResol.width + 15) & (~15));
- secInputPort->portDefinition.format.video.nSliceHeight = ((imgResol.height + 15) & (~15));
-
- SEC_UpdateFrameSize(pOMXComponent);
-
- /** Send Port Settings changed call back */
- (*(pSECComponent->pCallbacks->EventHandler))
- (pOMXComponent,
- pSECComponent->callbackData,
- OMX_EventPortSettingsChanged, /* The command was completed */
- OMX_DirOutput, /* This is the port index */
- 0,
- NULL);
- }
-
-#ifdef ADD_SPS_PPS_I_FRAME
- ret = OMX_ErrorInputDataDecodeYet;
-#else
- pOutputData->timeStamp = pInputData->timeStamp;
- pOutputData->nFlags = pInputData->nFlags;
-
- ret = OMX_ErrorNone;
-#endif
- goto EXIT;
- } else {
- ret = OMX_ErrorMFCInit;
- goto EXIT;
- }
- }
-
-#ifndef FULL_FRAME_SEARCH
- if ((pInputData->nFlags & OMX_BUFFERFLAG_ENDOFFRAME) &&
- (pSECComponent->bUseFlagEOF == OMX_FALSE))
- pSECComponent->bUseFlagEOF = OMX_TRUE;
-#endif
-
- pSECComponent->timeStamp[pH264Dec->hMFCH264Handle.indexTimestamp] = pInputData->timeStamp;
- pSECComponent->nFlags[pH264Dec->hMFCH264Handle.indexTimestamp] = pInputData->nFlags;
-
- if ((pH264Dec->hMFCH264Handle.returnCodec == MFC_RET_OK) &&
- (pH264Dec->bFirstFrame == OMX_FALSE)) {
- SSBSIP_MFC_DEC_OUTBUF_STATUS status;
- OMX_S32 indexTimestamp = 0;
-
- /* wait for mfc decode done */
- if (pH264Dec->NBDecThread.bDecoderRun == OMX_TRUE) {
- SEC_OSAL_SemaphoreWait(pH264Dec->NBDecThread.hDecFrameEnd);
- pH264Dec->NBDecThread.bDecoderRun = OMX_FALSE;
- }
-
- status = SsbSipMfcDecGetOutBuf(pH264Dec->hMFCH264Handle.hMFCHandle, &outputInfo);
- bufWidth = (outputInfo.img_width + 15) & (~15);
- bufHeight = (outputInfo.img_height + 15) & (~15);
-
- if ((SsbSipMfcDecGetConfig(pH264Dec->hMFCH264Handle.hMFCHandle, MFC_DEC_GETCONF_FRAME_TAG, &indexTimestamp) != MFC_RET_OK) ||
- (((indexTimestamp < 0) || (indexTimestamp >= MAX_TIMESTAMP)))) {
- pOutputData->timeStamp = pInputData->timeStamp;
- pOutputData->nFlags = (pInputData->nFlags & (~OMX_BUFFERFLAG_EOS));
- } else {
- pOutputData->timeStamp = pSECComponent->timeStamp[indexTimestamp];
- pOutputData->nFlags = pSECComponent->nFlags[indexTimestamp];
- }
- SEC_OSAL_Log(SEC_LOG_TRACE, "timestamp %lld us (%.2f secs)", pOutputData->timeStamp, pOutputData->timeStamp / 1E6);
-
- if ((status == MFC_GETOUTBUF_DISPLAY_DECODING) ||
- (status == MFC_GETOUTBUF_DISPLAY_ONLY)) {
- outputDataValid = OMX_TRUE;
- }
- if (pOutputData->nFlags & OMX_BUFFERFLAG_EOS)
- outputDataValid = OMX_FALSE;
-
- if ((status == MFC_GETOUTBUF_DISPLAY_ONLY) ||
- (pSECComponent->getAllDelayBuffer == OMX_TRUE))
- ret = OMX_ErrorInputDataDecodeYet;
-
- if(status == MFC_GETOUTBUF_DECODING_ONLY) {
- if (((pInputData->nFlags & OMX_BUFFERFLAG_EOS) != OMX_BUFFERFLAG_EOS) &&
- ((pSECComponent->bSaveFlagEOS == OMX_TRUE) || (pSECComponent->getAllDelayBuffer == OMX_TRUE))) {
- pInputData->nFlags |= OMX_BUFFERFLAG_EOS;
- pSECComponent->getAllDelayBuffer = OMX_TRUE;
- ret = OMX_ErrorInputDataDecodeYet;
- } else {
- ret = OMX_ErrorNone;
- }
- outputDataValid = OMX_FALSE;
- }
-
-#ifdef FULL_FRAME_SEARCH
- if (((pInputData->nFlags & OMX_BUFFERFLAG_EOS) != OMX_BUFFERFLAG_EOS) &&
- (pSECComponent->bSaveFlagEOS == OMX_TRUE)) {
- pInputData->nFlags |= OMX_BUFFERFLAG_EOS;
- pSECComponent->getAllDelayBuffer = OMX_TRUE;
- ret = OMX_ErrorInputDataDecodeYet;
- } else
-#endif
- if ((pInputData->nFlags & OMX_BUFFERFLAG_EOS) == OMX_BUFFERFLAG_EOS) {
- //setConfVal = 1;
- //SsbSipMfcDecSetConfig(pH264Dec->hMFCH264Handle.hMFCHandle, MFC_DEC_SETCONF_IS_LAST_FRAME, &setConfVal);
- pInputData->nFlags = (pOutputData->nFlags & (~OMX_BUFFERFLAG_EOS));
- pSECComponent->getAllDelayBuffer = OMX_TRUE;
- ret = OMX_ErrorInputDataDecodeYet;
- } else if ((pOutputData->nFlags & OMX_BUFFERFLAG_EOS) == OMX_BUFFERFLAG_EOS) {
- pSECComponent->getAllDelayBuffer = OMX_FALSE;
- ret = OMX_ErrorNone;
- }
- } else {
- pOutputData->timeStamp = pInputData->timeStamp;
- pOutputData->nFlags = pInputData->nFlags;
-
- if ((pSECComponent->bSaveFlagEOS == OMX_TRUE) ||
- (pSECComponent->getAllDelayBuffer == OMX_TRUE) ||
- (pInputData->nFlags & OMX_BUFFERFLAG_EOS)) {
- pOutputData->nFlags |= OMX_BUFFERFLAG_EOS;
- pSECComponent->getAllDelayBuffer = OMX_FALSE;
- }
- if ((pH264Dec->bFirstFrame == OMX_TRUE) &&
- ((pOutputData->nFlags & OMX_BUFFERFLAG_EOS) == OMX_BUFFERFLAG_EOS)) {
- pInputData->nFlags = (pInputData->nFlags | OMX_BUFFERFLAG_EOS);
- pOutputData->nFlags = (pOutputData->nFlags & (~OMX_BUFFERFLAG_EOS));
- }
-
- outputDataValid = OMX_FALSE;
-
- /* ret = OMX_ErrorUndefined; */
- ret = OMX_ErrorNone;
- }
-
- if (ret == OMX_ErrorInputDataDecodeYet) {
- pH264Dec->MFCDecInputBuffer[pH264Dec->indexInputBuffer].dataSize = oneFrameSize;
- pH264Dec->indexInputBuffer++;
- pH264Dec->indexInputBuffer %= MFC_INPUT_BUFFER_NUM_MAX;
- pH264Dec->hMFCH264Handle.pMFCStreamBuffer = pH264Dec->MFCDecInputBuffer[pH264Dec->indexInputBuffer].VirAddr;
- pH264Dec->hMFCH264Handle.pMFCStreamPhyBuffer = pH264Dec->MFCDecInputBuffer[pH264Dec->indexInputBuffer].PhyAddr;
- pSECComponent->processData[INPUT_PORT_INDEX].dataBuffer = pH264Dec->MFCDecInputBuffer[pH264Dec->indexInputBuffer].VirAddr;
- pSECComponent->processData[INPUT_PORT_INDEX].allocSize = pH264Dec->MFCDecInputBuffer[pH264Dec->indexInputBuffer].bufferSize;
- oneFrameSize = pH264Dec->MFCDecInputBuffer[pH264Dec->indexInputBuffer].dataSize;
- //pInputData->dataLen = oneFrameSize;
- //pInputData->remainDataLen = oneFrameSize;
- }
-
- if ((Check_H264_StartCode(pInputData->dataBuffer, pInputData->dataLen) == OMX_TRUE) &&
- ((pOutputData->nFlags & OMX_BUFFERFLAG_EOS) != OMX_BUFFERFLAG_EOS)) {
- SsbSipMfcDecSetConfig(pH264Dec->hMFCH264Handle.hMFCHandle, MFC_DEC_SETCONF_FRAME_TAG, &(pH264Dec->hMFCH264Handle.indexTimestamp));
- pH264Dec->hMFCH264Handle.indexTimestamp++;
- pH264Dec->hMFCH264Handle.indexTimestamp %= MAX_TIMESTAMP;
-
- SsbSipMfcDecSetInBuf(pH264Dec->hMFCH264Handle.hMFCHandle,
- pH264Dec->hMFCH264Handle.pMFCStreamPhyBuffer,
- pH264Dec->hMFCH264Handle.pMFCStreamBuffer,
- pSECComponent->processData[INPUT_PORT_INDEX].allocSize);
-
- pH264Dec->MFCDecInputBuffer[pH264Dec->indexInputBuffer].dataSize = oneFrameSize;
- pH264Dec->NBDecThread.oneFrameSize = oneFrameSize;
-
- /* mfc decode start */
- SEC_OSAL_SemaphorePost(pH264Dec->NBDecThread.hDecFrameStart);
- pH264Dec->NBDecThread.bDecoderRun = OMX_TRUE;
- pH264Dec->hMFCH264Handle.returnCodec = MFC_RET_OK;
-
- pH264Dec->indexInputBuffer++;
- pH264Dec->indexInputBuffer %= MFC_INPUT_BUFFER_NUM_MAX;
- pH264Dec->hMFCH264Handle.pMFCStreamBuffer = pH264Dec->MFCDecInputBuffer[pH264Dec->indexInputBuffer].VirAddr;
- pH264Dec->hMFCH264Handle.pMFCStreamPhyBuffer = pH264Dec->MFCDecInputBuffer[pH264Dec->indexInputBuffer].PhyAddr;
- pSECComponent->processData[INPUT_PORT_INDEX].dataBuffer = pH264Dec->MFCDecInputBuffer[pH264Dec->indexInputBuffer].VirAddr;
- pSECComponent->processData[INPUT_PORT_INDEX].allocSize = pH264Dec->MFCDecInputBuffer[pH264Dec->indexInputBuffer].bufferSize;
- if (((pH264Dec->hMFCH264Handle.bThumbnailMode == OMX_TRUE) || (pSECComponent->bSaveFlagEOS == OMX_TRUE)) &&
- (pH264Dec->bFirstFrame == OMX_TRUE) &&
- (outputDataValid == OMX_FALSE)) {
- ret = OMX_ErrorInputDataDecodeYet;
- }
- pH264Dec->bFirstFrame = OMX_FALSE;
- }
-
- /** Fill Output Buffer **/
- if (outputDataValid == OMX_TRUE) {
- SEC_OMX_BASEPORT *pSECInputPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- SEC_OMX_BASEPORT *pSECOutputPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
- void *pOutputBuf[3];
-
- int frameSize = bufWidth * bufHeight;
- int imageSize = outputInfo.img_width * outputInfo.img_height;
-
- int actualWidth = outputInfo.img_width;
- int actualHeight = outputInfo.img_height;
- int actualImageSize = imageSize;
-
- pOutputBuf[0] = (void *)pOutputData->dataBuffer;
- pOutputBuf[1] = (void *)pOutputData->dataBuffer + actualImageSize;
- pOutputBuf[2] = (void *)pOutputData->dataBuffer + ((actualImageSize * 5) / 4);
-
-#ifdef USE_ANDROID_EXTENSION
- if (pSECOutputPort->bUseAndroidNativeBuffer == OMX_TRUE) {
- OMX_U32 retANB = 0;
- void *pVirAddrs[2];
- actualWidth = (outputInfo.img_width + 15) & (~15);
- actualImageSize = actualWidth * actualHeight;
-
- retANB = getVADDRfromANB (pOutputData->dataBuffer,
- (OMX_U32)pSECInputPort->portDefinition.format.video.nFrameWidth,
- (OMX_U32)pSECInputPort->portDefinition.format.video.nFrameHeight,
- pVirAddrs);
- if (retANB != 0) {
- SEC_OSAL_Log(SEC_LOG_ERROR, "Error getVADDRfromANB, Error code:%d", retANB);
- ret = OMX_ErrorOverflow;
- goto EXIT;
- }
- pOutputBuf[0] = pVirAddrs[0];
- pOutputBuf[1] = pVirAddrs[1];
- }
-#endif
- if ((pH264Dec->hMFCH264Handle.bThumbnailMode == OMX_FALSE) &&
- (pSECOutputPort->portDefinition.format.video.eColorFormat == OMX_SEC_COLOR_FormatNV12TPhysicalAddress))
- {
- /* if use Post copy address structure */
- SEC_OSAL_Memcpy(pOutputBuf[0], &frameSize, sizeof(frameSize));
- SEC_OSAL_Memcpy(pOutputBuf[0] + sizeof(frameSize), &(outputInfo.YPhyAddr), sizeof(outputInfo.YPhyAddr));
- SEC_OSAL_Memcpy(pOutputBuf[0] + sizeof(frameSize) + (sizeof(void *) * 1), &(outputInfo.CPhyAddr), sizeof(outputInfo.CPhyAddr));
- SEC_OSAL_Memcpy(pOutputBuf[0] + sizeof(frameSize) + (sizeof(void *) * 2), &(outputInfo.YVirAddr), sizeof(outputInfo.YVirAddr));
- SEC_OSAL_Memcpy(pOutputBuf[0] + sizeof(frameSize) + (sizeof(void *) * 3), &(outputInfo.CVirAddr), sizeof(outputInfo.CVirAddr));
- pOutputData->dataLen = (bufWidth * bufHeight * 3) / 2;
- } else {
- switch (pSECOutputPort->portDefinition.format.video.eColorFormat) {
- case OMX_COLOR_FormatYUV420Planar:
- {
- SEC_OSAL_Log(SEC_LOG_TRACE, "YUV420P out");
- csc_tiled_to_linear(
- (unsigned char *)pOutputBuf[0],
- (unsigned char *)outputInfo.YVirAddr,
- actualWidth,
- actualHeight);
- csc_tiled_to_linear_deinterleave(
- (unsigned char *)pOutputBuf[1],
- (unsigned char *)pOutputBuf[2],
- (unsigned char *)outputInfo.CVirAddr,
- actualWidth,
- actualHeight >> 1);
- pOutputData->dataLen = actualImageSize * 3 / 2;
- }
- break;
- case OMX_COLOR_FormatYUV420SemiPlanar:
- case OMX_SEC_COLOR_FormatANBYUV420SemiPlanar:
- default:
- {
- SEC_OSAL_Log(SEC_LOG_TRACE, "YUV420SP out");
- csc_tiled_to_linear(
- (unsigned char *)pOutputBuf[0],
- (unsigned char *)outputInfo.YVirAddr,
- actualWidth,
- actualHeight);
- csc_tiled_to_linear(
- (unsigned char *)pOutputBuf[1],
- (unsigned char *)outputInfo.CVirAddr,
- actualWidth,
- actualHeight >> 1);
- pOutputData->dataLen = actualImageSize * 3 / 2;
- }
- break;
- }
- }
-#ifdef USE_ANDROID_EXTENSION
- if (pSECOutputPort->bUseAndroidNativeBuffer == OMX_TRUE)
- putVADDRtoANB(pOutputData->dataBuffer);
-#endif
- } else {
- pOutputData->dataLen = 0;
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-/* MFC Decode */
-OMX_ERRORTYPE SEC_MFC_H264Dec_bufferProcess(OMX_COMPONENTTYPE *pOMXComponent, SEC_OMX_DATA *pInputData, SEC_OMX_DATA *pOutputData)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- SEC_H264DEC_HANDLE *pH264Dec = (SEC_H264DEC_HANDLE *)pSECComponent->hCodecHandle;
- SEC_OMX_BASEPORT *pSECInputPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- SEC_OMX_BASEPORT *pSECOutputPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
- OMX_BOOL endOfFrame = OMX_FALSE;
-
- FunctionIn();
-
- if ((!CHECK_PORT_ENABLED(pSECInputPort)) || (!CHECK_PORT_ENABLED(pSECOutputPort)) ||
- (!CHECK_PORT_POPULATED(pSECInputPort)) || (!CHECK_PORT_POPULATED(pSECOutputPort))) {
- ret = OMX_ErrorNone;
- goto EXIT;
- }
- if (OMX_FALSE == SEC_Check_BufferProcess_State(pSECComponent)) {
- ret = OMX_ErrorNone;
- goto EXIT;
- }
-
- ret = SEC_MFC_H264_Decode(pOMXComponent, pInputData, pOutputData);
- if (ret != OMX_ErrorNone) {
- if (ret == OMX_ErrorInputDataDecodeYet) {
- pOutputData->usedDataLen = 0;
- pOutputData->remainDataLen = pOutputData->dataLen;
- } else {
- pSECComponent->pCallbacks->EventHandler((OMX_HANDLETYPE)pOMXComponent,
- pSECComponent->callbackData,
- OMX_EventError, ret, 0, NULL);
- }
- } else {
- pInputData->previousDataLen = pInputData->dataLen;
- pInputData->usedDataLen += pInputData->dataLen;
- pInputData->remainDataLen = pInputData->dataLen - pInputData->usedDataLen;
- pInputData->dataLen -= pInputData->usedDataLen;
- pInputData->usedDataLen = 0;
-
- pOutputData->usedDataLen = 0;
- pOutputData->remainDataLen = pOutputData->dataLen;
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OSCL_EXPORT_REF OMX_ERRORTYPE SEC_OMX_ComponentInit(OMX_HANDLETYPE hComponent, OMX_STRING componentName)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- SEC_H264DEC_HANDLE *pH264Dec = NULL;
- int i = 0;
-
- FunctionIn();
-
- if ((hComponent == NULL) || (componentName == NULL)) {
- ret = OMX_ErrorBadParameter;
- SEC_OSAL_Log(SEC_LOG_ERROR, "OMX_ErrorBadParameter, Line:%d", __LINE__);
- goto EXIT;
- }
- if (SEC_OSAL_Strcmp(SEC_OMX_COMPONENT_H264_DEC, componentName) != 0) {
- ret = OMX_ErrorBadParameter;
- SEC_OSAL_Log(SEC_LOG_ERROR, "OMX_ErrorBadParameter, componentName:%s, Line:%d", componentName, __LINE__);
- goto EXIT;
- }
-
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_VideoDecodeComponentInit(pOMXComponent);
- if (ret != OMX_ErrorNone) {
- SEC_OSAL_Log(SEC_LOG_ERROR, "OMX_Error, Line:%d", __LINE__);
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- pSECComponent->codecType = HW_VIDEO_CODEC;
-
- pSECComponent->componentName = (OMX_STRING)SEC_OSAL_Malloc(MAX_OMX_COMPONENT_NAME_SIZE);
- if (pSECComponent->componentName == NULL) {
- SEC_OMX_VideoDecodeComponentDeinit(pOMXComponent);
- ret = OMX_ErrorInsufficientResources;
- SEC_OSAL_Log(SEC_LOG_ERROR, "OMX_ErrorInsufficientResources, Line:%d", __LINE__);
- goto EXIT;
- }
- SEC_OSAL_Memset(pSECComponent->componentName, 0, MAX_OMX_COMPONENT_NAME_SIZE);
-
- pH264Dec = SEC_OSAL_Malloc(sizeof(SEC_H264DEC_HANDLE));
- if (pH264Dec == NULL) {
- SEC_OMX_VideoDecodeComponentDeinit(pOMXComponent);
- ret = OMX_ErrorInsufficientResources;
- SEC_OSAL_Log(SEC_LOG_ERROR, "OMX_ErrorInsufficientResources, Line:%d", __LINE__);
- goto EXIT;
- }
- SEC_OSAL_Memset(pH264Dec, 0, sizeof(SEC_H264DEC_HANDLE));
- pSECComponent->hCodecHandle = (OMX_HANDLETYPE)pH264Dec;
-
- SEC_OSAL_Strcpy(pSECComponent->componentName, SEC_OMX_COMPONENT_H264_DEC);
- /* Set componentVersion */
- pSECComponent->componentVersion.s.nVersionMajor = VERSIONMAJOR_NUMBER;
- pSECComponent->componentVersion.s.nVersionMinor = VERSIONMINOR_NUMBER;
- pSECComponent->componentVersion.s.nRevision = REVISION_NUMBER;
- pSECComponent->componentVersion.s.nStep = STEP_NUMBER;
- /* Set specVersion */
- pSECComponent->specVersion.s.nVersionMajor = VERSIONMAJOR_NUMBER;
- pSECComponent->specVersion.s.nVersionMinor = VERSIONMINOR_NUMBER;
- pSECComponent->specVersion.s.nRevision = REVISION_NUMBER;
- pSECComponent->specVersion.s.nStep = STEP_NUMBER;
-
- /* Android CapabilityFlags */
- pSECComponent->capabilityFlags.iIsOMXComponentMultiThreaded = OMX_TRUE;
- pSECComponent->capabilityFlags.iOMXComponentSupportsExternalInputBufferAlloc = OMX_TRUE;
- pSECComponent->capabilityFlags.iOMXComponentSupportsExternalOutputBufferAlloc = OMX_TRUE;
- pSECComponent->capabilityFlags.iOMXComponentSupportsMovableInputBuffers = OMX_FALSE;
- pSECComponent->capabilityFlags.iOMXComponentSupportsPartialFrames = OMX_FALSE;
- pSECComponent->capabilityFlags.iOMXComponentUsesNALStartCodes = OMX_TRUE;
- pSECComponent->capabilityFlags.iOMXComponentCanHandleIncompleteFrames = OMX_TRUE;
- pSECComponent->capabilityFlags.iOMXComponentUsesFullAVCFrames = OMX_TRUE;
-
- /* Input port */
- pSECPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- pSECPort->portDefinition.format.video.nFrameWidth = DEFAULT_FRAME_WIDTH;
- pSECPort->portDefinition.format.video.nFrameHeight= DEFAULT_FRAME_HEIGHT;
- pSECPort->portDefinition.format.video.nStride = 0; /*DEFAULT_FRAME_WIDTH;*/
- pSECPort->portDefinition.format.video.nSliceHeight = 0;
- pSECPort->portDefinition.nBufferSize = DEFAULT_VIDEO_INPUT_BUFFER_SIZE;
- pSECPort->portDefinition.format.video.eCompressionFormat = OMX_VIDEO_CodingAVC;
- SEC_OSAL_Memset(pSECPort->portDefinition.format.video.cMIMEType, 0, MAX_OMX_MIMETYPE_SIZE);
- SEC_OSAL_Strcpy(pSECPort->portDefinition.format.video.cMIMEType, "video/avc");
- pSECPort->portDefinition.format.video.pNativeRender = 0;
- pSECPort->portDefinition.format.video.bFlagErrorConcealment = OMX_FALSE;
- pSECPort->portDefinition.format.video.eColorFormat = OMX_COLOR_FormatUnused;
- pSECPort->portDefinition.bEnabled = OMX_TRUE;
-
- /* Output port */
- pSECPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
- pSECPort->portDefinition.format.video.nFrameWidth = DEFAULT_FRAME_WIDTH;
- pSECPort->portDefinition.format.video.nFrameHeight= DEFAULT_FRAME_HEIGHT;
- pSECPort->portDefinition.format.video.nStride = 0; /*DEFAULT_FRAME_WIDTH;*/
- pSECPort->portDefinition.format.video.nSliceHeight = 0;
- pSECPort->portDefinition.nBufferSize = DEFAULT_VIDEO_OUTPUT_BUFFER_SIZE;
- pSECPort->portDefinition.format.video.eCompressionFormat = OMX_VIDEO_CodingUnused;
- SEC_OSAL_Memset(pSECPort->portDefinition.format.video.cMIMEType, 0, MAX_OMX_MIMETYPE_SIZE);
- SEC_OSAL_Strcpy(pSECPort->portDefinition.format.video.cMIMEType, "raw/video");
- pSECPort->portDefinition.format.video.pNativeRender = 0;
- pSECPort->portDefinition.format.video.bFlagErrorConcealment = OMX_FALSE;
- pSECPort->portDefinition.format.video.eColorFormat = OMX_COLOR_FormatYUV420SemiPlanar;
- pSECPort->portDefinition.bEnabled = OMX_TRUE;
-
- for(i = 0; i < ALL_PORT_NUM; i++) {
- INIT_SET_SIZE_VERSION(&pH264Dec->AVCComponent[i], OMX_VIDEO_PARAM_AVCTYPE);
- pH264Dec->AVCComponent[i].nPortIndex = i;
- pH264Dec->AVCComponent[i].eProfile = OMX_VIDEO_AVCProfileBaseline;
- pH264Dec->AVCComponent[i].eLevel = OMX_VIDEO_AVCLevel4;
- }
-
- pOMXComponent->GetParameter = &SEC_MFC_H264Dec_GetParameter;
- pOMXComponent->SetParameter = &SEC_MFC_H264Dec_SetParameter;
- pOMXComponent->GetConfig = &SEC_MFC_H264Dec_GetConfig;
- pOMXComponent->SetConfig = &SEC_MFC_H264Dec_SetConfig;
- pOMXComponent->GetExtensionIndex = &SEC_MFC_H264Dec_GetExtensionIndex;
- pOMXComponent->ComponentRoleEnum = &SEC_MFC_H264Dec_ComponentRoleEnum;
- pOMXComponent->ComponentDeInit = &SEC_OMX_ComponentDeinit;
-
- pSECComponent->sec_mfc_componentInit = &SEC_MFC_H264Dec_Init;
- pSECComponent->sec_mfc_componentTerminate = &SEC_MFC_H264Dec_Terminate;
- pSECComponent->sec_mfc_bufferProcess = &SEC_MFC_H264Dec_bufferProcess;
- pSECComponent->sec_checkInputFrame = &Check_H264_Frame;
-
- pSECComponent->currentState = OMX_StateLoaded;
-
- ret = OMX_ErrorNone;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_ComponentDeinit(OMX_HANDLETYPE hComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_H264DEC_HANDLE *pH264Dec = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- SEC_OSAL_Free(pSECComponent->componentName);
- pSECComponent->componentName = NULL;
-
- pH264Dec = (SEC_H264DEC_HANDLE *)pSECComponent->hCodecHandle;
- if (pH264Dec != NULL) {
- SEC_OSAL_Free(pH264Dec);
- pH264Dec = pSECComponent->hCodecHandle = NULL;
- }
-
- ret = SEC_OMX_VideoDecodeComponentDeinit(pOMXComponent);
- if(ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- ret = OMX_ErrorNone;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
diff --git a/sec_mm/sec_omx/sec_omx_component/video/dec/h264dec/SEC_OMX_H264dec.h b/sec_mm/sec_omx/sec_omx_component/video/dec/h264dec/SEC_OMX_H264dec.h
deleted file mode 100644
index d3f8ac8..0000000
--- a/sec_mm/sec_omx/sec_omx_component/video/dec/h264dec/SEC_OMX_H264dec.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OMX_H264dec.h
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#ifndef SEC_OMX_H264_DEC_COMPONENT
-#define SEC_OMX_H264_DEC_COMPONENT
-
-#include "SEC_OMX_Def.h"
-#include "OMX_Component.h"
-#include "OMX_Video.h"
-
-
-typedef struct _SEC_MFC_H264DEC_HANDLE
-{
- OMX_HANDLETYPE hMFCHandle;
- OMX_PTR pMFCStreamBuffer;
- OMX_PTR pMFCStreamPhyBuffer;
- OMX_U32 indexTimestamp;
- OMX_BOOL bConfiguredMFC;
- OMX_BOOL bThumbnailMode;
- OMX_S32 returnCodec;
-} SEC_MFC_H264DEC_HANDLE;
-
-typedef struct _SEC_H264DEC_HANDLE
-{
- /* OMX Codec specific */
- OMX_VIDEO_PARAM_AVCTYPE AVCComponent[ALL_PORT_NUM];
- OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE errorCorrectionType[ALL_PORT_NUM];
-
- /* SEC MFC Codec specific */
- SEC_MFC_H264DEC_HANDLE hMFCH264Handle;
-
- /* For Non-Block mode */
- SEC_MFC_NBDEC_THREAD NBDecThread;
- OMX_BOOL bFirstFrame;
- MFC_DEC_INPUT_BUFFER MFCDecInputBuffer[MFC_INPUT_BUFFER_NUM_MAX];
- OMX_U32 indexInputBuffer;
-} SEC_H264DEC_HANDLE;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-OSCL_EXPORT_REF OMX_ERRORTYPE SEC_OMX_ComponentInit(OMX_HANDLETYPE hComponent, OMX_STRING componentName);
-OMX_ERRORTYPE SEC_OMX_ComponentDeinit(OMX_HANDLETYPE hComponent);
-
-#ifdef __cplusplus
-};
-#endif
-
-#endif
diff --git a/sec_mm/sec_omx/sec_omx_component/video/dec/h264dec/library_register.c b/sec_mm/sec_omx/sec_omx_component/video/dec/h264dec/library_register.c
deleted file mode 100644
index ef3d672..0000000
--- a/sec_mm/sec_omx/sec_omx_component/video/dec/h264dec/library_register.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file library_register.c
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <dlfcn.h>
-
-#include "SEC_OSAL_Memory.h"
-#include "SEC_OSAL_ETC.h"
-#include "library_register.h"
-#include "SEC_OSAL_Log.h"
-
-
-OSCL_EXPORT_REF int SEC_OMX_COMPONENT_Library_Register(SECRegisterComponentType **secComponents)
-{
- FunctionIn();
-
- if (secComponents == NULL)
- goto EXIT;
-
- /* component 1 - video decoder H.264 */
- SEC_OSAL_Strcpy(secComponents[0]->componentName, SEC_OMX_COMPONENT_H264_DEC);
- SEC_OSAL_Strcpy(secComponents[0]->roles[0], SEC_OMX_COMPONENT_H264_DEC_ROLE);
- secComponents[0]->totalRoleNum = MAX_COMPONENT_ROLE_NUM;
-
-EXIT:
- FunctionOut();
-
- return MAX_COMPONENT_NUM;
-}
-
diff --git a/sec_mm/sec_omx/sec_omx_component/video/dec/h264dec/library_register.h b/sec_mm/sec_omx/sec_omx_component/video/dec/h264dec/library_register.h
deleted file mode 100644
index 7a6f7a1..0000000
--- a/sec_mm/sec_omx/sec_omx_component/video/dec/h264dec/library_register.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file library_register.h
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#ifndef SEC_OMX_H264_REG
-#define SEC_OMX_H264_REG
-
-#include "SEC_OMX_Def.h"
-#include "OMX_Component.h"
-#include "SEC_OMX_Component_Register.h"
-
-
-#define OSCL_EXPORT_REF __attribute__((visibility("default")))
-#define MAX_COMPONENT_NUM 1
-#define MAX_COMPONENT_ROLE_NUM 1
-
-/* H.264 */
-#define SEC_OMX_COMPONENT_H264_DEC "OMX.SEC.AVC.Decoder"
-#define SEC_OMX_COMPONENT_H264_DEC_ROLE "video_decoder.avc"
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-OSCL_EXPORT_REF int SEC_OMX_COMPONENT_Library_Register(SECRegisterComponentType **secComponents);
-
-#ifdef __cplusplus
-};
-#endif
-
-#endif
-
diff --git a/sec_mm/sec_omx/sec_omx_component/video/dec/mpeg4dec/Android.mk b/sec_mm/sec_omx/sec_omx_component/video/dec/mpeg4dec/Android.mk
deleted file mode 100644
index 42c528f..0000000
--- a/sec_mm/sec_omx/sec_omx_component/video/dec/mpeg4dec/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := \
- SEC_OMX_Mpeg4dec.c \
- library_register.c
-
-
-LOCAL_MODULE := libOMX.SEC.M4V.Decoder.aries
-
-LOCAL_CFLAGS :=
-
-LOCAL_ARM_MODE := arm
-
-LOCAL_STATIC_LIBRARIES := libSEC_OMX_Vdec.aries libsecosal.aries libsecbasecomponent.aries \
- libsecmfcdecapi.aries libseccsc.aries
-LOCAL_SHARED_LIBRARIES := libc libdl libcutils libutils libui libhardware
-
-LOCAL_C_INCLUDES := $(SEC_OMX_INC)/khronos \
- $(SEC_OMX_INC)/sec \
- $(SEC_OMX_TOP)/sec_osal \
- $(SEC_OMX_TOP)/sec_omx_core \
- $(SEC_OMX_COMPONENT)/common \
- $(SEC_OMX_COMPONENT)/video/dec
-
-LOCAL_C_INCLUDES += $(SEC_OMX_TOP)/sec_codecs/video/mfc_c110/include
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/sec_mm/sec_omx/sec_omx_component/video/dec/mpeg4dec/SEC_OMX_Mpeg4dec.c b/sec_mm/sec_omx/sec_omx_component/video/dec/mpeg4dec/SEC_OMX_Mpeg4dec.c
deleted file mode 100644
index fb679da..0000000
--- a/sec_mm/sec_omx/sec_omx_component/video/dec/mpeg4dec/SEC_OMX_Mpeg4dec.c
+++ /dev/null
@@ -1,1652 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OMX_Mpeg4dec.c
- * @brief
- * @author Yunji Kim (yunji.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "SEC_OMX_Macros.h"
-#include "SEC_OMX_Basecomponent.h"
-#include "SEC_OMX_Baseport.h"
-#include "SEC_OMX_Vdec.h"
-#include "library_register.h"
-#include "SEC_OMX_Mpeg4dec.h"
-#include "SsbSipMfcApi.h"
-#include "color_space_convertor.h"
-
-#undef SEC_LOG_TAG
-#define SEC_LOG_TAG "SEC_MPEG4_DEC"
-#define SEC_LOG_OFF
-#include "SEC_OSAL_Log.h"
-
-//#define FULL_FRAME_SEARCH
-
-/* MPEG4 Decoder Supported Levels & profiles */
-SEC_OMX_VIDEO_PROFILELEVEL supportedMPEG4ProfileLevels[] ={
- {OMX_VIDEO_MPEG4ProfileSimple, OMX_VIDEO_MPEG4Level0},
- {OMX_VIDEO_MPEG4ProfileSimple, OMX_VIDEO_MPEG4Level0b},
- {OMX_VIDEO_MPEG4ProfileSimple, OMX_VIDEO_MPEG4Level1},
- {OMX_VIDEO_MPEG4ProfileSimple, OMX_VIDEO_MPEG4Level2},
- {OMX_VIDEO_MPEG4ProfileSimple, OMX_VIDEO_MPEG4Level3},
- {OMX_VIDEO_MPEG4ProfileSimple, OMX_VIDEO_MPEG4Level4},
- {OMX_VIDEO_MPEG4ProfileSimple, OMX_VIDEO_MPEG4Level4a},
- {OMX_VIDEO_MPEG4ProfileSimple, OMX_VIDEO_MPEG4Level5},
- {OMX_VIDEO_MPEG4ProfileAdvancedSimple, OMX_VIDEO_MPEG4Level0},
- {OMX_VIDEO_MPEG4ProfileAdvancedSimple, OMX_VIDEO_MPEG4Level0b},
- {OMX_VIDEO_MPEG4ProfileAdvancedSimple, OMX_VIDEO_MPEG4Level1},
- {OMX_VIDEO_MPEG4ProfileAdvancedSimple, OMX_VIDEO_MPEG4Level2},
- {OMX_VIDEO_MPEG4ProfileAdvancedSimple, OMX_VIDEO_MPEG4Level3},
- {OMX_VIDEO_MPEG4ProfileAdvancedSimple, OMX_VIDEO_MPEG4Level4},
- {OMX_VIDEO_MPEG4ProfileAdvancedSimple, OMX_VIDEO_MPEG4Level4a},
- {OMX_VIDEO_MPEG4ProfileAdvancedSimple, OMX_VIDEO_MPEG4Level5}};
-
-/* H.263 Decoder Supported Levels & profiles */
-SEC_OMX_VIDEO_PROFILELEVEL supportedH263ProfileLevels[] = {
- /* Baseline (Profile 0) */
- {OMX_VIDEO_H263ProfileBaseline, OMX_VIDEO_H263Level10},
- {OMX_VIDEO_H263ProfileBaseline, OMX_VIDEO_H263Level20},
- {OMX_VIDEO_H263ProfileBaseline, OMX_VIDEO_H263Level30},
- {OMX_VIDEO_H263ProfileBaseline, OMX_VIDEO_H263Level40},
- {OMX_VIDEO_H263ProfileBaseline, OMX_VIDEO_H263Level45},
- {OMX_VIDEO_H263ProfileBaseline, OMX_VIDEO_H263Level50},
- {OMX_VIDEO_H263ProfileBaseline, OMX_VIDEO_H263Level60},
- {OMX_VIDEO_H263ProfileBaseline, OMX_VIDEO_H263Level70},
- /* Profile 1 */
- {OMX_VIDEO_H263ProfileH320Coding, OMX_VIDEO_H263Level10},
- {OMX_VIDEO_H263ProfileH320Coding, OMX_VIDEO_H263Level20},
- {OMX_VIDEO_H263ProfileH320Coding, OMX_VIDEO_H263Level30},
- {OMX_VIDEO_H263ProfileH320Coding, OMX_VIDEO_H263Level40},
- {OMX_VIDEO_H263ProfileH320Coding, OMX_VIDEO_H263Level45},
- {OMX_VIDEO_H263ProfileH320Coding, OMX_VIDEO_H263Level50},
- {OMX_VIDEO_H263ProfileH320Coding, OMX_VIDEO_H263Level60},
- {OMX_VIDEO_H263ProfileH320Coding, OMX_VIDEO_H263Level70},
- /* Profile 2 */
- {OMX_VIDEO_H263ProfileBackwardCompatible, OMX_VIDEO_H263Level10},
- {OMX_VIDEO_H263ProfileBackwardCompatible, OMX_VIDEO_H263Level20},
- {OMX_VIDEO_H263ProfileBackwardCompatible, OMX_VIDEO_H263Level30},
- {OMX_VIDEO_H263ProfileBackwardCompatible, OMX_VIDEO_H263Level40},
- {OMX_VIDEO_H263ProfileBackwardCompatible, OMX_VIDEO_H263Level45},
- {OMX_VIDEO_H263ProfileBackwardCompatible, OMX_VIDEO_H263Level50},
- {OMX_VIDEO_H263ProfileBackwardCompatible, OMX_VIDEO_H263Level60},
- {OMX_VIDEO_H263ProfileBackwardCompatible, OMX_VIDEO_H263Level70},
- /* Profile 3, restricted up to SD resolution */
- {OMX_VIDEO_H263ProfileISWV2, OMX_VIDEO_H263Level10},
- {OMX_VIDEO_H263ProfileISWV2, OMX_VIDEO_H263Level20},
- {OMX_VIDEO_H263ProfileISWV2, OMX_VIDEO_H263Level30},
- {OMX_VIDEO_H263ProfileISWV2, OMX_VIDEO_H263Level40},
- {OMX_VIDEO_H263ProfileISWV2, OMX_VIDEO_H263Level45},
- {OMX_VIDEO_H263ProfileISWV2, OMX_VIDEO_H263Level50},
- {OMX_VIDEO_H263ProfileISWV2, OMX_VIDEO_H263Level60},
- {OMX_VIDEO_H263ProfileISWV2, OMX_VIDEO_H263Level70}};
-
-static OMX_HANDLETYPE ghMFCHandle = NULL;
-static OMX_BOOL gbFIMV1 = OMX_FALSE;
-
-static int Check_Mpeg4_Frame(OMX_U8 *pInputStream, OMX_U32 buffSize, OMX_U32 flag, OMX_BOOL bPreviousFrameEOF, OMX_BOOL *pbEndOfFrame)
-{
- int len, readStream;
- unsigned startCode;
- OMX_BOOL bFrameStart;
-
- len = 0;
- bFrameStart = OMX_FALSE;
-
- if (flag & OMX_BUFFERFLAG_CODECCONFIG) {
- if (*pInputStream == 0x03) { /* FIMV1 */
- if (ghMFCHandle != NULL) {
- BitmapInfoHhr *pInfoHeader;
- SSBSIP_MFC_IMG_RESOLUTION imgResolution;
-
- pInfoHeader = (BitmapInfoHhr *)(pInputStream + 1);
- imgResolution.width = pInfoHeader->BiWidth;
- imgResolution.height = pInfoHeader->BiHeight;
- SsbSipMfcDecSetConfig(ghMFCHandle, MFC_DEC_SETCONF_FIMV1_WIDTH_HEIGHT, &imgResolution);
-
- SEC_OSAL_Log(SEC_LOG_TRACE, "width(%d), height(%d)", imgResolution.width, imgResolution.height);
- gbFIMV1 = OMX_TRUE;
- *pbEndOfFrame = OMX_TRUE;
- return buffSize;
- }
- }
- }
-
- if (gbFIMV1) {
- *pbEndOfFrame = OMX_TRUE;
- return buffSize;
- }
-
- if (bPreviousFrameEOF == OMX_FALSE)
- bFrameStart = OMX_TRUE;
-
- startCode = 0xFFFFFFFF;
- if (bFrameStart == OMX_FALSE) {
- /* find VOP start code */
- while(startCode != 0x1B6) {
- readStream = *(pInputStream + len);
- startCode = (startCode << 8) | readStream;
- len++;
- if (len > buffSize)
- goto EXIT;
- }
- }
-
- /* find next VOP start code */
- startCode = 0xFFFFFFFF;
- while ((startCode != 0x1B6)) {
- readStream = *(pInputStream + len);
- startCode = (startCode << 8) | readStream;
- len++;
- if (len > buffSize)
- goto EXIT;
- }
-
- *pbEndOfFrame = OMX_TRUE;
-
- SEC_OSAL_Log(SEC_LOG_TRACE, "1. Check_Mpeg4_Frame returned EOF = %d, len = %d, buffSize = %d", *pbEndOfFrame, len - 4, buffSize);
-
- return len - 4;
-
-EXIT :
- *pbEndOfFrame = OMX_FALSE;
-
- SEC_OSAL_Log(SEC_LOG_TRACE, "2. Check_Mpeg4_Frame returned EOF = %d, len = %d, buffSize = %d", *pbEndOfFrame, len - 1, buffSize);
-
- return --len;
-}
-
-static int Check_H263_Frame(OMX_U8 *pInputStream, OMX_U32 buffSize, OMX_U32 flag, OMX_BOOL bPreviousFrameEOF, OMX_BOOL *pbEndOfFrame)
-{
- int len, readStream;
- unsigned startCode;
- OMX_BOOL bFrameStart = 0;
- unsigned pTypeMask = 0x03;
- unsigned pType = 0;
-
- len = 0;
- bFrameStart = OMX_FALSE;
-
- if (bPreviousFrameEOF == OMX_FALSE)
- bFrameStart = OMX_TRUE;
-
- startCode = 0xFFFFFFFF;
- if (bFrameStart == OMX_FALSE) {
- /* find PSC(Picture Start Code) : 0000 0000 0000 0000 1000 00 */
- while (((startCode << 8 >> 10) != 0x20) || (pType != 0x02)) {
- readStream = *(pInputStream + len);
- startCode = (startCode << 8) | readStream;
-
- readStream = *(pInputStream + len + 1);
- pType = readStream & pTypeMask;
-
- len++;
- if (len > buffSize)
- goto EXIT;
- }
- }
-
- /* find next PSC */
- startCode = 0xFFFFFFFF;
- pType = 0;
- while (((startCode << 8 >> 10) != 0x20) || (pType != 0x02)) {
- readStream = *(pInputStream + len);
- startCode = (startCode << 8) | readStream;
-
- readStream = *(pInputStream + len + 1);
- pType = readStream & pTypeMask;
-
- len++;
- if (len > buffSize)
- goto EXIT;
- }
-
- *pbEndOfFrame = OMX_TRUE;
-
- SEC_OSAL_Log(SEC_LOG_TRACE, "1. Check_H263_Frame returned EOF = %d, len = %d, iBuffSize = %d", *pbEndOfFrame, len - 3, buffSize);
-
- return len - 3;
-
-EXIT :
-
- *pbEndOfFrame = OMX_FALSE;
-
- SEC_OSAL_Log(SEC_LOG_TRACE, "2. Check_H263_Frame returned EOF = %d, len = %d, iBuffSize = %d", *pbEndOfFrame, len - 1, buffSize);
-
- return --len;
-}
-
-OMX_BOOL Check_Stream_PrefixCode(OMX_U8 *pInputStream, OMX_U32 streamSize, CODEC_TYPE codecType)
-{
- switch (codecType) {
- case CODEC_TYPE_MPEG4:
- if (gbFIMV1) {
- return OMX_TRUE;
- } else {
- if (streamSize < 3) {
- return OMX_FALSE;
- } else if ((pInputStream[0] == 0x00) &&
- (pInputStream[1] == 0x00) &&
- (pInputStream[2] == 0x01)) {
- return OMX_TRUE;
- } else {
- return OMX_FALSE;
- }
- }
- break;
- case CODEC_TYPE_H263:
- if (streamSize > 0)
- return OMX_TRUE;
- else
- return OMX_FALSE;
- default:
- SEC_OSAL_Log(SEC_LOG_WARNING, "%s: undefined codec type (%d)", __FUNCTION__, codecType);
- return OMX_FALSE;
- }
-}
-
-OMX_ERRORTYPE SEC_MFC_Mpeg4Dec_GetParameter(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_INDEXTYPE nParamIndex,
- OMX_INOUT OMX_PTR pComponentParameterStructure)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL || pComponentParameterStructure == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- if (pSECComponent->currentState == OMX_StateInvalid ) {
- ret = OMX_StateInvalid;
- goto EXIT;
- }
-
- switch (nParamIndex) {
- case OMX_IndexParamVideoMpeg4:
- {
- OMX_VIDEO_PARAM_MPEG4TYPE *pDstMpeg4Param = (OMX_VIDEO_PARAM_MPEG4TYPE *)pComponentParameterStructure;
- OMX_VIDEO_PARAM_MPEG4TYPE *pSrcMpeg4Param = NULL;
- SEC_MPEG4_HANDLE *pMpeg4Dec = NULL;
- ret = SEC_OMX_Check_SizeVersion(pDstMpeg4Param, sizeof(OMX_VIDEO_PARAM_MPEG4TYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pDstMpeg4Param->nPortIndex >= ALL_PORT_NUM) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- pMpeg4Dec = (SEC_MPEG4_HANDLE *)pSECComponent->hCodecHandle;
- pSrcMpeg4Param = &pMpeg4Dec->mpeg4Component[pDstMpeg4Param->nPortIndex];
-
- SEC_OSAL_Memcpy(pDstMpeg4Param, pSrcMpeg4Param, sizeof(OMX_VIDEO_PARAM_MPEG4TYPE));
- }
- break;
- case OMX_IndexParamVideoH263:
- {
- OMX_VIDEO_PARAM_H263TYPE *pDstH263Param = (OMX_VIDEO_PARAM_H263TYPE *)pComponentParameterStructure;
- OMX_VIDEO_PARAM_H263TYPE *pSrcH263Param = NULL;
- SEC_MPEG4_HANDLE *pMpeg4Dec = NULL;
- ret = SEC_OMX_Check_SizeVersion(pDstH263Param, sizeof(OMX_VIDEO_PARAM_H263TYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pDstH263Param->nPortIndex >= ALL_PORT_NUM) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- pMpeg4Dec = (SEC_MPEG4_HANDLE *)pSECComponent->hCodecHandle;
- pSrcH263Param = &pMpeg4Dec->h263Component[pDstH263Param->nPortIndex];
-
- SEC_OSAL_Memcpy(pDstH263Param, pSrcH263Param, sizeof(OMX_VIDEO_PARAM_H263TYPE));
- }
- break;
- case OMX_IndexParamStandardComponentRole:
- {
- OMX_S32 codecType;
- OMX_PARAM_COMPONENTROLETYPE *pComponentRole = (OMX_PARAM_COMPONENTROLETYPE *)pComponentParameterStructure;
-
- ret = SEC_OMX_Check_SizeVersion(pComponentRole, sizeof(OMX_PARAM_COMPONENTROLETYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- codecType = ((SEC_MPEG4_HANDLE *)(pSECComponent->hCodecHandle))->hMFCMpeg4Handle.codecType;
- if (codecType == CODEC_TYPE_MPEG4)
- SEC_OSAL_Strcpy((char *)pComponentRole->cRole, SEC_OMX_COMPONENT_MPEG4_DEC_ROLE);
- else
- SEC_OSAL_Strcpy((char *)pComponentRole->cRole, SEC_OMX_COMPONENT_H263_DEC_ROLE);
- }
- break;
- case OMX_IndexParamVideoProfileLevelQuerySupported:
- {
- OMX_VIDEO_PARAM_PROFILELEVELTYPE *pDstProfileLevel = (OMX_VIDEO_PARAM_PROFILELEVELTYPE *)pComponentParameterStructure;
- SEC_OMX_VIDEO_PROFILELEVEL *pProfileLevel = NULL;
- OMX_U32 maxProfileLevelNum = 0;
- OMX_S32 codecType;
-
- ret = SEC_OMX_Check_SizeVersion(pDstProfileLevel, sizeof(OMX_VIDEO_PARAM_PROFILELEVELTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pDstProfileLevel->nPortIndex >= ALL_PORT_NUM) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- codecType = ((SEC_MPEG4_HANDLE *)(pSECComponent->hCodecHandle))->hMFCMpeg4Handle.codecType;
- if (codecType == CODEC_TYPE_MPEG4) {
- pProfileLevel = supportedMPEG4ProfileLevels;
- maxProfileLevelNum = sizeof(supportedMPEG4ProfileLevels) / sizeof(SEC_OMX_VIDEO_PROFILELEVEL);
- } else {
- pProfileLevel = supportedH263ProfileLevels;
- maxProfileLevelNum = sizeof(supportedH263ProfileLevels) / sizeof(SEC_OMX_VIDEO_PROFILELEVEL);
- }
-
- if (pDstProfileLevel->nProfileIndex >= maxProfileLevelNum) {
- ret = OMX_ErrorNoMore;
- goto EXIT;
- }
-
- pProfileLevel += pDstProfileLevel->nProfileIndex;
- pDstProfileLevel->eProfile = pProfileLevel->profile;
- pDstProfileLevel->eLevel = pProfileLevel->level;
- }
- break;
- case OMX_IndexParamVideoProfileLevelCurrent:
- {
- OMX_VIDEO_PARAM_PROFILELEVELTYPE *pDstProfileLevel = (OMX_VIDEO_PARAM_PROFILELEVELTYPE *)pComponentParameterStructure;
- OMX_VIDEO_PARAM_MPEG4TYPE *pSrcMpeg4Param = NULL;
- OMX_VIDEO_PARAM_H263TYPE *pSrcH263Param = NULL;
- SEC_MPEG4_HANDLE *pMpeg4Dec = NULL;
- OMX_S32 codecType;
-
- ret = SEC_OMX_Check_SizeVersion(pDstProfileLevel, sizeof(OMX_VIDEO_PARAM_PROFILELEVELTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pDstProfileLevel->nPortIndex >= ALL_PORT_NUM) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- pMpeg4Dec = (SEC_MPEG4_HANDLE *)pSECComponent->hCodecHandle;
- codecType = pMpeg4Dec->hMFCMpeg4Handle.codecType;
- if (codecType == CODEC_TYPE_MPEG4) {
- pSrcMpeg4Param = &pMpeg4Dec->mpeg4Component[pDstProfileLevel->nPortIndex];
- pDstProfileLevel->eProfile = pSrcMpeg4Param->eProfile;
- pDstProfileLevel->eLevel = pSrcMpeg4Param->eLevel;
- } else {
- pSrcH263Param = &pMpeg4Dec->h263Component[pDstProfileLevel->nPortIndex];
- pDstProfileLevel->eProfile = pSrcH263Param->eProfile;
- pDstProfileLevel->eLevel = pSrcH263Param->eLevel;
- }
- }
- break;
- case OMX_IndexParamVideoErrorCorrection:
- {
- OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE *pDstErrorCorrectionType = (OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE *)pComponentParameterStructure;
- OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE *pSrcErrorCorrectionType = NULL;
- SEC_MPEG4_HANDLE *pMpeg4Dec = NULL;
-
- ret = SEC_OMX_Check_SizeVersion(pDstErrorCorrectionType, sizeof(OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pDstErrorCorrectionType->nPortIndex != INPUT_PORT_INDEX) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- pMpeg4Dec = (SEC_MPEG4_HANDLE *)pSECComponent->hCodecHandle;
- pSrcErrorCorrectionType = &pMpeg4Dec->errorCorrectionType[INPUT_PORT_INDEX];
-
- pDstErrorCorrectionType->bEnableHEC = pSrcErrorCorrectionType->bEnableHEC;
- pDstErrorCorrectionType->bEnableResync = pSrcErrorCorrectionType->bEnableResync;
- pDstErrorCorrectionType->nResynchMarkerSpacing = pSrcErrorCorrectionType->nResynchMarkerSpacing;
- pDstErrorCorrectionType->bEnableDataPartitioning = pSrcErrorCorrectionType->bEnableDataPartitioning;
- pDstErrorCorrectionType->bEnableRVLC = pSrcErrorCorrectionType->bEnableRVLC;
- }
- break;
- default:
- ret = SEC_OMX_VideoDecodeGetParameter(hComponent, nParamIndex, pComponentParameterStructure);
- break;
- }
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_MFC_Mpeg4Dec_SetParameter(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_INDEXTYPE nIndex,
- OMX_IN OMX_PTR pComponentParameterStructure)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL || pComponentParameterStructure == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- if (pSECComponent->currentState == OMX_StateInvalid ) {
- ret = OMX_StateInvalid;
- goto EXIT;
- }
-
- switch (nIndex) {
- case OMX_IndexParamVideoMpeg4:
- {
- OMX_VIDEO_PARAM_MPEG4TYPE *pDstMpeg4Param = NULL;
- OMX_VIDEO_PARAM_MPEG4TYPE *pSrcMpeg4Param = (OMX_VIDEO_PARAM_MPEG4TYPE *)pComponentParameterStructure;
- SEC_MPEG4_HANDLE *pMpeg4Dec = NULL;
-
- ret = SEC_OMX_Check_SizeVersion(pSrcMpeg4Param, sizeof(OMX_VIDEO_PARAM_MPEG4TYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pSrcMpeg4Param->nPortIndex >= ALL_PORT_NUM) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- pMpeg4Dec = (SEC_MPEG4_HANDLE *)pSECComponent->hCodecHandle;
- pDstMpeg4Param = &pMpeg4Dec->mpeg4Component[pSrcMpeg4Param->nPortIndex];
-
- SEC_OSAL_Memcpy(pDstMpeg4Param, pSrcMpeg4Param, sizeof(OMX_VIDEO_PARAM_MPEG4TYPE));
- }
- break;
- case OMX_IndexParamVideoH263:
- {
- OMX_VIDEO_PARAM_H263TYPE *pDstH263Param = NULL;
- OMX_VIDEO_PARAM_H263TYPE *pSrcH263Param = (OMX_VIDEO_PARAM_H263TYPE *)pComponentParameterStructure;
- SEC_MPEG4_HANDLE *pMpeg4Dec = NULL;
-
- ret = SEC_OMX_Check_SizeVersion(pSrcH263Param, sizeof(OMX_VIDEO_PARAM_H263TYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pSrcH263Param->nPortIndex >= ALL_PORT_NUM) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- pMpeg4Dec = (SEC_MPEG4_HANDLE *)pSECComponent->hCodecHandle;
- pDstH263Param = &pMpeg4Dec->h263Component[pSrcH263Param->nPortIndex];
-
- SEC_OSAL_Memcpy(pDstH263Param, pSrcH263Param, sizeof(OMX_VIDEO_PARAM_H263TYPE));
- }
- break;
- case OMX_IndexParamStandardComponentRole:
- {
- OMX_PARAM_COMPONENTROLETYPE *pComponentRole = (OMX_PARAM_COMPONENTROLETYPE*)pComponentParameterStructure;
-
- ret = SEC_OMX_Check_SizeVersion(pComponentRole, sizeof(OMX_PARAM_COMPONENTROLETYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if ((pSECComponent->currentState != OMX_StateLoaded) && (pSECComponent->currentState != OMX_StateWaitForResources)) {
- ret = OMX_ErrorIncorrectStateOperation;
- goto EXIT;
- }
-
- if (!SEC_OSAL_Strcmp((char*)pComponentRole->cRole, SEC_OMX_COMPONENT_MPEG4_DEC_ROLE)) {
- pSECComponent->pSECPort[INPUT_PORT_INDEX].portDefinition.format.video.eCompressionFormat = OMX_VIDEO_CodingMPEG4;
- //((SEC_MPEG4_HANDLE *)(pSECComponent->hCodecHandle))->hMFCMpeg4Handle.codecType = CODEC_TYPE_MPEG4;
- } else if (!SEC_OSAL_Strcmp((char*)pComponentRole->cRole, SEC_OMX_COMPONENT_H263_DEC_ROLE)) {
- pSECComponent->pSECPort[INPUT_PORT_INDEX].portDefinition.format.video.eCompressionFormat = OMX_VIDEO_CodingH263;
- //((SEC_MPEG4_HANDLE *)(pSECComponent->hCodecHandle))->hMFCMpeg4Handle.codecType = CODEC_TYPE_H263;
- } else {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- }
- break;
- case OMX_IndexParamPortDefinition:
- {
- OMX_PARAM_PORTDEFINITIONTYPE *pPortDefinition = (OMX_PARAM_PORTDEFINITIONTYPE *)pComponentParameterStructure;
- OMX_U32 portIndex = pPortDefinition->nPortIndex;
- SEC_OMX_BASEPORT *pSECPort;
- OMX_U32 width, height, size;
-
- if (portIndex >= pSECComponent->portParam.nPorts) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
- ret = SEC_OMX_Check_SizeVersion(pPortDefinition, sizeof(OMX_PARAM_PORTDEFINITIONTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- pSECPort = &pSECComponent->pSECPort[portIndex];
-
- if ((pSECComponent->currentState != OMX_StateLoaded) && (pSECComponent->currentState != OMX_StateWaitForResources)) {
- if (pSECPort->portDefinition.bEnabled == OMX_TRUE) {
- ret = OMX_ErrorIncorrectStateOperation;
- goto EXIT;
- }
- }
- if (pPortDefinition->nBufferCountActual < pSECPort->portDefinition.nBufferCountMin) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- SEC_OSAL_Memcpy(&pSECPort->portDefinition, pPortDefinition, pPortDefinition->nSize);
-
- width = ((pSECPort->portDefinition.format.video.nFrameWidth + 15) & (~15));
- height = ((pSECPort->portDefinition.format.video.nFrameHeight + 15) & (~15));
- size = (width * height * 3) / 2;
- pSECPort->portDefinition.format.video.nStride = width;
- pSECPort->portDefinition.format.video.nSliceHeight = height;
- pSECPort->portDefinition.nBufferSize = (size > pSECPort->portDefinition.nBufferSize) ? size : pSECPort->portDefinition.nBufferSize;
-
- if (portIndex == INPUT_PORT_INDEX) {
- SEC_OMX_BASEPORT *pSECOutputPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
- pSECOutputPort->portDefinition.format.video.nFrameWidth = pSECPort->portDefinition.format.video.nFrameWidth;
- pSECOutputPort->portDefinition.format.video.nFrameHeight = pSECPort->portDefinition.format.video.nFrameHeight;
- pSECOutputPort->portDefinition.format.video.nStride = width;
- pSECOutputPort->portDefinition.format.video.nSliceHeight = height;
-
- switch (pSECOutputPort->portDefinition.format.video.eColorFormat) {
- case OMX_COLOR_FormatYUV420Planar:
- case OMX_COLOR_FormatYUV420SemiPlanar:
- case OMX_SEC_COLOR_FormatNV12TPhysicalAddress:
- case OMX_SEC_COLOR_FormatANBYUV420SemiPlanar:
- pSECOutputPort->portDefinition.nBufferSize = (width * height * 3) / 2;
- break;
- default:
- SEC_OSAL_Log(SEC_LOG_ERROR, "Color format is not support!! use default YUV size!!");
- ret = OMX_ErrorUnsupportedSetting;
- break;
- }
- }
- }
- break;
- case OMX_IndexParamVideoProfileLevelCurrent:
- {
- OMX_VIDEO_PARAM_PROFILELEVELTYPE *pSrcProfileLevel = (OMX_VIDEO_PARAM_PROFILELEVELTYPE *)pComponentParameterStructure;
- OMX_VIDEO_PARAM_MPEG4TYPE *pDstMpeg4Param = NULL;
- OMX_VIDEO_PARAM_H263TYPE *pDstH263Param = NULL;
- SEC_MPEG4_HANDLE *pMpeg4Dec = NULL;
- OMX_S32 codecType;
-
- ret = SEC_OMX_Check_SizeVersion(pSrcProfileLevel, sizeof(OMX_VIDEO_PARAM_PROFILELEVELTYPE));
- if (ret != OMX_ErrorNone)
- goto EXIT;
-
- if (pSrcProfileLevel->nPortIndex >= ALL_PORT_NUM) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- pMpeg4Dec = (SEC_MPEG4_HANDLE *)pSECComponent->hCodecHandle;
- codecType = pMpeg4Dec->hMFCMpeg4Handle.codecType;
- if (codecType == CODEC_TYPE_MPEG4) {
- /*
- * To do: Check validity of profile & level parameters
- */
-
- pDstMpeg4Param = &pMpeg4Dec->mpeg4Component[pSrcProfileLevel->nPortIndex];
- pDstMpeg4Param->eProfile = pSrcProfileLevel->eProfile;
- pDstMpeg4Param->eLevel = pSrcProfileLevel->eLevel;
- } else {
- /*
- * To do: Check validity of profile & level parameters
- */
-
- pDstH263Param = &pMpeg4Dec->h263Component[pSrcProfileLevel->nPortIndex];
- pDstH263Param->eProfile = pSrcProfileLevel->eProfile;
- pDstH263Param->eLevel = pSrcProfileLevel->eLevel;
- }
- }
- break;
- case OMX_IndexParamVideoErrorCorrection:
- {
- OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE *pSrcErrorCorrectionType = (OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE *)pComponentParameterStructure;
- OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE *pDstErrorCorrectionType = NULL;
- SEC_MPEG4_HANDLE *pMpeg4Dec = NULL;
-
- ret = SEC_OMX_Check_SizeVersion(pSrcErrorCorrectionType, sizeof(OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pSrcErrorCorrectionType->nPortIndex != INPUT_PORT_INDEX) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- pMpeg4Dec = (SEC_MPEG4_HANDLE *)pSECComponent->hCodecHandle;
- pDstErrorCorrectionType = &pMpeg4Dec->errorCorrectionType[INPUT_PORT_INDEX];
-
- pDstErrorCorrectionType->bEnableHEC = pSrcErrorCorrectionType->bEnableHEC;
- pDstErrorCorrectionType->bEnableResync = pSrcErrorCorrectionType->bEnableResync;
- pDstErrorCorrectionType->nResynchMarkerSpacing = pSrcErrorCorrectionType->nResynchMarkerSpacing;
- pDstErrorCorrectionType->bEnableDataPartitioning = pSrcErrorCorrectionType->bEnableDataPartitioning;
- pDstErrorCorrectionType->bEnableRVLC = pSrcErrorCorrectionType->bEnableRVLC;
- }
- break;
- default:
- ret = SEC_OMX_VideoDecodeSetParameter(hComponent, nIndex, pComponentParameterStructure);
- break;
- }
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_MFC_Mpeg4Dec_GetConfig(
- OMX_HANDLETYPE hComponent,
- OMX_INDEXTYPE nIndex,
- OMX_PTR pComponentConfigStructure)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- if (pComponentConfigStructure == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- if (pSECComponent->currentState == OMX_StateInvalid) {
- ret = OMX_ErrorInvalidState;
- goto EXIT;
- }
-
- switch (nIndex) {
- default:
- ret = SEC_OMX_GetConfig(hComponent, nIndex, pComponentConfigStructure);
- break;
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_MFC_Mpeg4Dec_SetConfig(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_INDEXTYPE nIndex,
- OMX_IN OMX_PTR pComponentConfigStructure)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL || pComponentConfigStructure == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- if (pSECComponent->currentState == OMX_StateInvalid) {
- ret = OMX_ErrorInvalidState;
- goto EXIT;
- }
-
- switch (nIndex) {
- case OMX_IndexVendorThumbnailMode:
- {
- SEC_MPEG4_HANDLE *pMpeg4Dec = (SEC_MPEG4_HANDLE *)pSECComponent->hCodecHandle;
-
- pMpeg4Dec->hMFCMpeg4Handle.bThumbnailMode = *((OMX_BOOL *)pComponentConfigStructure);
- }
- break;
- default:
- ret = SEC_OMX_SetConfig(hComponent, nIndex, pComponentConfigStructure);
- break;
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_MFC_Mpeg4Dec_GetExtensionIndex(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_STRING cParameterName,
- OMX_OUT OMX_INDEXTYPE *pIndexType)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- if ((cParameterName == NULL) || (pIndexType == NULL)) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- if (pSECComponent->currentState == OMX_StateInvalid) {
- ret = OMX_ErrorInvalidState;
- goto EXIT;
- }
-
- if (SEC_OSAL_Strcmp(cParameterName, SEC_INDEX_PARAM_ENABLE_THUMBNAIL) == 0) {
- SEC_MPEG4_HANDLE *pMpeg4Dec = (SEC_MPEG4_HANDLE *)pSECComponent->hCodecHandle;
- *pIndexType = OMX_IndexVendorThumbnailMode;
- ret = OMX_ErrorNone;
-#ifdef USE_ANDROID_EXTENSION
- } else if (SEC_OSAL_Strcmp(cParameterName, SEC_INDEX_PARAM_ENABLE_ANB) == 0) {
- if (isTvOutEnabled()) {
- // Samsung normally pushes HW-decoded frames to the TV Out driver
- // but it's hard for us to do that without source, so return an error
- // and let Android fallback to software decoding
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
-
- *pIndexType = OMX_IndexParamEnableAndroidBuffers;
- ret = OMX_ErrorNone;
- } else if (SEC_OSAL_Strcmp(cParameterName, SEC_INDEX_PARAM_GET_ANB) == 0) {
- *pIndexType = OMX_IndexParamGetAndroidNativeBuffer;
- ret = OMX_ErrorNone;
- } else if (SEC_OSAL_Strcmp(cParameterName, SEC_INDEX_PARAM_USE_ANB) == 0) {
- *pIndexType = OMX_IndexParamUseAndroidNativeBuffer;
- ret = OMX_ErrorNone;
-#endif
- } else {
- ret = SEC_OMX_GetExtensionIndex(hComponent, cParameterName, pIndexType);
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_MFC_Mpeg4Dec_ComponentRoleEnum(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_OUT OMX_U8 *cRole,
- OMX_IN OMX_U32 nIndex)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- OMX_S32 codecType;
-
- FunctionIn();
-
- if ((hComponent == NULL) || (cRole == NULL)) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- if (nIndex != (MAX_COMPONENT_ROLE_NUM - 1)) {
- ret = OMX_ErrorNoMore;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- if (pSECComponent->currentState == OMX_StateInvalid ) {
- ret = OMX_StateInvalid;
- goto EXIT;
- }
-
- codecType = ((SEC_MPEG4_HANDLE *)(pSECComponent->hCodecHandle))->hMFCMpeg4Handle.codecType;
- if (codecType == CODEC_TYPE_MPEG4)
- SEC_OSAL_Strcpy((char *)cRole, SEC_OMX_COMPONENT_MPEG4_DEC_ROLE);
- else
- SEC_OSAL_Strcpy((char *)cRole, SEC_OMX_COMPONENT_H263_DEC_ROLE);
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_MFC_DecodeThread(OMX_HANDLETYPE hComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_MPEG4_HANDLE *pMpeg4Dec = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- pMpeg4Dec = (SEC_MPEG4_HANDLE *)pSECComponent->hCodecHandle;
-
- while (pMpeg4Dec->NBDecThread.bExitDecodeThread == OMX_FALSE) {
- SEC_OSAL_SemaphoreWait(pMpeg4Dec->NBDecThread.hDecFrameStart);
-
- if (pMpeg4Dec->NBDecThread.bExitDecodeThread == OMX_FALSE) {
- pMpeg4Dec->hMFCMpeg4Handle.returnCodec = SsbSipMfcDecExe(pMpeg4Dec->hMFCMpeg4Handle.hMFCHandle, pMpeg4Dec->NBDecThread.oneFrameSize);
- SEC_OSAL_SemaphorePost(pMpeg4Dec->NBDecThread.hDecFrameEnd);
- }
- }
-
-EXIT:
- SEC_OSAL_ThreadExit(NULL);
- FunctionOut();
-
- return ret;
-}
-
-/* MFC Init */
-OMX_ERRORTYPE SEC_MFC_Mpeg4Dec_Init(OMX_COMPONENTTYPE *pOMXComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- SEC_MPEG4_HANDLE *pMpeg4Dec = NULL;
- OMX_HANDLETYPE hMFCHandle = NULL;
- OMX_PTR pStreamBuffer = NULL;
- OMX_PTR pStreamPhyBuffer = NULL;
-
- FunctionIn();
-
- pMpeg4Dec = (SEC_MPEG4_HANDLE *)pSECComponent->hCodecHandle;
- pMpeg4Dec->hMFCMpeg4Handle.bConfiguredMFC = OMX_FALSE;
- pSECComponent->bUseFlagEOF = OMX_FALSE;
- pSECComponent->bSaveFlagEOS = OMX_FALSE;
-
- /* MFC(Multi Format Codec) decoder and CMM(Codec Memory Management) driver open */
- SSBIP_MFC_BUFFER_TYPE buf_type = CACHE;
- hMFCHandle = (OMX_PTR)SsbSipMfcDecOpen(&buf_type);
- if (hMFCHandle == NULL) {
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
- ghMFCHandle = pMpeg4Dec->hMFCMpeg4Handle.hMFCHandle = hMFCHandle;
-
- /* Allocate decoder's input buffer */
- pStreamBuffer = SsbSipMfcDecGetInBuf(hMFCHandle, &pStreamPhyBuffer, DEFAULT_MFC_INPUT_BUFFER_SIZE);
- if (pStreamBuffer == NULL) {
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
-
- pMpeg4Dec->MFCDecInputBuffer[0].VirAddr = pStreamBuffer;
- pMpeg4Dec->MFCDecInputBuffer[0].PhyAddr = pStreamPhyBuffer;
- pMpeg4Dec->MFCDecInputBuffer[0].bufferSize = DEFAULT_MFC_INPUT_BUFFER_SIZE;
- pMpeg4Dec->MFCDecInputBuffer[0].dataSize = 0;
- pMpeg4Dec->MFCDecInputBuffer[1].VirAddr = (unsigned char *)pStreamBuffer + pMpeg4Dec->MFCDecInputBuffer[0].bufferSize;
- pMpeg4Dec->MFCDecInputBuffer[1].PhyAddr = (unsigned char *)pStreamPhyBuffer + pMpeg4Dec->MFCDecInputBuffer[0].bufferSize;
- pMpeg4Dec->MFCDecInputBuffer[1].bufferSize = DEFAULT_MFC_INPUT_BUFFER_SIZE;
- pMpeg4Dec->MFCDecInputBuffer[1].dataSize = 0;
- pMpeg4Dec->indexInputBuffer = 0;
-
- pMpeg4Dec->bFirstFrame = OMX_TRUE;
-
- pMpeg4Dec->NBDecThread.bExitDecodeThread = OMX_FALSE;
- pMpeg4Dec->NBDecThread.bDecoderRun = OMX_FALSE;
- pMpeg4Dec->NBDecThread.oneFrameSize = 0;
- SEC_OSAL_SemaphoreCreate(&(pMpeg4Dec->NBDecThread.hDecFrameStart));
- SEC_OSAL_SemaphoreCreate(&(pMpeg4Dec->NBDecThread.hDecFrameEnd));
- if (OMX_ErrorNone == SEC_OSAL_ThreadCreate(&pMpeg4Dec->NBDecThread.hNBDecodeThread,
- SEC_MFC_DecodeThread,
- pOMXComponent)) {
- pMpeg4Dec->hMFCMpeg4Handle.returnCodec = MFC_RET_OK;
- }
-
- pMpeg4Dec->hMFCMpeg4Handle.pMFCStreamBuffer = pMpeg4Dec->MFCDecInputBuffer[0].VirAddr;
- pMpeg4Dec->hMFCMpeg4Handle.pMFCStreamPhyBuffer = pMpeg4Dec->MFCDecInputBuffer[0].PhyAddr;
- pSECComponent->processData[INPUT_PORT_INDEX].dataBuffer = pMpeg4Dec->MFCDecInputBuffer[0].VirAddr;
- pSECComponent->processData[INPUT_PORT_INDEX].allocSize = pMpeg4Dec->MFCDecInputBuffer[0].bufferSize;
-
- SEC_OSAL_Memset(pSECComponent->timeStamp, -19771003, sizeof(OMX_TICKS) * MAX_TIMESTAMP);
- SEC_OSAL_Memset(pSECComponent->nFlags, 0, sizeof(OMX_U32) * MAX_FLAGS);
- pMpeg4Dec->hMFCMpeg4Handle.indexTimestamp = 0;
- pSECComponent->getAllDelayBuffer = OMX_FALSE;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-/* MFC Terminate */
-OMX_ERRORTYPE SEC_MFC_Mpeg4Dec_Terminate(OMX_COMPONENTTYPE *pOMXComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- SEC_MPEG4_HANDLE *pMpeg4Dec = NULL;
- OMX_HANDLETYPE hMFCHandle = NULL;
-
- FunctionIn();
-
- pMpeg4Dec = (SEC_MPEG4_HANDLE *)pSECComponent->hCodecHandle;
- hMFCHandle = pMpeg4Dec->hMFCMpeg4Handle.hMFCHandle;
-
- pMpeg4Dec->hMFCMpeg4Handle.pMFCStreamBuffer = NULL;
- pMpeg4Dec->hMFCMpeg4Handle.pMFCStreamPhyBuffer = NULL;
- pSECComponent->processData[INPUT_PORT_INDEX].dataBuffer = NULL;
- pSECComponent->processData[INPUT_PORT_INDEX].allocSize = 0;
-
- if (pMpeg4Dec->NBDecThread.hNBDecodeThread != NULL) {
- pMpeg4Dec->NBDecThread.bExitDecodeThread = OMX_TRUE;
- SEC_OSAL_SemaphorePost(pMpeg4Dec->NBDecThread.hDecFrameStart);
- SEC_OSAL_ThreadTerminate(pMpeg4Dec->NBDecThread.hNBDecodeThread);
- pMpeg4Dec->NBDecThread.hNBDecodeThread = NULL;
- }
-
- if(pMpeg4Dec->NBDecThread.hDecFrameEnd != NULL) {
- SEC_OSAL_SemaphoreTerminate(pMpeg4Dec->NBDecThread.hDecFrameEnd);
- pMpeg4Dec->NBDecThread.hDecFrameEnd = NULL;
- }
-
- if(pMpeg4Dec->NBDecThread.hDecFrameStart != NULL) {
- SEC_OSAL_SemaphoreTerminate(pMpeg4Dec->NBDecThread.hDecFrameStart);
- pMpeg4Dec->NBDecThread.hDecFrameStart = NULL;
- }
-
- if (hMFCHandle != NULL) {
- SsbSipMfcDecClose(hMFCHandle);
- pMpeg4Dec->hMFCMpeg4Handle.hMFCHandle = NULL;
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_MFC_Mpeg4_Decode(OMX_COMPONENTTYPE *pOMXComponent, SEC_OMX_DATA *pInputData, SEC_OMX_DATA *pOutputData)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- SEC_MPEG4_HANDLE *pMpeg4Dec = (SEC_MPEG4_HANDLE *)pSECComponent->hCodecHandle;
- OMX_HANDLETYPE hMFCHandle = pMpeg4Dec->hMFCMpeg4Handle.hMFCHandle;
- OMX_U32 oneFrameSize = pInputData->dataLen;
- SSBSIP_MFC_DEC_OUTPUT_INFO outputInfo;
- OMX_S32 configValue = 0;
- int bufWidth = 0;
- int bufHeight = 0;
- OMX_BOOL outputDataValid = OMX_FALSE;
-
- FunctionIn();
-
- if (pMpeg4Dec->hMFCMpeg4Handle.bConfiguredMFC == OMX_FALSE) {
- SSBSIP_MFC_CODEC_TYPE MFCCodecType;
- if (pMpeg4Dec->hMFCMpeg4Handle.codecType == CODEC_TYPE_MPEG4) {
- if (gbFIMV1)
- MFCCodecType = FIMV1_DEC;
- else
- MFCCodecType = MPEG4_DEC;
- } else {
- MFCCodecType = H263_DEC;
- }
-
- if ((oneFrameSize <= 0) && (pInputData->nFlags & OMX_BUFFERFLAG_EOS)) {
- pOutputData->timeStamp = pInputData->timeStamp;
- pOutputData->nFlags = pInputData->nFlags;
- ret = OMX_ErrorNone;
- goto EXIT;
- }
-
- /* Set the number of extra buffer to prevent tearing */
- configValue = 0;
- SsbSipMfcDecSetConfig(hMFCHandle, MFC_DEC_SETCONF_EXTRA_BUFFER_NUM, &configValue);
-
- /* Set mpeg4 deblocking filter enable */
- configValue = 1;
- SsbSipMfcDecSetConfig(hMFCHandle, MFC_DEC_SETCONF_POST_ENABLE, &configValue);
-
- if (pMpeg4Dec->hMFCMpeg4Handle.bThumbnailMode == OMX_TRUE) {
- configValue = 1; // the number that you want to delay
- SsbSipMfcDecSetConfig(hMFCHandle, MFC_DEC_SETCONF_DISPLAY_DELAY, &configValue);
- }
-
- pMpeg4Dec->hMFCMpeg4Handle.returnCodec = SsbSipMfcDecInit(hMFCHandle, MFCCodecType, oneFrameSize);
- if (pMpeg4Dec->hMFCMpeg4Handle.returnCodec == MFC_RET_OK) {
- SSBSIP_MFC_IMG_RESOLUTION imgResol;
- SEC_OMX_BASEPORT *pInputPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
-
- if (SsbSipMfcDecGetConfig(hMFCHandle, MFC_DEC_GETCONF_BUF_WIDTH_HEIGHT, &imgResol) != MFC_RET_OK) {
- ret = OMX_ErrorMFCInit;
- SEC_OSAL_Log(SEC_LOG_ERROR, "%s: SsbSipMfcDecGetConfig failed", __FUNCTION__);
- goto EXIT;
- }
-
- /** Update Frame Size **/
- if ((pInputPort->portDefinition.format.video.nFrameWidth != imgResol.width) ||
- (pInputPort->portDefinition.format.video.nFrameHeight != imgResol.height)) {
- /* change width and height information */
- pInputPort->portDefinition.format.video.nFrameWidth = imgResol.width;
- pInputPort->portDefinition.format.video.nFrameHeight = imgResol.height;
- pInputPort->portDefinition.format.video.nStride = ((imgResol.width + 15) & (~15));
- pInputPort->portDefinition.format.video.nSliceHeight = ((imgResol.height + 15) & (~15));
-
- SEC_UpdateFrameSize(pOMXComponent);
-
- /* Send Port Settings changed call back */
- (*(pSECComponent->pCallbacks->EventHandler))
- (pOMXComponent,
- pSECComponent->callbackData,
- OMX_EventPortSettingsChanged, // The command was completed
- OMX_DirOutput, // This is the port index
- 0,
- NULL);
- }
-
- SEC_OSAL_Log(SEC_LOG_TRACE, "nFrameWidth(%d) nFrameHeight(%d), nStride(%d), nSliceHeight(%d)",
- pInputPort->portDefinition.format.video.nFrameWidth, pInputPort->portDefinition.format.video.nFrameHeight,
- pInputPort->portDefinition.format.video.nStride, pInputPort->portDefinition.format.video.nSliceHeight);
-
- pMpeg4Dec->hMFCMpeg4Handle.bConfiguredMFC = OMX_TRUE;
- if (pMpeg4Dec->hMFCMpeg4Handle.codecType == CODEC_TYPE_MPEG4) {
- pOutputData->timeStamp = pInputData->timeStamp;
- pOutputData->nFlags = pInputData->nFlags;
- ret = OMX_ErrorNone;
- } else {
- pOutputData->dataLen = 0;
- ret = OMX_ErrorInputDataDecodeYet;
- }
- goto EXIT;
- } else {
- SEC_OSAL_Log(SEC_LOG_ERROR, "%s: SsbSipMfcDecInit failed", __FUNCTION__);
- ret = OMX_ErrorMFCInit; /* OMX_ErrorUndefined */
- goto EXIT;
- }
- }
-
-#ifndef FULL_FRAME_SEARCH
- if ((pInputData->nFlags & OMX_BUFFERFLAG_ENDOFFRAME) &&
- (pSECComponent->bUseFlagEOF == OMX_FALSE))
- pSECComponent->bUseFlagEOF = OMX_TRUE;
-#endif
-
- pSECComponent->timeStamp[pMpeg4Dec->hMFCMpeg4Handle.indexTimestamp] = pInputData->timeStamp;
- pSECComponent->nFlags[pMpeg4Dec->hMFCMpeg4Handle.indexTimestamp] = pInputData->nFlags;
-
- if ((pMpeg4Dec->hMFCMpeg4Handle.returnCodec == MFC_RET_OK) &&
- (pMpeg4Dec->bFirstFrame == OMX_FALSE)) {
- SSBSIP_MFC_DEC_OUTBUF_STATUS status;
- OMX_S32 indexTimestamp = 0;
-
- /* wait for mfc decode done */
- if (pMpeg4Dec->NBDecThread.bDecoderRun == OMX_TRUE) {
- SEC_OSAL_SemaphoreWait(pMpeg4Dec->NBDecThread.hDecFrameEnd);
- pMpeg4Dec->NBDecThread.bDecoderRun = OMX_FALSE;
- }
-
- status = SsbSipMfcDecGetOutBuf(hMFCHandle, &outputInfo);
- bufWidth = (outputInfo.img_width + 15) & (~15);
- bufHeight = (outputInfo.img_height + 15) & (~15);
-
- if ((SsbSipMfcDecGetConfig(hMFCHandle, MFC_DEC_GETCONF_FRAME_TAG, &indexTimestamp) != MFC_RET_OK) ||
- (((indexTimestamp < 0) || (indexTimestamp >= MAX_TIMESTAMP)))) {
- pOutputData->timeStamp = pInputData->timeStamp;
- pOutputData->nFlags = (pInputData->nFlags & (~OMX_BUFFERFLAG_EOS));
- } else {
- pOutputData->timeStamp = pSECComponent->timeStamp[indexTimestamp];
- pOutputData->nFlags = pSECComponent->nFlags[indexTimestamp];
- }
- SEC_OSAL_Log(SEC_LOG_TRACE, "timestamp %lld us (%.2f secs)", pOutputData->timeStamp, pOutputData->timeStamp / 1E6);
-
- if ((status == MFC_GETOUTBUF_DISPLAY_DECODING) ||
- (status == MFC_GETOUTBUF_DISPLAY_ONLY)) {
- outputDataValid = OMX_TRUE;
- }
- if (pOutputData->nFlags & OMX_BUFFERFLAG_EOS)
- outputDataValid = OMX_FALSE;
-
- if ((status == MFC_GETOUTBUF_DISPLAY_ONLY) ||
- (pSECComponent->getAllDelayBuffer == OMX_TRUE))
- ret = OMX_ErrorInputDataDecodeYet;
-
- if (status == MFC_GETOUTBUF_DECODING_ONLY) {
- if (((pInputData->nFlags & OMX_BUFFERFLAG_EOS) != OMX_BUFFERFLAG_EOS) &&
- ((pSECComponent->bSaveFlagEOS == OMX_TRUE) || (pSECComponent->getAllDelayBuffer == OMX_TRUE))) {
- pInputData->nFlags |= OMX_BUFFERFLAG_EOS;
- pSECComponent->getAllDelayBuffer = OMX_TRUE;
- ret = OMX_ErrorInputDataDecodeYet;
- } else {
- ret = OMX_ErrorNone;
- }
- outputDataValid = OMX_FALSE;
- }
-
-#ifdef FULL_FRAME_SEARCH
- if (((pInputData->nFlags & OMX_BUFFERFLAG_EOS) != OMX_BUFFERFLAG_EOS) &&
- (pSECComponent->bSaveFlagEOS == OMX_TRUE)) {
- pInputData->nFlags |= OMX_BUFFERFLAG_EOS;
- pSECComponent->getAllDelayBuffer = OMX_TRUE;
- ret = OMX_ErrorInputDataDecodeYet;
- } else
-#endif
- if ((pInputData->nFlags & OMX_BUFFERFLAG_EOS) == OMX_BUFFERFLAG_EOS) {
- //configValue = 1;
- //SsbSipMfcDecSetConfig(pMpeg4Dec->hMFCMpeg4Handle.hMFCHandle, MFC_DEC_SETCONF_IS_LAST_FRAME, &configValue);
- pInputData->nFlags = (pOutputData->nFlags & (~OMX_BUFFERFLAG_EOS));
- pSECComponent->getAllDelayBuffer = OMX_TRUE;
- ret = OMX_ErrorInputDataDecodeYet;
- } else if ((pOutputData->nFlags & OMX_BUFFERFLAG_EOS) == OMX_BUFFERFLAG_EOS) {
- pSECComponent->getAllDelayBuffer = OMX_FALSE;
- ret = OMX_ErrorNone;
- }
- } else {
- pOutputData->timeStamp = pInputData->timeStamp;
- pOutputData->nFlags = pInputData->nFlags;
-
- if ((pSECComponent->bSaveFlagEOS == OMX_TRUE) ||
- (pSECComponent->getAllDelayBuffer == OMX_TRUE) ||
- (pInputData->nFlags & OMX_BUFFERFLAG_EOS)) {
- pOutputData->nFlags |= OMX_BUFFERFLAG_EOS;
- pSECComponent->getAllDelayBuffer = OMX_FALSE;
- }
- if ((pMpeg4Dec->bFirstFrame == OMX_TRUE) &&
- ((pOutputData->nFlags & OMX_BUFFERFLAG_EOS) == OMX_BUFFERFLAG_EOS)) {
- pInputData->nFlags = (pInputData->nFlags | OMX_BUFFERFLAG_EOS);
- pOutputData->nFlags = (pOutputData->nFlags & (~OMX_BUFFERFLAG_EOS));
- }
-
- outputDataValid = OMX_FALSE;
-
- /* ret = OMX_ErrorUndefined; */
- ret = OMX_ErrorNone;
- }
-
- if (ret == OMX_ErrorInputDataDecodeYet) {
- pMpeg4Dec->MFCDecInputBuffer[pMpeg4Dec->indexInputBuffer].dataSize = oneFrameSize;
- pMpeg4Dec->indexInputBuffer++;
- pMpeg4Dec->indexInputBuffer %= MFC_INPUT_BUFFER_NUM_MAX;
- pMpeg4Dec->hMFCMpeg4Handle.pMFCStreamBuffer = pMpeg4Dec->MFCDecInputBuffer[pMpeg4Dec->indexInputBuffer].VirAddr;
- pMpeg4Dec->hMFCMpeg4Handle.pMFCStreamPhyBuffer = pMpeg4Dec->MFCDecInputBuffer[pMpeg4Dec->indexInputBuffer].PhyAddr;
- pSECComponent->processData[INPUT_PORT_INDEX].dataBuffer = pMpeg4Dec->MFCDecInputBuffer[pMpeg4Dec->indexInputBuffer].VirAddr;
- pSECComponent->processData[INPUT_PORT_INDEX].allocSize = pMpeg4Dec->MFCDecInputBuffer[pMpeg4Dec->indexInputBuffer].bufferSize;
- oneFrameSize = pMpeg4Dec->MFCDecInputBuffer[pMpeg4Dec->indexInputBuffer].dataSize;
- //pInputData->dataLen = oneFrameSize;
- //pInputData->remainDataLen = oneFrameSize;
- }
-
- if ((Check_Stream_PrefixCode(pInputData->dataBuffer, pInputData->dataLen, pMpeg4Dec->hMFCMpeg4Handle.codecType) == OMX_TRUE) &&
- ((pOutputData->nFlags & OMX_BUFFERFLAG_EOS) != OMX_BUFFERFLAG_EOS)) {
- SsbSipMfcDecSetConfig(hMFCHandle, MFC_DEC_SETCONF_FRAME_TAG, &(pMpeg4Dec->hMFCMpeg4Handle.indexTimestamp));
- pMpeg4Dec->hMFCMpeg4Handle.indexTimestamp++;
- pMpeg4Dec->hMFCMpeg4Handle.indexTimestamp %= MAX_TIMESTAMP;
-
- SsbSipMfcDecSetInBuf(pMpeg4Dec->hMFCMpeg4Handle.hMFCHandle,
- pMpeg4Dec->hMFCMpeg4Handle.pMFCStreamPhyBuffer,
- pMpeg4Dec->hMFCMpeg4Handle.pMFCStreamBuffer,
- pSECComponent->processData[INPUT_PORT_INDEX].allocSize);
-
- pMpeg4Dec->MFCDecInputBuffer[pMpeg4Dec->indexInputBuffer].dataSize = oneFrameSize;
- pMpeg4Dec->NBDecThread.oneFrameSize = oneFrameSize;
-
- /* mfc decode start */
- SEC_OSAL_SemaphorePost(pMpeg4Dec->NBDecThread.hDecFrameStart);
- pMpeg4Dec->NBDecThread.bDecoderRun = OMX_TRUE;
- pMpeg4Dec->hMFCMpeg4Handle.returnCodec = MFC_RET_OK;
-
- pMpeg4Dec->indexInputBuffer++;
- pMpeg4Dec->indexInputBuffer %= MFC_INPUT_BUFFER_NUM_MAX;
- pMpeg4Dec->hMFCMpeg4Handle.pMFCStreamBuffer = pMpeg4Dec->MFCDecInputBuffer[pMpeg4Dec->indexInputBuffer].VirAddr;
- pMpeg4Dec->hMFCMpeg4Handle.pMFCStreamPhyBuffer = pMpeg4Dec->MFCDecInputBuffer[pMpeg4Dec->indexInputBuffer].PhyAddr;
- pSECComponent->processData[INPUT_PORT_INDEX].dataBuffer = pMpeg4Dec->MFCDecInputBuffer[pMpeg4Dec->indexInputBuffer].VirAddr;
- pSECComponent->processData[INPUT_PORT_INDEX].allocSize = pMpeg4Dec->MFCDecInputBuffer[pMpeg4Dec->indexInputBuffer].bufferSize;
- if (((pMpeg4Dec->hMFCMpeg4Handle.bThumbnailMode == OMX_TRUE) || (pSECComponent->bSaveFlagEOS == OMX_TRUE)) &&
- (pMpeg4Dec->bFirstFrame == OMX_TRUE) &&
- (outputDataValid == OMX_FALSE)) {
- ret = OMX_ErrorInputDataDecodeYet;
- }
- pMpeg4Dec->bFirstFrame = OMX_FALSE;
- }
-
- /** Fill Output Buffer **/
- if (outputDataValid == OMX_TRUE) {
- SEC_OMX_BASEPORT *pSECInputPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- SEC_OMX_BASEPORT *pSECOutputPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
- void *pOutputBuf[3];
-
- int frameSize = bufWidth * bufHeight;
- int imageSize = outputInfo.img_width * outputInfo.img_height;
-
- int actualWidth = outputInfo.img_width;
- int actualHeight = outputInfo.img_height;
- int actualImageSize = imageSize;
-
- pOutputBuf[0] = (void *)pOutputData->dataBuffer;
- pOutputBuf[1] = (void *)pOutputData->dataBuffer + actualImageSize;
- pOutputBuf[2] = (void *)pOutputData->dataBuffer + ((actualImageSize * 5) / 4);
-
-#ifdef USE_ANDROID_EXTENSION
- if (pSECOutputPort->bUseAndroidNativeBuffer == OMX_TRUE) {
- OMX_U32 retANB = 0;
- void *pVirAddrs[2];
- actualWidth = (outputInfo.img_width + 15) & (~15);
- actualImageSize = actualWidth * actualHeight;
-
- retANB = getVADDRfromANB(pOutputData->dataBuffer,
- (OMX_U32)pSECInputPort->portDefinition.format.video.nFrameWidth,
- (OMX_U32)pSECInputPort->portDefinition.format.video.nFrameHeight,
- pVirAddrs);
- if (retANB != 0) {
- SEC_OSAL_Log(SEC_LOG_ERROR, "Error getVADDRfromANB, Error code:%d", retANB);
- ret = OMX_ErrorOverflow;
- goto EXIT;
- }
- pOutputBuf[0] = pVirAddrs[0];
- pOutputBuf[1] = pVirAddrs[1];
- }
-#endif
- if ((pMpeg4Dec->hMFCMpeg4Handle.bThumbnailMode == OMX_FALSE) &&
- (pSECOutputPort->portDefinition.format.video.eColorFormat == OMX_SEC_COLOR_FormatNV12TPhysicalAddress))
- {
- /* if use Post copy address structure */
- SEC_OSAL_Memcpy(pOutputBuf[0], &frameSize, sizeof(frameSize));
- SEC_OSAL_Memcpy(pOutputBuf[0] + sizeof(frameSize), &(outputInfo.YPhyAddr), sizeof(outputInfo.YPhyAddr));
- SEC_OSAL_Memcpy(pOutputBuf[0] + sizeof(frameSize) + (sizeof(void *) * 1), &(outputInfo.CPhyAddr), sizeof(outputInfo.CPhyAddr));
- SEC_OSAL_Memcpy(pOutputBuf[0] + sizeof(frameSize) + (sizeof(void *) * 2), &(outputInfo.YVirAddr), sizeof(outputInfo.YVirAddr));
- SEC_OSAL_Memcpy(pOutputBuf[0] + sizeof(frameSize) + (sizeof(void *) * 3), &(outputInfo.CVirAddr), sizeof(outputInfo.CVirAddr));
- pOutputData->dataLen = (bufWidth * bufHeight * 3) / 2;
- } else {
- switch (pSECComponent->pSECPort[OUTPUT_PORT_INDEX].portDefinition.format.video.eColorFormat) {
- case OMX_COLOR_FormatYUV420Planar:
- {
- SEC_OSAL_Log(SEC_LOG_TRACE, "YUV420P out");
- csc_tiled_to_linear(
- (unsigned char *)pOutputBuf[0],
- (unsigned char *)outputInfo.YVirAddr,
- actualWidth,
- actualHeight);
- csc_tiled_to_linear_deinterleave(
- (unsigned char *)pOutputBuf[1],
- (unsigned char *)pOutputBuf[2],
- (unsigned char *)outputInfo.CVirAddr,
- actualWidth,
- actualHeight >> 1);
- pOutputData->dataLen = actualImageSize * 3 / 2;
- }
- break;
- case OMX_COLOR_FormatYUV420SemiPlanar:
- case OMX_SEC_COLOR_FormatANBYUV420SemiPlanar:
- default:
- {
- SEC_OSAL_Log(SEC_LOG_TRACE, "YUV420SP out");
- csc_tiled_to_linear(
- (unsigned char *)pOutputBuf[0],
- (unsigned char *)outputInfo.YVirAddr,
- actualWidth,
- actualHeight);
- csc_tiled_to_linear(
- (unsigned char *)pOutputBuf[1],
- (unsigned char *)outputInfo.CVirAddr,
- actualWidth,
- actualHeight >> 1);
- pOutputData->dataLen = actualImageSize * 3 / 2;
- }
- break;
- }
- }
-#ifdef USE_ANDROID_EXTENSION
- if (pSECOutputPort->bUseAndroidNativeBuffer == OMX_TRUE)
- putVADDRtoANB(pOutputData->dataBuffer);
-#endif
- } else {
- pOutputData->dataLen = 0;
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-/* MFC Decode */
-OMX_ERRORTYPE SEC_MFC_Mpeg4Dec_bufferProcess(OMX_COMPONENTTYPE *pOMXComponent, SEC_OMX_DATA *pInputData, SEC_OMX_DATA *pOutputData)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- SEC_MPEG4_HANDLE *pMpeg4Dec = (SEC_MPEG4_HANDLE *)pSECComponent->hCodecHandle;
- SEC_OMX_BASEPORT *pInputPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- SEC_OMX_BASEPORT *pOutputPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
- OMX_BOOL bCheckPrefix = OMX_FALSE;
-
- FunctionIn();
-
- if ((!CHECK_PORT_ENABLED(pInputPort)) || (!CHECK_PORT_ENABLED(pOutputPort)) ||
- (!CHECK_PORT_POPULATED(pInputPort)) || (!CHECK_PORT_POPULATED(pOutputPort))) {
- ret = OMX_ErrorNone;
- goto EXIT;
- }
- if (OMX_FALSE == SEC_Check_BufferProcess_State(pSECComponent)) {
- ret = OMX_ErrorNone;
- goto EXIT;
- }
-
- ret = SEC_MFC_Mpeg4_Decode(pOMXComponent, pInputData, pOutputData);
- if (ret != OMX_ErrorNone) {
- if (ret == OMX_ErrorInputDataDecodeYet) {
- pOutputData->usedDataLen = 0;
- pOutputData->remainDataLen = pOutputData->dataLen;
- } else {
- pSECComponent->pCallbacks->EventHandler((OMX_HANDLETYPE)pOMXComponent,
- pSECComponent->callbackData,
- OMX_EventError, ret, 0, NULL);
- }
- } else {
- pInputData->previousDataLen = pInputData->dataLen;
- pInputData->usedDataLen += pInputData->dataLen;
- pInputData->remainDataLen = pInputData->dataLen - pInputData->usedDataLen;
- pInputData->dataLen -= pInputData->usedDataLen;
- pInputData->usedDataLen = 0;
-
- pOutputData->usedDataLen = 0;
- pOutputData->remainDataLen = pOutputData->dataLen;
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OSCL_EXPORT_REF OMX_ERRORTYPE SEC_OMX_ComponentInit(OMX_HANDLETYPE hComponent, OMX_STRING componentName)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- SEC_MPEG4_HANDLE *pMpeg4Dec = NULL;
- OMX_S32 codecType = -1;
- int i = 0;
-
- FunctionIn();
-
- if ((hComponent == NULL) || (componentName == NULL)) {
- ret = OMX_ErrorBadParameter;
- SEC_OSAL_Log(SEC_LOG_ERROR, "%s: parameters are null, ret: %X", __FUNCTION__, ret);
- goto EXIT;
- }
- if (SEC_OSAL_Strcmp(SEC_OMX_COMPONENT_MPEG4_DEC, componentName) == 0) {
- codecType = CODEC_TYPE_MPEG4;
- } else if (SEC_OSAL_Strcmp(SEC_OMX_COMPONENT_H263_DEC, componentName) == 0) {
- codecType = CODEC_TYPE_H263;
- } else {
- ret = OMX_ErrorBadParameter;
- SEC_OSAL_Log(SEC_LOG_ERROR, "%s: componentName(%s) error, ret: %X", __FUNCTION__, ret);
- goto EXIT;
- }
-
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_VideoDecodeComponentInit(pOMXComponent);
- if (ret != OMX_ErrorNone) {
- SEC_OSAL_Log(SEC_LOG_ERROR, "%s: SEC_OMX_VideoDecodeComponentInit error, ret: %X", __FUNCTION__, ret);
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- pSECComponent->codecType = HW_VIDEO_CODEC;
-
- pSECComponent->componentName = (OMX_STRING)SEC_OSAL_Malloc(MAX_OMX_COMPONENT_NAME_SIZE);
- if (pSECComponent->componentName == NULL) {
- SEC_OMX_VideoDecodeComponentDeinit(pOMXComponent);
- ret = OMX_ErrorInsufficientResources;
- SEC_OSAL_Log(SEC_LOG_ERROR, "%s: componentName alloc error, ret: %X", __FUNCTION__, ret);
- goto EXIT;
- }
- SEC_OSAL_Memset(pSECComponent->componentName, 0, MAX_OMX_COMPONENT_NAME_SIZE);
-
- pMpeg4Dec = SEC_OSAL_Malloc(sizeof(SEC_MPEG4_HANDLE));
- if (pMpeg4Dec == NULL) {
- SEC_OMX_VideoDecodeComponentDeinit(pOMXComponent);
- ret = OMX_ErrorInsufficientResources;
- SEC_OSAL_Log(SEC_LOG_ERROR, "%s: SEC_MPEG4_HANDLE alloc error, ret: %X", __FUNCTION__, ret);
- goto EXIT;
- }
- SEC_OSAL_Memset(pMpeg4Dec, 0, sizeof(SEC_MPEG4_HANDLE));
- pSECComponent->hCodecHandle = (OMX_HANDLETYPE)pMpeg4Dec;
- pMpeg4Dec->hMFCMpeg4Handle.codecType = codecType;
-
- if (codecType == CODEC_TYPE_MPEG4)
- SEC_OSAL_Strcpy(pSECComponent->componentName, SEC_OMX_COMPONENT_MPEG4_DEC);
- else
- SEC_OSAL_Strcpy(pSECComponent->componentName, SEC_OMX_COMPONENT_H263_DEC);
-
- /* Set componentVersion */
- pSECComponent->componentVersion.s.nVersionMajor = VERSIONMAJOR_NUMBER;
- pSECComponent->componentVersion.s.nVersionMinor = VERSIONMINOR_NUMBER;
- pSECComponent->componentVersion.s.nRevision = REVISION_NUMBER;
- pSECComponent->componentVersion.s.nStep = STEP_NUMBER;
- /* Set specVersion */
- pSECComponent->specVersion.s.nVersionMajor = VERSIONMAJOR_NUMBER;
- pSECComponent->specVersion.s.nVersionMinor = VERSIONMINOR_NUMBER;
- pSECComponent->specVersion.s.nRevision = REVISION_NUMBER;
- pSECComponent->specVersion.s.nStep = STEP_NUMBER;
-
- /* Android CapabilityFlags */
- pSECComponent->capabilityFlags.iIsOMXComponentMultiThreaded = OMX_TRUE;
- pSECComponent->capabilityFlags.iOMXComponentSupportsExternalInputBufferAlloc = OMX_TRUE;
- pSECComponent->capabilityFlags.iOMXComponentSupportsExternalOutputBufferAlloc = OMX_TRUE;
- pSECComponent->capabilityFlags.iOMXComponentSupportsMovableInputBuffers = OMX_FALSE;
- pSECComponent->capabilityFlags.iOMXComponentSupportsPartialFrames = OMX_FALSE;
- pSECComponent->capabilityFlags.iOMXComponentUsesNALStartCodes = OMX_TRUE;
- pSECComponent->capabilityFlags.iOMXComponentCanHandleIncompleteFrames = OMX_TRUE;
- pSECComponent->capabilityFlags.iOMXComponentUsesFullAVCFrames = OMX_TRUE;
-
- /* Input port */
- pSECPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- pSECPort->portDefinition.format.video.nFrameWidth = DEFAULT_FRAME_WIDTH;
- pSECPort->portDefinition.format.video.nFrameHeight= DEFAULT_FRAME_HEIGHT;
- pSECPort->portDefinition.format.video.nStride = 0;
- pSECPort->portDefinition.format.video.nSliceHeight = 0;
- pSECPort->portDefinition.nBufferSize = DEFAULT_VIDEO_INPUT_BUFFER_SIZE;
- if (codecType == CODEC_TYPE_MPEG4) {
- pSECPort->portDefinition.format.video.eCompressionFormat = OMX_VIDEO_CodingMPEG4;
- SEC_OSAL_Memset(pSECPort->portDefinition.format.video.cMIMEType, 0, MAX_OMX_MIMETYPE_SIZE);
- SEC_OSAL_Strcpy(pSECPort->portDefinition.format.video.cMIMEType, "video/mpeg4");
- } else {
- pSECPort->portDefinition.format.video.eCompressionFormat = OMX_VIDEO_CodingH263;
- SEC_OSAL_Memset(pSECPort->portDefinition.format.video.cMIMEType, 0, MAX_OMX_MIMETYPE_SIZE);
- SEC_OSAL_Strcpy(pSECPort->portDefinition.format.video.cMIMEType, "video/h263");
- }
- pSECPort->portDefinition.format.video.pNativeRender = 0;
- pSECPort->portDefinition.format.video.bFlagErrorConcealment = OMX_FALSE;
- pSECPort->portDefinition.format.video.eColorFormat = OMX_COLOR_FormatUnused;
- pSECPort->portDefinition.bEnabled = OMX_TRUE;
-
- /* Output port */
- pSECPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
- pSECPort->portDefinition.format.video.nFrameWidth = DEFAULT_FRAME_WIDTH;
- pSECPort->portDefinition.format.video.nFrameHeight= DEFAULT_FRAME_HEIGHT;
- pSECPort->portDefinition.format.video.nStride = 0;
- pSECPort->portDefinition.format.video.nSliceHeight = 0;
- pSECPort->portDefinition.nBufferSize = DEFAULT_VIDEO_OUTPUT_BUFFER_SIZE;
- pSECPort->portDefinition.format.video.eCompressionFormat = OMX_VIDEO_CodingUnused;
- SEC_OSAL_Memset(pSECPort->portDefinition.format.video.cMIMEType, 0, MAX_OMX_MIMETYPE_SIZE);
- SEC_OSAL_Strcpy(pSECPort->portDefinition.format.video.cMIMEType, "raw/video");
- pSECPort->portDefinition.format.video.pNativeRender = 0;
- pSECPort->portDefinition.format.video.bFlagErrorConcealment = OMX_FALSE;
- pSECPort->portDefinition.format.video.eColorFormat = OMX_COLOR_FormatYUV420SemiPlanar;
- pSECPort->portDefinition.bEnabled = OMX_TRUE;
-
- if (codecType == CODEC_TYPE_MPEG4) {
- for(i = 0; i < ALL_PORT_NUM; i++) {
- INIT_SET_SIZE_VERSION(&pMpeg4Dec->mpeg4Component[i], OMX_VIDEO_PARAM_MPEG4TYPE);
- pMpeg4Dec->mpeg4Component[i].nPortIndex = i;
- pMpeg4Dec->mpeg4Component[i].eProfile = OMX_VIDEO_MPEG4ProfileSimple;
- pMpeg4Dec->mpeg4Component[i].eLevel = OMX_VIDEO_MPEG4Level3;
- }
- } else {
- for(i = 0; i < ALL_PORT_NUM; i++) {
- INIT_SET_SIZE_VERSION(&pMpeg4Dec->h263Component[i], OMX_VIDEO_PARAM_H263TYPE);
- pMpeg4Dec->h263Component[i].nPortIndex = i;
- pMpeg4Dec->h263Component[i].eProfile = OMX_VIDEO_H263ProfileBaseline | OMX_VIDEO_H263ProfileISWV2;
- pMpeg4Dec->h263Component[i].eLevel = OMX_VIDEO_H263Level45;
- }
- }
-
- pOMXComponent->GetParameter = &SEC_MFC_Mpeg4Dec_GetParameter;
- pOMXComponent->SetParameter = &SEC_MFC_Mpeg4Dec_SetParameter;
- pOMXComponent->GetConfig = &SEC_MFC_Mpeg4Dec_GetConfig;
- pOMXComponent->SetConfig = &SEC_MFC_Mpeg4Dec_SetConfig;
- pOMXComponent->GetExtensionIndex = &SEC_MFC_Mpeg4Dec_GetExtensionIndex;
- pOMXComponent->ComponentRoleEnum = &SEC_MFC_Mpeg4Dec_ComponentRoleEnum;
- pOMXComponent->ComponentDeInit = &SEC_OMX_ComponentDeinit;
-
- pSECComponent->sec_mfc_componentInit = &SEC_MFC_Mpeg4Dec_Init;
- pSECComponent->sec_mfc_componentTerminate = &SEC_MFC_Mpeg4Dec_Terminate;
- pSECComponent->sec_mfc_bufferProcess = &SEC_MFC_Mpeg4Dec_bufferProcess;
- if (codecType == CODEC_TYPE_MPEG4)
- pSECComponent->sec_checkInputFrame = &Check_Mpeg4_Frame;
- else
- pSECComponent->sec_checkInputFrame = &Check_H263_Frame;
-
- pSECComponent->currentState = OMX_StateLoaded;
-
- ret = OMX_ErrorNone;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_ComponentDeinit(OMX_HANDLETYPE hComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_MPEG4_HANDLE *pMpeg4Dec = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- SEC_OSAL_Free(pSECComponent->componentName);
- pSECComponent->componentName = NULL;
-
- pMpeg4Dec = (SEC_MPEG4_HANDLE *)pSECComponent->hCodecHandle;
- if (pMpeg4Dec != NULL) {
- SEC_OSAL_Free(pMpeg4Dec);
- pSECComponent->hCodecHandle = NULL;
- }
-
- ret = SEC_OMX_VideoDecodeComponentDeinit(pOMXComponent);
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- ret = OMX_ErrorNone;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
diff --git a/sec_mm/sec_omx/sec_omx_component/video/dec/mpeg4dec/SEC_OMX_Mpeg4dec.h b/sec_mm/sec_omx/sec_omx_component/video/dec/mpeg4dec/SEC_OMX_Mpeg4dec.h
deleted file mode 100644
index 9af04e3..0000000
--- a/sec_mm/sec_omx/sec_omx_component/video/dec/mpeg4dec/SEC_OMX_Mpeg4dec.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OMX_Mpeg4dec.h
- * @brief
- * @author Yunji Kim (yunji.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#ifndef SEC_OMX_MPEG4_DEC_COMPONENT
-#define SEC_OMX_MPEG4_DEC_COMPONENT
-
-#include "SEC_OMX_Def.h"
-#include "OMX_Component.h"
-
-
-typedef enum _CODEC_TYPE
-{
- CODEC_TYPE_H263,
- CODEC_TYPE_MPEG4
-} CODEC_TYPE;
-
-/*
- * This structure is the same as BitmapInfoHhr struct in pv_avifile_typedefs.h file
- */
-typedef struct _BitmapInfoHhr
-{
- OMX_U32 BiSize;
- OMX_U32 BiWidth;
- OMX_U32 BiHeight;
- OMX_U16 BiPlanes;
- OMX_U16 BiBitCount;
- OMX_U32 BiCompression;
- OMX_U32 BiSizeImage;
- OMX_U32 BiXPelsPerMeter;
- OMX_U32 BiYPelsPerMeter;
- OMX_U32 BiClrUsed;
- OMX_U32 BiClrImportant;
-} BitmapInfoHhr;
-
-typedef struct _SEC_MFC_MPEG4_HANDLE
-{
- OMX_HANDLETYPE hMFCHandle;
- OMX_PTR pMFCStreamBuffer;
- OMX_PTR pMFCStreamPhyBuffer;
- OMX_U32 indexTimestamp;
- OMX_BOOL bConfiguredMFC;
- OMX_BOOL bThumbnailMode;
- CODEC_TYPE codecType;
- OMX_S32 returnCodec;
-} SEC_MFC_MPEG4_HANDLE;
-
-typedef struct _SEC_MPEG4_HANDLE
-{
- /* OMX Codec specific */
- OMX_VIDEO_PARAM_H263TYPE h263Component[ALL_PORT_NUM];
- OMX_VIDEO_PARAM_MPEG4TYPE mpeg4Component[ALL_PORT_NUM];
- OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE errorCorrectionType[ALL_PORT_NUM];
-
- /* SEC MFC Codec specific */
- SEC_MFC_MPEG4_HANDLE hMFCMpeg4Handle;
-
- /* For Non-Block mode */
- SEC_MFC_NBDEC_THREAD NBDecThread;
- OMX_BOOL bFirstFrame;
- MFC_DEC_INPUT_BUFFER MFCDecInputBuffer[MFC_INPUT_BUFFER_NUM_MAX];
- OMX_U32 indexInputBuffer;
-} SEC_MPEG4_HANDLE;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-OSCL_EXPORT_REF OMX_ERRORTYPE SEC_OMX_ComponentInit(OMX_HANDLETYPE hComponent, OMX_STRING componentName);
- OMX_ERRORTYPE SEC_OMX_ComponentDeinit(OMX_HANDLETYPE hComponent);
-
-#ifdef __cplusplus
-};
-#endif
-
-#endif
diff --git a/sec_mm/sec_omx/sec_omx_component/video/dec/mpeg4dec/library_register.c b/sec_mm/sec_omx/sec_omx_component/video/dec/mpeg4dec/library_register.c
deleted file mode 100644
index 02d8d39..0000000
--- a/sec_mm/sec_omx/sec_omx_component/video/dec/mpeg4dec/library_register.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file library_register.c
- * @brief
- * @author Yunji Kim (yunji.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <dlfcn.h>
-
-#include "SEC_OSAL_Memory.h"
-#include "SEC_OSAL_ETC.h"
-#include "library_register.h"
-
-#undef SEC_LOG_TAG
-#define SEC_LOG_TAG "SEC_MPEG4_DEC"
-#define SEC_LOG_OFF
-#include "SEC_OSAL_Log.h"
-
-
-OSCL_EXPORT_REF int SEC_OMX_COMPONENT_Library_Register(SECRegisterComponentType **ppSECComponent)
-{
- FunctionIn();
-
- if (ppSECComponent == NULL)
- goto EXIT;
-
- /* component 1 - video decoder MPEG4 */
- SEC_OSAL_Strcpy(ppSECComponent[0]->componentName, SEC_OMX_COMPONENT_MPEG4_DEC);
- SEC_OSAL_Strcpy(ppSECComponent[0]->roles[0], SEC_OMX_COMPONENT_MPEG4_DEC_ROLE);
- ppSECComponent[0]->totalRoleNum = MAX_COMPONENT_ROLE_NUM;
-
- /* component 2 - video decoder H.263 */
- SEC_OSAL_Strcpy(ppSECComponent[1]->componentName, SEC_OMX_COMPONENT_H263_DEC);
- SEC_OSAL_Strcpy(ppSECComponent[1]->roles[0], SEC_OMX_COMPONENT_H263_DEC_ROLE);
- ppSECComponent[1]->totalRoleNum = MAX_COMPONENT_ROLE_NUM;
-
-EXIT:
- FunctionOut();
- return MAX_COMPONENT_NUM;
-}
-
diff --git a/sec_mm/sec_omx/sec_omx_component/video/dec/mpeg4dec/library_register.h b/sec_mm/sec_omx/sec_omx_component/video/dec/mpeg4dec/library_register.h
deleted file mode 100644
index c3e5b9c..0000000
--- a/sec_mm/sec_omx/sec_omx_component/video/dec/mpeg4dec/library_register.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file library_register.h
- * @brief
- * @author Yunji Kim (yunji.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#ifndef SEC_OMX_MPEG4_DEC_REG
-#define SEC_OMX_MPEG4_DEC_REG
-
-#include "SEC_OMX_Def.h"
-#include "OMX_Component.h"
-#include "SEC_OMX_Component_Register.h"
-
-
-#define OSCL_EXPORT_REF __attribute__((visibility("default")))
-#define MAX_COMPONENT_NUM 2
-#define MAX_COMPONENT_ROLE_NUM 1
-
-/* MPEG4 */
-#define SEC_OMX_COMPONENT_MPEG4_DEC "OMX.SEC.MPEG4.Decoder"
-#define SEC_OMX_COMPONENT_MPEG4_DEC_ROLE "video_decoder.mpeg4"
-
-/* H.263 */
-#define SEC_OMX_COMPONENT_H263_DEC "OMX.SEC.H263.Decoder"
-#define SEC_OMX_COMPONENT_H263_DEC_ROLE "video_decoder.h263"
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-OSCL_EXPORT_REF int SEC_OMX_COMPONENT_Library_Register(SECRegisterComponentType **ppSECComponent);
-
-#ifdef __cplusplus
-};
-#endif
-
-#endif
-
diff --git a/sec_mm/sec_omx/sec_omx_component/video/enc/Android.mk b/sec_mm/sec_omx/sec_omx_component/video/enc/Android.mk
deleted file mode 100644
index e9ca8e7..0000000
--- a/sec_mm/sec_omx/sec_omx_component/video/enc/Android.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := \
- SEC_OMX_Venc.c
-
-LOCAL_MODULE := libSEC_OMX_Venc.aries
-LOCAL_ARM_MODE := arm
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_C_INCLUDES := $(SEC_OMX_INC)/khronos \
- $(SEC_OMX_INC)/sec \
- $(SEC_OMX_TOP)/sec_osal \
- $(SEC_OMX_TOP)/sec_omx_core \
- $(SEC_OMX_COMPONENT)/common \
- $(SEC_OMX_COMPONENT)/video/dec
-
-LOCAL_C_INCLUDES += $(SEC_OMX_TOP)/sec_codecs/video/mfc_c110/include
-
-include $(BUILD_STATIC_LIBRARY)
diff --git a/sec_mm/sec_omx/sec_omx_component/video/enc/SEC_OMX_Venc.c b/sec_mm/sec_omx/sec_omx_component/video/enc/SEC_OMX_Venc.c
deleted file mode 100644
index 19e33de..0000000
--- a/sec_mm/sec_omx/sec_omx_component/video/enc/SEC_OMX_Venc.c
+++ /dev/null
@@ -1,1467 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OMX_Venc.c
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * Yunji Kim (yunji.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "SEC_OMX_Macros.h"
-#include "SEC_OSAL_Event.h"
-#include "SEC_OMX_Venc.h"
-#include "SEC_OMX_Basecomponent.h"
-#include "SEC_OSAL_Thread.h"
-#include "color_space_convertor.h"
-
-#undef SEC_LOG_TAG
-#define SEC_LOG_TAG "SEC_VIDEO_ENC"
-#define SEC_LOG_OFF
-#include "SEC_OSAL_Log.h"
-
-
-inline void SEC_UpdateFrameSize(OMX_COMPONENTTYPE *pOMXComponent)
-{
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- SEC_OMX_BASEPORT *secInputPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- SEC_OMX_BASEPORT *secOutputPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
-
- if ((secOutputPort->portDefinition.format.video.nFrameWidth !=
- secInputPort->portDefinition.format.video.nFrameWidth) ||
- (secOutputPort->portDefinition.format.video.nFrameHeight !=
- secInputPort->portDefinition.format.video.nFrameHeight)) {
- OMX_U32 width = 0, height = 0;
-
- secOutputPort->portDefinition.format.video.nFrameWidth =
- secInputPort->portDefinition.format.video.nFrameWidth;
- secOutputPort->portDefinition.format.video.nFrameHeight =
- secInputPort->portDefinition.format.video.nFrameHeight;
- width = secOutputPort->portDefinition.format.video.nStride =
- secInputPort->portDefinition.format.video.nStride;
- height = secOutputPort->portDefinition.format.video.nSliceHeight =
- secInputPort->portDefinition.format.video.nSliceHeight;
-
- switch(secOutputPort->portDefinition.format.video.eColorFormat) {
- case OMX_COLOR_FormatYUV420Planar:
- case OMX_COLOR_FormatYUV420SemiPlanar:
- if (width && height)
- secOutputPort->portDefinition.nBufferSize = (width * height * 3) / 2;
- break;
- default:
- if (width && height)
- secOutputPort->portDefinition.nBufferSize = width * height * 2;
- break;
- }
- }
-
- return ;
-}
-
-OMX_ERRORTYPE SEC_OMX_UseBuffer(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_INOUT OMX_BUFFERHEADERTYPE **ppBufferHdr,
- OMX_IN OMX_U32 nPortIndex,
- OMX_IN OMX_PTR pAppPrivate,
- OMX_IN OMX_U32 nSizeBytes,
- OMX_IN OMX_U8 *pBuffer)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- OMX_BUFFERHEADERTYPE *temp_bufferHeader = NULL;
- int i = 0;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- pSECPort = &pSECComponent->pSECPort[nPortIndex];
- if (nPortIndex >= pSECComponent->portParam.nPorts) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
- if (pSECPort->portState != OMX_StateIdle) {
- ret = OMX_ErrorIncorrectStateOperation;
- goto EXIT;
- }
-
- if (CHECK_PORT_TUNNELED(pSECPort) && CHECK_PORT_BUFFER_SUPPLIER(pSECPort)) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- temp_bufferHeader = (OMX_BUFFERHEADERTYPE *)SEC_OSAL_Malloc(sizeof(OMX_BUFFERHEADERTYPE));
- if (temp_bufferHeader == NULL) {
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
- SEC_OSAL_Memset(temp_bufferHeader, 0, sizeof(OMX_BUFFERHEADERTYPE));
-
- for (i = 0; i < pSECPort->portDefinition.nBufferCountActual; i++) {
- if (pSECPort->bufferStateAllocate[i] == BUFFER_STATE_FREE) {
- pSECPort->bufferHeader[i] = temp_bufferHeader;
- pSECPort->bufferStateAllocate[i] = (BUFFER_STATE_ASSIGNED | HEADER_STATE_ALLOCATED);
- INIT_SET_SIZE_VERSION(temp_bufferHeader, OMX_BUFFERHEADERTYPE);
- temp_bufferHeader->pBuffer = pBuffer;
- temp_bufferHeader->nAllocLen = nSizeBytes;
- temp_bufferHeader->pAppPrivate = pAppPrivate;
- if (nPortIndex == INPUT_PORT_INDEX)
- temp_bufferHeader->nInputPortIndex = INPUT_PORT_INDEX;
- else
- temp_bufferHeader->nOutputPortIndex = OUTPUT_PORT_INDEX;
-
- pSECPort->assignedBufferNum++;
- if (pSECPort->assignedBufferNum == pSECPort->portDefinition.nBufferCountActual) {
- pSECPort->portDefinition.bPopulated = OMX_TRUE;
- /* SEC_OSAL_MutexLock(pSECComponent->compMutex); */
- SEC_OSAL_SemaphorePost(pSECPort->loadedResource);
- /* SEC_OSAL_MutexUnlock(pSECComponent->compMutex); */
- }
- *ppBufferHdr = temp_bufferHeader;
- ret = OMX_ErrorNone;
- goto EXIT;
- }
- }
-
- SEC_OSAL_Free(temp_bufferHeader);
- ret = OMX_ErrorInsufficientResources;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_AllocateBuffer(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_INOUT OMX_BUFFERHEADERTYPE **ppBuffer,
- OMX_IN OMX_U32 nPortIndex,
- OMX_IN OMX_PTR pAppPrivate,
- OMX_IN OMX_U32 nSizeBytes)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- OMX_BUFFERHEADERTYPE *temp_bufferHeader = NULL;
- OMX_U8 *temp_buffer = NULL;
- int i = 0;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- pSECPort = &pSECComponent->pSECPort[nPortIndex];
- if (nPortIndex >= pSECComponent->portParam.nPorts) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-/*
- if (pSECPort->portState != OMX_StateIdle ) {
- ret = OMX_ErrorIncorrectStateOperation;
- goto EXIT;
- }
-*/
- if (CHECK_PORT_TUNNELED(pSECPort) && CHECK_PORT_BUFFER_SUPPLIER(pSECPort)) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- temp_buffer = SEC_OSAL_Malloc(sizeof(OMX_U8) * nSizeBytes);
- if (temp_buffer == NULL) {
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
-
- temp_bufferHeader = (OMX_BUFFERHEADERTYPE *)SEC_OSAL_Malloc(sizeof(OMX_BUFFERHEADERTYPE));
- if (temp_bufferHeader == NULL) {
- SEC_OSAL_Free(temp_buffer);
- temp_buffer = NULL;
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
- SEC_OSAL_Memset(temp_bufferHeader, 0, sizeof(OMX_BUFFERHEADERTYPE));
-
- for (i = 0; i < pSECPort->portDefinition.nBufferCountActual; i++) {
- if (pSECPort->bufferStateAllocate[i] == BUFFER_STATE_FREE) {
- pSECPort->bufferHeader[i] = temp_bufferHeader;
- pSECPort->bufferStateAllocate[i] = (BUFFER_STATE_ALLOCATED | HEADER_STATE_ALLOCATED);
- INIT_SET_SIZE_VERSION(temp_bufferHeader, OMX_BUFFERHEADERTYPE);
- temp_bufferHeader->pBuffer = temp_buffer;
- temp_bufferHeader->nAllocLen = nSizeBytes;
- temp_bufferHeader->pAppPrivate = pAppPrivate;
- if (nPortIndex == INPUT_PORT_INDEX)
- temp_bufferHeader->nInputPortIndex = INPUT_PORT_INDEX;
- else
- temp_bufferHeader->nOutputPortIndex = OUTPUT_PORT_INDEX;
- pSECPort->assignedBufferNum++;
- if (pSECPort->assignedBufferNum == pSECPort->portDefinition.nBufferCountActual) {
- pSECPort->portDefinition.bPopulated = OMX_TRUE;
- /* SEC_OSAL_MutexLock(pSECComponent->compMutex); */
- SEC_OSAL_SemaphorePost(pSECPort->loadedResource);
- /* SEC_OSAL_MutexUnlock(pSECComponent->compMutex); */
- }
- *ppBuffer = temp_bufferHeader;
- ret = OMX_ErrorNone;
- goto EXIT;
- }
- }
-
- SEC_OSAL_Free(temp_bufferHeader);
- SEC_OSAL_Free(temp_buffer);
- ret = OMX_ErrorInsufficientResources;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_FreeBuffer(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_U32 nPortIndex,
- OMX_IN OMX_BUFFERHEADERTYPE *pBufferHdr)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- OMX_BUFFERHEADERTYPE *temp_bufferHeader = NULL;
- OMX_U8 *temp_buffer = NULL;
- int i = 0;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- pSECPort = &pSECComponent->pSECPort[nPortIndex];
-
- if (CHECK_PORT_TUNNELED(pSECPort) && CHECK_PORT_BUFFER_SUPPLIER(pSECPort)) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- if ((pSECPort->portState != OMX_StateLoaded) && (pSECPort->portState != OMX_StateInvalid)) {
- (*(pSECComponent->pCallbacks->EventHandler)) (pOMXComponent,
- pSECComponent->callbackData,
- (OMX_U32)OMX_EventError,
- (OMX_U32)OMX_ErrorPortUnpopulated,
- nPortIndex, NULL);
- }
-
- for (i = 0; i < pSECPort->portDefinition.nBufferCountActual; i++) {
- if (((pSECPort->bufferStateAllocate[i] | BUFFER_STATE_FREE) != 0) && (pSECPort->bufferHeader[i] != NULL)) {
- if (pSECPort->bufferHeader[i]->pBuffer == pBufferHdr->pBuffer) {
- if (pSECPort->bufferStateAllocate[i] & BUFFER_STATE_ALLOCATED) {
- SEC_OSAL_Free(pSECPort->bufferHeader[i]->pBuffer);
- pSECPort->bufferHeader[i]->pBuffer = NULL;
- pBufferHdr->pBuffer = NULL;
- } else if (pSECPort->bufferStateAllocate[i] & BUFFER_STATE_ASSIGNED) {
- ; /* None*/
- }
- pSECPort->assignedBufferNum--;
- if (pSECPort->bufferStateAllocate[i] & HEADER_STATE_ALLOCATED) {
- SEC_OSAL_Free(pSECPort->bufferHeader[i]);
- pSECPort->bufferHeader[i] = NULL;
- pBufferHdr = NULL;
- }
- pSECPort->bufferStateAllocate[i] = BUFFER_STATE_FREE;
- ret = OMX_ErrorNone;
- goto EXIT;
- }
- }
- }
-
-EXIT:
- if (ret == OMX_ErrorNone) {
- if (pSECPort->assignedBufferNum == 0 ) {
- SEC_OSAL_Log(SEC_LOG_TRACE, "pSECPort->unloadedResource signal set");
- /* SEC_OSAL_MutexLock(pSECComponent->compMutex); */
- SEC_OSAL_SemaphorePost(pSECPort->unloadedResource);
- /* SEC_OSAL_MutexUnlock(pSECComponent->compMutex); */
- pSECPort->portDefinition.bPopulated = OMX_FALSE;
- }
- }
-
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_AllocateTunnelBuffer(SEC_OMX_BASEPORT *pOMXBasePort, OMX_U32 nPortIndex)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- OMX_BUFFERHEADERTYPE *temp_bufferHeader = NULL;
- OMX_U8 *temp_buffer = NULL;
- OMX_U32 bufferSize = 0;
- OMX_PARAM_PORTDEFINITIONTYPE portDefinition;
-
- ret = OMX_ErrorTunnelingUnsupported;
-EXIT:
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_FreeTunnelBuffer(SEC_OMX_BASEPORT *pOMXBasePort, OMX_U32 nPortIndex)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASEPORT* pSECPort = NULL;
- OMX_BUFFERHEADERTYPE* temp_bufferHeader = NULL;
- OMX_U8 *temp_buffer = NULL;
- OMX_U32 bufferSize = 0;
- OMX_PARAM_PORTDEFINITIONTYPE portDefinition;
-
- ret = OMX_ErrorTunnelingUnsupported;
-EXIT:
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_ComponentTunnelRequest(
- OMX_IN OMX_HANDLETYPE hComp,
- OMX_IN OMX_U32 nPort,
- OMX_IN OMX_HANDLETYPE hTunneledComp,
- OMX_IN OMX_U32 nTunneledPort,
- OMX_INOUT OMX_TUNNELSETUPTYPE *pTunnelSetup)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
-
- ret = OMX_ErrorTunnelingUnsupported;
-EXIT:
- return ret;
-}
-
-OMX_BOOL SEC_Check_BufferProcess_State(SEC_OMX_BASECOMPONENT *pSECComponent)
-{
- if ((pSECComponent->currentState == OMX_StateExecuting) &&
- (pSECComponent->pSECPort[INPUT_PORT_INDEX].portState == OMX_StateIdle) &&
- (pSECComponent->pSECPort[OUTPUT_PORT_INDEX].portState == OMX_StateIdle) &&
- (pSECComponent->transientState != SEC_OMX_TransStateExecutingToIdle) &&
- (pSECComponent->transientState != SEC_OMX_TransStateIdleToExecuting))
- return OMX_TRUE;
- else
- return OMX_FALSE;
-}
-
-static OMX_ERRORTYPE SEC_InputBufferReturn(OMX_COMPONENTTYPE *pOMXComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- SEC_OMX_BASEPORT *secOMXInputPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- SEC_OMX_BASEPORT *secOMXOutputPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
- SEC_OMX_DATABUFFER *dataBuffer = &pSECComponent->secDataBuffer[INPUT_PORT_INDEX];
- OMX_BUFFERHEADERTYPE *bufferHeader = dataBuffer->bufferHeader;
-
- FunctionIn();
-
- if (bufferHeader != NULL) {
- if (secOMXInputPort->markType.hMarkTargetComponent != NULL ) {
- bufferHeader->hMarkTargetComponent = secOMXInputPort->markType.hMarkTargetComponent;
- bufferHeader->pMarkData = secOMXInputPort->markType.pMarkData;
- secOMXInputPort->markType.hMarkTargetComponent = NULL;
- secOMXInputPort->markType.pMarkData = NULL;
- }
-
- if (bufferHeader->hMarkTargetComponent != NULL) {
- if (bufferHeader->hMarkTargetComponent == pOMXComponent) {
- pSECComponent->pCallbacks->EventHandler(pOMXComponent,
- pSECComponent->callbackData,
- OMX_EventMark,
- 0, 0, bufferHeader->pMarkData);
- } else {
- pSECComponent->propagateMarkType.hMarkTargetComponent = bufferHeader->hMarkTargetComponent;
- pSECComponent->propagateMarkType.pMarkData = bufferHeader->pMarkData;
- }
- }
-
- if (CHECK_PORT_TUNNELED(secOMXInputPort)) {
- OMX_FillThisBuffer(secOMXInputPort->tunneledComponent, bufferHeader);
- } else {
- bufferHeader->nFilledLen = 0;
- pSECComponent->pCallbacks->EmptyBufferDone(pOMXComponent, pSECComponent->callbackData, bufferHeader);
- }
- }
-
- if ((pSECComponent->currentState == OMX_StatePause) &&
- ((!CHECK_PORT_BEING_FLUSHED(secOMXInputPort) && !CHECK_PORT_BEING_FLUSHED(secOMXOutputPort)))) {
- SEC_OSAL_SignalReset(pSECComponent->pauseEvent);
- SEC_OSAL_SignalWait(pSECComponent->pauseEvent, DEF_MAX_WAIT_TIME);
- }
-
- dataBuffer->dataValid = OMX_FALSE;
- dataBuffer->dataLen = 0;
- dataBuffer->remainDataLen = 0;
- dataBuffer->usedDataLen = 0;
- dataBuffer->bufferHeader = NULL;
- dataBuffer->nFlags = 0;
- dataBuffer->timeStamp = 0;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_InputBufferGetQueue(SEC_OMX_BASECOMPONENT *pSECComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- SEC_OMX_DATABUFFER *dataBuffer = NULL;
- SEC_OMX_MESSAGE* message = NULL;
- SEC_OMX_DATABUFFER *inputUseBuffer = &pSECComponent->secDataBuffer[INPUT_PORT_INDEX];
-
- FunctionIn();
-
- pSECPort= &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- dataBuffer = &pSECComponent->secDataBuffer[INPUT_PORT_INDEX];
-
- if (pSECComponent->currentState != OMX_StateExecuting) {
- ret = OMX_ErrorUndefined;
- goto EXIT;
- } else {
- SEC_OSAL_SemaphoreWait(pSECPort->bufferSemID);
- SEC_OSAL_MutexLock(inputUseBuffer->bufferMutex);
- if (dataBuffer->dataValid != OMX_TRUE) {
- message = (SEC_OMX_MESSAGE *)SEC_OSAL_Dequeue(&pSECPort->bufferQ);
- if (message == NULL) {
- ret = OMX_ErrorUndefined;
- SEC_OSAL_MutexUnlock(inputUseBuffer->bufferMutex);
- goto EXIT;
- }
-
- dataBuffer->bufferHeader = (OMX_BUFFERHEADERTYPE *)(message->pCmdData);
- dataBuffer->allocSize = dataBuffer->bufferHeader->nAllocLen;
- dataBuffer->dataLen = dataBuffer->bufferHeader->nFilledLen;
- dataBuffer->remainDataLen = dataBuffer->dataLen;
- dataBuffer->usedDataLen = 0; //dataBuffer->bufferHeader->nOffset;
- dataBuffer->dataValid = OMX_TRUE;
- dataBuffer->nFlags = dataBuffer->bufferHeader->nFlags;
- dataBuffer->timeStamp = dataBuffer->bufferHeader->nTimeStamp;
- pSECComponent->processData[INPUT_PORT_INDEX].dataBuffer = dataBuffer->bufferHeader->pBuffer;
- pSECComponent->processData[INPUT_PORT_INDEX].allocSize = dataBuffer->bufferHeader->nAllocLen;
-
- SEC_OSAL_Free(message);
- }
- SEC_OSAL_MutexUnlock(inputUseBuffer->bufferMutex);
- ret = OMX_ErrorNone;
- }
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-static OMX_ERRORTYPE SEC_OutputBufferReturn(OMX_COMPONENTTYPE *pOMXComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- SEC_OMX_BASEPORT *secOMXInputPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- SEC_OMX_BASEPORT *secOMXOutputPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
- SEC_OMX_DATABUFFER *dataBuffer = &pSECComponent->secDataBuffer[OUTPUT_PORT_INDEX];
- OMX_BUFFERHEADERTYPE *bufferHeader = dataBuffer->bufferHeader;
-
- FunctionIn();
-
- if (bufferHeader != NULL) {
- bufferHeader->nFilledLen = dataBuffer->remainDataLen;
- bufferHeader->nOffset = 0;
- bufferHeader->nFlags = dataBuffer->nFlags;
- bufferHeader->nTimeStamp = dataBuffer->timeStamp;
-
- if (pSECComponent->propagateMarkType.hMarkTargetComponent != NULL) {
- bufferHeader->hMarkTargetComponent = pSECComponent->propagateMarkType.hMarkTargetComponent;
- bufferHeader->pMarkData = pSECComponent->propagateMarkType.pMarkData;
- pSECComponent->propagateMarkType.hMarkTargetComponent = NULL;
- pSECComponent->propagateMarkType.pMarkData = NULL;
- }
-
- if (bufferHeader->nFlags & OMX_BUFFERFLAG_EOS) {
- pSECComponent->pCallbacks->EventHandler(pOMXComponent,
- pSECComponent->callbackData,
- OMX_EventBufferFlag,
- OUTPUT_PORT_INDEX,
- bufferHeader->nFlags, NULL);
- }
-
- if (CHECK_PORT_TUNNELED(secOMXOutputPort)) {
- OMX_EmptyThisBuffer(secOMXOutputPort->tunneledComponent, bufferHeader);
- } else {
- pSECComponent->pCallbacks->FillBufferDone(pOMXComponent, pSECComponent->callbackData, bufferHeader);
- }
- }
-
- if ((pSECComponent->currentState == OMX_StatePause) &&
- ((!CHECK_PORT_BEING_FLUSHED(secOMXInputPort) && !CHECK_PORT_BEING_FLUSHED(secOMXOutputPort)))) {
- SEC_OSAL_SignalReset(pSECComponent->pauseEvent);
- SEC_OSAL_SignalWait(pSECComponent->pauseEvent, DEF_MAX_WAIT_TIME);
- }
-
- /* reset dataBuffer */
- dataBuffer->dataValid = OMX_FALSE;
- dataBuffer->dataLen = 0;
- dataBuffer->remainDataLen = 0;
- dataBuffer->usedDataLen = 0;
- dataBuffer->bufferHeader = NULL;
- dataBuffer->nFlags = 0;
- dataBuffer->timeStamp = 0;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OutputBufferGetQueue(SEC_OMX_BASECOMPONENT *pSECComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- SEC_OMX_DATABUFFER *dataBuffer = NULL;
- SEC_OMX_MESSAGE *message = NULL;
- SEC_OMX_DATABUFFER *outputUseBuffer = &pSECComponent->secDataBuffer[OUTPUT_PORT_INDEX];
-
- FunctionIn();
-
- pSECPort= &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
- dataBuffer = &pSECComponent->secDataBuffer[OUTPUT_PORT_INDEX];
-
- if (pSECComponent->currentState != OMX_StateExecuting) {
- ret = OMX_ErrorUndefined;
- goto EXIT;
- } else {
- SEC_OSAL_SemaphoreWait(pSECPort->bufferSemID);
- SEC_OSAL_MutexLock(outputUseBuffer->bufferMutex);
- if (dataBuffer->dataValid != OMX_TRUE) {
- message = (SEC_OMX_MESSAGE *)SEC_OSAL_Dequeue(&pSECPort->bufferQ);
- if (message == NULL) {
- ret = OMX_ErrorUndefined;
- SEC_OSAL_MutexUnlock(outputUseBuffer->bufferMutex);
- goto EXIT;
- }
-
- dataBuffer->bufferHeader = (OMX_BUFFERHEADERTYPE *)(message->pCmdData);
- dataBuffer->allocSize = dataBuffer->bufferHeader->nAllocLen;
- dataBuffer->dataLen = 0; //dataBuffer->bufferHeader->nFilledLen;
- dataBuffer->remainDataLen = dataBuffer->dataLen;
- dataBuffer->usedDataLen = 0; //dataBuffer->bufferHeader->nOffset;
- dataBuffer->dataValid =OMX_TRUE;
- /* dataBuffer->nFlags = dataBuffer->bufferHeader->nFlags; */
- /* dataBuffer->nTimeStamp = dataBuffer->bufferHeader->nTimeStamp; */
- SEC_OSAL_Free(message);
- }
- SEC_OSAL_MutexUnlock(outputUseBuffer->bufferMutex);
- ret = OMX_ErrorNone;
- }
-EXIT:
- FunctionOut();
-
- return ret;
-
-}
-
-static OMX_ERRORTYPE SEC_BufferReset(OMX_COMPONENTTYPE *pOMXComponent, OMX_U32 portIndex)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- /* SEC_OMX_BASEPORT *pSECPort = &pSECComponent->pSECPort[portIndex]; */
- SEC_OMX_DATABUFFER *dataBuffer = &pSECComponent->secDataBuffer[portIndex];
- /* OMX_BUFFERHEADERTYPE *bufferHeader = dataBuffer->bufferHeader; */
-
- dataBuffer->dataValid = OMX_FALSE;
- dataBuffer->dataLen = 0;
- dataBuffer->remainDataLen = 0;
- dataBuffer->usedDataLen = 0;
- dataBuffer->bufferHeader = NULL;
- dataBuffer->nFlags = 0;
- dataBuffer->timeStamp = 0;
-
- return ret;
-}
-
-static OMX_ERRORTYPE SEC_DataReset(OMX_COMPONENTTYPE *pOMXComponent, OMX_U32 portIndex)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- /* SEC_OMX_BASEPORT *pSECPort = &pSECComponent->pSECPort[portIndex]; */
- /* SEC_OMX_DATABUFFER *dataBuffer = &pSECComponent->secDataBuffer[portIndex]; */
- /* OMX_BUFFERHEADERTYPE *bufferHeader = dataBuffer->bufferHeader; */
- SEC_OMX_DATA *processData = &pSECComponent->processData[portIndex];
-
- processData->dataLen = 0;
- processData->remainDataLen = 0;
- processData->usedDataLen = 0;
- processData->nFlags = 0;
- processData->timeStamp = 0;
-
- return ret;
-}
-
-OMX_BOOL SEC_Preprocessor_InputData(OMX_COMPONENTTYPE *pOMXComponent)
-{
- OMX_BOOL ret = OMX_FALSE;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- SEC_OMX_DATABUFFER *inputUseBuffer = &pSECComponent->secDataBuffer[INPUT_PORT_INDEX];
- SEC_OMX_DATA *inputData = &pSECComponent->processData[INPUT_PORT_INDEX];
- OMX_U32 copySize = 0;
- OMX_BYTE checkInputStream = NULL;
- OMX_U32 checkInputStreamLen = 0;
- OMX_U32 checkedSize = 0;
- OMX_BOOL flagEOS = OMX_FALSE;
- OMX_BOOL flagEOF = OMX_FALSE;
- OMX_BOOL previousFrameEOF = OMX_FALSE;
-
- if (inputUseBuffer->dataValid == OMX_TRUE) {
- checkInputStream = inputUseBuffer->bufferHeader->pBuffer + inputUseBuffer->usedDataLen;
- checkInputStreamLen = inputUseBuffer->remainDataLen;
-
- if ((inputUseBuffer->nFlags & OMX_BUFFERFLAG_ENDOFFRAME) &&
- (pSECComponent->bUseFlagEOF == OMX_FALSE)) {
- pSECComponent->bUseFlagEOF = OMX_TRUE;
- }
-
- if (inputData->dataLen == 0) {
- previousFrameEOF = OMX_TRUE;
- } else {
- previousFrameEOF = OMX_FALSE;
- }
- if (pSECComponent->bUseFlagEOF == OMX_TRUE) {
- flagEOF = OMX_TRUE;
- checkedSize = checkInputStreamLen;
- if (checkedSize == 0) {
- SEC_OMX_BASEPORT *pSECPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- int width = pSECPort->portDefinition.format.video.nFrameWidth;
- int height = pSECPort->portDefinition.format.video.nFrameHeight;
- inputUseBuffer->remainDataLen = inputUseBuffer->dataLen = (width * height * 3) / 2;
- checkedSize = checkInputStreamLen = inputUseBuffer->remainDataLen;
- inputUseBuffer->nFlags |= OMX_BUFFERFLAG_EOS;
- }
- if (inputUseBuffer->nFlags & OMX_BUFFERFLAG_EOS) {
- flagEOS = OMX_TRUE;
- }
- } else {
- SEC_OMX_BASEPORT *pSECPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- int width = pSECPort->portDefinition.format.video.nFrameWidth;
- int height = pSECPort->portDefinition.format.video.nFrameHeight;
- int oneFrameSize = 0;
-
- if (pSECPort->portDefinition.format.video.eColorFormat == OMX_COLOR_FormatYUV420SemiPlanar)
- oneFrameSize = (width * height * 3) / 2;
- else if (pSECPort->portDefinition.format.video.eColorFormat == OMX_COLOR_FormatYUV420Planar)
- oneFrameSize = (width * height * 3) / 2;
- else if (pSECPort->portDefinition.format.video.eColorFormat == OMX_COLOR_FormatYUV422Planar)
- oneFrameSize = width * height * 2;
-
- if (previousFrameEOF == OMX_TRUE) {
- if (checkInputStreamLen >= oneFrameSize) {
- checkedSize = oneFrameSize;
- flagEOF = OMX_TRUE;
- } else {
- flagEOF = OMX_FALSE;
- }
- } else {
- if (checkInputStreamLen >= (oneFrameSize - inputData->dataLen)) {
- checkedSize = oneFrameSize - inputData->dataLen;
- flagEOF = OMX_TRUE;
- } else {
- flagEOF = OMX_FALSE;
- }
- }
-
- if ((flagEOF == OMX_FALSE) && (inputUseBuffer->nFlags & OMX_BUFFERFLAG_EOS)) {
- flagEOF = OMX_TRUE;
- flagEOS = OMX_TRUE;
- }
- }
-
- if (flagEOF == OMX_TRUE) {
- copySize = checkedSize;
- SEC_OSAL_Log(SEC_LOG_TRACE, "sec_checkInputFrame : OMX_TRUE");
- } else {
- copySize = checkInputStreamLen;
- SEC_OSAL_Log(SEC_LOG_TRACE, "sec_checkInputFrame : OMX_FALSE");
- }
-
- if (inputUseBuffer->nFlags & OMX_BUFFERFLAG_EOS)
- pSECComponent->bSaveFlagEOS = OMX_TRUE;
-
- if (((inputData->allocSize) - (inputData->dataLen)) >= copySize) {
- SEC_OMX_BASEPORT *pSECPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
-
- if ((pSECPort->portDefinition.format.video.eColorFormat != OMX_SEC_COLOR_FormatNV12TPhysicalAddress) &&
- (pSECPort->bStoreMetaDataInBuffer == OMX_FALSE)) {
- if (flagEOF == OMX_TRUE) {
- OMX_U32 width, height;
-
- width = pSECPort->portDefinition.format.video.nFrameWidth;
- height = pSECPort->portDefinition.format.video.nFrameHeight;
-
- SEC_OSAL_Log(SEC_LOG_TRACE, "inputData->specificBufferHeader.YVirAddr : 0x%x", inputData->specificBufferHeader.YVirAddr);
- SEC_OSAL_Log(SEC_LOG_TRACE, "inputData->specificBufferHeader.CVirAddr : 0x%x", inputData->specificBufferHeader.CVirAddr);
-
- SEC_OSAL_Log(SEC_LOG_TRACE, "width:%d, height:%d, Ysize:%d", width, height, ALIGN_TO_8KB(ALIGN_TO_128B(width) * ALIGN_TO_32B(height)));
- SEC_OSAL_Log(SEC_LOG_TRACE, "width:%d, height:%d, Csize:%d", width, height, ALIGN_TO_8KB(ALIGN_TO_128B(width) * ALIGN_TO_32B(height / 2)));
-
- switch (pSECPort->portDefinition.format.video.eColorFormat) {
- case OMX_COLOR_FormatYUV420Planar:
- /* Real YUV420P Data */
- csc_linear_to_tiled(inputData->specificBufferHeader.YVirAddr,
- checkInputStream, width, height);
- csc_linear_to_tiled_interleave(inputData->specificBufferHeader.CVirAddr,
- checkInputStream + (width * height),
- checkInputStream + (((width * height) * 5) / 4),
- width, height >> 1);
- break;
- case OMX_COLOR_FormatYUV420SemiPlanar:
- default:
- SEC_OSAL_Memcpy(inputData->specificBufferHeader.YVirAddr, checkInputStream, (width * height));
- SEC_OSAL_Memcpy(inputData->specificBufferHeader.CVirAddr, checkInputStream + (width * height), (width * height / 2));
- break;
- }
- }
- }
-
- inputUseBuffer->dataLen -= copySize;
- inputUseBuffer->remainDataLen -= copySize;
- inputUseBuffer->usedDataLen += copySize;
-
- inputData->dataLen += copySize;
- inputData->remainDataLen += copySize;
-
- if (previousFrameEOF == OMX_TRUE) {
- inputData->timeStamp = inputUseBuffer->timeStamp;
- inputData->nFlags = inputUseBuffer->nFlags;
- }
-
- if (pSECComponent->bUseFlagEOF == OMX_TRUE) {
- if (pSECComponent->bSaveFlagEOS == OMX_TRUE) {
- inputData->nFlags |= OMX_BUFFERFLAG_EOS;
- flagEOF = OMX_TRUE;
- pSECComponent->bSaveFlagEOS = OMX_FALSE;
- }
- } else {
- if ((checkedSize == checkInputStreamLen) && (pSECComponent->bSaveFlagEOS == OMX_TRUE)) {
- inputData->nFlags |= OMX_BUFFERFLAG_EOS;
- flagEOF = OMX_TRUE;
- pSECComponent->bSaveFlagEOS = OMX_FALSE;
- } else {
- inputData->nFlags = (inputUseBuffer->nFlags & (~OMX_BUFFERFLAG_EOS));
- }
- }
- } else {
- /*????????????????????????????????? Error ?????????????????????????????????*/
- SEC_DataReset(pOMXComponent, INPUT_PORT_INDEX);
- flagEOF = OMX_FALSE;
- }
-
- if (inputUseBuffer->remainDataLen == 0) {
- if(flagEOF == OMX_FALSE)
- SEC_InputBufferReturn(pOMXComponent);
- } else {
- inputUseBuffer->dataValid = OMX_TRUE;
- }
- }
-
- if (flagEOF == OMX_TRUE) {
- if (pSECComponent->checkTimeStamp.needSetStartTimeStamp == OMX_TRUE) {
- pSECComponent->checkTimeStamp.needCheckStartTimeStamp = OMX_TRUE;
- pSECComponent->checkTimeStamp.startTimeStamp = inputData->timeStamp;
- pSECComponent->checkTimeStamp.nStartFlags = inputData->nFlags;
- pSECComponent->checkTimeStamp.needSetStartTimeStamp = OMX_FALSE;
- }
-
- ret = OMX_TRUE;
- } else {
- ret = OMX_FALSE;
- }
- return ret;
-}
-
-OMX_BOOL SEC_Postprocess_OutputData(OMX_COMPONENTTYPE *pOMXComponent)
-{
- OMX_BOOL ret = OMX_FALSE;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- SEC_OMX_DATABUFFER *outputUseBuffer = &pSECComponent->secDataBuffer[OUTPUT_PORT_INDEX];
- SEC_OMX_DATA *outputData = &pSECComponent->processData[OUTPUT_PORT_INDEX];
- OMX_U32 copySize = 0;
-
- if (outputUseBuffer->dataValid == OMX_TRUE) {
- if (pSECComponent->checkTimeStamp.needCheckStartTimeStamp == OMX_TRUE) {
- if (pSECComponent->checkTimeStamp.startTimeStamp == outputData->timeStamp){
- pSECComponent->checkTimeStamp.startTimeStamp = -19761123;
- pSECComponent->checkTimeStamp.nStartFlags = 0x0;
- pSECComponent->checkTimeStamp.needSetStartTimeStamp = OMX_FALSE;
- pSECComponent->checkTimeStamp.needCheckStartTimeStamp = OMX_FALSE;
- } else {
- SEC_DataReset(pOMXComponent, OUTPUT_PORT_INDEX);
-
- ret = OMX_TRUE;
- goto EXIT;
- }
- } else if (pSECComponent->checkTimeStamp.needSetStartTimeStamp == OMX_TRUE) {
- SEC_DataReset(pOMXComponent, OUTPUT_PORT_INDEX);
-
- ret = OMX_TRUE;
- goto EXIT;
- }
-
- if (outputData->remainDataLen <= (outputUseBuffer->allocSize - outputUseBuffer->dataLen)) {
- copySize = outputData->remainDataLen;
- if (copySize > 0)
- SEC_OSAL_Memcpy((outputUseBuffer->bufferHeader->pBuffer + outputUseBuffer->dataLen),
- (outputData->dataBuffer + outputData->usedDataLen),
- copySize);
-
- outputUseBuffer->dataLen += copySize;
- outputUseBuffer->remainDataLen += copySize;
- outputUseBuffer->nFlags = outputData->nFlags;
- outputUseBuffer->timeStamp = outputData->timeStamp;
-
- ret = OMX_TRUE;
-
- /* reset outputData */
- SEC_DataReset(pOMXComponent, OUTPUT_PORT_INDEX);
-
- if ((outputUseBuffer->remainDataLen > 0) ||
- (outputUseBuffer->nFlags & OMX_BUFFERFLAG_EOS))
- SEC_OutputBufferReturn(pOMXComponent);
- } else {
- SEC_OSAL_Log(SEC_LOG_ERROR, "output buffer is smaller than encoded data size Out Length");
-
- copySize = outputUseBuffer->allocSize - outputUseBuffer->dataLen;
-
- SEC_OSAL_Memcpy((outputUseBuffer->bufferHeader->pBuffer + outputUseBuffer->dataLen),
- (outputData->dataBuffer + outputData->usedDataLen),
- copySize);
-
- outputUseBuffer->dataLen += copySize;
- outputUseBuffer->remainDataLen += copySize;
- outputUseBuffer->nFlags = 0;
- outputUseBuffer->timeStamp = outputData->timeStamp;
-
- ret = OMX_FALSE;
-
- outputData->remainDataLen -= copySize;
- outputData->usedDataLen += copySize;
-
- SEC_OutputBufferReturn(pOMXComponent);
- }
- } else {
- ret = OMX_FALSE;
- }
-
-EXIT:
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_BufferProcess(OMX_HANDLETYPE hComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- SEC_OMX_BASEPORT *secInputPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- SEC_OMX_BASEPORT *secOutputPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
- SEC_OMX_DATABUFFER *inputUseBuffer = &pSECComponent->secDataBuffer[INPUT_PORT_INDEX];
- SEC_OMX_DATABUFFER *outputUseBuffer = &pSECComponent->secDataBuffer[OUTPUT_PORT_INDEX];
- SEC_OMX_DATA *inputData = &pSECComponent->processData[INPUT_PORT_INDEX];
- SEC_OMX_DATA *outputData = &pSECComponent->processData[OUTPUT_PORT_INDEX];
- OMX_U32 copySize = 0;
-
- pSECComponent->remainOutputData = OMX_FALSE;
- pSECComponent->reInputData = OMX_FALSE;
-
- FunctionIn();
-
- while (!pSECComponent->bExitBufferProcessThread) {
- SEC_OSAL_SleepMillisec(0);
-
- if (((pSECComponent->currentState == OMX_StatePause) ||
- (pSECComponent->currentState == OMX_StateIdle) ||
- (pSECComponent->transientState == SEC_OMX_TransStateLoadedToIdle) ||
- (pSECComponent->transientState == SEC_OMX_TransStateExecutingToIdle)) &&
- (pSECComponent->transientState != SEC_OMX_TransStateIdleToLoaded)&&
- ((!CHECK_PORT_BEING_FLUSHED(secInputPort) && !CHECK_PORT_BEING_FLUSHED(secOutputPort)))) {
- SEC_OSAL_SignalReset(pSECComponent->pauseEvent);
- SEC_OSAL_SignalWait(pSECComponent->pauseEvent, DEF_MAX_WAIT_TIME);
- }
-
- while (SEC_Check_BufferProcess_State(pSECComponent) && !pSECComponent->bExitBufferProcessThread) {
- SEC_OSAL_SleepMillisec(0);
-
- SEC_OSAL_MutexLock(outputUseBuffer->bufferMutex);
- if ((outputUseBuffer->dataValid != OMX_TRUE) &&
- (!CHECK_PORT_BEING_FLUSHED(secOutputPort))) {
- SEC_OSAL_MutexUnlock(outputUseBuffer->bufferMutex);
- ret = SEC_OutputBufferGetQueue(pSECComponent);
- if ((ret == OMX_ErrorUndefined) ||
- (secInputPort->portState != OMX_StateIdle) ||
- (secOutputPort->portState != OMX_StateIdle)) {
- break;
- }
- } else {
- SEC_OSAL_MutexUnlock(outputUseBuffer->bufferMutex);
- }
-
- if (pSECComponent->remainOutputData == OMX_FALSE) {
- if (pSECComponent->reInputData == OMX_FALSE) {
- SEC_OSAL_MutexLock(inputUseBuffer->bufferMutex);
- if ((SEC_Preprocessor_InputData(pOMXComponent) == OMX_FALSE) &&
- (!CHECK_PORT_BEING_FLUSHED(secInputPort))) {
- SEC_OSAL_MutexUnlock(inputUseBuffer->bufferMutex);
- ret = SEC_InputBufferGetQueue(pSECComponent);
- break;
- }
-
- SEC_OSAL_MutexUnlock(inputUseBuffer->bufferMutex);
- }
-
- SEC_OSAL_MutexLock(inputUseBuffer->bufferMutex);
- SEC_OSAL_MutexLock(outputUseBuffer->bufferMutex);
- ret = pSECComponent->sec_mfc_bufferProcess(pOMXComponent, inputData, outputData);
-
- if (inputUseBuffer->remainDataLen == 0)
- SEC_InputBufferReturn(pOMXComponent);
- else
- inputUseBuffer->dataValid = OMX_TRUE;
-
- SEC_OSAL_MutexUnlock(outputUseBuffer->bufferMutex);
- SEC_OSAL_MutexUnlock(inputUseBuffer->bufferMutex);
-
- if (ret == OMX_ErrorInputDataEncodeYet)
- pSECComponent->reInputData = OMX_TRUE;
- else
- pSECComponent->reInputData = OMX_FALSE;
- }
-
- SEC_OSAL_MutexLock(outputUseBuffer->bufferMutex);
-
- if (SEC_Postprocess_OutputData(pOMXComponent) == OMX_FALSE)
- pSECComponent->remainOutputData = OMX_TRUE;
- else
- pSECComponent->remainOutputData = OMX_FALSE;
-
- SEC_OSAL_MutexUnlock(outputUseBuffer->bufferMutex);
- }
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_VideoEncodeGetParameter(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_INDEXTYPE nParamIndex,
- OMX_INOUT OMX_PTR ComponentParameterStructure)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_BASEPORT *pSECPort = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- if (pSECComponent->currentState == OMX_StateInvalid ) {
- ret = OMX_StateInvalid;
- goto EXIT;
- }
-
- if (ComponentParameterStructure == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- switch (nParamIndex) {
- case OMX_IndexParamVideoInit:
- {
- OMX_PORT_PARAM_TYPE *portParam = (OMX_PORT_PARAM_TYPE *)ComponentParameterStructure;
- ret = SEC_OMX_Check_SizeVersion(portParam, sizeof(OMX_PORT_PARAM_TYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- portParam->nPorts = pSECComponent->portParam.nPorts;
- portParam->nStartPortNumber = pSECComponent->portParam.nStartPortNumber;
- ret = OMX_ErrorNone;
- }
- break;
- case OMX_IndexParamVideoPortFormat:
- {
- OMX_VIDEO_PARAM_PORTFORMATTYPE *portFormat = (OMX_VIDEO_PARAM_PORTFORMATTYPE *)ComponentParameterStructure;
- OMX_U32 portIndex = portFormat->nPortIndex;
- OMX_U32 index = portFormat->nIndex;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- OMX_PARAM_PORTDEFINITIONTYPE *portDefinition = NULL;
- OMX_U32 supportFormatNum = 0;
-
- ret = SEC_OMX_Check_SizeVersion(portFormat, sizeof(OMX_VIDEO_PARAM_PORTFORMATTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if ((portIndex >= pSECComponent->portParam.nPorts)) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
-
- if (portIndex == INPUT_PORT_INDEX) {
- supportFormatNum = INPUT_PORT_SUPPORTFORMAT_NUM_MAX - 1;
- if (index > supportFormatNum) {
- ret = OMX_ErrorNoMore;
- goto EXIT;
- }
-
- pSECPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- portDefinition = &pSECPort->portDefinition;
-
- switch (index) {
- case supportFormat_0:
- portFormat->eCompressionFormat = OMX_VIDEO_CodingUnused;
- portFormat->eColorFormat = OMX_COLOR_FormatYUV420SemiPlanar;
- portFormat->xFramerate = portDefinition->format.video.xFramerate;
- break;
- case supportFormat_1:
- portFormat->eCompressionFormat = OMX_VIDEO_CodingUnused;
- portFormat->eColorFormat = OMX_COLOR_FormatYUV420Planar;
- portFormat->xFramerate = portDefinition->format.video.xFramerate;
- break;
- case supportFormat_2:
- portFormat->eCompressionFormat = OMX_VIDEO_CodingUnused;
- portFormat->eColorFormat = OMX_SEC_COLOR_FormatNV12TPhysicalAddress;
- portFormat->xFramerate = portDefinition->format.video.xFramerate;
- break;
-#ifdef USE_ANDROID_EXTENSION
- case supportFormat_3:
- portFormat->eCompressionFormat = OMX_VIDEO_CodingUnused;
- portFormat->eColorFormat = OMX_COLOR_FormatAndroidOpaque;
- portFormat->xFramerate = portDefinition->format.video.xFramerate;
- break;
-#endif
- }
- } else if (portIndex == OUTPUT_PORT_INDEX) {
- supportFormatNum = OUTPUT_PORT_SUPPORTFORMAT_NUM_MAX - 1;
- if (index > supportFormatNum) {
- ret = OMX_ErrorNoMore;
- goto EXIT;
- }
-
- pSECPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
- portDefinition = &pSECPort->portDefinition;
-
- portFormat->eCompressionFormat = portDefinition->format.video.eCompressionFormat;
- portFormat->eColorFormat = portDefinition->format.video.eColorFormat;
- portFormat->xFramerate = portDefinition->format.video.xFramerate;
- }
- ret = OMX_ErrorNone;
- }
- break;
- case OMX_IndexParamVideoBitrate:
- {
- OMX_VIDEO_PARAM_BITRATETYPE *videoRateControl = (OMX_VIDEO_PARAM_BITRATETYPE *)ComponentParameterStructure;
- OMX_U32 portIndex = videoRateControl->nPortIndex;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- OMX_PARAM_PORTDEFINITIONTYPE *portDefinition = NULL;
-
- if ((portIndex != OUTPUT_PORT_INDEX)) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- } else {
- pSECPort = &pSECComponent->pSECPort[portIndex];
- portDefinition = &pSECPort->portDefinition;
-
- videoRateControl->eControlRate = pSECPort->eControlRate;
- videoRateControl->nTargetBitrate = portDefinition->format.video.nBitrate;
- }
- ret = OMX_ErrorNone;
- }
- break;
- case OMX_IndexParamPortDefinition:
- {
- OMX_PARAM_PORTDEFINITIONTYPE *portDefinition = (OMX_PARAM_PORTDEFINITIONTYPE *)ComponentParameterStructure;
- OMX_U32 portIndex = portDefinition->nPortIndex;
- SEC_OMX_BASEPORT *pSECPort;
-
- if (portIndex >= pSECComponent->portParam.nPorts) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
- ret = SEC_OMX_Check_SizeVersion(portDefinition, sizeof(OMX_PARAM_PORTDEFINITIONTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- pSECPort = &pSECComponent->pSECPort[portIndex];
- SEC_OSAL_Memcpy(portDefinition, &pSECPort->portDefinition, portDefinition->nSize);
-
-#ifdef USE_ANDROID_EXTENSION
- if (portIndex == 0 && pSECPort->bStoreMetaDataInBuffer == OMX_TRUE) {
- portDefinition->nBufferSize = MAX_INPUT_METADATA_BUFFER_SIZE;
- }
-#endif
- }
- break;
- default:
- {
- ret = SEC_OMX_GetParameter(hComponent, nParamIndex, ComponentParameterStructure);
- }
- break;
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-OMX_ERRORTYPE SEC_OMX_VideoEncodeSetParameter(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_INDEXTYPE nIndex,
- OMX_IN OMX_PTR ComponentParameterStructure)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_BASEPORT *pSECPort = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- if (pSECComponent->currentState == OMX_StateInvalid ) {
- ret = OMX_StateInvalid;
- goto EXIT;
- }
-
- if (ComponentParameterStructure == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- switch (nIndex) {
- case OMX_IndexParamVideoPortFormat:
- {
- OMX_VIDEO_PARAM_PORTFORMATTYPE *portFormat = (OMX_VIDEO_PARAM_PORTFORMATTYPE *)ComponentParameterStructure;
- OMX_U32 portIndex = portFormat->nPortIndex;
- OMX_U32 index = portFormat->nIndex;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- OMX_PARAM_PORTDEFINITIONTYPE *portDefinition = NULL;
- OMX_U32 supportFormatNum = 0;
-
- ret = SEC_OMX_Check_SizeVersion(portFormat, sizeof(OMX_VIDEO_PARAM_PORTFORMATTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if ((portIndex >= pSECComponent->portParam.nPorts)) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- } else {
- pSECPort = &pSECComponent->pSECPort[portIndex];
- portDefinition = &pSECPort->portDefinition;
-
- portDefinition->format.video.eColorFormat = portFormat->eColorFormat;
- portDefinition->format.video.eCompressionFormat = portFormat->eCompressionFormat;
- portDefinition->format.video.xFramerate = portFormat->xFramerate;
- }
- }
- break;
- case OMX_IndexParamVideoBitrate:
- {
- OMX_VIDEO_PARAM_BITRATETYPE *videoRateControl = (OMX_VIDEO_PARAM_BITRATETYPE *)ComponentParameterStructure;
- OMX_U32 portIndex = videoRateControl->nPortIndex;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- OMX_PARAM_PORTDEFINITIONTYPE *portDefinition = NULL;
-
- if ((portIndex != OUTPUT_PORT_INDEX)) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- } else {
- pSECPort = &pSECComponent->pSECPort[portIndex];
- portDefinition = &pSECPort->portDefinition;
-
- pSECPort->eControlRate = videoRateControl->eControlRate;
- portDefinition->format.video.nBitrate = videoRateControl->nTargetBitrate;
- }
- ret = OMX_ErrorNone;
- }
- break;
- case OMX_IndexParamPortDefinition:
- {
- OMX_PARAM_PORTDEFINITIONTYPE *pPortDefinition =
- (OMX_PARAM_PORTDEFINITIONTYPE *)ComponentParameterStructure;
- ret = SEC_OMX_SetParameter(hComponent, nIndex, ComponentParameterStructure);
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pPortDefinition->nPortIndex == INPUT_PORT_INDEX) {
- SEC_OMX_BASEPORT *pSECInputPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- OMX_U32 width = pSECInputPort->portDefinition.format.video.nFrameWidth;
- OMX_U32 height = pSECInputPort->portDefinition.format.video.nFrameHeight;
- SEC_OMX_BASEPORT *pSECOutputPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
- pSECOutputPort->portDefinition.format.video.nFrameWidth = width;
- pSECOutputPort->portDefinition.format.video.nFrameHeight = height;
- pSECOutputPort->portDefinition.nBufferSize = (width * height * 3) / 2;
- SEC_OSAL_Log(SEC_LOG_TRACE, "pSECOutputPort->portDefinition.nBufferSize: %d",
- pSECOutputPort->portDefinition.nBufferSize);
- }
- }
- break;
-#ifdef USE_ANDROID_EXTENSION
- case OMX_IndexParamStoreMetaDataBuffer:
- {
- if (OMX_ErrorNone != checkVersionANB(ComponentParameterStructure))
- goto EXIT;
-
- if (INPUT_PORT_INDEX != checkPortIndexANB(ComponentParameterStructure)) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- ret = enableStoreMetaDataInBuffers(hComponent, ComponentParameterStructure);
- }
- break;
-#endif
- default:
- {
- ret = SEC_OMX_SetParameter(hComponent, nIndex, ComponentParameterStructure);
- }
- break;
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_VideoEncodeComponentInit(OMX_IN OMX_HANDLETYPE hComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_BASEPORT *pSECPort = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- SEC_OSAL_Log(SEC_LOG_ERROR, "OMX_Error, Line:%d", __LINE__);
- goto EXIT;
- }
-
- ret = SEC_OMX_BaseComponent_Constructor(pOMXComponent);
- if (ret != OMX_ErrorNone) {
- SEC_OSAL_Log(SEC_LOG_ERROR, "OMX_Error, Line:%d", __LINE__);
- goto EXIT;
- }
-
- ret = SEC_OMX_Port_Constructor(pOMXComponent);
- if (ret != OMX_ErrorNone) {
- SEC_OMX_BaseComponent_Destructor(pOMXComponent);
- SEC_OSAL_Log(SEC_LOG_ERROR, "OMX_Error, Line:%d", __LINE__);
- goto EXIT;
- }
-
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- pSECComponent->bSaveFlagEOS = OMX_FALSE;
-
- /* Input port */
- pSECPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- pSECPort->portDefinition.nBufferCountActual = MAX_VIDEO_INPUTBUFFER_NUM;
- pSECPort->portDefinition.nBufferCountMin = MAX_VIDEO_INPUTBUFFER_NUM;
- pSECPort->portDefinition.nBufferSize = 0;
- pSECPort->portDefinition.eDomain = OMX_PortDomainVideo;
-
- pSECPort->portDefinition.format.video.cMIMEType = SEC_OSAL_Malloc(MAX_OMX_MIMETYPE_SIZE);
- SEC_OSAL_Strcpy(pSECPort->portDefinition.format.video.cMIMEType, "raw/video");
- pSECPort->portDefinition.format.video.pNativeRender = 0;
- pSECPort->portDefinition.format.video.bFlagErrorConcealment = OMX_FALSE;
- pSECPort->portDefinition.format.video.eCompressionFormat = OMX_VIDEO_CodingUnused;
-
- pSECPort->portDefinition.format.video.nFrameWidth = 0;
- pSECPort->portDefinition.format.video.nFrameHeight= 0;
- pSECPort->portDefinition.format.video.nStride = 0;
- pSECPort->portDefinition.format.video.nSliceHeight = 0;
- pSECPort->portDefinition.format.video.nBitrate = 64000;
- pSECPort->portDefinition.format.video.xFramerate = (15 << 16);
- pSECPort->portDefinition.format.video.eColorFormat = OMX_COLOR_FormatUnused;
- pSECPort->portDefinition.format.video.pNativeWindow = NULL;
-
- /* Output port */
- pSECPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
- pSECPort->portDefinition.nBufferCountActual = MAX_VIDEO_OUTPUTBUFFER_NUM;
- pSECPort->portDefinition.nBufferCountMin = MAX_VIDEO_OUTPUTBUFFER_NUM;
- pSECPort->portDefinition.nBufferSize = DEFAULT_VIDEO_OUTPUT_BUFFER_SIZE;
- pSECPort->portDefinition.eDomain = OMX_PortDomainVideo;
-
- pSECPort->portDefinition.format.video.cMIMEType = SEC_OSAL_Malloc(MAX_OMX_MIMETYPE_SIZE);
- SEC_OSAL_Strcpy(pSECPort->portDefinition.format.video.cMIMEType, "raw/video");
- pSECPort->portDefinition.format.video.pNativeRender = 0;
- pSECPort->portDefinition.format.video.bFlagErrorConcealment = OMX_FALSE;
- pSECPort->portDefinition.format.video.eCompressionFormat = OMX_VIDEO_CodingUnused;
-
- pSECPort->portDefinition.format.video.nFrameWidth = 0;
- pSECPort->portDefinition.format.video.nFrameHeight= 0;
- pSECPort->portDefinition.format.video.nStride = 0;
- pSECPort->portDefinition.format.video.nSliceHeight = 0;
- pSECPort->portDefinition.format.video.nBitrate = 64000;
- pSECPort->portDefinition.format.video.xFramerate = (15 << 16);
- pSECPort->portDefinition.format.video.eColorFormat = OMX_COLOR_FormatUnused;
- pSECPort->portDefinition.format.video.pNativeWindow = NULL;
-
- pOMXComponent->UseBuffer = &SEC_OMX_UseBuffer;
- pOMXComponent->AllocateBuffer = &SEC_OMX_AllocateBuffer;
- pOMXComponent->FreeBuffer = &SEC_OMX_FreeBuffer;
- pOMXComponent->ComponentTunnelRequest = &SEC_OMX_ComponentTunnelRequest;
-
- pSECComponent->sec_AllocateTunnelBuffer = &SEC_OMX_AllocateTunnelBuffer;
- pSECComponent->sec_FreeTunnelBuffer = &SEC_OMX_FreeTunnelBuffer;
- pSECComponent->sec_BufferProcess = &SEC_OMX_BufferProcess;
- pSECComponent->sec_BufferReset = &SEC_BufferReset;
- pSECComponent->sec_InputBufferReturn = &SEC_InputBufferReturn;
- pSECComponent->sec_OutputBufferReturn = &SEC_OutputBufferReturn;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_VideoEncodeComponentDeinit(OMX_IN OMX_HANDLETYPE hComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- int i = 0;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- for(i = 0; i < ALL_PORT_NUM; i++) {
- pSECPort = &pSECComponent->pSECPort[i];
- SEC_OSAL_Free(pSECPort->portDefinition.format.video.cMIMEType);
- pSECPort->portDefinition.format.video.cMIMEType = NULL;
- }
-
- ret = SEC_OMX_Port_Destructor(pOMXComponent);
-
- ret = SEC_OMX_BaseComponent_Destructor(hComponent);
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
diff --git a/sec_mm/sec_omx/sec_omx_component/video/enc/SEC_OMX_Venc.h b/sec_mm/sec_omx/sec_omx_component/video/enc/SEC_OMX_Venc.h
deleted file mode 100644
index ac24e10..0000000
--- a/sec_mm/sec_omx/sec_omx_component/video/enc/SEC_OMX_Venc.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OMX_Venc.h
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * Yunji Kim (yunji.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#ifndef SEC_OMX_VIDEO_ENCODE
-#define SEC_OMX_VIDEO_ENCODE
-
-#include "OMX_Component.h"
-#include "SEC_OMX_Def.h"
-#include "SEC_OSAL_Queue.h"
-#include "SEC_OMX_Baseport.h"
-
-#define MAX_VIDEO_INPUTBUFFER_NUM 5
-#define MAX_VIDEO_OUTPUTBUFFER_NUM 4
-
-#define DEFAULT_FRAME_WIDTH 176
-#define DEFAULT_FRAME_HEIGHT 144
-
-#define DEFAULT_VIDEO_INPUT_BUFFER_SIZE ALIGN_TO_8KB(ALIGN_TO_128B(DEFAULT_FRAME_WIDTH) * ALIGN_TO_32B(DEFAULT_FRAME_HEIGHT)) \
- + ALIGN_TO_8KB(ALIGN_TO_128B(DEFAULT_FRAME_WIDTH) * ALIGN_TO_32B(DEFAULT_FRAME_HEIGHT / 2))
- /* (DEFAULT_FRAME_WIDTH * DEFAULT_FRAME_HEIGHT * 3) / 2 */
-#define DEFAULT_VIDEO_OUTPUT_BUFFER_SIZE DEFAULT_VIDEO_INPUT_BUFFER_SIZE
-
-#define MFC_INPUT_BUFFER_NUM_MAX 2
-
-#ifdef USE_ANDROID_EXTENSION
-#define INPUT_PORT_SUPPORTFORMAT_NUM_MAX 4
-#else
-#define INPUT_PORT_SUPPORTFORMAT_NUM_MAX 3
-#endif
-#define OUTPUT_PORT_SUPPORTFORMAT_NUM_MAX 1
-
-#ifdef USE_ANDROID_EXTENSION
-// The largest metadata buffer size advertised
-// when metadata buffer mode is used for video encoding
-#define MAX_INPUT_METADATA_BUFFER_SIZE (64)
-#endif
-
-typedef struct
-{
- void *pAddrY;
- void *pAddrC;
-} MFC_ENC_ADDR_INFO;
-
-typedef struct _SEC_MFC_NBENC_THREAD
-{
- OMX_HANDLETYPE hNBEncodeThread;
- OMX_HANDLETYPE hEncFrameStart;
- OMX_HANDLETYPE hEncFrameEnd;
- OMX_BOOL bExitEncodeThread;
- OMX_BOOL bEncoderRun;
-} SEC_MFC_NBENC_THREAD;
-
-typedef struct _MFC_ENC_INPUT_BUFFER
-{
- void *YPhyAddr; // physical address of Y
- void *CPhyAddr; // physical address of CbCr
- void *YVirAddr; // virtual address of Y
- void *CVirAddr; // virtual address of CbCr
- int YBufferSize; // input buffer alloc size of Y
- int CBufferSize; // input buffer alloc size of CbCr
- int YDataSize; // input size of Y data
- int CDataSize; // input size of CbCr data
-} MFC_ENC_INPUT_BUFFER;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-OMX_ERRORTYPE SEC_OMX_UseBuffer(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_INOUT OMX_BUFFERHEADERTYPE **ppBufferHdr,
- OMX_IN OMX_U32 nPortIndex,
- OMX_IN OMX_PTR pAppPrivate,
- OMX_IN OMX_U32 nSizeBytes,
- OMX_IN OMX_U8 *pBuffer);
-OMX_ERRORTYPE SEC_OMX_AllocateBuffer(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_INOUT OMX_BUFFERHEADERTYPE **ppBuffer,
- OMX_IN OMX_U32 nPortIndex,
- OMX_IN OMX_PTR pAppPrivate,
- OMX_IN OMX_U32 nSizeBytes);
-OMX_ERRORTYPE SEC_OMX_FreeBuffer(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_U32 nPortIndex,
- OMX_IN OMX_BUFFERHEADERTYPE *pBufferHdr);
-OMX_ERRORTYPE SEC_OMX_AllocateTunnelBuffer(
- SEC_OMX_BASEPORT *pOMXBasePort,
- OMX_U32 nPortIndex);
-OMX_ERRORTYPE SEC_OMX_FreeTunnelBuffer(
- SEC_OMX_BASEPORT *pOMXBasePort,
- OMX_U32 nPortIndex);
-OMX_ERRORTYPE SEC_OMX_ComponentTunnelRequest(
- OMX_IN OMX_HANDLETYPE hComp,
- OMX_IN OMX_U32 nPort,
- OMX_IN OMX_HANDLETYPE hTunneledComp,
- OMX_IN OMX_U32 nTunneledPort,
- OMX_INOUT OMX_TUNNELSETUPTYPE *pTunnelSetup);
-OMX_ERRORTYPE SEC_OMX_BufferProcess(OMX_HANDLETYPE hComponent);
-OMX_ERRORTYPE SEC_OMX_VideoEncodeGetParameter(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_INDEXTYPE nParamIndex,
- OMX_INOUT OMX_PTR ComponentParameterStructure);
-OMX_ERRORTYPE SEC_OMX_VideoEncodeSetParameter(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_INDEXTYPE nIndex,
- OMX_IN OMX_PTR ComponentParameterStructure);
-OMX_ERRORTYPE SEC_OMX_VideoEncodeComponentDeinit(OMX_IN OMX_HANDLETYPE hComponent);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/sec_mm/sec_omx/sec_omx_component/video/enc/h264enc/Android.mk b/sec_mm/sec_omx/sec_omx_component/video/enc/h264enc/Android.mk
deleted file mode 100644
index 4157e31..0000000
--- a/sec_mm/sec_omx/sec_omx_component/video/enc/h264enc/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := \
- SEC_OMX_H264enc.c \
- library_register.c
-
-
-LOCAL_MODULE := libOMX.SEC.AVC.Encoder.aries
-
-LOCAL_CFLAGS :=
-
-LOCAL_ARM_MODE := arm
-
-LOCAL_STATIC_LIBRARIES := libSEC_OMX_Venc.aries libsecosal.aries libsecbasecomponent.aries \
- libsecmfcencapi.aries libseccsc.aries
-LOCAL_SHARED_LIBRARIES := libc libdl libcutils libutils libui libhardware
-
-LOCAL_C_INCLUDES := $(SEC_OMX_INC)/khronos \
- $(SEC_OMX_INC)/sec \
- $(SEC_OMX_TOP)/sec_osal \
- $(SEC_OMX_TOP)/sec_omx_core \
- $(SEC_OMX_COMPONENT)/common \
- $(SEC_OMX_COMPONENT)/video/enc
-
-LOCAL_C_INCLUDES += $(SEC_OMX_TOP)/sec_codecs/video/mfc_c110/include
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/sec_mm/sec_omx/sec_omx_component/video/enc/h264enc/SEC_OMX_H264enc.c b/sec_mm/sec_omx/sec_omx_component/video/enc/h264enc/SEC_OMX_H264enc.c
deleted file mode 100644
index 24bbc7a..0000000
--- a/sec_mm/sec_omx/sec_omx_component/video/enc/h264enc/SEC_OMX_H264enc.c
+++ /dev/null
@@ -1,1307 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OMX_H264enc.c
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "SEC_OMX_Macros.h"
-#include "SEC_OMX_Basecomponent.h"
-#include "SEC_OMX_Baseport.h"
-#include "SEC_OMX_Venc.h"
-#include "library_register.h"
-#include "SEC_OMX_H264enc.h"
-#include "SsbSipMfcApi.h"
-#include "color_space_convertor.h"
-
-#undef SEC_LOG_TAG
-#define SEC_LOG_TAG "SEC_H264_ENC"
-#define SEC_LOG_OFF
-#include "SEC_OSAL_Log.h"
-
-
-/* H.264 Encoder Supported Levels & profiles */
-SEC_OMX_VIDEO_PROFILELEVEL supportedAVCProfileLevels[] ={
- {OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel1},
- {OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel1b},
- {OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel11},
- {OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel12},
- {OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel13},
- {OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel2},
- {OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel21},
- {OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel22},
- {OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel3},
- {OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel31},
- {OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel32},
- {OMX_VIDEO_AVCProfileBaseline, OMX_VIDEO_AVCLevel4},
-
- {OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel1},
- {OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel1b},
- {OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel11},
- {OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel12},
- {OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel13},
- {OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel2},
- {OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel21},
- {OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel22},
- {OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel3},
- {OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel31},
- {OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel32},
- {OMX_VIDEO_AVCProfileMain, OMX_VIDEO_AVCLevel4},
-
- {OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel1},
- {OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel1b},
- {OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel11},
- {OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel12},
- {OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel13},
- {OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel2},
- {OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel21},
- {OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel22},
- {OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel3},
- {OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel31},
- {OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel32},
- {OMX_VIDEO_AVCProfileHigh, OMX_VIDEO_AVCLevel4}};
-
-
-OMX_U32 OMXAVCProfileToProfileIDC(OMX_VIDEO_AVCPROFILETYPE profile)
-{
- OMX_U32 ret = 0; //default OMX_VIDEO_AVCProfileMain
-
- if (profile == OMX_VIDEO_AVCProfileMain)
- ret = 0;
- else if (profile == OMX_VIDEO_AVCProfileHigh)
- ret = 1;
- else if (profile == OMX_VIDEO_AVCProfileBaseline)
- ret = 2;
-
- return ret;
-}
-
-OMX_U32 OMXAVCLevelToLevelIDC(OMX_VIDEO_AVCLEVELTYPE level)
-{
- OMX_U32 ret = 40; //default OMX_VIDEO_AVCLevel4
-
- if (level == OMX_VIDEO_AVCLevel1)
- ret = 10;
- else if (level == OMX_VIDEO_AVCLevel1b)
- ret = 9;
- else if (level == OMX_VIDEO_AVCLevel11)
- ret = 11;
- else if (level == OMX_VIDEO_AVCLevel12)
- ret = 12;
- else if (level == OMX_VIDEO_AVCLevel13)
- ret = 13;
- else if (level == OMX_VIDEO_AVCLevel2)
- ret = 20;
- else if (level == OMX_VIDEO_AVCLevel21)
- ret = 21;
- else if (level == OMX_VIDEO_AVCLevel22)
- ret = 22;
- else if (level == OMX_VIDEO_AVCLevel3)
- ret = 30;
- else if (level == OMX_VIDEO_AVCLevel31)
- ret = 31;
- else if (level == OMX_VIDEO_AVCLevel32)
- ret = 32;
- else if (level == OMX_VIDEO_AVCLevel4)
- ret = 40;
-
- return ret;
-}
-
-OMX_U8 *FindDelimiter(OMX_U8 *pBuffer, OMX_U32 size)
-{
- int i;
-
- for (i = 0; i < size - 3; i++) {
- if ((pBuffer[i] == 0x00) &&
- (pBuffer[i+1] == 0x00) &&
- (pBuffer[i+2] == 0x00) &&
- (pBuffer[i+3] == 0x01))
- return (pBuffer + i);
- }
-
- return NULL;
-}
-
-void H264PrintParams(SSBSIP_MFC_ENC_H264_PARAM h264Arg)
-{
- SEC_OSAL_Log(SEC_LOG_TRACE, "SourceWidth : %d\n", h264Arg.SourceWidth);
- SEC_OSAL_Log(SEC_LOG_TRACE, "SourceHeight : %d\n", h264Arg.SourceHeight);
- SEC_OSAL_Log(SEC_LOG_TRACE, "ProfileIDC : %d\n", h264Arg.ProfileIDC);
- SEC_OSAL_Log(SEC_LOG_TRACE, "LevelIDC : %d\n", h264Arg.LevelIDC);
- SEC_OSAL_Log(SEC_LOG_TRACE, "IDRPeriod : %d\n", h264Arg.IDRPeriod);
- SEC_OSAL_Log(SEC_LOG_TRACE, "NumberReferenceFrames : %d\n", h264Arg.NumberReferenceFrames);
- SEC_OSAL_Log(SEC_LOG_TRACE, "NumberRefForPframes : %d\n", h264Arg.NumberRefForPframes);
- SEC_OSAL_Log(SEC_LOG_TRACE, "SliceMode : %d\n", h264Arg.SliceMode);
- SEC_OSAL_Log(SEC_LOG_TRACE, "SliceArgument : %d\n", h264Arg.SliceArgument);
- SEC_OSAL_Log(SEC_LOG_TRACE, "NumberBFrames : %d\n", h264Arg.NumberBFrames);
- SEC_OSAL_Log(SEC_LOG_TRACE, "LoopFilterDisable : %d\n", h264Arg.LoopFilterDisable);
- SEC_OSAL_Log(SEC_LOG_TRACE, "LoopFilterAlphaC0Offset : %d\n", h264Arg.LoopFilterAlphaC0Offset);
- SEC_OSAL_Log(SEC_LOG_TRACE, "LoopFilterBetaOffset : %d\n", h264Arg.LoopFilterBetaOffset);
- SEC_OSAL_Log(SEC_LOG_TRACE, "SymbolMode : %d\n", h264Arg.SymbolMode);
- SEC_OSAL_Log(SEC_LOG_TRACE, "PictureInterlace : %d\n", h264Arg.PictureInterlace);
- SEC_OSAL_Log(SEC_LOG_TRACE, "Transform8x8Mode : %d\n", h264Arg.Transform8x8Mode);
- SEC_OSAL_Log(SEC_LOG_TRACE, "RandomIntraMBRefresh : %d\n", h264Arg.RandomIntraMBRefresh);
- SEC_OSAL_Log(SEC_LOG_TRACE, "PadControlOn : %d\n", h264Arg.PadControlOn);
- SEC_OSAL_Log(SEC_LOG_TRACE, "LumaPadVal : %d\n", h264Arg.LumaPadVal);
- SEC_OSAL_Log(SEC_LOG_TRACE, "CbPadVal : %d\n", h264Arg.CbPadVal);
- SEC_OSAL_Log(SEC_LOG_TRACE, "CrPadVal : %d\n", h264Arg.CrPadVal);
- SEC_OSAL_Log(SEC_LOG_TRACE, "EnableFRMRateControl : %d\n", h264Arg.EnableFRMRateControl);
- SEC_OSAL_Log(SEC_LOG_TRACE, "EnableMBRateControl : %d\n", h264Arg.EnableMBRateControl);
- SEC_OSAL_Log(SEC_LOG_TRACE, "FrameRate : %d\n", h264Arg.FrameRate);
- SEC_OSAL_Log(SEC_LOG_TRACE, "Bitrate : %d\n", h264Arg.Bitrate);
- SEC_OSAL_Log(SEC_LOG_TRACE, "FrameQp : %d\n", h264Arg.FrameQp);
- SEC_OSAL_Log(SEC_LOG_TRACE, "QSCodeMax : %d\n", h264Arg.QSCodeMax);
- SEC_OSAL_Log(SEC_LOG_TRACE, "QSCodeMin : %d\n", h264Arg.QSCodeMin);
- SEC_OSAL_Log(SEC_LOG_TRACE, "CBRPeriodRf : %d\n", h264Arg.CBRPeriodRf);
- SEC_OSAL_Log(SEC_LOG_TRACE, "DarkDisable : %d\n", h264Arg.DarkDisable);
- SEC_OSAL_Log(SEC_LOG_TRACE, "SmoothDisable : %d\n", h264Arg.SmoothDisable);
- SEC_OSAL_Log(SEC_LOG_TRACE, "StaticDisable : %d\n", h264Arg.StaticDisable);
- SEC_OSAL_Log(SEC_LOG_TRACE, "ActivityDisable : %d\n", h264Arg.ActivityDisable);
-}
-
-void Set_H264ENC_Param(SSBSIP_MFC_ENC_H264_PARAM *pH264Arg, SEC_OMX_BASECOMPONENT *pSECComponent)
-{
- SEC_OMX_BASEPORT *pSECInputPort = NULL;
- SEC_OMX_BASEPORT *pSECOutputPort = NULL;
- SEC_H264ENC_HANDLE *pH264Enc = NULL;
-
- pH264Enc = (SEC_H264ENC_HANDLE *)pSECComponent->hCodecHandle;
- pSECInputPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- pSECOutputPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
-
- pH264Arg->codecType = H264_ENC;
- pH264Arg->SourceWidth = pSECOutputPort->portDefinition.format.video.nFrameWidth;
- pH264Arg->SourceHeight = pSECOutputPort->portDefinition.format.video.nFrameHeight;
- pH264Arg->IDRPeriod = pH264Enc->AVCComponent[OUTPUT_PORT_INDEX].nPFrames + 1;
- pH264Arg->SliceMode = 0;
- pH264Arg->RandomIntraMBRefresh = 0;
- pH264Arg->EnableFRMRateControl = 1; // 0: Disable, 1: Frame level RC
- pH264Arg->Bitrate = pSECOutputPort->portDefinition.format.video.nBitrate;
- pH264Arg->FrameQp = 20;
- pH264Arg->FrameQp_P = 20;
- pH264Arg->QSCodeMax = 30;
- pH264Arg->QSCodeMin = 10;
- pH264Arg->CBRPeriodRf = 100;
- pH264Arg->PadControlOn = 0; // 0: disable, 1: enable
- pH264Arg->LumaPadVal = 0;
- pH264Arg->CbPadVal = 0;
- pH264Arg->CrPadVal = 0;
-
- pH264Arg->ProfileIDC = OMXAVCProfileToProfileIDC(pH264Enc->AVCComponent[OUTPUT_PORT_INDEX].eProfile); //0; //(OMX_VIDEO_AVCProfileMain)
- pH264Arg->LevelIDC = OMXAVCLevelToLevelIDC(pH264Enc->AVCComponent[OUTPUT_PORT_INDEX].eLevel); //40; //(OMX_VIDEO_AVCLevel4)
- pH264Arg->FrameQp_B = 20;
- pH264Arg->FrameRate = (pSECInputPort->portDefinition.format.video.xFramerate) >> 16;
- pH264Arg->SliceArgument = 0; // Slice mb/byte size number
- pH264Arg->NumberBFrames = 0; // 0 ~ 2
- pH264Arg->NumberReferenceFrames = 1;
- pH264Arg->NumberRefForPframes = 1;
- pH264Arg->LoopFilterDisable = 1; // 1: Loop Filter Disable, 0: Filter Enable
- pH264Arg->LoopFilterAlphaC0Offset = 0;
- pH264Arg->LoopFilterBetaOffset = 0;
- pH264Arg->SymbolMode = 0; // 0: CAVLC, 1: CABAC
- pH264Arg->PictureInterlace = 0;
- pH264Arg->Transform8x8Mode = 0; // 0: 4x4, 1: allow 8x8
- pH264Arg->EnableMBRateControl = 0; // 0: Disable, 1:MB level RC
- pH264Arg->DarkDisable = 1;
- pH264Arg->SmoothDisable = 1;
- pH264Arg->StaticDisable = 1;
- pH264Arg->ActivityDisable = 1;
-
- switch ((SEC_OMX_COLOR_FORMATTYPE)pSECInputPort->portDefinition.format.video.eColorFormat) {
- case OMX_COLOR_FormatYUV420SemiPlanar:
- pH264Arg->FrameMap = NV12_LINEAR;
- break;
- case OMX_SEC_COLOR_FormatNV12TPhysicalAddress:
- default:
- pH264Arg->FrameMap = NV12_TILE;
- break;
- }
-
-#ifdef USE_ANDROID_EXTENSION
- if (pSECInputPort->bStoreMetaDataInBuffer != OMX_FALSE) {
- SEC_OMX_DATA *pInputData = &pSECComponent->processData[INPUT_PORT_INDEX];
- if(isMetadataBufferTypeGrallocSource(pInputData->dataBuffer) == OMX_TRUE)
- pH264Arg->FrameMap = NV12_LINEAR;
- else
- pH264Arg->FrameMap = NV12_TILE;
- }
-#endif
-
-/*
- SEC_OSAL_Log(SEC_LOG_TRACE, "pSECPort->eControlRate: 0x%x", pSECOutputPort->eControlRate);
- switch (pSECOutputPort->eControlRate) {
- case OMX_Video_ControlRateVariable:
- SEC_OSAL_Log(SEC_LOG_TRACE, "Video Encode VBR");
- pH264Arg->EnableFRMRateControl = 0; // 0: Disable, 1: Frame level RC
- pH264Arg->EnableMBRateControl = 0; // 0: Disable, 1:MB level RC
- pH264Arg->CBRPeriodRf = 100;
- break;
- case OMX_Video_ControlRateConstant:
- SEC_OSAL_Log(SEC_LOG_TRACE, "Video Encode CBR");
- pH264Arg->EnableFRMRateControl = 1; // 0: Disable, 1: Frame level RC
- pH264Arg->EnableMBRateControl = 1; // 0: Disable, 1:MB level RC
- pH264Arg->CBRPeriodRf = 10;
- break;
- case OMX_Video_ControlRateDisable:
- default: //Android default
- SEC_OSAL_Log(SEC_LOG_TRACE, "Video Encode VBR");
- pH264Arg->EnableFRMRateControl = 0;
- pH264Arg->EnableMBRateControl = 0;
- pH264Arg->CBRPeriodRf = 100;
- break;
- }
-*/
- H264PrintParams(*pH264Arg);
-}
-
-OMX_ERRORTYPE SEC_MFC_H264Enc_GetParameter(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_INDEXTYPE nParamIndex,
- OMX_INOUT OMX_PTR pComponentParameterStructure)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL || pComponentParameterStructure == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- if (pSECComponent->currentState == OMX_StateInvalid ) {
- ret = OMX_StateInvalid;
- goto EXIT;
- }
-
- switch (nParamIndex) {
- case OMX_IndexParamVideoAvc:
- {
- OMX_VIDEO_PARAM_AVCTYPE *pDstAVCComponent = (OMX_VIDEO_PARAM_AVCTYPE *)pComponentParameterStructure;
- OMX_VIDEO_PARAM_AVCTYPE *pSrcAVCComponent = NULL;
- SEC_H264ENC_HANDLE *pH264Enc = NULL;
-
- ret = SEC_OMX_Check_SizeVersion(pDstAVCComponent, sizeof(OMX_VIDEO_PARAM_AVCTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pDstAVCComponent->nPortIndex >= ALL_PORT_NUM) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- pH264Enc = (SEC_H264ENC_HANDLE *)pSECComponent->hCodecHandle;
- pSrcAVCComponent = &pH264Enc->AVCComponent[pDstAVCComponent->nPortIndex];
-
- SEC_OSAL_Memcpy(pDstAVCComponent, pSrcAVCComponent, sizeof(OMX_VIDEO_PARAM_AVCTYPE));
- }
- break;
- case OMX_IndexParamStandardComponentRole:
- {
- OMX_PARAM_COMPONENTROLETYPE *pComponentRole = (OMX_PARAM_COMPONENTROLETYPE *)pComponentParameterStructure;
- ret = SEC_OMX_Check_SizeVersion(pComponentRole, sizeof(OMX_PARAM_COMPONENTROLETYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- SEC_OSAL_Strcpy((char *)pComponentRole->cRole, SEC_OMX_COMPONENT_H264_ENC_ROLE);
- }
- break;
- case OMX_IndexParamVideoProfileLevelQuerySupported:
- {
- OMX_VIDEO_PARAM_PROFILELEVELTYPE *pDstProfileLevel = (OMX_VIDEO_PARAM_PROFILELEVELTYPE*)pComponentParameterStructure;
- SEC_OMX_VIDEO_PROFILELEVEL *pProfileLevel = NULL;
- OMX_U32 maxProfileLevelNum = 0;
-
- ret = SEC_OMX_Check_SizeVersion(pDstProfileLevel, sizeof(OMX_VIDEO_PARAM_PROFILELEVELTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pDstProfileLevel->nPortIndex >= ALL_PORT_NUM) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- pProfileLevel = supportedAVCProfileLevels;
- maxProfileLevelNum = sizeof(supportedAVCProfileLevels) / sizeof(SEC_OMX_VIDEO_PROFILELEVEL);
-
- if (pDstProfileLevel->nProfileIndex >= maxProfileLevelNum) {
- ret = OMX_ErrorNoMore;
- goto EXIT;
- }
-
- pProfileLevel += pDstProfileLevel->nProfileIndex;
- pDstProfileLevel->eProfile = pProfileLevel->profile;
- pDstProfileLevel->eLevel = pProfileLevel->level;
- }
- break;
- case OMX_IndexParamVideoProfileLevelCurrent:
- {
- OMX_VIDEO_PARAM_PROFILELEVELTYPE *pDstProfileLevel = (OMX_VIDEO_PARAM_PROFILELEVELTYPE*)pComponentParameterStructure;
- OMX_VIDEO_PARAM_AVCTYPE *pSrcAVCComponent = NULL;
- SEC_H264ENC_HANDLE *pH264Enc = NULL;
-
- ret = SEC_OMX_Check_SizeVersion(pDstProfileLevel, sizeof(OMX_VIDEO_PARAM_PROFILELEVELTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pDstProfileLevel->nPortIndex >= ALL_PORT_NUM) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- pH264Enc = (SEC_H264ENC_HANDLE *)pSECComponent->hCodecHandle;
- pSrcAVCComponent = &pH264Enc->AVCComponent[pDstProfileLevel->nPortIndex];
-
- pDstProfileLevel->eProfile = pSrcAVCComponent->eProfile;
- pDstProfileLevel->eLevel = pSrcAVCComponent->eLevel;
- }
- break;
- case OMX_IndexParamVideoErrorCorrection:
- {
- OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE *pDstErrorCorrectionType = (OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE *)pComponentParameterStructure;
- OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE *pSrcErrorCorrectionType = NULL;
- SEC_H264ENC_HANDLE *pH264Enc = NULL;
-
- ret = SEC_OMX_Check_SizeVersion(pDstErrorCorrectionType, sizeof(OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pDstErrorCorrectionType->nPortIndex != OUTPUT_PORT_INDEX) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- pH264Enc = (SEC_H264ENC_HANDLE *)pSECComponent->hCodecHandle;
- pSrcErrorCorrectionType = &pH264Enc->errorCorrectionType[OUTPUT_PORT_INDEX];
-
- pDstErrorCorrectionType->bEnableHEC = pSrcErrorCorrectionType->bEnableHEC;
- pDstErrorCorrectionType->bEnableResync = pSrcErrorCorrectionType->bEnableResync;
- pDstErrorCorrectionType->nResynchMarkerSpacing = pSrcErrorCorrectionType->nResynchMarkerSpacing;
- pDstErrorCorrectionType->bEnableDataPartitioning = pSrcErrorCorrectionType->bEnableDataPartitioning;
- pDstErrorCorrectionType->bEnableRVLC = pSrcErrorCorrectionType->bEnableRVLC;
- }
- break;
- default:
- ret = SEC_OMX_VideoEncodeGetParameter(hComponent, nParamIndex, pComponentParameterStructure);
- break;
- }
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_MFC_H264Enc_SetParameter(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_INDEXTYPE nIndex,
- OMX_IN OMX_PTR pComponentParameterStructure)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL || pComponentParameterStructure == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- if (pSECComponent->currentState == OMX_StateInvalid ) {
- ret = OMX_StateInvalid;
- goto EXIT;
- }
-
- switch (nIndex) {
- case OMX_IndexParamVideoAvc:
- {
- OMX_VIDEO_PARAM_AVCTYPE *pDstAVCComponent = NULL;
- OMX_VIDEO_PARAM_AVCTYPE *pSrcAVCComponent = (OMX_VIDEO_PARAM_AVCTYPE *)pComponentParameterStructure;
- SEC_H264ENC_HANDLE *pH264Enc = NULL;
-
- ret = SEC_OMX_Check_SizeVersion(pSrcAVCComponent, sizeof(OMX_VIDEO_PARAM_AVCTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pSrcAVCComponent->nPortIndex >= ALL_PORT_NUM) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- pH264Enc = (SEC_H264ENC_HANDLE *)pSECComponent->hCodecHandle;
- pDstAVCComponent = &pH264Enc->AVCComponent[pSrcAVCComponent->nPortIndex];
-
- SEC_OSAL_Memcpy(pDstAVCComponent, pSrcAVCComponent, sizeof(OMX_VIDEO_PARAM_AVCTYPE));
- }
- break;
- case OMX_IndexParamStandardComponentRole:
- {
- OMX_PARAM_COMPONENTROLETYPE *pComponentRole = (OMX_PARAM_COMPONENTROLETYPE*)pComponentParameterStructure;
-
- ret = SEC_OMX_Check_SizeVersion(pComponentRole, sizeof(OMX_PARAM_COMPONENTROLETYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if ((pSECComponent->currentState != OMX_StateLoaded) && (pSECComponent->currentState != OMX_StateWaitForResources)) {
- ret = OMX_ErrorIncorrectStateOperation;
- goto EXIT;
- }
-
- if (!SEC_OSAL_Strcmp((char*)pComponentRole->cRole, SEC_OMX_COMPONENT_H264_ENC_ROLE)) {
- pSECComponent->pSECPort[OUTPUT_PORT_INDEX].portDefinition.format.video.eCompressionFormat = OMX_VIDEO_CodingAVC;
- } else {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- }
- break;
- case OMX_IndexParamVideoProfileLevelCurrent:
- {
- OMX_VIDEO_PARAM_PROFILELEVELTYPE *pSrcProfileLevel = (OMX_VIDEO_PARAM_PROFILELEVELTYPE *)pComponentParameterStructure;
- OMX_VIDEO_PARAM_AVCTYPE *pDstAVCComponent = NULL;
- SEC_H264ENC_HANDLE *pH264Enc = NULL;
-
- ret = SEC_OMX_Check_SizeVersion(pSrcProfileLevel, sizeof(OMX_VIDEO_PARAM_PROFILELEVELTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pSrcProfileLevel->nPortIndex >= ALL_PORT_NUM) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- pH264Enc = (SEC_H264ENC_HANDLE *)pSECComponent->hCodecHandle;
-
- pDstAVCComponent = &pH264Enc->AVCComponent[pSrcProfileLevel->nPortIndex];
- pDstAVCComponent->eProfile = pSrcProfileLevel->eProfile;
- pDstAVCComponent->eLevel = pSrcProfileLevel->eLevel;
- }
- break;
- case OMX_IndexParamVideoErrorCorrection:
- {
- OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE *pSrcErrorCorrectionType = (OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE *)pComponentParameterStructure;
- OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE *pDstErrorCorrectionType = NULL;
- SEC_H264ENC_HANDLE *pH264Enc = NULL;
-
- ret = SEC_OMX_Check_SizeVersion(pSrcErrorCorrectionType, sizeof(OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pSrcErrorCorrectionType->nPortIndex != OUTPUT_PORT_INDEX) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- pH264Enc = (SEC_H264ENC_HANDLE *)pSECComponent->hCodecHandle;
- pDstErrorCorrectionType = &pH264Enc->errorCorrectionType[OUTPUT_PORT_INDEX];
-
- pDstErrorCorrectionType->bEnableHEC = pSrcErrorCorrectionType->bEnableHEC;
- pDstErrorCorrectionType->bEnableResync = pSrcErrorCorrectionType->bEnableResync;
- pDstErrorCorrectionType->nResynchMarkerSpacing = pSrcErrorCorrectionType->nResynchMarkerSpacing;
- pDstErrorCorrectionType->bEnableDataPartitioning = pSrcErrorCorrectionType->bEnableDataPartitioning;
- pDstErrorCorrectionType->bEnableRVLC = pSrcErrorCorrectionType->bEnableRVLC;
- }
- break;
- default:
- ret = SEC_OMX_VideoEncodeSetParameter(hComponent, nIndex, pComponentParameterStructure);
- break;
- }
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_MFC_H264Enc_GetConfig(
- OMX_HANDLETYPE hComponent,
- OMX_INDEXTYPE nIndex,
- OMX_PTR pComponentConfigStructure)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- if (pComponentConfigStructure == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- if (pSECComponent->currentState == OMX_StateInvalid) {
- ret = OMX_ErrorInvalidState;
- goto EXIT;
- }
-
- switch (nIndex) {
- default:
- ret = SEC_OMX_GetConfig(hComponent, nIndex, pComponentConfigStructure);
- break;
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_MFC_H264Enc_SetConfig(
- OMX_HANDLETYPE hComponent,
- OMX_INDEXTYPE nIndex,
- OMX_PTR pComponentConfigStructure)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL || pComponentConfigStructure == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- if (pSECComponent->currentState == OMX_StateInvalid) {
- ret = OMX_ErrorInvalidState;
- goto EXIT;
- }
-
- switch (nIndex) {
- default:
- ret = SEC_OMX_SetConfig(hComponent, nIndex, pComponentConfigStructure);
- break;
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_MFC_H264Enc_GetExtensionIndex(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_STRING cParameterName,
- OMX_OUT OMX_INDEXTYPE *pIndexType)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- if ((cParameterName == NULL) || (pIndexType == NULL)) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- if (pSECComponent->currentState == OMX_StateInvalid) {
- ret = OMX_ErrorInvalidState;
- goto EXIT;
- }
-
-#ifdef USE_ANDROID_EXTENSION
- if (SEC_OSAL_Strcmp(cParameterName, SEC_INDEX_PARAM_STORE_METADATA_BUFFER) == 0) {
- *pIndexType = OMX_IndexParamStoreMetaDataBuffer;
- ret = OMX_ErrorNone;
- } else {
- ret = SEC_OMX_GetExtensionIndex(hComponent, cParameterName, pIndexType);
- }
-#else
- ret = SEC_OMX_GetExtensionIndex(hComponent, cParameterName, pIndexType);
-#endif
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_MFC_H264Enc_ComponentRoleEnum(OMX_HANDLETYPE hComponent, OMX_U8 *cRole, OMX_U32 nIndex)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- FunctionIn();
-
- if ((hComponent == NULL) || (cRole == NULL)) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- if (nIndex == (MAX_COMPONENT_ROLE_NUM-1)) {
- SEC_OSAL_Strcpy((char *)cRole, SEC_OMX_COMPONENT_H264_ENC_ROLE);
- ret = OMX_ErrorNone;
- } else {
- ret = OMX_ErrorNoMore;
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_MFC_EncodeThread(OMX_HANDLETYPE hComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_H264ENC_HANDLE *pH264Enc = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- pH264Enc = (SEC_H264ENC_HANDLE *)pSECComponent->hCodecHandle;
-
- while (pH264Enc->NBEncThread.bExitEncodeThread == OMX_FALSE) {
- SEC_OSAL_SemaphoreWait(pH264Enc->NBEncThread.hEncFrameStart);
-
- if (pH264Enc->NBEncThread.bExitEncodeThread == OMX_FALSE) {
- pH264Enc->hMFCH264Handle.returnCodec = SsbSipMfcEncExe(pH264Enc->hMFCH264Handle.hMFCHandle);
- SEC_OSAL_SemaphorePost(pH264Enc->NBEncThread.hEncFrameEnd);
- }
- }
-
-EXIT:
- FunctionOut();
- SEC_OSAL_ThreadExit(NULL);
-
- return ret;
-}
-
-/* MFC Init */
-OMX_ERRORTYPE SEC_MFC_H264Enc_Init(OMX_COMPONENTTYPE *pOMXComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- SEC_OMX_BASEPORT *pSECInputPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- SEC_OMX_BASEPORT *pSECOutputPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
- SEC_H264ENC_HANDLE *pH264Enc = NULL;
- OMX_PTR hMFCHandle = NULL;
- OMX_S32 returnCodec = 0;
-
- FunctionIn();
-
- pH264Enc = (SEC_H264ENC_HANDLE *)pSECComponent->hCodecHandle;
- pH264Enc->hMFCH264Handle.bConfiguredMFC = OMX_FALSE;
- pSECComponent->bUseFlagEOF = OMX_FALSE;
- pSECComponent->bSaveFlagEOS = OMX_FALSE;
-
- /* MFC(Multi Function Codec) encoder and CMM(Codec Memory Management) driver open */
- SSBIP_MFC_BUFFER_TYPE buf_type = CACHE;
- hMFCHandle = (OMX_PTR)SsbSipMfcEncOpen(&buf_type);
- if (hMFCHandle == NULL) {
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
- pH264Enc->hMFCH264Handle.hMFCHandle = hMFCHandle;
-
- SsbSipMfcEncSetSize(hMFCHandle, H264_ENC,
- pSECOutputPort->portDefinition.format.video.nFrameWidth,
- pSECOutputPort->portDefinition.format.video.nFrameHeight);
-
- /* Allocate encoder's input buffer */
- returnCodec = SsbSipMfcEncGetInBuf(hMFCHandle, &(pH264Enc->hMFCH264Handle.inputInfo));
- if (returnCodec != MFC_RET_OK) {
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
- pH264Enc->MFCEncInputBuffer[0].YPhyAddr = pH264Enc->hMFCH264Handle.inputInfo.YPhyAddr;
- pH264Enc->MFCEncInputBuffer[0].CPhyAddr = pH264Enc->hMFCH264Handle.inputInfo.CPhyAddr;
- pH264Enc->MFCEncInputBuffer[0].YVirAddr = pH264Enc->hMFCH264Handle.inputInfo.YVirAddr;
- pH264Enc->MFCEncInputBuffer[0].CVirAddr = pH264Enc->hMFCH264Handle.inputInfo.CVirAddr;
- pH264Enc->MFCEncInputBuffer[0].YBufferSize = pH264Enc->hMFCH264Handle.inputInfo.YSize;
- pH264Enc->MFCEncInputBuffer[0].CBufferSize = pH264Enc->hMFCH264Handle.inputInfo.CSize;
- pH264Enc->MFCEncInputBuffer[0].YDataSize = 0;
- pH264Enc->MFCEncInputBuffer[0].CDataSize = 0;
- SEC_OSAL_Log(SEC_LOG_TRACE, "pH264Enc->hMFCH264Handle.inputInfo.YVirAddr : 0x%x", pH264Enc->hMFCH264Handle.inputInfo.YVirAddr);
- SEC_OSAL_Log(SEC_LOG_TRACE, "pH264Enc->hMFCH264Handle.inputInfo.CVirAddr : 0x%x", pH264Enc->hMFCH264Handle.inputInfo.CVirAddr);
-
- returnCodec = SsbSipMfcEncGetInBuf(hMFCHandle, &(pH264Enc->hMFCH264Handle.inputInfo));
- if (returnCodec != MFC_RET_OK) {
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
- pH264Enc->MFCEncInputBuffer[1].YPhyAddr = pH264Enc->hMFCH264Handle.inputInfo.YPhyAddr;
- pH264Enc->MFCEncInputBuffer[1].CPhyAddr = pH264Enc->hMFCH264Handle.inputInfo.CPhyAddr;
- pH264Enc->MFCEncInputBuffer[1].YVirAddr = pH264Enc->hMFCH264Handle.inputInfo.YVirAddr;
- pH264Enc->MFCEncInputBuffer[1].CVirAddr = pH264Enc->hMFCH264Handle.inputInfo.CVirAddr;
- pH264Enc->MFCEncInputBuffer[1].YBufferSize = pH264Enc->hMFCH264Handle.inputInfo.YSize;
- pH264Enc->MFCEncInputBuffer[1].CBufferSize = pH264Enc->hMFCH264Handle.inputInfo.CSize;
- pH264Enc->MFCEncInputBuffer[1].YDataSize = 0;
- pH264Enc->MFCEncInputBuffer[1].CDataSize = 0;
- SEC_OSAL_Log(SEC_LOG_TRACE, "pH264Enc->hMFCH264Handle.inputInfo.YVirAddr : 0x%x", pH264Enc->hMFCH264Handle.inputInfo.YVirAddr);
- SEC_OSAL_Log(SEC_LOG_TRACE, "pH264Enc->hMFCH264Handle.inputInfo.CVirAddr : 0x%x", pH264Enc->hMFCH264Handle.inputInfo.CVirAddr);
-
- pSECComponent->processData[INPUT_PORT_INDEX].specificBufferHeader.YPhyAddr = pH264Enc->MFCEncInputBuffer[0].YPhyAddr;
- pSECComponent->processData[INPUT_PORT_INDEX].specificBufferHeader.CPhyAddr = pH264Enc->MFCEncInputBuffer[0].CPhyAddr;
- pSECComponent->processData[INPUT_PORT_INDEX].specificBufferHeader.YVirAddr = pH264Enc->MFCEncInputBuffer[0].YVirAddr;
- pSECComponent->processData[INPUT_PORT_INDEX].specificBufferHeader.CVirAddr = pH264Enc->MFCEncInputBuffer[0].CVirAddr;
- pSECComponent->processData[INPUT_PORT_INDEX].specificBufferHeader.YSize = pH264Enc->MFCEncInputBuffer[0].YBufferSize;
- pSECComponent->processData[INPUT_PORT_INDEX].specificBufferHeader.CSize = pH264Enc->MFCEncInputBuffer[0].CBufferSize;
-
- pH264Enc->indexInputBuffer = 0;
- pH264Enc->bFirstFrame = OMX_TRUE;
-
- pH264Enc->NBEncThread.bExitEncodeThread = OMX_FALSE;
- pH264Enc->NBEncThread.bEncoderRun = OMX_FALSE;
- SEC_OSAL_SemaphoreCreate(&(pH264Enc->NBEncThread.hEncFrameStart));
- SEC_OSAL_SemaphoreCreate(&(pH264Enc->NBEncThread.hEncFrameEnd));
- if (OMX_ErrorNone == SEC_OSAL_ThreadCreate(&pH264Enc->NBEncThread.hNBEncodeThread,
- SEC_MFC_EncodeThread,
- pOMXComponent)) {
- pH264Enc->hMFCH264Handle.returnCodec = MFC_RET_OK;
- }
-
- SEC_OSAL_Memset(pSECComponent->timeStamp, -19771003, sizeof(OMX_TICKS) * MAX_TIMESTAMP);
- SEC_OSAL_Memset(pSECComponent->nFlags, 0, sizeof(OMX_U32) * MAX_FLAGS);
- pH264Enc->hMFCH264Handle.indexTimestamp = 0;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-/* MFC Terminate */
-OMX_ERRORTYPE SEC_MFC_H264Enc_Terminate(OMX_COMPONENTTYPE *pOMXComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- SEC_H264ENC_HANDLE *pH264Enc = NULL;
- OMX_PTR hMFCHandle = NULL;
-
- FunctionIn();
-
- pH264Enc = (SEC_H264ENC_HANDLE *)pSECComponent->hCodecHandle;
-
- if (pH264Enc->NBEncThread.hNBEncodeThread != NULL) {
- pH264Enc->NBEncThread.bExitEncodeThread = OMX_TRUE;
- SEC_OSAL_SemaphorePost(pH264Enc->NBEncThread.hEncFrameStart);
- SEC_OSAL_ThreadTerminate(pH264Enc->NBEncThread.hNBEncodeThread);
- pH264Enc->NBEncThread.hNBEncodeThread = NULL;
- }
-
- if(pH264Enc->NBEncThread.hEncFrameEnd != NULL) {
- SEC_OSAL_SemaphoreTerminate(pH264Enc->NBEncThread.hEncFrameEnd);
- pH264Enc->NBEncThread.hEncFrameEnd = NULL;
- }
-
- if(pH264Enc->NBEncThread.hEncFrameStart != NULL) {
- SEC_OSAL_SemaphoreTerminate(pH264Enc->NBEncThread.hEncFrameStart);
- pH264Enc->NBEncThread.hEncFrameStart = NULL;
- }
-
- hMFCHandle = pH264Enc->hMFCH264Handle.hMFCHandle;
- if (hMFCHandle != NULL) {
- SsbSipMfcEncClose(hMFCHandle);
- hMFCHandle = pH264Enc->hMFCH264Handle.hMFCHandle = NULL;
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_MFC_H264_Encode(OMX_COMPONENTTYPE *pOMXComponent, SEC_OMX_DATA *pInputData, SEC_OMX_DATA *pOutputData)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- SEC_H264ENC_HANDLE *pH264Enc = (SEC_H264ENC_HANDLE *)pSECComponent->hCodecHandle;
- SSBSIP_MFC_ENC_INPUT_INFO *pInputInfo = &pH264Enc->hMFCH264Handle.inputInfo;
- SSBSIP_MFC_ENC_OUTPUT_INFO outputInfo;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- MFC_ENC_ADDR_INFO addrInfo;
- OMX_U32 oneFrameSize = pInputData->dataLen;
-
- FunctionIn();
-
- if (pH264Enc->hMFCH264Handle.bConfiguredMFC == OMX_FALSE) {
- Set_H264ENC_Param(&(pH264Enc->hMFCH264Handle.mfcVideoAvc), pSECComponent);
- pH264Enc->hMFCH264Handle.returnCodec = SsbSipMfcEncInit(pH264Enc->hMFCH264Handle.hMFCHandle, &(pH264Enc->hMFCH264Handle.mfcVideoAvc));
- if (pH264Enc->hMFCH264Handle.returnCodec != MFC_RET_OK) {
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
-
- pH264Enc->hMFCH264Handle.returnCodec = SsbSipMfcEncGetOutBuf(pH264Enc->hMFCH264Handle.hMFCHandle, &outputInfo);
- if (pH264Enc->hMFCH264Handle.returnCodec != MFC_RET_OK)
- {
- SEC_OSAL_Log(SEC_LOG_TRACE, "%s - SsbSipMfcEncGetOutBuf Failed\n", __func__);
- ret = OMX_ErrorUndefined;
- goto EXIT;
- } else {
- char *p = NULL;
- int iSpsSize = 0;
- int iPpsSize = 0;
-
- p = FindDelimiter((OMX_U8 *)outputInfo.StrmVirAddr + 4, outputInfo.headerSize - 4);
-
- iSpsSize = (unsigned int)p - (unsigned int)outputInfo.StrmVirAddr;
- pH264Enc->hMFCH264Handle.headerData.pHeaderSPS = (OMX_PTR)outputInfo.StrmVirAddr;
- pH264Enc->hMFCH264Handle.headerData.SPSLen = iSpsSize;
-
- iPpsSize = outputInfo.headerSize - iSpsSize;
- pH264Enc->hMFCH264Handle.headerData.pHeaderPPS = outputInfo.StrmVirAddr + iSpsSize;
- pH264Enc->hMFCH264Handle.headerData.PPSLen = iPpsSize;
- }
-
- /* SEC_OSAL_Memcpy((void*)(pOutputData->dataBuffer), (const void*)(outputInfo.StrmVirAddr), outputInfo.headerSize); */
- pOutputData->dataBuffer = outputInfo.StrmVirAddr;
- pOutputData->allocSize = outputInfo.headerSize;
- pOutputData->dataLen = outputInfo.headerSize;
- pOutputData->timeStamp = 0;
- pOutputData->nFlags |= OMX_BUFFERFLAG_CODECCONFIG;
- pOutputData->nFlags |= OMX_BUFFERFLAG_ENDOFFRAME;
-
- pH264Enc->hMFCH264Handle.bConfiguredMFC = OMX_TRUE;
-
- ret = OMX_ErrorInputDataEncodeYet;
- goto EXIT;
- }
-
- if ((pInputData->nFlags & OMX_BUFFERFLAG_ENDOFFRAME) &&
- (pSECComponent->bUseFlagEOF == OMX_FALSE)) {
- pSECComponent->bUseFlagEOF = OMX_TRUE;
- }
-
- if (oneFrameSize <= 0) {
- pOutputData->timeStamp = pInputData->timeStamp;
- pOutputData->nFlags = pInputData->nFlags;
-
- ret = OMX_ErrorNone;
- goto EXIT;
- }
-
- pSECPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- if (((pInputData->nFlags & OMX_BUFFERFLAG_EOS) == OMX_BUFFERFLAG_EOS) ||
- (pSECComponent->getAllDelayBuffer == OMX_TRUE)){
- /* Dummy input data for get out encoded last frame */
- pInputInfo->YPhyAddr = pH264Enc->MFCEncInputBuffer[pH264Enc->indexInputBuffer].YPhyAddr;
- pInputInfo->CPhyAddr = pH264Enc->MFCEncInputBuffer[pH264Enc->indexInputBuffer].CPhyAddr;
- pInputInfo->YVirAddr = pH264Enc->MFCEncInputBuffer[pH264Enc->indexInputBuffer].YVirAddr;
- pInputInfo->CVirAddr = pH264Enc->MFCEncInputBuffer[pH264Enc->indexInputBuffer].CVirAddr;
- } else if (pSECPort->portDefinition.format.video.eColorFormat == OMX_SEC_COLOR_FormatNV12TPhysicalAddress) {
- SEC_OSAL_Memcpy(&addrInfo.pAddrY, pInputData->dataBuffer, sizeof(addrInfo.pAddrY));
- SEC_OSAL_Memcpy(&addrInfo.pAddrC, pInputData->dataBuffer + sizeof(addrInfo.pAddrY), sizeof(addrInfo.pAddrC));
- pInputInfo->YPhyAddr = addrInfo.pAddrY;
- pInputInfo->CPhyAddr = addrInfo.pAddrC;
-#ifdef USE_ANDROID_EXTENSION
- } else if (pSECPort->bStoreMetaDataInBuffer != OMX_FALSE) {
- ret = preprocessMetaDataInBuffers(pOMXComponent, pInputData->dataBuffer, pInputInfo);
- if (ret != OMX_ErrorNone)
- goto EXIT;
-#endif
- } else {
- /* Real input data */
- pInputInfo->YPhyAddr = pSECComponent->processData[INPUT_PORT_INDEX].specificBufferHeader.YPhyAddr;
- pInputInfo->CPhyAddr = pSECComponent->processData[INPUT_PORT_INDEX].specificBufferHeader.CPhyAddr;
- }
-
- pSECComponent->timeStamp[pH264Enc->hMFCH264Handle.indexTimestamp] = pInputData->timeStamp;
- pSECComponent->nFlags[pH264Enc->hMFCH264Handle.indexTimestamp] = pInputData->nFlags;
-
- if ((pH264Enc->hMFCH264Handle.returnCodec == MFC_RET_OK) &&
- (pH264Enc->bFirstFrame == OMX_FALSE)) {
- OMX_S32 indexTimestamp = 0;
-
- /* wait for mfc encode done */
- if (pH264Enc->NBEncThread.bEncoderRun != OMX_FALSE) {
- SEC_OSAL_SemaphoreWait(pH264Enc->NBEncThread.hEncFrameEnd);
- pH264Enc->NBEncThread.bEncoderRun = OMX_FALSE;
- }
-
- pH264Enc->hMFCH264Handle.returnCodec = SsbSipMfcEncGetOutBuf(pH264Enc->hMFCH264Handle.hMFCHandle, &outputInfo);
- if ((SsbSipMfcEncGetConfig(pH264Enc->hMFCH264Handle.hMFCHandle, MFC_ENC_GETCONF_FRAME_TAG, &indexTimestamp) != MFC_RET_OK) ||
- (((indexTimestamp < 0) || (indexTimestamp >= MAX_TIMESTAMP)))){
- pOutputData->timeStamp = pInputData->timeStamp;
- pOutputData->nFlags = pInputData->nFlags;
- } else {
- pOutputData->timeStamp = pSECComponent->timeStamp[indexTimestamp];
- pOutputData->nFlags = pSECComponent->nFlags[indexTimestamp];
- }
-
- if (pH264Enc->hMFCH264Handle.returnCodec == MFC_RET_OK) {
- /** Fill Output Buffer **/
- pOutputData->dataBuffer = outputInfo.StrmVirAddr;
- pOutputData->allocSize = outputInfo.dataSize;
- pOutputData->dataLen = outputInfo.dataSize;
- pOutputData->usedDataLen = 0;
-
- pOutputData->nFlags |= OMX_BUFFERFLAG_ENDOFFRAME;
- if (outputInfo.frameType == MFC_FRAME_TYPE_I_FRAME)
- pOutputData->nFlags |= OMX_BUFFERFLAG_SYNCFRAME;
-
- SEC_OSAL_Log(SEC_LOG_TRACE, "MFC Encode OK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
-
- ret = OMX_ErrorNone;
- } else {
- SEC_OSAL_Log(SEC_LOG_ERROR, "%s: SsbSipMfcEncGetOutBuf failed, ret:%d", __FUNCTION__, pH264Enc->hMFCH264Handle.returnCodec);
- ret = OMX_ErrorUndefined;
- goto EXIT;
- }
-
- if (pSECComponent->getAllDelayBuffer == OMX_TRUE) {
- ret = OMX_ErrorInputDataEncodeYet;
- }
- if ((pInputData->nFlags & OMX_BUFFERFLAG_EOS) == OMX_BUFFERFLAG_EOS) {
- pInputData->nFlags = (pOutputData->nFlags & (~OMX_BUFFERFLAG_EOS));
- pSECComponent->getAllDelayBuffer = OMX_TRUE;
- ret = OMX_ErrorInputDataEncodeYet;
- }
- if ((pOutputData->nFlags & OMX_BUFFERFLAG_EOS) == OMX_BUFFERFLAG_EOS) {
- pSECComponent->getAllDelayBuffer = OMX_FALSE;
- pOutputData->dataLen = 0;
- pOutputData->usedDataLen = 0;
- SEC_OSAL_Log(SEC_LOG_TRACE, "OMX_BUFFERFLAG_EOS!!!");
- ret = OMX_ErrorNone;
- }
- }
- if (pH264Enc->hMFCH264Handle.returnCodec != MFC_RET_OK) {
- SEC_OSAL_Log(SEC_LOG_ERROR, "In %s : SsbSipMfcEncExe Failed!!!\n", __func__);
- ret = OMX_ErrorUndefined;
- }
-
- pH264Enc->hMFCH264Handle.returnCodec = SsbSipMfcEncSetInBuf(pH264Enc->hMFCH264Handle.hMFCHandle, pInputInfo);
- if (pH264Enc->hMFCH264Handle.returnCodec != MFC_RET_OK) {
- SEC_OSAL_Log(SEC_LOG_TRACE, "Error : SsbSipMfcEncSetInBuf() \n");
- ret = OMX_ErrorUndefined;
- goto EXIT;
- } else {
- pH264Enc->indexInputBuffer++;
- pH264Enc->indexInputBuffer %= MFC_INPUT_BUFFER_NUM_MAX;
- pSECComponent->processData[INPUT_PORT_INDEX].specificBufferHeader.YPhyAddr = pH264Enc->MFCEncInputBuffer[pH264Enc->indexInputBuffer].YPhyAddr;
- pSECComponent->processData[INPUT_PORT_INDEX].specificBufferHeader.CPhyAddr = pH264Enc->MFCEncInputBuffer[pH264Enc->indexInputBuffer].CPhyAddr;
- pSECComponent->processData[INPUT_PORT_INDEX].specificBufferHeader.YVirAddr = pH264Enc->MFCEncInputBuffer[pH264Enc->indexInputBuffer].YVirAddr;
- pSECComponent->processData[INPUT_PORT_INDEX].specificBufferHeader.CVirAddr = pH264Enc->MFCEncInputBuffer[pH264Enc->indexInputBuffer].CVirAddr;
- pSECComponent->processData[INPUT_PORT_INDEX].specificBufferHeader.YSize = pH264Enc->MFCEncInputBuffer[pH264Enc->indexInputBuffer].YBufferSize;
- pSECComponent->processData[INPUT_PORT_INDEX].specificBufferHeader.CSize = pH264Enc->MFCEncInputBuffer[pH264Enc->indexInputBuffer].CBufferSize;
- }
-
- SsbSipMfcEncSetConfig(pH264Enc->hMFCH264Handle.hMFCHandle, MFC_ENC_SETCONF_FRAME_TAG, &(pH264Enc->hMFCH264Handle.indexTimestamp));
-
- /* mfc encode start */
- SEC_OSAL_SemaphorePost(pH264Enc->NBEncThread.hEncFrameStart);
- pH264Enc->NBEncThread.bEncoderRun = OMX_TRUE;
- pH264Enc->hMFCH264Handle.indexTimestamp++;
- pH264Enc->hMFCH264Handle.indexTimestamp %= MAX_TIMESTAMP;
- pH264Enc->bFirstFrame = OMX_FALSE;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-/* MFC Encode */
-OMX_ERRORTYPE SEC_MFC_H264Enc_bufferProcess(OMX_COMPONENTTYPE *pOMXComponent, SEC_OMX_DATA *pInputData, SEC_OMX_DATA *pOutputData)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- SEC_H264ENC_HANDLE *pH264Enc = (SEC_H264ENC_HANDLE *)pSECComponent->hCodecHandle;
- SEC_OMX_BASEPORT *pSECInputPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- SEC_OMX_BASEPORT *pSECOutputPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
- OMX_BOOL endOfFrame = OMX_FALSE;
- OMX_BOOL flagEOS = OMX_FALSE;
-
- FunctionIn();
-
- if ((!CHECK_PORT_ENABLED(pSECInputPort)) || (!CHECK_PORT_ENABLED(pSECOutputPort)) ||
- (!CHECK_PORT_POPULATED(pSECInputPort)) || (!CHECK_PORT_POPULATED(pSECOutputPort))) {
- ret = OMX_ErrorNone;
- goto EXIT;
- }
- if (OMX_FALSE == SEC_Check_BufferProcess_State(pSECComponent)) {
- ret = OMX_ErrorNone;
- goto EXIT;
- }
-
- ret = SEC_MFC_H264_Encode(pOMXComponent, pInputData, pOutputData);
- if (ret != OMX_ErrorNone) {
- if (ret == OMX_ErrorInputDataEncodeYet) {
- pOutputData->usedDataLen = 0;
- pOutputData->remainDataLen = pOutputData->dataLen;
- } else {
- pSECComponent->pCallbacks->EventHandler((OMX_HANDLETYPE)pOMXComponent,
- pSECComponent->callbackData,
- OMX_EventError, ret, 0, NULL);
- }
- } else {
- pInputData->usedDataLen += pInputData->dataLen;
- pInputData->remainDataLen = pInputData->dataLen - pInputData->usedDataLen;
- pInputData->dataLen -= pInputData->usedDataLen;
- pInputData->usedDataLen = 0;
-
- /* pOutputData->usedDataLen = 0; */
- pOutputData->remainDataLen = pOutputData->dataLen - pOutputData->usedDataLen;
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OSCL_EXPORT_REF OMX_ERRORTYPE SEC_OMX_ComponentInit(OMX_HANDLETYPE hComponent, OMX_STRING componentName)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- SEC_H264ENC_HANDLE *pH264Enc = NULL;
- int i = 0;
-
- FunctionIn();
-
- if ((hComponent == NULL) || (componentName == NULL)) {
- ret = OMX_ErrorBadParameter;
- SEC_OSAL_Log(SEC_LOG_ERROR, "OMX_ErrorBadParameter, Line:%d", __LINE__);
- goto EXIT;
- }
- if (SEC_OSAL_Strcmp(SEC_OMX_COMPONENT_H264_ENC, componentName) != 0) {
- ret = OMX_ErrorBadParameter;
- SEC_OSAL_Log(SEC_LOG_ERROR, "OMX_ErrorBadParameter, componentName:%s, Line:%d", componentName, __LINE__);
- goto EXIT;
- }
-
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_VideoEncodeComponentInit(pOMXComponent);
- if (ret != OMX_ErrorNone) {
- SEC_OSAL_Log(SEC_LOG_ERROR, "OMX_Error, Line:%d", __LINE__);
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- pSECComponent->codecType = HW_VIDEO_CODEC;
-
- pSECComponent->componentName = (OMX_STRING)SEC_OSAL_Malloc(MAX_OMX_COMPONENT_NAME_SIZE);
- if (pSECComponent->componentName == NULL) {
- SEC_OMX_VideoEncodeComponentDeinit(pOMXComponent);
- ret = OMX_ErrorInsufficientResources;
- SEC_OSAL_Log(SEC_LOG_ERROR, "OMX_ErrorInsufficientResources, Line:%d", __LINE__);
- goto EXIT;
- }
- SEC_OSAL_Memset(pSECComponent->componentName, 0, MAX_OMX_COMPONENT_NAME_SIZE);
-
- pH264Enc = SEC_OSAL_Malloc(sizeof(SEC_H264ENC_HANDLE));
- if (pH264Enc == NULL) {
- SEC_OMX_VideoEncodeComponentDeinit(pOMXComponent);
- ret = OMX_ErrorInsufficientResources;
- SEC_OSAL_Log(SEC_LOG_ERROR, "OMX_ErrorInsufficientResources, Line:%d", __LINE__);
- goto EXIT;
- }
- SEC_OSAL_Memset(pH264Enc, 0, sizeof(SEC_H264ENC_HANDLE));
- pSECComponent->hCodecHandle = (OMX_HANDLETYPE)pH264Enc;
-
- SEC_OSAL_Strcpy(pSECComponent->componentName, SEC_OMX_COMPONENT_H264_ENC);
- /* Set componentVersion */
- pSECComponent->componentVersion.s.nVersionMajor = VERSIONMAJOR_NUMBER;
- pSECComponent->componentVersion.s.nVersionMinor = VERSIONMINOR_NUMBER;
- pSECComponent->componentVersion.s.nRevision = REVISION_NUMBER;
- pSECComponent->componentVersion.s.nStep = STEP_NUMBER;
- /* Set specVersion */
- pSECComponent->specVersion.s.nVersionMajor = VERSIONMAJOR_NUMBER;
- pSECComponent->specVersion.s.nVersionMinor = VERSIONMINOR_NUMBER;
- pSECComponent->specVersion.s.nRevision = REVISION_NUMBER;
- pSECComponent->specVersion.s.nStep = STEP_NUMBER;
-
- /* Android CapabilityFlags */
- pSECComponent->capabilityFlags.iIsOMXComponentMultiThreaded = OMX_TRUE;
- pSECComponent->capabilityFlags.iOMXComponentSupportsExternalInputBufferAlloc = OMX_TRUE;
- pSECComponent->capabilityFlags.iOMXComponentSupportsExternalOutputBufferAlloc = OMX_TRUE;
- pSECComponent->capabilityFlags.iOMXComponentSupportsMovableInputBuffers = OMX_FALSE;
- pSECComponent->capabilityFlags.iOMXComponentSupportsPartialFrames = OMX_FALSE;
- pSECComponent->capabilityFlags.iOMXComponentUsesNALStartCodes = OMX_TRUE;
- pSECComponent->capabilityFlags.iOMXComponentCanHandleIncompleteFrames = OMX_TRUE;
- pSECComponent->capabilityFlags.iOMXComponentUsesFullAVCFrames = OMX_TRUE;
-
- /* Input port */
- pSECPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- pSECPort->portDefinition.format.video.nFrameWidth = DEFAULT_FRAME_WIDTH;
- pSECPort->portDefinition.format.video.nFrameHeight= DEFAULT_FRAME_HEIGHT;
- pSECPort->portDefinition.format.video.nStride = 0; /*DEFAULT_FRAME_WIDTH;*/
- pSECPort->portDefinition.nBufferSize = DEFAULT_VIDEO_INPUT_BUFFER_SIZE;
- pSECPort->portDefinition.format.video.eCompressionFormat = OMX_VIDEO_CodingUnused;
- SEC_OSAL_Memset(pSECPort->portDefinition.format.video.cMIMEType, 0, MAX_OMX_MIMETYPE_SIZE);
- SEC_OSAL_Strcpy(pSECPort->portDefinition.format.video.cMIMEType, "raw/video");
- pSECPort->portDefinition.format.video.eColorFormat = OMX_COLOR_FormatYUV420SemiPlanar;
- pSECPort->portDefinition.bEnabled = OMX_TRUE;
-
- /* Output port */
- pSECPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
- pSECPort->portDefinition.format.video.nFrameWidth = DEFAULT_FRAME_WIDTH;
- pSECPort->portDefinition.format.video.nFrameHeight= DEFAULT_FRAME_HEIGHT;
- pSECPort->portDefinition.format.video.nStride = 0; /*DEFAULT_FRAME_WIDTH;*/
- pSECPort->portDefinition.nBufferSize = DEFAULT_VIDEO_OUTPUT_BUFFER_SIZE;
- pSECPort->portDefinition.format.video.eCompressionFormat = OMX_VIDEO_CodingAVC;
- SEC_OSAL_Memset(pSECPort->portDefinition.format.video.cMIMEType, 0, MAX_OMX_MIMETYPE_SIZE);
- SEC_OSAL_Strcpy(pSECPort->portDefinition.format.video.cMIMEType, "video/avc");
- pSECPort->portDefinition.format.video.eColorFormat = OMX_COLOR_FormatUnused;
- pSECPort->portDefinition.bEnabled = OMX_TRUE;
-
- for(i = 0; i < ALL_PORT_NUM; i++) {
- INIT_SET_SIZE_VERSION(&pH264Enc->AVCComponent[i], OMX_VIDEO_PARAM_AVCTYPE);
- pH264Enc->AVCComponent[i].nPortIndex = i;
- pH264Enc->AVCComponent[i].eProfile = OMX_VIDEO_AVCProfileBaseline;
- pH264Enc->AVCComponent[i].eLevel = OMX_VIDEO_AVCLevel31;
- }
-
- pOMXComponent->GetParameter = &SEC_MFC_H264Enc_GetParameter;
- pOMXComponent->SetParameter = &SEC_MFC_H264Enc_SetParameter;
- pOMXComponent->GetConfig = &SEC_MFC_H264Enc_GetConfig;
- pOMXComponent->SetConfig = &SEC_MFC_H264Enc_SetConfig;
- pOMXComponent->GetExtensionIndex = &SEC_MFC_H264Enc_GetExtensionIndex;
- pOMXComponent->ComponentRoleEnum = &SEC_MFC_H264Enc_ComponentRoleEnum;
- pOMXComponent->ComponentDeInit = &SEC_OMX_ComponentDeinit;
-
- pSECComponent->sec_mfc_componentInit = &SEC_MFC_H264Enc_Init;
- pSECComponent->sec_mfc_componentTerminate = &SEC_MFC_H264Enc_Terminate;
- pSECComponent->sec_mfc_bufferProcess = &SEC_MFC_H264Enc_bufferProcess;
- pSECComponent->sec_checkInputFrame = NULL;
-
- pSECComponent->currentState = OMX_StateLoaded;
-
- ret = OMX_ErrorNone;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_ComponentDeinit(OMX_HANDLETYPE hComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_H264ENC_HANDLE *pH264Enc = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- SEC_OSAL_Free(pSECComponent->componentName);
- pSECComponent->componentName = NULL;
-
- pH264Enc = (SEC_H264ENC_HANDLE *)pSECComponent->hCodecHandle;
- if (pH264Enc != NULL) {
- SEC_OSAL_Free(pH264Enc);
- pH264Enc = pSECComponent->hCodecHandle = NULL;
- }
-
- ret = SEC_OMX_VideoEncodeComponentDeinit(pOMXComponent);
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- ret = OMX_ErrorNone;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
diff --git a/sec_mm/sec_omx/sec_omx_component/video/enc/h264enc/SEC_OMX_H264enc.h b/sec_mm/sec_omx/sec_omx_component/video/enc/h264enc/SEC_OMX_H264enc.h
deleted file mode 100644
index bdd525f..0000000
--- a/sec_mm/sec_omx/sec_omx_component/video/enc/h264enc/SEC_OMX_H264enc.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OMX_H264enc.h
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#ifndef SEC_OMX_H264_ENC_COMPONENT
-#define SEC_OMX_H264_ENC_COMPONENT
-
-#include "SEC_OMX_Def.h"
-#include "OMX_Component.h"
-#include "OMX_Video.h"
-#include "SsbSipMfcApi.h"
-
-
-typedef struct _EXTRA_DATA
-{
- OMX_PTR pHeaderSPS;
- OMX_U32 SPSLen;
- OMX_PTR pHeaderPPS;
- OMX_U32 PPSLen;
-} EXTRA_DATA;
-
-typedef struct _SEC_MFC_H264ENC_HANDLE
-{
- OMX_HANDLETYPE hMFCHandle;
- SSBSIP_MFC_ENC_H264_PARAM mfcVideoAvc;
- SSBSIP_MFC_ENC_INPUT_INFO inputInfo;
-/* SSBSIP_MFC_ENC_OUTPUT_INFO outputInfo; */
- OMX_U32 indexTimestamp;
- OMX_BOOL bConfiguredMFC;
- EXTRA_DATA headerData;
- OMX_S32 returnCodec;
-} SEC_MFC_H264ENC_HANDLE;
-
-typedef struct _SEC_H264ENC_HANDLE
-{
- /* OMX Codec specific */
- OMX_VIDEO_PARAM_AVCTYPE AVCComponent[ALL_PORT_NUM];
- OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE errorCorrectionType[ALL_PORT_NUM];
-
- /* SEC MFC Codec specific */
- SEC_MFC_H264ENC_HANDLE hMFCH264Handle;
-
- /* For Non-Block mode */
- SEC_MFC_NBENC_THREAD NBEncThread;
- OMX_BOOL bFirstFrame;
- MFC_ENC_INPUT_BUFFER MFCEncInputBuffer[MFC_INPUT_BUFFER_NUM_MAX];
- OMX_U32 indexInputBuffer;
-} SEC_H264ENC_HANDLE;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-OSCL_EXPORT_REF OMX_ERRORTYPE SEC_OMX_ComponentInit(OMX_HANDLETYPE hComponent, OMX_STRING componentName);
-OMX_ERRORTYPE SEC_OMX_ComponentDeinit(OMX_HANDLETYPE hComponent);
-
-#ifdef __cplusplus
-};
-#endif
-
-#endif
diff --git a/sec_mm/sec_omx/sec_omx_component/video/enc/h264enc/library_register.c b/sec_mm/sec_omx/sec_omx_component/video/enc/h264enc/library_register.c
deleted file mode 100644
index 247b38b..0000000
--- a/sec_mm/sec_omx/sec_omx_component/video/enc/h264enc/library_register.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file library_register.c
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <dlfcn.h>
-
-#include "SEC_OSAL_Memory.h"
-#include "SEC_OSAL_ETC.h"
-#include "library_register.h"
-#include "SEC_OSAL_Log.h"
-
-
-OSCL_EXPORT_REF int SEC_OMX_COMPONENT_Library_Register(SECRegisterComponentType **secComponents)
-{
- FunctionIn();
-
- if (secComponents == NULL)
- goto EXIT;
-
- /* component 1 - video decoder H.264 */
- SEC_OSAL_Strcpy(secComponents[0]->componentName, SEC_OMX_COMPONENT_H264_ENC);
- SEC_OSAL_Strcpy(secComponents[0]->roles[0], SEC_OMX_COMPONENT_H264_ENC_ROLE);
- secComponents[0]->totalRoleNum = MAX_COMPONENT_ROLE_NUM;
-
-EXIT:
- FunctionOut();
-
- return MAX_COMPONENT_NUM;
-}
-
diff --git a/sec_mm/sec_omx/sec_omx_component/video/enc/h264enc/library_register.h b/sec_mm/sec_omx/sec_omx_component/video/enc/h264enc/library_register.h
deleted file mode 100644
index 6a176ad..0000000
--- a/sec_mm/sec_omx/sec_omx_component/video/enc/h264enc/library_register.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file library_register.h
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#ifndef SEC_OMX_H264_REG
-#define SEC_OMX_H264_REG
-
-#include "SEC_OMX_Def.h"
-#include "OMX_Component.h"
-#include "SEC_OMX_Component_Register.h"
-
-
-#define OSCL_EXPORT_REF __attribute__((visibility("default")))
-#define MAX_COMPONENT_NUM 1
-#define MAX_COMPONENT_ROLE_NUM 1
-
-/* H.264 */
-#define SEC_OMX_COMPONENT_H264_ENC "OMX.SEC.AVC.Encoder"
-#define SEC_OMX_COMPONENT_H264_ENC_ROLE "video_encoder.avc"
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-OSCL_EXPORT_REF int SEC_OMX_COMPONENT_Library_Register(SECRegisterComponentType **secComponents);
-
-#ifdef __cplusplus
-};
-#endif
-
-#endif
-
diff --git a/sec_mm/sec_omx/sec_omx_component/video/enc/mpeg4enc/Android.mk b/sec_mm/sec_omx/sec_omx_component/video/enc/mpeg4enc/Android.mk
deleted file mode 100644
index e00dd1c..0000000
--- a/sec_mm/sec_omx/sec_omx_component/video/enc/mpeg4enc/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := \
- SEC_OMX_Mpeg4enc.c \
- library_register.c
-
-
-LOCAL_MODULE := libOMX.SEC.M4V.Encoder.aries
-
-LOCAL_CFLAGS :=
-
-LOCAL_ARM_MODE := arm
-
-LOCAL_STATIC_LIBRARIES := libSEC_OMX_Venc.aries libsecosal.aries libsecbasecomponent.aries \
- libsecmfcencapi.aries libseccsc.aries
-LOCAL_SHARED_LIBRARIES := libc libdl libcutils libutils libui libhardware
-
-LOCAL_C_INCLUDES := $(SEC_OMX_INC)/khronos \
- $(SEC_OMX_INC)/sec \
- $(SEC_OMX_TOP)/sec_osal \
- $(SEC_OMX_TOP)/sec_omx_core \
- $(SEC_OMX_COMPONENT)/common \
- $(SEC_OMX_COMPONENT)/video/enc
-
-LOCAL_C_INCLUDES += $(SEC_OMX_TOP)/sec_codecs/video/mfc_c110/include
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/sec_mm/sec_omx/sec_omx_component/video/enc/mpeg4enc/SEC_OMX_Mpeg4enc.c b/sec_mm/sec_omx/sec_omx_component/video/enc/mpeg4enc/SEC_OMX_Mpeg4enc.c
deleted file mode 100644
index 5213522..0000000
--- a/sec_mm/sec_omx/sec_omx_component/video/enc/mpeg4enc/SEC_OMX_Mpeg4enc.c
+++ /dev/null
@@ -1,1516 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OMX_Mpeg4enc.c
- * @brief
- * @author Yunji Kim (yunji.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "SEC_OMX_Macros.h"
-#include "SEC_OMX_Basecomponent.h"
-#include "SEC_OMX_Baseport.h"
-#include "SEC_OMX_Venc.h"
-#include "library_register.h"
-#include "SEC_OMX_Mpeg4enc.h"
-#include "SsbSipMfcApi.h"
-#include "color_space_convertor.h"
-
-#undef SEC_LOG_TAG
-#define SEC_LOG_TAG "SEC_MPEG4_ENC"
-#define SEC_LOG_OFF
-#include "SEC_OSAL_Log.h"
-
-
-/* MPEG4 Encoder Supported Levels & profiles */
-SEC_OMX_VIDEO_PROFILELEVEL supportedMPEG4ProfileLevels[] ={
- {OMX_VIDEO_MPEG4ProfileSimple, OMX_VIDEO_MPEG4Level0},
- {OMX_VIDEO_MPEG4ProfileSimple, OMX_VIDEO_MPEG4Level0b},
- {OMX_VIDEO_MPEG4ProfileSimple, OMX_VIDEO_MPEG4Level1},
- {OMX_VIDEO_MPEG4ProfileSimple, OMX_VIDEO_MPEG4Level2},
- {OMX_VIDEO_MPEG4ProfileSimple, OMX_VIDEO_MPEG4Level3},
- {OMX_VIDEO_MPEG4ProfileSimple, OMX_VIDEO_MPEG4Level4},
- {OMX_VIDEO_MPEG4ProfileSimple, OMX_VIDEO_MPEG4Level4a},
- {OMX_VIDEO_MPEG4ProfileSimple, OMX_VIDEO_MPEG4Level5},
- {OMX_VIDEO_MPEG4ProfileAdvancedSimple, OMX_VIDEO_MPEG4Level0},
- {OMX_VIDEO_MPEG4ProfileAdvancedSimple, OMX_VIDEO_MPEG4Level0b},
- {OMX_VIDEO_MPEG4ProfileAdvancedSimple, OMX_VIDEO_MPEG4Level1},
- {OMX_VIDEO_MPEG4ProfileAdvancedSimple, OMX_VIDEO_MPEG4Level2},
- {OMX_VIDEO_MPEG4ProfileAdvancedSimple, OMX_VIDEO_MPEG4Level3},
- {OMX_VIDEO_MPEG4ProfileAdvancedSimple, OMX_VIDEO_MPEG4Level4},
- {OMX_VIDEO_MPEG4ProfileAdvancedSimple, OMX_VIDEO_MPEG4Level4a},
- {OMX_VIDEO_MPEG4ProfileAdvancedSimple, OMX_VIDEO_MPEG4Level5}};
-
-/* H.263 Encoder Supported Levels & profiles */
-SEC_OMX_VIDEO_PROFILELEVEL supportedH263ProfileLevels[] = {
- {OMX_VIDEO_H263ProfileBaseline, OMX_VIDEO_H263Level10},
- {OMX_VIDEO_H263ProfileBaseline, OMX_VIDEO_H263Level20},
- {OMX_VIDEO_H263ProfileBaseline, OMX_VIDEO_H263Level30},
- {OMX_VIDEO_H263ProfileBaseline, OMX_VIDEO_H263Level40},
- {OMX_VIDEO_H263ProfileBaseline, OMX_VIDEO_H263Level45},
- {OMX_VIDEO_H263ProfileBaseline, OMX_VIDEO_H263Level50},
- {OMX_VIDEO_H263ProfileBaseline, OMX_VIDEO_H263Level60},
- {OMX_VIDEO_H263ProfileBaseline, OMX_VIDEO_H263Level70}};
-
-OMX_U32 OMXMpeg4ProfileToMFCProfile(OMX_VIDEO_MPEG4PROFILETYPE profile)
-{
- OMX_U32 ret;
-
- switch (profile) {
- case OMX_VIDEO_MPEG4ProfileSimple:
- ret = 0;
- break;
- case OMX_VIDEO_MPEG4ProfileAdvancedSimple:
- ret = 1;
- break;
- default:
- ret = 0;
- };
-
- return ret;
-}
-OMX_U32 OMXMpeg4LevelToMFCLevel(OMX_VIDEO_MPEG4LEVELTYPE level)
-{
- OMX_U32 ret;
-
- switch (level) {
- case OMX_VIDEO_MPEG4Level0:
- ret = 0;
- break;
- case OMX_VIDEO_MPEG4Level0b:
- ret = 9;
- break;
- case OMX_VIDEO_MPEG4Level1:
- ret = 1;
- break;
- case OMX_VIDEO_MPEG4Level2:
- ret = 2;
- break;
- case OMX_VIDEO_MPEG4Level3:
- ret = 3;
- break;
- case OMX_VIDEO_MPEG4Level4:
- case OMX_VIDEO_MPEG4Level4a:
- ret = 4;
- break;
- case OMX_VIDEO_MPEG4Level5:
- ret = 5;
- break;
- default:
- ret = 0;
- };
-
- return ret;
-}
-
-void Mpeg4PrintParams(SSBSIP_MFC_ENC_MPEG4_PARAM mpeg4Param)
-{
- SEC_OSAL_Log(SEC_LOG_TRACE, "SourceWidth : %d\n", mpeg4Param.SourceWidth);
- SEC_OSAL_Log(SEC_LOG_TRACE, "SourceHeight : %d\n", mpeg4Param.SourceHeight);
- SEC_OSAL_Log(SEC_LOG_TRACE, "IDRPeriod : %d\n", mpeg4Param.IDRPeriod);
- SEC_OSAL_Log(SEC_LOG_TRACE, "SliceMode : %d\n", mpeg4Param.SliceMode);
- SEC_OSAL_Log(SEC_LOG_TRACE, "RandomIntraMBRefresh : %d\n", mpeg4Param.RandomIntraMBRefresh);
- SEC_OSAL_Log(SEC_LOG_TRACE, "EnableFRMRateControl : %d\n", mpeg4Param.EnableFRMRateControl);
- SEC_OSAL_Log(SEC_LOG_TRACE, "Bitrate : %d\n", mpeg4Param.Bitrate);
- SEC_OSAL_Log(SEC_LOG_TRACE, "FrameQp : %d\n", mpeg4Param.FrameQp);
- SEC_OSAL_Log(SEC_LOG_TRACE, "FrameQp_P : %d\n", mpeg4Param.FrameQp_P);
- SEC_OSAL_Log(SEC_LOG_TRACE, "QSCodeMax : %d\n", mpeg4Param.QSCodeMax);
- SEC_OSAL_Log(SEC_LOG_TRACE, "QSCodeMin : %d\n", mpeg4Param.QSCodeMin);
- SEC_OSAL_Log(SEC_LOG_TRACE, "CBRPeriodRf : %d\n", mpeg4Param.CBRPeriodRf);
- SEC_OSAL_Log(SEC_LOG_TRACE, "PadControlOn : %d\n", mpeg4Param.PadControlOn);
- SEC_OSAL_Log(SEC_LOG_TRACE, "LumaPadVal : %d\n", mpeg4Param.LumaPadVal);
- SEC_OSAL_Log(SEC_LOG_TRACE, "CbPadVal : %d\n", mpeg4Param.CbPadVal);
- SEC_OSAL_Log(SEC_LOG_TRACE, "CrPadVal : %d\n", mpeg4Param.CrPadVal);
-
- /* MPEG4 specific parameters */
- SEC_OSAL_Log(SEC_LOG_TRACE, "ProfileIDC : %d\n", mpeg4Param.ProfileIDC);
- SEC_OSAL_Log(SEC_LOG_TRACE, "LevelIDC : %d\n", mpeg4Param.LevelIDC);
- SEC_OSAL_Log(SEC_LOG_TRACE, "FrameQp_B : %d\n", mpeg4Param.FrameQp_B);
- SEC_OSAL_Log(SEC_LOG_TRACE, "TimeIncreamentRes : %d\n", mpeg4Param.TimeIncreamentRes);
- SEC_OSAL_Log(SEC_LOG_TRACE, "VopTimeIncreament : %d\n", mpeg4Param.VopTimeIncreament);
- SEC_OSAL_Log(SEC_LOG_TRACE, "SliceArgument : %d\n", mpeg4Param.SliceArgument);
- SEC_OSAL_Log(SEC_LOG_TRACE, "NumberBFrames : %d\n", mpeg4Param.NumberBFrames);
- SEC_OSAL_Log(SEC_LOG_TRACE, "DisableQpelME : %d\n", mpeg4Param.DisableQpelME);
-}
-
-void H263PrintParams(SSBSIP_MFC_ENC_H263_PARAM h263Param)
-{
- SEC_OSAL_Log(SEC_LOG_TRACE, "SourceWidth : %d\n", h263Param.SourceWidth);
- SEC_OSAL_Log(SEC_LOG_TRACE, "SourceHeight : %d\n", h263Param.SourceHeight);
- SEC_OSAL_Log(SEC_LOG_TRACE, "IDRPeriod : %d\n", h263Param.IDRPeriod);
- SEC_OSAL_Log(SEC_LOG_TRACE, "SliceMode : %d\n", h263Param.SliceMode);
- SEC_OSAL_Log(SEC_LOG_TRACE, "RandomIntraMBRefresh : %d\n", h263Param.RandomIntraMBRefresh);
- SEC_OSAL_Log(SEC_LOG_TRACE, "EnableFRMRateControl : %d\n", h263Param.EnableFRMRateControl);
- SEC_OSAL_Log(SEC_LOG_TRACE, "Bitrate : %d\n", h263Param.Bitrate);
- SEC_OSAL_Log(SEC_LOG_TRACE, "FrameQp : %d\n", h263Param.FrameQp);
- SEC_OSAL_Log(SEC_LOG_TRACE, "FrameQp_P : %d\n", h263Param.FrameQp_P);
- SEC_OSAL_Log(SEC_LOG_TRACE, "QSCodeMax : %d\n", h263Param.QSCodeMax);
- SEC_OSAL_Log(SEC_LOG_TRACE, "QSCodeMin : %d\n", h263Param.QSCodeMin);
- SEC_OSAL_Log(SEC_LOG_TRACE, "CBRPeriodRf : %d\n", h263Param.CBRPeriodRf);
- SEC_OSAL_Log(SEC_LOG_TRACE, "PadControlOn : %d\n", h263Param.PadControlOn);
- SEC_OSAL_Log(SEC_LOG_TRACE, "LumaPadVal : %d\n", h263Param.LumaPadVal);
- SEC_OSAL_Log(SEC_LOG_TRACE, "CbPadVal : %d\n", h263Param.CbPadVal);
- SEC_OSAL_Log(SEC_LOG_TRACE, "CrPadVal : %d\n", h263Param.CrPadVal);
-
- /* H.263 specific parameters */
- SEC_OSAL_Log(SEC_LOG_TRACE, "FrameRate : %d\n", h263Param.FrameRate);
-}
-
-void Set_Mpeg4Enc_Param(SSBSIP_MFC_ENC_MPEG4_PARAM *pMpeg4Param, SEC_OMX_BASECOMPONENT *pSECComponent)
-{
- SEC_OMX_BASEPORT *pSECInputPort = NULL;
- SEC_OMX_BASEPORT *pSECOutputPort = NULL;
- SEC_MPEG4ENC_HANDLE *pMpeg4Enc = NULL;
-
- pMpeg4Enc = (SEC_MPEG4ENC_HANDLE *)pSECComponent->hCodecHandle;
- pSECInputPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- pSECOutputPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
-
- pMpeg4Param->codecType = MPEG4_ENC;
- pMpeg4Param->SourceWidth = pSECOutputPort->portDefinition.format.video.nFrameWidth;
- pMpeg4Param->SourceHeight = pSECOutputPort->portDefinition.format.video.nFrameHeight;
- pMpeg4Param->IDRPeriod = pMpeg4Enc->mpeg4Component[OUTPUT_PORT_INDEX].nPFrames + 1;
- pMpeg4Param->SliceMode = 0;
- pMpeg4Param->RandomIntraMBRefresh = 0;
- pMpeg4Param->EnableFRMRateControl = 1; /* 0: disable, 1: enable */
- pMpeg4Param->Bitrate = pSECOutputPort->portDefinition.format.video.nBitrate;
- pMpeg4Param->FrameQp = 20;
- pMpeg4Param->FrameQp_P = 20;
- pMpeg4Param->QSCodeMax = 30;
- pMpeg4Param->QSCodeMin = 10;
- pMpeg4Param->CBRPeriodRf = 10;
- pMpeg4Param->PadControlOn = 0; /* 0: Use boundary pixel, 1: Use the below setting value */
- pMpeg4Param->LumaPadVal = 0;
- pMpeg4Param->CbPadVal = 0;
- pMpeg4Param->CrPadVal = 0;
-
- pMpeg4Param->ProfileIDC = OMXMpeg4ProfileToMFCProfile(pMpeg4Enc->mpeg4Component[OUTPUT_PORT_INDEX].eProfile);
- pMpeg4Param->LevelIDC = OMXMpeg4LevelToMFCLevel(pMpeg4Enc->mpeg4Component[OUTPUT_PORT_INDEX].eLevel);
- pMpeg4Param->FrameQp_B = 20;
- pMpeg4Param->TimeIncreamentRes = (pSECInputPort->portDefinition.format.video.xFramerate) >> 16;
- pMpeg4Param->VopTimeIncreament = 1;
- pMpeg4Param->SliceArgument = 0; /* MB number or byte number */
- pMpeg4Param->NumberBFrames = 0; /* 0(not used) ~ 2 */
- pMpeg4Param->DisableQpelME = 1;
-
- switch ((SEC_OMX_COLOR_FORMATTYPE)pSECInputPort->portDefinition.format.video.eColorFormat) {
- case OMX_COLOR_FormatYUV420SemiPlanar:
- pMpeg4Param->FrameMap = NV12_LINEAR;
- break;
- case OMX_SEC_COLOR_FormatNV12TPhysicalAddress:
- default:
- pMpeg4Param->FrameMap = NV12_TILE;
- break;
- }
-
-#ifdef USE_ANDROID_EXTENSION
- if (pSECInputPort->bStoreMetaDataInBuffer != OMX_FALSE) {
- SEC_OMX_DATA *pInputData = &pSECComponent->processData[INPUT_PORT_INDEX];
- if(isMetadataBufferTypeGrallocSource(pInputData->dataBuffer) == OMX_TRUE)
- pMpeg4Param->FrameMap = NV12_LINEAR;
- else
- pMpeg4Param->FrameMap = NV12_TILE;
- }
-#endif
-
-/*
- SEC_OSAL_Log(SEC_LOG_TRACE, "pSECPort->eControlRate: 0x%x", pSECOutputPort->eControlRate);
- switch (pSECOutputPort->eControlRate) {
- case OMX_Video_ControlRateVariable:
- SEC_OSAL_Log(SEC_LOG_TRACE, "Video Encode VBR");
- pH264Arg->EnableFRMRateControl = 0; // 0: Disable, 1: Frame level RC
- pH264Arg->EnableMBRateControl = 0; // 0: Disable, 1:MB level RC
- pH264Arg->CBRPeriodRf = 100;
- break;
- case OMX_Video_ControlRateConstant:
- SEC_OSAL_Log(SEC_LOG_TRACE, "Video Encode CBR");
- pH264Arg->EnableFRMRateControl = 1; // 0: Disable, 1: Frame level RC
- pH264Arg->EnableMBRateControl = 1; // 0: Disable, 1:MB level RC
- pH264Arg->CBRPeriodRf = 10;
- break;
- case OMX_Video_ControlRateDisable:
- default: //Android default
- SEC_OSAL_Log(SEC_LOG_TRACE, "Video Encode VBR");
- pH264Arg->EnableFRMRateControl = 0;
- pH264Arg->EnableMBRateControl = 0;
- pH264Arg->CBRPeriodRf = 100;
- break;
- }
-*/
- Mpeg4PrintParams(*pMpeg4Param);
-}
-
-void Set_H263Enc_Param(SSBSIP_MFC_ENC_H263_PARAM *pH263Param, SEC_OMX_BASECOMPONENT *pSECComponent)
-{
- SEC_OMX_BASEPORT *pSECInputPort = NULL;
- SEC_OMX_BASEPORT *pSECOutputPort = NULL;
- SEC_MPEG4ENC_HANDLE *pMpeg4Enc = NULL;
-
- pMpeg4Enc = (SEC_MPEG4ENC_HANDLE *)pSECComponent->hCodecHandle;
- pSECInputPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- pSECOutputPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
-
- pH263Param->codecType = H263_ENC;
- pH263Param->SourceWidth = pSECOutputPort->portDefinition.format.video.nFrameWidth;
- pH263Param->SourceHeight = pSECOutputPort->portDefinition.format.video.nFrameHeight;
- pH263Param->IDRPeriod = pMpeg4Enc->h263Component[OUTPUT_PORT_INDEX].nPFrames + 1;
- pH263Param->SliceMode = 0;
- pH263Param->RandomIntraMBRefresh = 0;
- pH263Param->EnableFRMRateControl = 1; /* 0: disable, 1: enable */
- pH263Param->Bitrate = pSECOutputPort->portDefinition.format.video.nBitrate;
- pH263Param->FrameQp = 20;
- pH263Param->FrameQp_P = 20;
- pH263Param->QSCodeMax = 30;
- pH263Param->QSCodeMin = 10;
- pH263Param->CBRPeriodRf = 10;
- pH263Param->PadControlOn = 0; /* 0: Use boundary pixel, 1: Use the below setting value */
- pH263Param->LumaPadVal = 0;
- pH263Param->CbPadVal = 0;
- pH263Param->CrPadVal = 0;
-
- pH263Param->FrameRate = (pSECInputPort->portDefinition.format.video.xFramerate) >> 16;
-
- switch ((SEC_OMX_COLOR_FORMATTYPE)pSECInputPort->portDefinition.format.video.eColorFormat) {
- case OMX_COLOR_FormatYUV420SemiPlanar:
- pH263Param->FrameMap = NV12_LINEAR;
- break;
- case OMX_SEC_COLOR_FormatNV12TPhysicalAddress:
- default:
- pH263Param->FrameMap = NV12_TILE;
- break;
- }
-
-#ifdef USE_ANDROID_EXTENSION
- if (pSECInputPort->bStoreMetaDataInBuffer != OMX_FALSE) {
- SEC_OMX_DATA *pInputData = &pSECComponent->processData[INPUT_PORT_INDEX];
- if(isMetadataBufferTypeGrallocSource(pInputData->dataBuffer) == OMX_TRUE)
- pH263Param->FrameMap = NV12_LINEAR;
- else
- pH263Param->FrameMap = NV12_TILE;
- }
-#endif
-
-/*
- SEC_OSAL_Log(SEC_LOG_TRACE, "pSECPort->eControlRate: 0x%x", pSECOutputPort->eControlRate);
- switch (pSECOutputPort->eControlRate) {
- case OMX_Video_ControlRateVariable:
- SEC_OSAL_Log(SEC_LOG_TRACE, "Video Encode VBR");
- pH264Arg->EnableFRMRateControl = 0; // 0: Disable, 1: Frame level RC
- pH264Arg->EnableMBRateControl = 0; // 0: Disable, 1:MB level RC
- pH264Arg->CBRPeriodRf = 100;
- break;
- case OMX_Video_ControlRateConstant:
- SEC_OSAL_Log(SEC_LOG_TRACE, "Video Encode CBR");
- pH264Arg->EnableFRMRateControl = 1; // 0: Disable, 1: Frame level RC
- pH264Arg->EnableMBRateControl = 1; // 0: Disable, 1:MB level RC
- pH264Arg->CBRPeriodRf = 10;
- break;
- case OMX_Video_ControlRateDisable:
- default: //Android default
- SEC_OSAL_Log(SEC_LOG_TRACE, "Video Encode VBR");
- pH264Arg->EnableFRMRateControl = 0;
- pH264Arg->EnableMBRateControl = 0;
- pH264Arg->CBRPeriodRf = 100;
- break;
- }
-*/
- H263PrintParams(*pH263Param);
-}
-
-OMX_ERRORTYPE SEC_MFC_Mpeg4Enc_GetParameter(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_INDEXTYPE nParamIndex,
- OMX_INOUT OMX_PTR pComponentParameterStructure)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL || pComponentParameterStructure == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- if (pSECComponent->currentState == OMX_StateInvalid ) {
- ret = OMX_StateInvalid;
- goto EXIT;
- }
-
- switch (nParamIndex) {
- case OMX_IndexParamVideoMpeg4:
- {
- OMX_VIDEO_PARAM_MPEG4TYPE *pDstMpeg4Param = (OMX_VIDEO_PARAM_MPEG4TYPE *)pComponentParameterStructure;
- OMX_VIDEO_PARAM_MPEG4TYPE *pSrcMpeg4Param = NULL;
- SEC_MPEG4ENC_HANDLE *pMpeg4Enc = NULL;
-
- ret = SEC_OMX_Check_SizeVersion(pDstMpeg4Param, sizeof(OMX_VIDEO_PARAM_MPEG4TYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pDstMpeg4Param->nPortIndex >= ALL_PORT_NUM) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- pMpeg4Enc = (SEC_MPEG4ENC_HANDLE *)pSECComponent->hCodecHandle;
- pSrcMpeg4Param = &pMpeg4Enc->mpeg4Component[pDstMpeg4Param->nPortIndex];
-
- SEC_OSAL_Memcpy(pDstMpeg4Param, pSrcMpeg4Param, sizeof(OMX_VIDEO_PARAM_MPEG4TYPE));
- }
- break;
- case OMX_IndexParamVideoH263:
- {
- OMX_VIDEO_PARAM_H263TYPE *pDstH263Param = (OMX_VIDEO_PARAM_H263TYPE *)pComponentParameterStructure;
- OMX_VIDEO_PARAM_H263TYPE *pSrcH263Param = NULL;
- SEC_MPEG4ENC_HANDLE *pMpeg4Enc = NULL;
-
- ret = SEC_OMX_Check_SizeVersion(pDstH263Param, sizeof(OMX_VIDEO_PARAM_H263TYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pDstH263Param->nPortIndex >= ALL_PORT_NUM) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- pMpeg4Enc = (SEC_MPEG4ENC_HANDLE *)pSECComponent->hCodecHandle;
- pSrcH263Param = &pMpeg4Enc->h263Component[pDstH263Param->nPortIndex];
-
- SEC_OSAL_Memcpy(pDstH263Param, pSrcH263Param, sizeof(OMX_VIDEO_PARAM_H263TYPE));
- }
- break;
- case OMX_IndexParamStandardComponentRole:
- {
- OMX_S32 codecType;
- OMX_PARAM_COMPONENTROLETYPE *pComponentRole = (OMX_PARAM_COMPONENTROLETYPE *)pComponentParameterStructure;
-
- ret = SEC_OMX_Check_SizeVersion(pComponentRole, sizeof(OMX_PARAM_COMPONENTROLETYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- codecType = ((SEC_MPEG4ENC_HANDLE *)(pSECComponent->hCodecHandle))->hMFCMpeg4Handle.codecType;
- if (codecType == CODEC_TYPE_MPEG4)
- SEC_OSAL_Strcpy((char *)pComponentRole->cRole, SEC_OMX_COMPONENT_MPEG4_ENC_ROLE);
- else
- SEC_OSAL_Strcpy((char *)pComponentRole->cRole, SEC_OMX_COMPONENT_H263_ENC_ROLE);
- }
- break;
- case OMX_IndexParamVideoProfileLevelQuerySupported:
- {
- OMX_VIDEO_PARAM_PROFILELEVELTYPE *pDstProfileLevel = (OMX_VIDEO_PARAM_PROFILELEVELTYPE *)pComponentParameterStructure;
- SEC_OMX_VIDEO_PROFILELEVEL *pProfileLevel = NULL;
- OMX_U32 maxProfileLevelNum = 0;
- OMX_S32 codecType;
-
- ret = SEC_OMX_Check_SizeVersion(pDstProfileLevel, sizeof(OMX_VIDEO_PARAM_PROFILELEVELTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pDstProfileLevel->nPortIndex >= ALL_PORT_NUM) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- codecType = ((SEC_MPEG4ENC_HANDLE *)(pSECComponent->hCodecHandle))->hMFCMpeg4Handle.codecType;
- if (codecType == CODEC_TYPE_MPEG4) {
- pProfileLevel = supportedMPEG4ProfileLevels;
- maxProfileLevelNum = sizeof(supportedMPEG4ProfileLevels) / sizeof(SEC_OMX_VIDEO_PROFILELEVEL);
- } else {
- pProfileLevel = supportedH263ProfileLevels;
- maxProfileLevelNum = sizeof(supportedH263ProfileLevels) / sizeof(SEC_OMX_VIDEO_PROFILELEVEL);
- }
-
- if (pDstProfileLevel->nProfileIndex >= maxProfileLevelNum) {
- ret = OMX_ErrorNoMore;
- goto EXIT;
- }
-
- pProfileLevel += pDstProfileLevel->nProfileIndex;
- pDstProfileLevel->eProfile = pProfileLevel->profile;
- pDstProfileLevel->eLevel = pProfileLevel->level;
- }
- break;
- case OMX_IndexParamVideoProfileLevelCurrent:
- {
- OMX_VIDEO_PARAM_PROFILELEVELTYPE *pDstProfileLevel = (OMX_VIDEO_PARAM_PROFILELEVELTYPE *)pComponentParameterStructure;
- OMX_VIDEO_PARAM_MPEG4TYPE *pSrcMpeg4Param = NULL;
- OMX_VIDEO_PARAM_H263TYPE *pSrcH263Param = NULL;
- SEC_MPEG4ENC_HANDLE *pMpeg4Enc = NULL;
- OMX_S32 codecType;
-
- ret = SEC_OMX_Check_SizeVersion(pDstProfileLevel, sizeof(OMX_VIDEO_PARAM_PROFILELEVELTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pDstProfileLevel->nPortIndex >= ALL_PORT_NUM) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- pMpeg4Enc = (SEC_MPEG4ENC_HANDLE *)pSECComponent->hCodecHandle;
- codecType = pMpeg4Enc->hMFCMpeg4Handle.codecType;
- if (codecType == CODEC_TYPE_MPEG4) {
- pSrcMpeg4Param = &pMpeg4Enc->mpeg4Component[pDstProfileLevel->nPortIndex];
- pDstProfileLevel->eProfile = pSrcMpeg4Param->eProfile;
- pDstProfileLevel->eLevel = pSrcMpeg4Param->eLevel;
- } else {
- pSrcH263Param = &pMpeg4Enc->h263Component[pDstProfileLevel->nPortIndex];
- pDstProfileLevel->eProfile = pSrcH263Param->eProfile;
- pDstProfileLevel->eLevel = pSrcH263Param->eLevel;
- }
- }
- break;
- case OMX_IndexParamVideoErrorCorrection:
- {
- OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE *pDstErrorCorrectionType = (OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE *)pComponentParameterStructure;
- OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE *pSrcErrorCorrectionType = NULL;
- SEC_MPEG4ENC_HANDLE *pMpeg4Enc = NULL;
-
- ret = SEC_OMX_Check_SizeVersion(pDstErrorCorrectionType, sizeof(OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pDstErrorCorrectionType->nPortIndex != OUTPUT_PORT_INDEX) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- pMpeg4Enc = (SEC_MPEG4ENC_HANDLE *)pSECComponent->hCodecHandle;
- pSrcErrorCorrectionType = &pMpeg4Enc->errorCorrectionType[OUTPUT_PORT_INDEX];
-
- pDstErrorCorrectionType->bEnableHEC = pSrcErrorCorrectionType->bEnableHEC;
- pDstErrorCorrectionType->bEnableResync = pSrcErrorCorrectionType->bEnableResync;
- pDstErrorCorrectionType->nResynchMarkerSpacing = pSrcErrorCorrectionType->nResynchMarkerSpacing;
- pDstErrorCorrectionType->bEnableDataPartitioning = pSrcErrorCorrectionType->bEnableDataPartitioning;
- pDstErrorCorrectionType->bEnableRVLC = pSrcErrorCorrectionType->bEnableRVLC;
- }
- break;
- default:
- ret = SEC_OMX_VideoEncodeGetParameter(hComponent, nParamIndex, pComponentParameterStructure);
- break;
- }
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_MFC_Mpeg4Enc_SetParameter(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_INDEXTYPE nIndex,
- OMX_IN OMX_PTR pComponentParameterStructure)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL || pComponentParameterStructure == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- if (pSECComponent->currentState == OMX_StateInvalid ) {
- ret = OMX_StateInvalid;
- goto EXIT;
- }
-
- switch (nIndex) {
- case OMX_IndexParamVideoMpeg4:
- {
- OMX_VIDEO_PARAM_MPEG4TYPE *pDstMpeg4Param = NULL;
- OMX_VIDEO_PARAM_MPEG4TYPE *pSrcMpeg4Param = (OMX_VIDEO_PARAM_MPEG4TYPE *)pComponentParameterStructure;
- SEC_MPEG4ENC_HANDLE *pMpeg4Enc = NULL;
-
- ret = SEC_OMX_Check_SizeVersion(pSrcMpeg4Param, sizeof(OMX_VIDEO_PARAM_MPEG4TYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pSrcMpeg4Param->nPortIndex >= ALL_PORT_NUM) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- pMpeg4Enc = (SEC_MPEG4ENC_HANDLE *)pSECComponent->hCodecHandle;
- pDstMpeg4Param = &pMpeg4Enc->mpeg4Component[pSrcMpeg4Param->nPortIndex];
-
- SEC_OSAL_Memcpy(pDstMpeg4Param, pSrcMpeg4Param, sizeof(OMX_VIDEO_PARAM_MPEG4TYPE));
- }
- break;
- case OMX_IndexParamVideoH263:
- {
- OMX_VIDEO_PARAM_H263TYPE *pDstH263Param = NULL;
- OMX_VIDEO_PARAM_H263TYPE *pSrcH263Param = (OMX_VIDEO_PARAM_H263TYPE *)pComponentParameterStructure;
- SEC_MPEG4ENC_HANDLE *pMpeg4Enc = NULL;
-
- ret = SEC_OMX_Check_SizeVersion(pSrcH263Param, sizeof(OMX_VIDEO_PARAM_H263TYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pSrcH263Param->nPortIndex >= ALL_PORT_NUM) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- pMpeg4Enc = (SEC_MPEG4ENC_HANDLE *)pSECComponent->hCodecHandle;
- pDstH263Param = &pMpeg4Enc->h263Component[pSrcH263Param->nPortIndex];
-
- SEC_OSAL_Memcpy(pDstH263Param, pSrcH263Param, sizeof(OMX_VIDEO_PARAM_H263TYPE));
- }
- break;
- case OMX_IndexParamStandardComponentRole:
- {
- OMX_PARAM_COMPONENTROLETYPE *pComponentRole = (OMX_PARAM_COMPONENTROLETYPE*)pComponentParameterStructure;
-
- ret = SEC_OMX_Check_SizeVersion(pComponentRole, sizeof(OMX_PARAM_COMPONENTROLETYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if ((pSECComponent->currentState != OMX_StateLoaded) && (pSECComponent->currentState != OMX_StateWaitForResources)) {
- ret = OMX_ErrorIncorrectStateOperation;
- goto EXIT;
- }
-
- if (!SEC_OSAL_Strcmp((char*)pComponentRole->cRole, SEC_OMX_COMPONENT_MPEG4_ENC_ROLE)) {
- pSECComponent->pSECPort[OUTPUT_PORT_INDEX].portDefinition.format.video.eCompressionFormat = OMX_VIDEO_CodingMPEG4;
- //((SEC_MPEG4ENC_HANDLE *)(pSECComponent->hCodecHandle))->hMFCMpeg4Handle.codecType = CODEC_TYPE_MPEG4;
- } else if (!SEC_OSAL_Strcmp((char*)pComponentRole->cRole, SEC_OMX_COMPONENT_H263_ENC_ROLE)) {
- pSECComponent->pSECPort[OUTPUT_PORT_INDEX].portDefinition.format.video.eCompressionFormat = OMX_VIDEO_CodingH263;
- //((SEC_MPEG4ENC_HANDLE *)(pSECComponent->hCodecHandle))->hMFCMpeg4Handle.codecType = CODEC_TYPE_H263;
- } else {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- }
- break;
- case OMX_IndexParamVideoProfileLevelCurrent:
- {
- OMX_VIDEO_PARAM_PROFILELEVELTYPE *pSrcProfileLevel = (OMX_VIDEO_PARAM_PROFILELEVELTYPE *)pComponentParameterStructure;
- OMX_VIDEO_PARAM_MPEG4TYPE *pDstMpeg4Param = NULL;
- OMX_VIDEO_PARAM_H263TYPE *pDstH263Param = NULL;
- SEC_MPEG4ENC_HANDLE *pMpeg4Enc = NULL;
- OMX_S32 codecType;
-
- ret = SEC_OMX_Check_SizeVersion(pSrcProfileLevel, sizeof(OMX_VIDEO_PARAM_PROFILELEVELTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pSrcProfileLevel->nPortIndex >= ALL_PORT_NUM) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- pMpeg4Enc = (SEC_MPEG4ENC_HANDLE *)pSECComponent->hCodecHandle;
- codecType = pMpeg4Enc->hMFCMpeg4Handle.codecType;
- if (codecType == CODEC_TYPE_MPEG4) {
- /*
- * To do: Check validity of profile & level parameters
- */
-
- pDstMpeg4Param = &pMpeg4Enc->mpeg4Component[pSrcProfileLevel->nPortIndex];
- pDstMpeg4Param->eProfile = pSrcProfileLevel->eProfile;
- pDstMpeg4Param->eLevel = pSrcProfileLevel->eLevel;
- } else {
- /*
- * To do: Check validity of profile & level parameters
- */
-
- pDstH263Param = &pMpeg4Enc->h263Component[pSrcProfileLevel->nPortIndex];
- pDstH263Param->eProfile = pSrcProfileLevel->eProfile;
- pDstH263Param->eLevel = pSrcProfileLevel->eLevel;
- }
- }
- break;
- case OMX_IndexParamVideoErrorCorrection:
- {
- OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE *pSrcErrorCorrectionType = (OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE *)pComponentParameterStructure;
- OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE *pDstErrorCorrectionType = NULL;
- SEC_MPEG4ENC_HANDLE *pMpeg4Enc = NULL;
-
- ret = SEC_OMX_Check_SizeVersion(pSrcErrorCorrectionType, sizeof(OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pSrcErrorCorrectionType->nPortIndex != OUTPUT_PORT_INDEX) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- pMpeg4Enc = (SEC_MPEG4ENC_HANDLE *)pSECComponent->hCodecHandle;
- pDstErrorCorrectionType = &pMpeg4Enc->errorCorrectionType[OUTPUT_PORT_INDEX];
-
- pDstErrorCorrectionType->bEnableHEC = pSrcErrorCorrectionType->bEnableHEC;
- pDstErrorCorrectionType->bEnableResync = pSrcErrorCorrectionType->bEnableResync;
- pDstErrorCorrectionType->nResynchMarkerSpacing = pSrcErrorCorrectionType->nResynchMarkerSpacing;
- pDstErrorCorrectionType->bEnableDataPartitioning = pSrcErrorCorrectionType->bEnableDataPartitioning;
- pDstErrorCorrectionType->bEnableRVLC = pSrcErrorCorrectionType->bEnableRVLC;
- }
- break;
- default:
- ret = SEC_OMX_VideoEncodeSetParameter(hComponent, nIndex, pComponentParameterStructure);
- break;
- }
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_MFC_Mpeg4Enc_GetConfig(
- OMX_HANDLETYPE hComponent,
- OMX_INDEXTYPE nIndex,
- OMX_PTR pComponentConfigStructure)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- if (pComponentConfigStructure == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- if (pSECComponent->currentState == OMX_StateInvalid) {
- ret = OMX_ErrorInvalidState;
- goto EXIT;
- }
-
- switch (nIndex) {
- default:
- ret = SEC_OMX_GetConfig(hComponent, nIndex, pComponentConfigStructure);
- break;
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_MFC_Mpeg4Enc_SetConfig(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_INDEXTYPE nIndex,
- OMX_IN OMX_PTR pComponentConfigStructure)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL || pComponentConfigStructure == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- if (pSECComponent->currentState == OMX_StateInvalid) {
- ret = OMX_ErrorInvalidState;
- goto EXIT;
- }
-
- switch (nIndex) {
- default:
- ret = SEC_OMX_SetConfig(hComponent, nIndex, pComponentConfigStructure);
- break;
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_MFC_Mpeg4Enc_GetExtensionIndex(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_STRING cParameterName,
- OMX_OUT OMX_INDEXTYPE *pIndexType)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- if ((cParameterName == NULL) || (pIndexType == NULL)) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- if (pSECComponent->currentState == OMX_StateInvalid) {
- ret = OMX_ErrorInvalidState;
- goto EXIT;
- }
-
-#ifdef USE_ANDROID_EXTENSION
- if (SEC_OSAL_Strcmp(cParameterName, SEC_INDEX_PARAM_STORE_METADATA_BUFFER) == 0) {
- *pIndexType = OMX_IndexParamStoreMetaDataBuffer;
- ret = OMX_ErrorNone;
- } else {
- ret = SEC_OMX_GetExtensionIndex(hComponent, cParameterName, pIndexType);
- }
-#else
- ret = SEC_OMX_GetExtensionIndex(hComponent, cParameterName, pIndexType);
-#endif
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_MFC_Mpeg4Enc_ComponentRoleEnum(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_OUT OMX_U8 *cRole,
- OMX_IN OMX_U32 nIndex)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- OMX_S32 codecType;
-
- FunctionIn();
-
- if ((hComponent == NULL) || (cRole == NULL)) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- if (nIndex != (MAX_COMPONENT_ROLE_NUM - 1)) {
- ret = OMX_ErrorNoMore;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_Check_SizeVersion(pOMXComponent, sizeof(OMX_COMPONENTTYPE));
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- if (pSECComponent->currentState == OMX_StateInvalid ) {
- ret = OMX_StateInvalid;
- goto EXIT;
- }
-
- codecType = ((SEC_MPEG4ENC_HANDLE *)(pSECComponent->hCodecHandle))->hMFCMpeg4Handle.codecType;
- if (codecType == CODEC_TYPE_MPEG4)
- SEC_OSAL_Strcpy((char *)cRole, SEC_OMX_COMPONENT_MPEG4_ENC_ROLE);
- else
- SEC_OSAL_Strcpy((char *)cRole, SEC_OMX_COMPONENT_H263_ENC_ROLE);
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_MFC_EncodeThread(OMX_HANDLETYPE hComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_MPEG4ENC_HANDLE *pMpeg4Enc = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- pMpeg4Enc = (SEC_MPEG4ENC_HANDLE *)pSECComponent->hCodecHandle;
-
- while (pMpeg4Enc->NBEncThread.bExitEncodeThread == OMX_FALSE) {
- SEC_OSAL_SemaphoreWait(pMpeg4Enc->NBEncThread.hEncFrameStart);
-
- if (pMpeg4Enc->NBEncThread.bExitEncodeThread == OMX_FALSE) {
- pMpeg4Enc->hMFCMpeg4Handle.returnCodec = SsbSipMfcEncExe(pMpeg4Enc->hMFCMpeg4Handle.hMFCHandle);
- SEC_OSAL_SemaphorePost(pMpeg4Enc->NBEncThread.hEncFrameEnd);
- }
- }
-
-EXIT:
- FunctionOut();
- SEC_OSAL_ThreadExit(NULL);
-
- return ret;
-}
-
-/* MFC Init */
-OMX_ERRORTYPE SEC_MFC_Mpeg4Enc_Init(OMX_COMPONENTTYPE *pOMXComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- SEC_OMX_BASEPORT *pSECInputPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- SEC_OMX_BASEPORT *pSECOutputPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
- SEC_OMX_BASEPORT *pSECPort = NULL;
- SEC_MPEG4ENC_HANDLE *pMpeg4Enc = NULL;
- OMX_HANDLETYPE hMFCHandle = NULL;
- OMX_S32 returnCodec = 0;
-
- FunctionIn();
-
- pMpeg4Enc = (SEC_MPEG4ENC_HANDLE *)pSECComponent->hCodecHandle;
- pMpeg4Enc->hMFCMpeg4Handle.bConfiguredMFC = OMX_FALSE;
- pSECComponent->bUseFlagEOF = OMX_FALSE;
- pSECComponent->bSaveFlagEOS = OMX_FALSE;
-
- /* MFC(Multi Format Codec) encoder and CMM(Codec Memory Management) driver open */
- SSBIP_MFC_BUFFER_TYPE buf_type = CACHE;
- hMFCHandle = (OMX_PTR)SsbSipMfcEncOpen(&buf_type);
- if (hMFCHandle == NULL) {
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
- pMpeg4Enc->hMFCMpeg4Handle.hMFCHandle = hMFCHandle;
-
- /* set MFC ENC VIDEO PARAM and initialize MFC encoder instance */
- if (pMpeg4Enc->hMFCMpeg4Handle.codecType == CODEC_TYPE_MPEG4) {
- SsbSipMfcEncSetSize(hMFCHandle, MPEG4_ENC,
- pSECOutputPort->portDefinition.format.video.nFrameWidth,
- pSECOutputPort->portDefinition.format.video.nFrameHeight);
- } else {
- SsbSipMfcEncSetSize(hMFCHandle, H263_ENC,
- pSECOutputPort->portDefinition.format.video.nFrameWidth,
- pSECOutputPort->portDefinition.format.video.nFrameHeight);
- }
-
- /* allocate encoder's input buffer */
- returnCodec = SsbSipMfcEncGetInBuf(hMFCHandle, &(pMpeg4Enc->hMFCMpeg4Handle.inputInfo));
- if (returnCodec != MFC_RET_OK) {
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
- pMpeg4Enc->MFCEncInputBuffer[0].YPhyAddr = pMpeg4Enc->hMFCMpeg4Handle.inputInfo.YPhyAddr;
- pMpeg4Enc->MFCEncInputBuffer[0].CPhyAddr = pMpeg4Enc->hMFCMpeg4Handle.inputInfo.CPhyAddr;
- pMpeg4Enc->MFCEncInputBuffer[0].YVirAddr = pMpeg4Enc->hMFCMpeg4Handle.inputInfo.YVirAddr;
- pMpeg4Enc->MFCEncInputBuffer[0].CVirAddr = pMpeg4Enc->hMFCMpeg4Handle.inputInfo.CVirAddr;
- pMpeg4Enc->MFCEncInputBuffer[0].YBufferSize = pMpeg4Enc->hMFCMpeg4Handle.inputInfo.YSize;
- pMpeg4Enc->MFCEncInputBuffer[0].CBufferSize = pMpeg4Enc->hMFCMpeg4Handle.inputInfo.CSize;
- pMpeg4Enc->MFCEncInputBuffer[0].YDataSize = 0;
- pMpeg4Enc->MFCEncInputBuffer[0].CDataSize = 0;
- SEC_OSAL_Log(SEC_LOG_TRACE, "pMpeg4Enc->hMFCMpeg4Handle.inputInfo.YVirAddr : 0x%x", pMpeg4Enc->hMFCMpeg4Handle.inputInfo.YVirAddr);
- SEC_OSAL_Log(SEC_LOG_TRACE, "pMpeg4Enc->hMFCMpeg4Handle.inputInfo.CVirAddr : 0x%x", pMpeg4Enc->hMFCMpeg4Handle.inputInfo.CVirAddr);
-
- /* allocate encoder's input buffer */
- returnCodec = SsbSipMfcEncGetInBuf(hMFCHandle, &(pMpeg4Enc->hMFCMpeg4Handle.inputInfo));
- if (returnCodec != MFC_RET_OK) {
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
- pMpeg4Enc->MFCEncInputBuffer[1].YPhyAddr = pMpeg4Enc->hMFCMpeg4Handle.inputInfo.YPhyAddr;
- pMpeg4Enc->MFCEncInputBuffer[1].CPhyAddr = pMpeg4Enc->hMFCMpeg4Handle.inputInfo.CPhyAddr;
- pMpeg4Enc->MFCEncInputBuffer[1].YVirAddr = pMpeg4Enc->hMFCMpeg4Handle.inputInfo.YVirAddr;
- pMpeg4Enc->MFCEncInputBuffer[1].CVirAddr = pMpeg4Enc->hMFCMpeg4Handle.inputInfo.CVirAddr;
- pMpeg4Enc->MFCEncInputBuffer[1].YBufferSize = pMpeg4Enc->hMFCMpeg4Handle.inputInfo.YSize;
- pMpeg4Enc->MFCEncInputBuffer[1].CBufferSize = pMpeg4Enc->hMFCMpeg4Handle.inputInfo.CSize;
- pMpeg4Enc->MFCEncInputBuffer[1].YDataSize = 0;
- pMpeg4Enc->MFCEncInputBuffer[1].CDataSize = 0;
- SEC_OSAL_Log(SEC_LOG_TRACE, "pMpeg4Enc->hMFCMpeg4Handle.inputInfo.YVirAddr : 0x%x", pMpeg4Enc->hMFCMpeg4Handle.inputInfo.YVirAddr);
- SEC_OSAL_Log(SEC_LOG_TRACE, "pMpeg4Enc->hMFCMpeg4Handle.inputInfo.CVirAddr : 0x%x", pMpeg4Enc->hMFCMpeg4Handle.inputInfo.CVirAddr);
-
- pSECComponent->processData[INPUT_PORT_INDEX].specificBufferHeader.YPhyAddr = pMpeg4Enc->MFCEncInputBuffer[0].YPhyAddr;
- pSECComponent->processData[INPUT_PORT_INDEX].specificBufferHeader.CPhyAddr = pMpeg4Enc->MFCEncInputBuffer[0].CPhyAddr;
- pSECComponent->processData[INPUT_PORT_INDEX].specificBufferHeader.YVirAddr = pMpeg4Enc->MFCEncInputBuffer[0].YVirAddr;
- pSECComponent->processData[INPUT_PORT_INDEX].specificBufferHeader.CVirAddr = pMpeg4Enc->MFCEncInputBuffer[0].CVirAddr;
- pSECComponent->processData[INPUT_PORT_INDEX].specificBufferHeader.YSize = pMpeg4Enc->MFCEncInputBuffer[0].YBufferSize;
- pSECComponent->processData[INPUT_PORT_INDEX].specificBufferHeader.CSize = pMpeg4Enc->MFCEncInputBuffer[0].CBufferSize;
-
- pMpeg4Enc->indexInputBuffer = 0;
- pMpeg4Enc->bFirstFrame = OMX_TRUE;
-
- pMpeg4Enc->NBEncThread.bExitEncodeThread = OMX_FALSE;
- pMpeg4Enc->NBEncThread.bEncoderRun = OMX_FALSE;
- SEC_OSAL_SemaphoreCreate(&(pMpeg4Enc->NBEncThread.hEncFrameStart));
- SEC_OSAL_SemaphoreCreate(&(pMpeg4Enc->NBEncThread.hEncFrameEnd));
- if (OMX_ErrorNone == SEC_OSAL_ThreadCreate(&pMpeg4Enc->NBEncThread.hNBEncodeThread,
- SEC_MFC_EncodeThread,
- pOMXComponent)) {
- pMpeg4Enc->hMFCMpeg4Handle.returnCodec = MFC_RET_OK;
- }
-
- SEC_OSAL_Memset(pSECComponent->timeStamp, -19771003, sizeof(OMX_TICKS) * MAX_TIMESTAMP);
- SEC_OSAL_Memset(pSECComponent->nFlags, 0, sizeof(OMX_U32) * MAX_FLAGS);
- pMpeg4Enc->hMFCMpeg4Handle.indexTimestamp = 0;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-/* MFC Terminate */
-OMX_ERRORTYPE SEC_MFC_Mpeg4Enc_Terminate(OMX_COMPONENTTYPE *pOMXComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- SEC_MPEG4ENC_HANDLE *pMpeg4Enc = NULL;
- OMX_HANDLETYPE hMFCHandle = NULL;
-
- FunctionIn();
-
- pMpeg4Enc = (SEC_MPEG4ENC_HANDLE *)pSECComponent->hCodecHandle;
-
- if (pMpeg4Enc->NBEncThread.hNBEncodeThread != NULL) {
- pMpeg4Enc->NBEncThread.bExitEncodeThread = OMX_TRUE;
- SEC_OSAL_SemaphorePost(pMpeg4Enc->NBEncThread.hEncFrameStart);
- SEC_OSAL_ThreadTerminate(pMpeg4Enc->NBEncThread.hNBEncodeThread);
- pMpeg4Enc->NBEncThread.hNBEncodeThread = NULL;
- }
-
- if(pMpeg4Enc->NBEncThread.hEncFrameEnd != NULL) {
- SEC_OSAL_SemaphoreTerminate(pMpeg4Enc->NBEncThread.hEncFrameEnd);
- pMpeg4Enc->NBEncThread.hEncFrameEnd = NULL;
- }
-
- if(pMpeg4Enc->NBEncThread.hEncFrameStart != NULL) {
- SEC_OSAL_SemaphoreTerminate(pMpeg4Enc->NBEncThread.hEncFrameStart);
- pMpeg4Enc->NBEncThread.hEncFrameStart = NULL;
- }
-
- hMFCHandle = pMpeg4Enc->hMFCMpeg4Handle.hMFCHandle;
- if (hMFCHandle != NULL) {
- SsbSipMfcEncClose(hMFCHandle);
- pMpeg4Enc->hMFCMpeg4Handle.hMFCHandle = NULL;
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_MFC_Mpeg4_Encode(OMX_COMPONENTTYPE *pOMXComponent, SEC_OMX_DATA *pInputData, SEC_OMX_DATA *pOutputData)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- SEC_MPEG4ENC_HANDLE *pMpeg4Enc = (SEC_MPEG4ENC_HANDLE *)pSECComponent->hCodecHandle;
- OMX_HANDLETYPE hMFCHandle = pMpeg4Enc->hMFCMpeg4Handle.hMFCHandle;
- SSBSIP_MFC_ENC_INPUT_INFO *pInputInfo = &(pMpeg4Enc->hMFCMpeg4Handle.inputInfo);
- SSBSIP_MFC_ENC_OUTPUT_INFO outputInfo;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- MFC_ENC_ADDR_INFO addrInfo;
- OMX_U32 oneFrameSize = pInputData->dataLen;
-
- FunctionIn();
-
- if (pMpeg4Enc->hMFCMpeg4Handle.bConfiguredMFC == OMX_FALSE) {
- /* set MFC ENC VIDEO PARAM and initialize MFC encoder instance */
- if (pMpeg4Enc->hMFCMpeg4Handle.codecType == CODEC_TYPE_MPEG4) {
- Set_Mpeg4Enc_Param(&(pMpeg4Enc->hMFCMpeg4Handle.mpeg4MFCParam), pSECComponent);
- pMpeg4Enc->hMFCMpeg4Handle.returnCodec = SsbSipMfcEncInit(hMFCHandle, &(pMpeg4Enc->hMFCMpeg4Handle.mpeg4MFCParam));
- } else {
- Set_H263Enc_Param(&(pMpeg4Enc->hMFCMpeg4Handle.h263MFCParam), pSECComponent);
- pMpeg4Enc->hMFCMpeg4Handle.returnCodec = SsbSipMfcEncInit(hMFCHandle, &(pMpeg4Enc->hMFCMpeg4Handle.h263MFCParam));
- }
- if (pMpeg4Enc->hMFCMpeg4Handle.returnCodec != MFC_RET_OK) {
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
-
- pMpeg4Enc->hMFCMpeg4Handle.returnCodec = SsbSipMfcEncGetOutBuf(hMFCHandle, &outputInfo);
- if (pMpeg4Enc->hMFCMpeg4Handle.returnCodec != MFC_RET_OK)
- {
- SEC_OSAL_Log(SEC_LOG_ERROR, "%s: SsbSipMfcEncGetOutBuf failed, ret:%d", __FUNCTION__, pMpeg4Enc->hMFCMpeg4Handle.returnCodec);
- ret = OMX_ErrorUndefined;
- goto EXIT;
- }
-
- pOutputData->dataBuffer = outputInfo.StrmVirAddr;
- pOutputData->allocSize = outputInfo.headerSize;
- pOutputData->dataLen = outputInfo.headerSize;
- pOutputData->timeStamp = 0;
- pOutputData->nFlags |= OMX_BUFFERFLAG_CODECCONFIG;
- pOutputData->nFlags |= OMX_BUFFERFLAG_ENDOFFRAME;
-
- pMpeg4Enc->hMFCMpeg4Handle.bConfiguredMFC = OMX_TRUE;
-
- ret = OMX_ErrorInputDataEncodeYet;
- goto EXIT;
- }
-
- if ((pInputData->nFlags & OMX_BUFFERFLAG_ENDOFFRAME) &&
- (pSECComponent->bUseFlagEOF == OMX_FALSE)) {
- pSECComponent->bUseFlagEOF = OMX_TRUE;
- }
-
- if (oneFrameSize <= 0) {
- pOutputData->timeStamp = pInputData->timeStamp;
- pOutputData->nFlags = pInputData->nFlags;
-
- ret = OMX_ErrorNone;
- goto EXIT;
- }
-
- pSECPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- if (((pInputData->nFlags & OMX_BUFFERFLAG_EOS) == OMX_BUFFERFLAG_EOS) ||
- (pSECComponent->getAllDelayBuffer == OMX_TRUE)){
- /* Dummy input data for get out encoded last frame */
- pInputInfo->YPhyAddr = pMpeg4Enc->MFCEncInputBuffer[pMpeg4Enc->indexInputBuffer].YPhyAddr;
- pInputInfo->CPhyAddr = pMpeg4Enc->MFCEncInputBuffer[pMpeg4Enc->indexInputBuffer].CPhyAddr;
- pInputInfo->YVirAddr = pMpeg4Enc->MFCEncInputBuffer[pMpeg4Enc->indexInputBuffer].YVirAddr;
- pInputInfo->CVirAddr = pMpeg4Enc->MFCEncInputBuffer[pMpeg4Enc->indexInputBuffer].CVirAddr;
- } else if (pSECPort->portDefinition.format.video.eColorFormat == OMX_SEC_COLOR_FormatNV12TPhysicalAddress) {
- SEC_OSAL_Memcpy(&addrInfo.pAddrY, pInputData->dataBuffer, sizeof(addrInfo.pAddrY));
- SEC_OSAL_Memcpy(&addrInfo.pAddrC, pInputData->dataBuffer + sizeof(addrInfo.pAddrY), sizeof(addrInfo.pAddrC));
- pInputInfo->YPhyAddr = addrInfo.pAddrY;
- pInputInfo->CPhyAddr = addrInfo.pAddrC;
-#ifdef USE_ANDROID_EXTENSION
- } else if (pSECPort->bStoreMetaDataInBuffer != OMX_FALSE) {
- ret = preprocessMetaDataInBuffers(pOMXComponent, pInputData->dataBuffer, pInputInfo);
- if (ret != OMX_ErrorNone)
- goto EXIT;
-#endif
- } else {
- /* Real input data */
- pInputInfo->YPhyAddr = pSECComponent->processData[INPUT_PORT_INDEX].specificBufferHeader.YPhyAddr;
- pInputInfo->CPhyAddr = pSECComponent->processData[INPUT_PORT_INDEX].specificBufferHeader.CPhyAddr;
- }
-
- pSECComponent->timeStamp[pMpeg4Enc->hMFCMpeg4Handle.indexTimestamp] = pInputData->timeStamp;
- pSECComponent->nFlags[pMpeg4Enc->hMFCMpeg4Handle.indexTimestamp] = pInputData->nFlags;
-
- if ((pMpeg4Enc->hMFCMpeg4Handle.returnCodec == MFC_RET_OK) &&
- (pMpeg4Enc->bFirstFrame == OMX_FALSE)) {
- OMX_S32 indexTimestamp = 0;
-
- /* wait for mfc encode done */
- if (pMpeg4Enc->NBEncThread.bEncoderRun != OMX_FALSE) {
- SEC_OSAL_SemaphoreWait(pMpeg4Enc->NBEncThread.hEncFrameEnd);
- pMpeg4Enc->NBEncThread.bEncoderRun = OMX_FALSE;
- }
-
- pMpeg4Enc->hMFCMpeg4Handle.returnCodec = SsbSipMfcEncGetOutBuf(hMFCHandle, &outputInfo);
- if ((SsbSipMfcEncGetConfig(hMFCHandle, MFC_ENC_GETCONF_FRAME_TAG, &indexTimestamp) != MFC_RET_OK) ||
- (((indexTimestamp < 0) || (indexTimestamp >= MAX_TIMESTAMP)))) {
- pOutputData->timeStamp = pInputData->timeStamp;
- pOutputData->nFlags = pInputData->nFlags;
- } else {
- pOutputData->timeStamp = pSECComponent->timeStamp[indexTimestamp];
- pOutputData->nFlags = pSECComponent->nFlags[indexTimestamp];
- }
-
- if (pMpeg4Enc->hMFCMpeg4Handle.returnCodec == MFC_RET_OK) {
- /** Fill Output Buffer **/
- pOutputData->dataBuffer = outputInfo.StrmVirAddr;
- pOutputData->allocSize = outputInfo.dataSize;
- pOutputData->dataLen = outputInfo.dataSize;
- pOutputData->usedDataLen = 0;
-
- pOutputData->nFlags |= OMX_BUFFERFLAG_ENDOFFRAME;
- if (outputInfo.frameType == MFC_FRAME_TYPE_I_FRAME)
- pOutputData->nFlags |= OMX_BUFFERFLAG_SYNCFRAME;
-
- ret = OMX_ErrorNone;
- } else {
- SEC_OSAL_Log(SEC_LOG_ERROR, "%s: SsbSipMfcEncGetOutBuf failed, ret:%d", __FUNCTION__, pMpeg4Enc->hMFCMpeg4Handle.returnCodec);
- ret = OMX_ErrorUndefined;
- goto EXIT;
- }
-
- if (pSECComponent->getAllDelayBuffer == OMX_TRUE) {
- ret = OMX_ErrorInputDataEncodeYet;
- }
- if ((pInputData->nFlags & OMX_BUFFERFLAG_EOS) == OMX_BUFFERFLAG_EOS) {
- pInputData->nFlags = (pOutputData->nFlags & (~OMX_BUFFERFLAG_EOS));
- pSECComponent->getAllDelayBuffer = OMX_TRUE;
- ret = OMX_ErrorInputDataEncodeYet;
- }
- if ((pOutputData->nFlags & OMX_BUFFERFLAG_EOS) == OMX_BUFFERFLAG_EOS) {
- pSECComponent->getAllDelayBuffer = OMX_FALSE;
- pOutputData->dataLen = 0;
- pOutputData->usedDataLen = 0;
- SEC_OSAL_Log(SEC_LOG_TRACE, "OMX_BUFFERFLAG_EOS!!!");
- ret = OMX_ErrorNone;
- }
- }
- if (pMpeg4Enc->hMFCMpeg4Handle.returnCodec != MFC_RET_OK) {
- SEC_OSAL_Log(SEC_LOG_ERROR, "%s: SsbSipMfcEncExe failed, ret:%d", __FUNCTION__, pMpeg4Enc->hMFCMpeg4Handle.returnCodec);
- ret = OMX_ErrorUndefined;
- }
-
- pMpeg4Enc->hMFCMpeg4Handle.returnCodec = SsbSipMfcEncSetInBuf(hMFCHandle, pInputInfo);
- if (pMpeg4Enc->hMFCMpeg4Handle.returnCodec != MFC_RET_OK) {
- SEC_OSAL_Log(SEC_LOG_ERROR, "%s: SsbSipMfcEncSetInBuf failed, ret:%d", __FUNCTION__, pMpeg4Enc->hMFCMpeg4Handle.returnCodec);
- ret = OMX_ErrorUndefined;
- goto EXIT;
- } else {
- pMpeg4Enc->indexInputBuffer++;
- pMpeg4Enc->indexInputBuffer %= MFC_INPUT_BUFFER_NUM_MAX;
- pSECComponent->processData[INPUT_PORT_INDEX].specificBufferHeader.YPhyAddr = pMpeg4Enc->MFCEncInputBuffer[pMpeg4Enc->indexInputBuffer].YPhyAddr;
- pSECComponent->processData[INPUT_PORT_INDEX].specificBufferHeader.CPhyAddr = pMpeg4Enc->MFCEncInputBuffer[pMpeg4Enc->indexInputBuffer].CPhyAddr;
- pSECComponent->processData[INPUT_PORT_INDEX].specificBufferHeader.YVirAddr = pMpeg4Enc->MFCEncInputBuffer[pMpeg4Enc->indexInputBuffer].YVirAddr;
- pSECComponent->processData[INPUT_PORT_INDEX].specificBufferHeader.CVirAddr = pMpeg4Enc->MFCEncInputBuffer[pMpeg4Enc->indexInputBuffer].CVirAddr;
- pSECComponent->processData[INPUT_PORT_INDEX].specificBufferHeader.YSize = pMpeg4Enc->MFCEncInputBuffer[pMpeg4Enc->indexInputBuffer].YBufferSize;
- pSECComponent->processData[INPUT_PORT_INDEX].specificBufferHeader.CSize = pMpeg4Enc->MFCEncInputBuffer[pMpeg4Enc->indexInputBuffer].CBufferSize;
- }
-
- SsbSipMfcEncSetConfig(hMFCHandle, MFC_ENC_SETCONF_FRAME_TAG, &(pMpeg4Enc->hMFCMpeg4Handle.indexTimestamp));
-
- /* mfc encode start */
- SEC_OSAL_SemaphorePost(pMpeg4Enc->NBEncThread.hEncFrameStart);
- pMpeg4Enc->NBEncThread.bEncoderRun = OMX_TRUE;
- pMpeg4Enc->hMFCMpeg4Handle.indexTimestamp++;
- pMpeg4Enc->hMFCMpeg4Handle.indexTimestamp %= MAX_TIMESTAMP;
- pMpeg4Enc->bFirstFrame = OMX_FALSE;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-/* MFC Encode */
-OMX_ERRORTYPE SEC_MFC_Mpeg4Enc_bufferProcess(OMX_COMPONENTTYPE *pOMXComponent, SEC_OMX_DATA *pInputData, SEC_OMX_DATA *pOutputData)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_BASECOMPONENT *pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- SEC_OMX_BASEPORT *pInputPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- SEC_OMX_BASEPORT *pOutputPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
-
- FunctionIn();
-
- if ((!CHECK_PORT_ENABLED(pInputPort)) || (!CHECK_PORT_ENABLED(pOutputPort)) ||
- (!CHECK_PORT_POPULATED(pInputPort)) || (!CHECK_PORT_POPULATED(pOutputPort))) {
- goto EXIT;
- }
- if (OMX_FALSE == SEC_Check_BufferProcess_State(pSECComponent)) {
- goto EXIT;
- }
-
- ret = SEC_MFC_Mpeg4_Encode(pOMXComponent, pInputData, pOutputData);
- if (ret != OMX_ErrorNone) {
- if (ret == OMX_ErrorInputDataEncodeYet) {
- pOutputData->usedDataLen = 0;
- pOutputData->remainDataLen = pOutputData->dataLen;
- } else {
- pSECComponent->pCallbacks->EventHandler((OMX_HANDLETYPE)pOMXComponent,
- pSECComponent->callbackData,
- OMX_EventError, ret, 0, NULL);
- }
- } else {
- pInputData->usedDataLen += pInputData->dataLen;
- pInputData->remainDataLen = pInputData->dataLen - pInputData->usedDataLen;
- pInputData->dataLen -= pInputData->usedDataLen;
- pInputData->usedDataLen = 0;
-
- pOutputData->usedDataLen = 0;
- pOutputData->remainDataLen = pOutputData->dataLen;
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OSCL_EXPORT_REF OMX_ERRORTYPE SEC_OMX_ComponentInit(OMX_HANDLETYPE hComponent, OMX_STRING componentName)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- SEC_MPEG4ENC_HANDLE *pMpeg4Enc = NULL;
- OMX_S32 codecType = -1;
- int i = 0;
-
- FunctionIn();
-
- if ((hComponent == NULL) || (componentName == NULL)) {
- ret = OMX_ErrorBadParameter;
- SEC_OSAL_Log(SEC_LOG_ERROR, "%s: parameters are null, ret: %X", __FUNCTION__, ret);
- goto EXIT;
- }
- if (SEC_OSAL_Strcmp(SEC_OMX_COMPONENT_MPEG4_ENC, componentName) == 0) {
- codecType = CODEC_TYPE_MPEG4;
- } else if (SEC_OSAL_Strcmp(SEC_OMX_COMPONENT_H263_ENC, componentName) == 0) {
- codecType = CODEC_TYPE_H263;
- } else {
- ret = OMX_ErrorBadParameter;
- SEC_OSAL_Log(SEC_LOG_ERROR, "%s: componentName(%s) error, ret: %X", __FUNCTION__, componentName, ret);
- goto EXIT;
- }
-
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- ret = SEC_OMX_VideoEncodeComponentInit(pOMXComponent);
- if (ret != OMX_ErrorNone) {
- SEC_OSAL_Log(SEC_LOG_ERROR, "%s: SEC_OMX_VideoDecodeComponentInit error, ret: %X", __FUNCTION__, ret);
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- pSECComponent->codecType = HW_VIDEO_CODEC;
-
- pSECComponent->componentName = (OMX_STRING)SEC_OSAL_Malloc(MAX_OMX_COMPONENT_NAME_SIZE);
- if (pSECComponent->componentName == NULL) {
- SEC_OMX_VideoEncodeComponentDeinit(pOMXComponent);
- ret = OMX_ErrorInsufficientResources;
- SEC_OSAL_Log(SEC_LOG_ERROR, "%s: componentName alloc error, ret: %X", __FUNCTION__, ret);
- goto EXIT;
- }
- SEC_OSAL_Memset(pSECComponent->componentName, 0, MAX_OMX_COMPONENT_NAME_SIZE);
-
- pMpeg4Enc = SEC_OSAL_Malloc(sizeof(SEC_MPEG4ENC_HANDLE));
- if (pMpeg4Enc == NULL) {
- SEC_OMX_VideoEncodeComponentDeinit(pOMXComponent);
- ret = OMX_ErrorInsufficientResources;
- SEC_OSAL_Log(SEC_LOG_ERROR, "%s: SEC_MPEG4ENC_HANDLE alloc error, ret: %X", __FUNCTION__, ret);
- goto EXIT;
- }
- SEC_OSAL_Memset(pMpeg4Enc, 0, sizeof(SEC_MPEG4ENC_HANDLE));
- pSECComponent->hCodecHandle = (OMX_HANDLETYPE)pMpeg4Enc;
- pMpeg4Enc->hMFCMpeg4Handle.codecType = codecType;
-
- if (codecType == CODEC_TYPE_MPEG4)
- SEC_OSAL_Strcpy(pSECComponent->componentName, SEC_OMX_COMPONENT_MPEG4_ENC);
- else
- SEC_OSAL_Strcpy(pSECComponent->componentName, SEC_OMX_COMPONENT_H263_ENC);
-
- /* Set componentVersion */
- pSECComponent->componentVersion.s.nVersionMajor = VERSIONMAJOR_NUMBER;
- pSECComponent->componentVersion.s.nVersionMinor = VERSIONMINOR_NUMBER;
- pSECComponent->componentVersion.s.nRevision = REVISION_NUMBER;
- pSECComponent->componentVersion.s.nStep = STEP_NUMBER;
- /* Set specVersion */
- pSECComponent->specVersion.s.nVersionMajor = VERSIONMAJOR_NUMBER;
- pSECComponent->specVersion.s.nVersionMinor = VERSIONMINOR_NUMBER;
- pSECComponent->specVersion.s.nRevision = REVISION_NUMBER;
- pSECComponent->specVersion.s.nStep = STEP_NUMBER;
-
- /* Android CapabilityFlags */
- pSECComponent->capabilityFlags.iIsOMXComponentMultiThreaded = OMX_TRUE;
- pSECComponent->capabilityFlags.iOMXComponentSupportsExternalInputBufferAlloc = OMX_TRUE;
- pSECComponent->capabilityFlags.iOMXComponentSupportsExternalOutputBufferAlloc = OMX_TRUE;
- pSECComponent->capabilityFlags.iOMXComponentSupportsMovableInputBuffers = OMX_FALSE;
- pSECComponent->capabilityFlags.iOMXComponentSupportsPartialFrames = OMX_FALSE;
- pSECComponent->capabilityFlags.iOMXComponentUsesNALStartCodes = OMX_TRUE;
- pSECComponent->capabilityFlags.iOMXComponentCanHandleIncompleteFrames = OMX_TRUE;
- pSECComponent->capabilityFlags.iOMXComponentUsesFullAVCFrames = OMX_TRUE;
-
- /* Input port */
- pSECPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
- pSECPort->portDefinition.format.video.nFrameWidth = DEFAULT_FRAME_WIDTH;
- pSECPort->portDefinition.format.video.nFrameHeight= DEFAULT_FRAME_HEIGHT;
- pSECPort->portDefinition.format.video.nBitrate = 64000;
- pSECPort->portDefinition.format.video.xFramerate= (15 << 16);
- pSECPort->portDefinition.format.video.eCompressionFormat = OMX_VIDEO_CodingUnused;
- pSECPort->portDefinition.format.video.pNativeRender = 0;
- pSECPort->portDefinition.format.video.bFlagErrorConcealment = OMX_FALSE;
- SEC_OSAL_Memset(pSECPort->portDefinition.format.video.cMIMEType, 0, MAX_OMX_MIMETYPE_SIZE);
- SEC_OSAL_Strcpy(pSECPort->portDefinition.format.video.cMIMEType, "raw/video");
- pSECPort->portDefinition.format.video.eColorFormat = OMX_COLOR_FormatYUV420SemiPlanar;
- pSECPort->portDefinition.nBufferSize = DEFAULT_VIDEO_INPUT_BUFFER_SIZE;
- pSECPort->portDefinition.bEnabled = OMX_TRUE;
-
- /* Output port */
- pSECPort = &pSECComponent->pSECPort[OUTPUT_PORT_INDEX];
- pSECPort->portDefinition.format.video.nFrameWidth = DEFAULT_FRAME_WIDTH;
- pSECPort->portDefinition.format.video.nFrameHeight= DEFAULT_FRAME_HEIGHT;
- pSECPort->portDefinition.format.video.nBitrate = 64000;
- pSECPort->portDefinition.format.video.xFramerate= (15 << 16);
- if (codecType == CODEC_TYPE_MPEG4) {
- pSECPort->portDefinition.format.video.eCompressionFormat = OMX_VIDEO_CodingMPEG4;
- SEC_OSAL_Memset(pSECPort->portDefinition.format.video.cMIMEType, 0, MAX_OMX_MIMETYPE_SIZE);
- SEC_OSAL_Strcpy(pSECPort->portDefinition.format.video.cMIMEType, "video/mpeg4");
- } else {
- pSECPort->portDefinition.format.video.eCompressionFormat = OMX_VIDEO_CodingH263;
- SEC_OSAL_Memset(pSECPort->portDefinition.format.video.cMIMEType, 0, MAX_OMX_MIMETYPE_SIZE);
- SEC_OSAL_Strcpy(pSECPort->portDefinition.format.video.cMIMEType, "video/h263");
- }
- pSECPort->portDefinition.format.video.pNativeRender = 0;
- pSECPort->portDefinition.format.video.bFlagErrorConcealment = OMX_FALSE;
- pSECPort->portDefinition.format.video.eColorFormat = OMX_COLOR_FormatUnused;
- pSECPort->portDefinition.nBufferSize = DEFAULT_VIDEO_OUTPUT_BUFFER_SIZE;
- pSECPort->portDefinition.bEnabled = OMX_TRUE;
-
- if (codecType == CODEC_TYPE_MPEG4) {
- for(i = 0; i < ALL_PORT_NUM; i++) {
- INIT_SET_SIZE_VERSION(&pMpeg4Enc->mpeg4Component[i], OMX_VIDEO_PARAM_MPEG4TYPE);
- pMpeg4Enc->mpeg4Component[i].nPortIndex = i;
- pMpeg4Enc->mpeg4Component[i].eProfile = OMX_VIDEO_MPEG4ProfileSimple;
- pMpeg4Enc->mpeg4Component[i].eLevel = OMX_VIDEO_MPEG4Level4;
-
- pMpeg4Enc->mpeg4Component[i].nPFrames = 10;
- pMpeg4Enc->mpeg4Component[i].nBFrames = 0; /* No support for B frames */
- pMpeg4Enc->mpeg4Component[i].nMaxPacketSize = 256; /* Default value */
- pMpeg4Enc->mpeg4Component[i].nAllowedPictureTypes = OMX_VIDEO_PictureTypeI | OMX_VIDEO_PictureTypeP;
- pMpeg4Enc->mpeg4Component[i].bGov = OMX_FALSE;
-
- }
- } else {
- for(i = 0; i < ALL_PORT_NUM; i++) {
- INIT_SET_SIZE_VERSION(&pMpeg4Enc->h263Component[i], OMX_VIDEO_PARAM_H263TYPE);
- pMpeg4Enc->h263Component[i].nPortIndex = i;
- pMpeg4Enc->h263Component[i].eProfile = OMX_VIDEO_H263ProfileBaseline;
- pMpeg4Enc->h263Component[i].eLevel = OMX_VIDEO_H263Level45;
-
- pMpeg4Enc->h263Component[i].nPFrames = 20;
- pMpeg4Enc->h263Component[i].nBFrames = 0; /* No support for B frames */
- pMpeg4Enc->h263Component[i].bPLUSPTYPEAllowed = OMX_FALSE;
- pMpeg4Enc->h263Component[i].nAllowedPictureTypes = OMX_VIDEO_PictureTypeI | OMX_VIDEO_PictureTypeP;
- pMpeg4Enc->h263Component[i].bForceRoundingTypeToZero = OMX_TRUE;
- pMpeg4Enc->h263Component[i].nPictureHeaderRepetition = 0;
- pMpeg4Enc->h263Component[i].nGOBHeaderInterval = 0;
- }
- }
-
- pOMXComponent->GetParameter = &SEC_MFC_Mpeg4Enc_GetParameter;
- pOMXComponent->SetParameter = &SEC_MFC_Mpeg4Enc_SetParameter;
- pOMXComponent->GetConfig = &SEC_MFC_Mpeg4Enc_GetConfig;
- pOMXComponent->SetConfig = &SEC_MFC_Mpeg4Enc_SetConfig;
- pOMXComponent->GetExtensionIndex = &SEC_MFC_Mpeg4Enc_GetExtensionIndex;
- pOMXComponent->ComponentRoleEnum = &SEC_MFC_Mpeg4Enc_ComponentRoleEnum;
- pOMXComponent->ComponentDeInit = &SEC_OMX_ComponentDeinit;
-
- pSECComponent->sec_mfc_componentInit = &SEC_MFC_Mpeg4Enc_Init;
- pSECComponent->sec_mfc_componentTerminate = &SEC_MFC_Mpeg4Enc_Terminate;
- pSECComponent->sec_mfc_bufferProcess = &SEC_MFC_Mpeg4Enc_bufferProcess;
- pSECComponent->sec_checkInputFrame = NULL;
-
- pSECComponent->currentState = OMX_StateLoaded;
-
- ret = OMX_ErrorNone;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_ComponentDeinit(OMX_HANDLETYPE hComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_MPEG4ENC_HANDLE *pMpeg4Enc = NULL;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- SEC_OSAL_Free(pSECComponent->componentName);
- pSECComponent->componentName = NULL;
-
- pMpeg4Enc = (SEC_MPEG4ENC_HANDLE *)pSECComponent->hCodecHandle;
- if (pMpeg4Enc != NULL) {
- SEC_OSAL_Free(pMpeg4Enc);
- pMpeg4Enc = pSECComponent->hCodecHandle = NULL;
- }
-
- ret = SEC_OMX_VideoEncodeComponentDeinit(pOMXComponent);
- if (ret != OMX_ErrorNone) {
- goto EXIT;
- }
-
- ret = OMX_ErrorNone;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
diff --git a/sec_mm/sec_omx/sec_omx_component/video/enc/mpeg4enc/SEC_OMX_Mpeg4enc.h b/sec_mm/sec_omx/sec_omx_component/video/enc/mpeg4enc/SEC_OMX_Mpeg4enc.h
deleted file mode 100644
index 36e02d8..0000000
--- a/sec_mm/sec_omx/sec_omx_component/video/enc/mpeg4enc/SEC_OMX_Mpeg4enc.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OMX_Mpeg4enc.h
- * @brief
- * @author Yunji Kim (yunji.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#ifndef SEC_OMX_MPEG4_ENC_COMPONENT
-#define SEC_OMX_MPEG4_ENC_COMPONENT
-
-#include "SEC_OMX_Def.h"
-#include "OMX_Component.h"
-#include "SsbSipMfcApi.h"
-
-
-typedef enum _CODEC_TYPE
-{
- CODEC_TYPE_H263,
- CODEC_TYPE_MPEG4
-} CODEC_TYPE;
-
-typedef struct _SEC_MFC_MPEG4ENC_HANDLE
-{
- OMX_HANDLETYPE hMFCHandle;
- SSBSIP_MFC_ENC_MPEG4_PARAM mpeg4MFCParam;
- SSBSIP_MFC_ENC_H263_PARAM h263MFCParam;
- SSBSIP_MFC_ENC_INPUT_INFO inputInfo;
- OMX_U32 indexTimestamp;
- OMX_BOOL bConfiguredMFC;
- CODEC_TYPE codecType;
- OMX_S32 returnCodec;
-} SEC_MFC_MPEG4ENC_HANDLE;
-
-typedef struct _SEC_MPEG4ENC_HANDLE
-{
- /* OMX Codec specific */
- OMX_VIDEO_PARAM_H263TYPE h263Component[ALL_PORT_NUM];
- OMX_VIDEO_PARAM_MPEG4TYPE mpeg4Component[ALL_PORT_NUM];
- OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE errorCorrectionType[ALL_PORT_NUM];
-
- /* SEC MFC Codec specific */
- SEC_MFC_MPEG4ENC_HANDLE hMFCMpeg4Handle;
-
- /* For Non-Block mode */
- SEC_MFC_NBENC_THREAD NBEncThread;
- OMX_BOOL bFirstFrame;
- MFC_ENC_INPUT_BUFFER MFCEncInputBuffer[MFC_INPUT_BUFFER_NUM_MAX];
- OMX_U32 indexInputBuffer;
-} SEC_MPEG4ENC_HANDLE;
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-OSCL_EXPORT_REF OMX_ERRORTYPE SEC_OMX_ComponentInit(OMX_HANDLETYPE hComponent, OMX_STRING componentName);
- OMX_ERRORTYPE SEC_OMX_ComponentDeinit(OMX_HANDLETYPE hComponent);
-
-#ifdef __cplusplus
-};
-#endif
-
-#endif
diff --git a/sec_mm/sec_omx/sec_omx_component/video/enc/mpeg4enc/library_register.c b/sec_mm/sec_omx/sec_omx_component/video/enc/mpeg4enc/library_register.c
deleted file mode 100644
index 467eba2..0000000
--- a/sec_mm/sec_omx/sec_omx_component/video/enc/mpeg4enc/library_register.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file library_register.c
- * @brief
- * @author Yunji Kim (yunji.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <dlfcn.h>
-
-#include "SEC_OSAL_Memory.h"
-#include "SEC_OSAL_ETC.h"
-#include "library_register.h"
-
-#undef SEC_LOG_TAG
-#define SEC_LOG_TAG "SEC_MPEG4_ENC"
-#define SEC_LOG_OFF
-#include "SEC_OSAL_Log.h"
-
-
-OSCL_EXPORT_REF int SEC_OMX_COMPONENT_Library_Register(SECRegisterComponentType **ppSECComponent)
-{
- FunctionIn();
-
- if (ppSECComponent == NULL)
- goto EXIT;
-
- /* component 1 - video encoder MPEG4 */
- SEC_OSAL_Strcpy(ppSECComponent[0]->componentName, SEC_OMX_COMPONENT_MPEG4_ENC);
- SEC_OSAL_Strcpy(ppSECComponent[0]->roles[0], SEC_OMX_COMPONENT_MPEG4_ENC_ROLE);
- ppSECComponent[0]->totalRoleNum = MAX_COMPONENT_ROLE_NUM;
-
- /* component 2 - video encoder H.263 */
- SEC_OSAL_Strcpy(ppSECComponent[1]->componentName, SEC_OMX_COMPONENT_H263_ENC);
- SEC_OSAL_Strcpy(ppSECComponent[1]->roles[0], SEC_OMX_COMPONENT_H263_ENC_ROLE);
- ppSECComponent[1]->totalRoleNum = MAX_COMPONENT_ROLE_NUM;
-
-EXIT:
- FunctionOut();
- return MAX_COMPONENT_NUM;
-}
-
diff --git a/sec_mm/sec_omx/sec_omx_component/video/enc/mpeg4enc/library_register.h b/sec_mm/sec_omx/sec_omx_component/video/enc/mpeg4enc/library_register.h
deleted file mode 100644
index e172d51..0000000
--- a/sec_mm/sec_omx/sec_omx_component/video/enc/mpeg4enc/library_register.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file library_register.h
- * @brief
- * @author Yunji Kim (yunji.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#ifndef SEC_OMX_MPEG4_ENC_REG
-#define SEC_OMX_MPEG4_ENC_REG
-
-#include "SEC_OMX_Def.h"
-#include "OMX_Component.h"
-#include "SEC_OMX_Component_Register.h"
-
-
-#define OSCL_EXPORT_REF __attribute__((visibility("default")))
-#define MAX_COMPONENT_NUM 2
-#define MAX_COMPONENT_ROLE_NUM 1
-
-/* MPEG4 */
-#define SEC_OMX_COMPONENT_MPEG4_ENC "OMX.SEC.MPEG4.Encoder"
-#define SEC_OMX_COMPONENT_MPEG4_ENC_ROLE "video_encoder.mpeg4"
-
-/* H.263 */
-#define SEC_OMX_COMPONENT_H263_ENC "OMX.SEC.H263.Encoder"
-#define SEC_OMX_COMPONENT_H263_ENC_ROLE "video_encoder.h263"
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-OSCL_EXPORT_REF int SEC_OMX_COMPONENT_Library_Register(SECRegisterComponentType **ppSECComponent);
-
-#ifdef __cplusplus
-};
-#endif
-
-#endif
-
diff --git a/sec_mm/sec_omx/sec_omx_core/Android.mk b/sec_mm/sec_omx/sec_omx_core/Android.mk
deleted file mode 100644
index ddc3c4d..0000000
--- a/sec_mm/sec_omx/sec_omx_core/Android.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := SEC_OMX_Component_Register.c \
- SEC_OMX_Core.c
-
-
-LOCAL_MODULE := libSEC_OMX_Core.aries
-
-LOCAL_CFLAGS :=
-
-LOCAL_ARM_MODE := arm
-
-LOCAL_STATIC_LIBRARIES := libsecosal.aries libsecbasecomponent.aries
-LOCAL_SHARED_LIBRARIES := libc libdl libcutils libutils
-
-LOCAL_C_INCLUDES := $(SEC_OMX_INC)/khronos \
- $(SEC_OMX_INC)/sec \
- $(SEC_OMX_TOP)/sec_osal \
- $(SEC_OMX_TOP)/sec_omx_component/common
-
-include $(BUILD_SHARED_LIBRARY)
-
diff --git a/sec_mm/sec_omx/sec_omx_core/SEC_OMX_Component_Register.c b/sec_mm/sec_omx/sec_omx_core/SEC_OMX_Component_Register.c
deleted file mode 100644
index 1464397..0000000
--- a/sec_mm/sec_omx/sec_omx_core/SEC_OMX_Component_Register.c
+++ /dev/null
@@ -1,269 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OMX_Component_Register.c
- * @brief SEC OpenMAX IL Component Register
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <dlfcn.h>
-#include <sys/types.h>
-#include <dirent.h>
-#include <errno.h>
-#include <assert.h>
-
-#include "OMX_Component.h"
-#include "SEC_OSAL_Memory.h"
-#include "SEC_OSAL_ETC.h"
-#include "SEC_OSAL_Library.h"
-#include "SEC_OMX_Component_Register.h"
-#include "SEC_OMX_Macros.h"
-
-#undef SEC_LOG_TAG
-#define SEC_LOG_TAG "SEC_COMP_REGS"
-#define SEC_LOG_OFF
-#include "SEC_OSAL_Log.h"
-
-
-#define REGISTRY_FILENAME "secomxregistry"
-
-
-OMX_ERRORTYPE SEC_OMX_Component_Register(SEC_OMX_COMPONENT_REGLIST **compList, OMX_U32 *compNum)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- int componentNum = 0, roleNum = 0, totalCompNum = 0;
- int read;
- char *omxregistryfile = NULL;
- char *line = NULL;
- char *libName;
- FILE *omxregistryfp;
- size_t len;
- OMX_HANDLETYPE soHandle;
- const char *errorMsg;
- int (*SEC_OMX_COMPONENT_Library_Register)(SECRegisterComponentType **secComponents);
- SECRegisterComponentType **secComponentsTemp;
- SEC_OMX_COMPONENT_REGLIST *componentList;
-
- FunctionIn();
-
- omxregistryfile = SEC_OSAL_Malloc(strlen("/system/etc/") + strlen(REGISTRY_FILENAME) + 2);
- SEC_OSAL_Strcpy(omxregistryfile, "/system/etc/");
- SEC_OSAL_Strcat(omxregistryfile, REGISTRY_FILENAME);
-
- omxregistryfp = fopen(omxregistryfile, "r");
- if (omxregistryfp == NULL) {
- ret = OMX_ErrorUndefined;
- goto EXIT;
- }
- SEC_OSAL_Free(omxregistryfile);
-
- fseek(omxregistryfp, 0, 0);
- componentList = (SEC_OMX_COMPONENT_REGLIST *)SEC_OSAL_Malloc(sizeof(SEC_OMX_COMPONENT_REGLIST) * MAX_OMX_COMPONENT_NUM);
- SEC_OSAL_Memset(componentList, 0, sizeof(SEC_OMX_COMPONENT_REGLIST) * MAX_OMX_COMPONENT_NUM);
- libName = SEC_OSAL_Malloc(MAX_OMX_COMPONENT_LIBNAME_SIZE);
-
- while ((read = getline(&line, &len, omxregistryfp)) != -1) {
- if ((*line == 'l') && (*(line + 1) == 'i') && (*(line + 2) == 'b') &&
- (*(line + 3) == 'O') && (*(line + 4) == 'M') && (*(line + 5) == 'X')) {
- SEC_OSAL_Memset(libName, 0, MAX_OMX_COMPONENT_LIBNAME_SIZE);
- SEC_OSAL_Strncpy(libName, line, SEC_OSAL_Strlen(line)-1);
- SEC_OSAL_Log(SEC_LOG_TRACE, "libName : %s", libName);
-
- if ((soHandle = SEC_OSAL_dlopen(libName, RTLD_NOW)) != NULL) {
- SEC_OSAL_dlerror(); /* clear error*/
- if ((SEC_OMX_COMPONENT_Library_Register = SEC_OSAL_dlsym(soHandle, "SEC_OMX_COMPONENT_Library_Register")) != NULL) {
- int i = 0, j = 0;
-
- componentNum = (*SEC_OMX_COMPONENT_Library_Register)(NULL);
- secComponentsTemp = (SECRegisterComponentType **)SEC_OSAL_Malloc(sizeof(SECRegisterComponentType*) * componentNum);
- for (i = 0; i < componentNum; i++) {
- secComponentsTemp[i] = SEC_OSAL_Malloc(sizeof(SECRegisterComponentType));
- SEC_OSAL_Memset(secComponentsTemp[i], 0, sizeof(SECRegisterComponentType));
- }
- (*SEC_OMX_COMPONENT_Library_Register)(secComponentsTemp);
-
- for (i = 0; i < componentNum; i++) {
- SEC_OSAL_Strcpy(componentList[totalCompNum].component.componentName, secComponentsTemp[i]->componentName);
- for (j = 0; j < secComponentsTemp[i]->totalRoleNum; j++)
- SEC_OSAL_Strcpy(componentList[totalCompNum].component.roles[j], secComponentsTemp[i]->roles[j]);
- componentList[totalCompNum].component.totalRoleNum = secComponentsTemp[i]->totalRoleNum;
-
- SEC_OSAL_Strcpy(componentList[totalCompNum].libName, libName);
-
- totalCompNum++;
- }
- for (i = 0; i < componentNum; i++) {
- SEC_OSAL_Free(secComponentsTemp[i]);
- }
-
- SEC_OSAL_Free(secComponentsTemp);
- } else {
- if ((errorMsg = SEC_OSAL_dlerror()) != NULL)
- SEC_OSAL_Log(SEC_LOG_WARNING, "dlsym failed: %s", errorMsg);
- }
- SEC_OSAL_dlclose(soHandle);
- } else {
- SEC_OSAL_Log(SEC_LOG_WARNING, "dlopen failed: %s", SEC_OSAL_dlerror());
- }
- } else {
- /* not a component name line. skip */
- continue;
- }
- }
-
- SEC_OSAL_Free(libName);
- fclose(omxregistryfp);
-
- *compList = componentList;
- *compNum = totalCompNum;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_Component_Unregister(SEC_OMX_COMPONENT_REGLIST *componentList)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
-
- SEC_OSAL_Memset(componentList, 0, sizeof(SEC_OMX_COMPONENT_REGLIST) * MAX_OMX_COMPONENT_NUM);
- SEC_OSAL_Free(componentList);
-
-EXIT:
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_ComponentAPICheck(OMX_COMPONENTTYPE component)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
-
- if ((NULL == component.GetComponentVersion) ||
- (NULL == component.SendCommand) ||
- (NULL == component.GetParameter) ||
- (NULL == component.SetParameter) ||
- (NULL == component.GetConfig) ||
- (NULL == component.SetConfig) ||
- (NULL == component.GetExtensionIndex) ||
- (NULL == component.GetState) ||
- (NULL == component.ComponentTunnelRequest) ||
- (NULL == component.UseBuffer) ||
- (NULL == component.AllocateBuffer) ||
- (NULL == component.FreeBuffer) ||
- (NULL == component.EmptyThisBuffer) ||
- (NULL == component.FillThisBuffer) ||
- (NULL == component.SetCallbacks) ||
- (NULL == component.ComponentDeInit) ||
- (NULL == component.UseEGLImage) ||
- (NULL == component.ComponentRoleEnum))
- ret = OMX_ErrorInvalidComponent;
- else
- ret = OMX_ErrorNone;
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_ComponentLoad(SEC_OMX_COMPONENT *sec_component)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_HANDLETYPE libHandle;
- OMX_COMPONENTTYPE *pOMXComponent;
-
- FunctionIn();
-
- OMX_ERRORTYPE (*SEC_OMX_ComponentInit)(OMX_HANDLETYPE hComponent, OMX_STRING componentName);
-
- libHandle = SEC_OSAL_dlopen(sec_component->libName, RTLD_NOW);
- if (!libHandle) {
- ret = OMX_ErrorInvalidComponentName;
- SEC_OSAL_Log(SEC_LOG_ERROR, "OMX_ErrorInvalidComponentName, Line:%d", __LINE__);
- goto EXIT;
- }
-
- SEC_OMX_ComponentInit = SEC_OSAL_dlsym(libHandle, "SEC_OMX_ComponentInit");
- if (!SEC_OMX_ComponentInit) {
- SEC_OSAL_dlclose(libHandle);
- ret = OMX_ErrorInvalidComponent;
- SEC_OSAL_Log(SEC_LOG_ERROR, "OMX_ErrorInvalidComponent, Line:%d", __LINE__);
- goto EXIT;
- }
-
- pOMXComponent = (OMX_COMPONENTTYPE *)SEC_OSAL_Malloc(sizeof(OMX_COMPONENTTYPE));
- INIT_SET_SIZE_VERSION(pOMXComponent, OMX_COMPONENTTYPE);
- ret = (*SEC_OMX_ComponentInit)((OMX_HANDLETYPE)pOMXComponent, sec_component->componentName);
- if (ret != OMX_ErrorNone) {
- SEC_OSAL_Free(pOMXComponent);
- SEC_OSAL_dlclose(libHandle);
- ret = OMX_ErrorInvalidComponent;
- SEC_OSAL_Log(SEC_LOG_ERROR, "OMX_ErrorInvalidComponent, Line:%d", __LINE__);
- goto EXIT;
- } else {
- if (SEC_OMX_ComponentAPICheck(*pOMXComponent) != OMX_ErrorNone) {
- SEC_OSAL_Free(pOMXComponent);
- SEC_OSAL_dlclose(libHandle);
- if (NULL != pOMXComponent->ComponentDeInit)
- pOMXComponent->ComponentDeInit(pOMXComponent);
- ret = OMX_ErrorInvalidComponent;
- SEC_OSAL_Log(SEC_LOG_ERROR, "OMX_ErrorInvalidComponent, Line:%d", __LINE__);
- goto EXIT;
- }
- sec_component->libHandle = libHandle;
- sec_component->pOMXComponent = pOMXComponent;
- ret = OMX_ErrorNone;
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OMX_ComponentUnload(SEC_OMX_COMPONENT *sec_component)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
-
- FunctionIn();
-
- if (!sec_component) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- pOMXComponent = sec_component->pOMXComponent;
- if (pOMXComponent != NULL) {
- pOMXComponent->ComponentDeInit(pOMXComponent);
- SEC_OSAL_Free(pOMXComponent);
- sec_component->pOMXComponent = NULL;
- }
-
- if (sec_component->libHandle != NULL) {
- SEC_OSAL_dlclose(sec_component->libHandle);
- sec_component->libHandle = NULL;
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
diff --git a/sec_mm/sec_omx/sec_omx_core/SEC_OMX_Component_Register.h b/sec_mm/sec_omx/sec_omx_core/SEC_OMX_Component_Register.h
deleted file mode 100644
index 66580bd..0000000
--- a/sec_mm/sec_omx/sec_omx_core/SEC_OMX_Component_Register.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OMX_Component_Register.h
- * @brief SEC OpenMAX IL Component Register
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#ifndef SEC_OMX_COMPONENT_REG
-#define SEC_OMX_COMPONENT_REG
-
-#include "SEC_OMX_Def.h"
-#include "OMX_Types.h"
-#include "OMX_Core.h"
-#include "OMX_Component.h"
-
-
-typedef struct _SECRegisterComponentType
-{
- OMX_U8 componentName[MAX_OMX_COMPONENT_NAME_SIZE];
- OMX_U8 roles[MAX_OMX_COMPONENT_ROLE_NUM][MAX_OMX_COMPONENT_ROLE_SIZE];
- OMX_U32 totalRoleNum;
-} SECRegisterComponentType;
-
-typedef struct _SEC_OMX_COMPONENT_REGLIST
-{
- SECRegisterComponentType component;
- OMX_U8 libName[MAX_OMX_COMPONENT_LIBNAME_SIZE];
-} SEC_OMX_COMPONENT_REGLIST;
-
-struct SEC_OMX_COMPONENT;
-typedef struct _SEC_OMX_COMPONENT
-{
- OMX_U8 componentName[MAX_OMX_COMPONENT_NAME_SIZE];
- OMX_U8 libName[MAX_OMX_COMPONENT_LIBNAME_SIZE];
- OMX_HANDLETYPE libHandle;
- OMX_COMPONENTTYPE *pOMXComponent;
- struct SEC_OMX_COMPONENT *nextOMXComp;
-} SEC_OMX_COMPONENT;
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-OMX_ERRORTYPE SEC_OMX_Component_Register(SEC_OMX_COMPONENT_REGLIST **compList, OMX_U32 *compNum);
-OMX_ERRORTYPE SEC_OMX_Component_Unregister(SEC_OMX_COMPONENT_REGLIST *componentList);
-OMX_ERRORTYPE SEC_OMX_ComponentLoad(SEC_OMX_COMPONENT *sec_component);
-OMX_ERRORTYPE SEC_OMX_ComponentUnload(SEC_OMX_COMPONENT *sec_component);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/sec_mm/sec_omx/sec_omx_core/SEC_OMX_Core.c b/sec_mm/sec_omx/sec_omx_core/SEC_OMX_Core.c
deleted file mode 100644
index fb2875d..0000000
--- a/sec_mm/sec_omx/sec_omx_core/SEC_OMX_Core.c
+++ /dev/null
@@ -1,363 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OMX_Core.c
- * @brief SEC OpenMAX IL Core
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * HyeYeon Chung (hyeon.chung@samsung.com)
- * Yunji Kim (yunji.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <pthread.h> // for pthread related functions
-
-#include "SEC_OMX_Core.h"
-#include "SEC_OSAL_Mutex.h" // for mutext related functions
-#include "SEC_OSAL_ETC.h" // for SEC_OSAL_Strcmp, etc
-#include "SEC_OMX_Component_Register.h"
-#include "SEC_OSAL_Memory.h"
-#include "SEC_OMX_Resourcemanager.h"
-
-#undef SEC_LOG_TAG
-#define SEC_LOG_TAG "SEC_OMX_CORE"
-#define SEC_LOG_OFF
-#include "SEC_OSAL_Log.h"
-
-
-static int gInitialized = 0;
-static OMX_U32 gComponentNum = 0;
-
-static SEC_OMX_COMPONENT_REGLIST *gComponentList = NULL;
-static SEC_OMX_COMPONENT *gLoadComponentList = NULL;
-static pthread_mutex_t ghLoadComponentListMutex = PTHREAD_MUTEX_INITIALIZER;
-
-
-OMX_API OMX_ERRORTYPE OMX_APIENTRY SEC_OMX_Init(void)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
-
- FunctionIn();
-
- SEC_OSAL_MutexLock(&ghLoadComponentListMutex);
- if (gInitialized == 0) {
- if (SEC_OMX_Component_Register(&gComponentList, &gComponentNum)) {
- ret = OMX_ErrorInsufficientResources;
- SEC_OSAL_Log(SEC_LOG_ERROR, "SEC_OMX_Init : %s", "OMX_ErrorInsufficientResources");
- goto EXIT;
- }
-
- SEC_OMX_ResourceManager_Init();
- SEC_OSAL_Log(SEC_LOG_TRACE, "SEC_OMX_Init : %s", "OMX_ErrorNone");
- }
- ++gInitialized;
-
-EXIT:
- SEC_OSAL_MutexUnlock(&ghLoadComponentListMutex);
- FunctionOut();
-
- return ret;
-}
-
-OMX_API OMX_ERRORTYPE OMX_APIENTRY SEC_OMX_Deinit(void)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
-
- FunctionIn();
-
- SEC_OSAL_MutexLock(&ghLoadComponentListMutex);
- if (gInitialized > 0) {
- --gInitialized;
- }
-
- if (gInitialized != 0) {
- // Some component still uses the core.
- // Nothing needs to be done
- goto EXIT;
- }
-
- SEC_OMX_ResourceManager_Deinit();
-
- if (OMX_ErrorNone != SEC_OMX_Component_Unregister(gComponentList)) {
- ret = OMX_ErrorUndefined;
- goto EXIT;
- }
- gComponentList = NULL;
- gComponentNum = 0;
-
-EXIT:
- SEC_OSAL_MutexUnlock(&ghLoadComponentListMutex);
- FunctionOut();
-
- return ret;
-}
-
-OMX_API OMX_ERRORTYPE OMX_APIENTRY SEC_OMX_ComponentNameEnum(
- OMX_OUT OMX_STRING cComponentName,
- OMX_IN OMX_U32 nNameLength,
- OMX_IN OMX_U32 nIndex)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
-
- FunctionIn();
-
- if (nIndex >= gComponentNum) {
- ret = OMX_ErrorNoMore;
- goto EXIT;
- }
-
- sprintf(cComponentName, "%s", gComponentList[nIndex].component.componentName);
- ret = OMX_ErrorNone;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_API OMX_ERRORTYPE OMX_APIENTRY SEC_OMX_GetHandle(
- OMX_OUT OMX_HANDLETYPE *pHandle,
- OMX_IN OMX_STRING cComponentName,
- OMX_IN OMX_PTR pAppData,
- OMX_IN OMX_CALLBACKTYPE *pCallBacks)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_COMPONENT *loadComponent;
- SEC_OMX_COMPONENT *currentComponent;
-
- FunctionIn();
-
- if (gInitialized != 1) {
- ret = OMX_ErrorNotReady;
- goto EXIT;
- }
-
- if ((pHandle == NULL) || (cComponentName == NULL) || (pCallBacks == NULL)) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- SEC_OSAL_Log(SEC_LOG_TRACE, "ComponentName : %s", cComponentName);
-
- OMX_U32 i = 0;
- for (i = 0; i < gComponentNum; i++) {
- if (SEC_OSAL_Strcmp(cComponentName, gComponentList[i].component.componentName) == 0) {
- loadComponent = SEC_OSAL_Malloc(sizeof(SEC_OMX_COMPONENT));
- SEC_OSAL_Memset(loadComponent, 0, sizeof(SEC_OMX_COMPONENT));
-
- SEC_OSAL_Strcpy(loadComponent->libName, gComponentList[i].libName);
- SEC_OSAL_Strcpy(loadComponent->componentName, gComponentList[i].component.componentName);
- ret = SEC_OMX_ComponentLoad(loadComponent);
- if (ret != OMX_ErrorNone) {
- SEC_OSAL_Free(loadComponent);
- SEC_OSAL_Log(SEC_LOG_ERROR, "OMX_Error, Line:%d", __LINE__);
- goto EXIT;
- }
-
- ret = loadComponent->pOMXComponent->SetCallbacks(loadComponent->pOMXComponent, pCallBacks, pAppData);
- if (ret != OMX_ErrorNone) {
- SEC_OMX_ComponentUnload(loadComponent);
- SEC_OSAL_Free(loadComponent);
- SEC_OSAL_Log(SEC_LOG_ERROR, "OMX_Error, Line:%d", __LINE__);
- goto EXIT;
- }
-
- SEC_OSAL_MutexLock(&ghLoadComponentListMutex);
- if (gLoadComponentList == NULL) {
- gLoadComponentList = loadComponent;
- } else {
- currentComponent = gLoadComponentList;
- while (currentComponent->nextOMXComp != NULL) {
- currentComponent = currentComponent->nextOMXComp;
- }
- currentComponent->nextOMXComp = loadComponent;
- }
- SEC_OSAL_MutexUnlock(&ghLoadComponentListMutex);
-
- *pHandle = loadComponent->pOMXComponent;
- ret = OMX_ErrorNone;
- SEC_OSAL_Log(SEC_LOG_TRACE, "SEC_OMX_GetHandle : %s", "OMX_ErrorNone");
- goto EXIT;
- }
- }
-
- ret = OMX_ErrorComponentNotFound;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_API OMX_ERRORTYPE OMX_APIENTRY SEC_OMX_FreeHandle(OMX_IN OMX_HANDLETYPE hComponent)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_OMX_COMPONENT *currentComponent;
- SEC_OMX_COMPONENT *deleteComponent;
-
- FunctionIn();
-
- if (gInitialized != 1) {
- ret = OMX_ErrorNotReady;
- goto EXIT;
- }
-
- if (!hComponent) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- SEC_OSAL_MutexLock(&ghLoadComponentListMutex);
- currentComponent = gLoadComponentList;
- if (gLoadComponentList->pOMXComponent == hComponent) {
- deleteComponent = gLoadComponentList;
- gLoadComponentList = gLoadComponentList->nextOMXComp;
- } else {
- while ((currentComponent != NULL) && (((SEC_OMX_COMPONENT *)(currentComponent->nextOMXComp))->pOMXComponent != hComponent))
- currentComponent = currentComponent->nextOMXComp;
-
- if (((SEC_OMX_COMPONENT *)(currentComponent->nextOMXComp))->pOMXComponent == hComponent) {
- deleteComponent = currentComponent->nextOMXComp;
- currentComponent->nextOMXComp = deleteComponent->nextOMXComp;
- } else if (currentComponent == NULL) {
- ret = OMX_ErrorComponentNotFound;
- goto EXIT;
- }
- }
-
- SEC_OMX_ComponentUnload(deleteComponent);
- SEC_OSAL_Free(deleteComponent);
-
-EXIT:
- SEC_OSAL_MutexUnlock(&ghLoadComponentListMutex);
- FunctionOut();
-
- return ret;
-}
-
-OMX_API OMX_ERRORTYPE OMX_APIENTRY SEC_OMX_SetupTunnel(
- OMX_IN OMX_HANDLETYPE hOutput,
- OMX_IN OMX_U32 nPortOutput,
- OMX_IN OMX_HANDLETYPE hInput,
- OMX_IN OMX_U32 nPortInput)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNotImplemented;
-
-EXIT:
- return ret;
-}
-
-OMX_API OMX_ERRORTYPE SEC_OMX_GetContentPipe(
- OMX_OUT OMX_HANDLETYPE *hPipe,
- OMX_IN OMX_STRING szURI)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNotImplemented;
-
-EXIT:
- return ret;
-}
-
-OMX_API OMX_ERRORTYPE SEC_OMX_GetComponentsOfRole (
- OMX_IN OMX_STRING role,
- OMX_INOUT OMX_U32 *pNumComps,
- OMX_INOUT OMX_U8 **compNames)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- int max_role_num = 0;
- OMX_STRING RoleString[MAX_OMX_COMPONENT_ROLE_SIZE];
- int i = 0, j = 0;
-
- FunctionIn();
-
- if (gInitialized != 1) {
- ret = OMX_ErrorNotReady;
- goto EXIT;
- }
-
- *pNumComps = 0;
-
- for (i = 0; i < MAX_OMX_COMPONENT_NUM; i++) {
- max_role_num = gComponentList[i].component.totalRoleNum;
-
- for (j = 0; j < max_role_num; j++) {
- if (SEC_OSAL_Strcmp(gComponentList[i].component.roles[j], role) == 0) {
- if (compNames != NULL) {
- SEC_OSAL_Strcpy((OMX_STRING)compNames[*pNumComps], gComponentList[i].component.componentName);
- }
- *pNumComps = (*pNumComps + 1);
- }
- }
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_API OMX_ERRORTYPE SEC_OMX_GetRolesOfComponent (
- OMX_IN OMX_STRING compName,
- OMX_INOUT OMX_U32 *pNumRoles,
- OMX_OUT OMX_U8 **roles)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_BOOL detectComp = OMX_FALSE;
- int compNum = 0, totalRoleNum = 0;
- int i = 0;
-
- FunctionIn();
-
- if (gInitialized != 1) {
- ret = OMX_ErrorNotReady;
- goto EXIT;
- }
-
- for (i = 0; i < MAX_OMX_COMPONENT_NUM; i++) {
- if (gComponentList != NULL) {
- if (SEC_OSAL_Strcmp(gComponentList[i].component.componentName, compName) == 0) {
- *pNumRoles = totalRoleNum = gComponentList[i].component.totalRoleNum;
- compNum = i;
- detectComp = OMX_TRUE;
- break;
- }
- } else {
- ret = OMX_ErrorUndefined;
- goto EXIT;
- }
- }
-
- if (detectComp == OMX_FALSE) {
- *pNumRoles = 0;
- ret = OMX_ErrorComponentNotFound;
- goto EXIT;
- }
-
- if (roles != NULL) {
- for (i = 0; i < totalRoleNum; i++) {
- SEC_OSAL_Strcpy(roles[i], gComponentList[compNum].component.roles[i]);
- }
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
diff --git a/sec_mm/sec_omx/sec_omx_core/SEC_OMX_Core.h b/sec_mm/sec_omx/sec_omx_core/SEC_OMX_Core.h
deleted file mode 100644
index 87f561c..0000000
--- a/sec_mm/sec_omx/sec_omx_core/SEC_OMX_Core.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OMX_Core.h
- * @brief SEC OpenMAX IL Core
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * HyeYeon Chung (hyeon.chung@samsung.com)
- * Yunji Kim (yunji.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#ifndef SEC_OMX_CORE
-#define SEC_OMX_CORE
-
-#include "SEC_OMX_Def.h"
-#include "OMX_Types.h"
-#include "OMX_Core.h"
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-SEC_EXPORT_REF OMX_API OMX_ERRORTYPE OMX_APIENTRY SEC_OMX_Init(void);
-SEC_EXPORT_REF OMX_API OMX_ERRORTYPE OMX_APIENTRY SEC_OMX_Deinit(void);
-SEC_EXPORT_REF OMX_API OMX_ERRORTYPE OMX_APIENTRY SEC_OMX_ComponentNameEnum(
- OMX_OUT OMX_STRING cComponentName,
- OMX_IN OMX_U32 nNameLength,
- OMX_IN OMX_U32 nIndex);
-SEC_EXPORT_REF OMX_API OMX_ERRORTYPE OMX_APIENTRY SEC_OMX_GetHandle(
- OMX_OUT OMX_HANDLETYPE *pHandle,
- OMX_IN OMX_STRING cComponentName,
- OMX_IN OMX_PTR pAppData,
- OMX_IN OMX_CALLBACKTYPE *pCallBacks);
-SEC_EXPORT_REF OMX_API OMX_ERRORTYPE OMX_APIENTRY SEC_OMX_FreeHandle(
- OMX_IN OMX_HANDLETYPE hComponent);
-SEC_EXPORT_REF OMX_API OMX_ERRORTYPE OMX_APIENTRY SEC_OMX_SetupTunnel(
- OMX_IN OMX_HANDLETYPE hOutput,
- OMX_IN OMX_U32 nPortOutput,
- OMX_IN OMX_HANDLETYPE hInput,
- OMX_IN OMX_U32 nPortInput);
-SEC_EXPORT_REF OMX_API OMX_ERRORTYPE SEC_OMX_GetContentPipe(
- OMX_OUT OMX_HANDLETYPE *hPipe,
- OMX_IN OMX_STRING szURI);
-SEC_EXPORT_REF OMX_API OMX_ERRORTYPE SEC_OMX_GetComponentsOfRole(
- OMX_IN OMX_STRING role,
- OMX_INOUT OMX_U32 *pNumComps,
- OMX_INOUT OMX_U8 **compNames);
-SEC_EXPORT_REF OMX_API OMX_ERRORTYPE SEC_OMX_GetRolesOfComponent(
- OMX_IN OMX_STRING compName,
- OMX_INOUT OMX_U32 *pNumRoles,
- OMX_OUT OMX_U8 **roles);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/sec_mm/sec_omx/sec_omx_core/secomxregistry b/sec_mm/sec_omx/sec_omx_core/secomxregistry
deleted file mode 100644
index cc762e6..0000000
--- a/sec_mm/sec_omx/sec_omx_core/secomxregistry
+++ /dev/null
@@ -1,4 +0,0 @@
-libOMX.SEC.AVC.Decoder.aries.so
-libOMX.SEC.M4V.Decoder.aries.so
-libOMX.SEC.AVC.Encoder.aries.so
-libOMX.SEC.M4V.Encoder.aries.so
diff --git a/sec_mm/sec_omx/sec_omx_include/khronos/OMX_Audio.h b/sec_mm/sec_omx/sec_omx_include/khronos/OMX_Audio.h
deleted file mode 100644
index 04f1a99..0000000
--- a/sec_mm/sec_omx/sec_omx_include/khronos/OMX_Audio.h
+++ /dev/null
@@ -1,1311 +0,0 @@
-/*
- * Copyright (c) 2008 The Khronos Group Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject
- * to the following conditions:
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-
-/** @file OMX_Audio.h - OpenMax IL version 1.1.2
- * The structures needed by Audio components to exchange
- * parameters and configuration data with the componenmilts.
- */
-
-#ifndef OMX_Audio_h
-#define OMX_Audio_h
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-/* Each OMX header must include all required header files to allow the
- * header to compile without errors. The includes below are required
- * for this header file to compile successfully
- */
-
-#include <OMX_Core.h>
-
-/** @defgroup midi MIDI
- * @ingroup audio
- */
-
-/** @defgroup effects Audio effects
- * @ingroup audio
- */
-
-/** @defgroup audio OpenMAX IL Audio Domain
- * Structures for OpenMAX IL Audio domain
- * @{
- */
-
-/** Enumeration used to define the possible audio codings.
- * If "OMX_AUDIO_CodingUnused" is selected, the coding selection must
- * be done in a vendor specific way. Since this is for an audio
- * processing element this enum is relevant. However, for another
- * type of component other enums would be in this area.
- */
-typedef enum OMX_AUDIO_CODINGTYPE {
- OMX_AUDIO_CodingUnused = 0, /**< Placeholder value when coding is N/A */
- OMX_AUDIO_CodingAutoDetect, /**< auto detection of audio format */
- OMX_AUDIO_CodingPCM, /**< Any variant of PCM coding */
- OMX_AUDIO_CodingADPCM, /**< Any variant of ADPCM encoded data */
- OMX_AUDIO_CodingAMR, /**< Any variant of AMR encoded data */
- OMX_AUDIO_CodingGSMFR, /**< Any variant of GSM fullrate (i.e. GSM610) */
- OMX_AUDIO_CodingGSMEFR, /**< Any variant of GSM Enhanced Fullrate encoded data*/
- OMX_AUDIO_CodingGSMHR, /**< Any variant of GSM Halfrate encoded data */
- OMX_AUDIO_CodingPDCFR, /**< Any variant of PDC Fullrate encoded data */
- OMX_AUDIO_CodingPDCEFR, /**< Any variant of PDC Enhanced Fullrate encoded data */
- OMX_AUDIO_CodingPDCHR, /**< Any variant of PDC Halfrate encoded data */
- OMX_AUDIO_CodingTDMAFR, /**< Any variant of TDMA Fullrate encoded data (TIA/EIA-136-420) */
- OMX_AUDIO_CodingTDMAEFR, /**< Any variant of TDMA Enhanced Fullrate encoded data (TIA/EIA-136-410) */
- OMX_AUDIO_CodingQCELP8, /**< Any variant of QCELP 8kbps encoded data */
- OMX_AUDIO_CodingQCELP13, /**< Any variant of QCELP 13kbps encoded data */
- OMX_AUDIO_CodingEVRC, /**< Any variant of EVRC encoded data */
- OMX_AUDIO_CodingSMV, /**< Any variant of SMV encoded data */
- OMX_AUDIO_CodingG711, /**< Any variant of G.711 encoded data */
- OMX_AUDIO_CodingG723, /**< Any variant of G.723 dot 1 encoded data */
- OMX_AUDIO_CodingG726, /**< Any variant of G.726 encoded data */
- OMX_AUDIO_CodingG729, /**< Any variant of G.729 encoded data */
- OMX_AUDIO_CodingAAC, /**< Any variant of AAC encoded data */
- OMX_AUDIO_CodingMP3, /**< Any variant of MP3 encoded data */
- OMX_AUDIO_CodingSBC, /**< Any variant of SBC encoded data */
- OMX_AUDIO_CodingVORBIS, /**< Any variant of VORBIS encoded data */
- OMX_AUDIO_CodingWMA, /**< Any variant of WMA encoded data */
- OMX_AUDIO_CodingRA, /**< Any variant of RA encoded data */
- OMX_AUDIO_CodingMIDI, /**< Any variant of MIDI encoded data */
- OMX_AUDIO_CodingKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_CodingVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_CodingMax = 0x7FFFFFFF
-} OMX_AUDIO_CODINGTYPE;
-
-
-/** The PortDefinition structure is used to define all of the parameters
- * necessary for the compliant component to setup an input or an output audio
- * path. If additional information is needed to define the parameters of the
- * port (such as frequency), additional structures must be sent such as the
- * OMX_AUDIO_PARAM_PCMMODETYPE structure to supply the extra parameters for the port.
- */
-typedef struct OMX_AUDIO_PORTDEFINITIONTYPE {
- OMX_STRING cMIMEType; /**< MIME type of data for the port */
- OMX_NATIVE_DEVICETYPE pNativeRender; /** < platform specific reference
- for an output device,
- otherwise this field is 0 */
- OMX_BOOL bFlagErrorConcealment; /**< Turns on error concealment if it is
- supported by the OMX component */
- OMX_AUDIO_CODINGTYPE eEncoding; /**< Type of data expected for this
- port (e.g. PCM, AMR, MP3, etc) */
-} OMX_AUDIO_PORTDEFINITIONTYPE;
-
-
-/** Port format parameter. This structure is used to enumerate
- * the various data input/output format supported by the port.
- */
-typedef struct OMX_AUDIO_PARAM_PORTFORMATTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< Indicates which port to set */
- OMX_U32 nIndex; /**< Indicates the enumeration index for the format from 0x0 to N-1 */
- OMX_AUDIO_CODINGTYPE eEncoding; /**< Type of data expected for this port (e.g. PCM, AMR, MP3, etc) */
-} OMX_AUDIO_PARAM_PORTFORMATTYPE;
-
-
-/** PCM mode type */
-typedef enum OMX_AUDIO_PCMMODETYPE {
- OMX_AUDIO_PCMModeLinear = 0, /**< Linear PCM encoded data */
- OMX_AUDIO_PCMModeALaw, /**< A law PCM encoded data (G.711) */
- OMX_AUDIO_PCMModeMULaw, /**< Mu law PCM encoded data (G.711) */
- OMX_AUDIO_PCMModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_PCMModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_PCMModeMax = 0x7FFFFFFF
-} OMX_AUDIO_PCMMODETYPE;
-
-
-typedef enum OMX_AUDIO_CHANNELTYPE {
- OMX_AUDIO_ChannelNone = 0x0, /**< Unused or empty */
- OMX_AUDIO_ChannelLF = 0x1, /**< Left front */
- OMX_AUDIO_ChannelRF = 0x2, /**< Right front */
- OMX_AUDIO_ChannelCF = 0x3, /**< Center front */
- OMX_AUDIO_ChannelLS = 0x4, /**< Left surround */
- OMX_AUDIO_ChannelRS = 0x5, /**< Right surround */
- OMX_AUDIO_ChannelLFE = 0x6, /**< Low frequency effects */
- OMX_AUDIO_ChannelCS = 0x7, /**< Back surround */
- OMX_AUDIO_ChannelLR = 0x8, /**< Left rear. */
- OMX_AUDIO_ChannelRR = 0x9, /**< Right rear. */
- OMX_AUDIO_ChannelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_ChannelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_ChannelMax = 0x7FFFFFFF
-} OMX_AUDIO_CHANNELTYPE;
-
-#define OMX_AUDIO_MAXCHANNELS 16 /**< maximum number distinct audio channels that a buffer may contain */
-#define OMX_MIN_PCMPAYLOAD_MSEC 5 /**< Minimum audio buffer payload size for uncompressed (PCM) audio */
-
-/** PCM format description */
-typedef struct OMX_AUDIO_PARAM_PCMMODETYPE {
- OMX_U32 nSize; /**< Size of this structure, in Bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels (e.g. 2 for stereo) */
- OMX_NUMERICALDATATYPE eNumData; /**< indicates PCM data as signed or unsigned */
- OMX_ENDIANTYPE eEndian; /**< indicates PCM data as little or big endian */
- OMX_BOOL bInterleaved; /**< True for normal interleaved data; false for
- non-interleaved data (e.g. block data) */
- OMX_U32 nBitPerSample; /**< Bit per sample */
- OMX_U32 nSamplingRate; /**< Sampling rate of the source data. Use 0 for
- variable or unknown sampling rate. */
- OMX_AUDIO_PCMMODETYPE ePCMMode; /**< PCM mode enumeration */
- OMX_AUDIO_CHANNELTYPE eChannelMapping[OMX_AUDIO_MAXCHANNELS]; /**< Slot i contains channel defined by eChannelMap[i] */
-
-} OMX_AUDIO_PARAM_PCMMODETYPE;
-
-
-/** Audio channel mode. This is used by both AAC and MP3, although the names are more appropriate
- * for the MP3. For example, JointStereo for MP3 is CouplingChannels for AAC.
- */
-typedef enum OMX_AUDIO_CHANNELMODETYPE {
- OMX_AUDIO_ChannelModeStereo = 0, /**< 2 channels, the bitrate allocation between those
- two channels changes accordingly to each channel information */
- OMX_AUDIO_ChannelModeJointStereo, /**< mode that takes advantage of what is common between
- 2 channels for higher compression gain */
- OMX_AUDIO_ChannelModeDual, /**< 2 mono-channels, each channel is encoded with half
- the bitrate of the overall bitrate */
- OMX_AUDIO_ChannelModeMono, /**< Mono channel mode */
- OMX_AUDIO_ChannelModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_ChannelModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_ChannelModeMax = 0x7FFFFFFF
-} OMX_AUDIO_CHANNELMODETYPE;
-
-
-typedef enum OMX_AUDIO_MP3STREAMFORMATTYPE {
- OMX_AUDIO_MP3StreamFormatMP1Layer3 = 0, /**< MP3 Audio MPEG 1 Layer 3 Stream format */
- OMX_AUDIO_MP3StreamFormatMP2Layer3, /**< MP3 Audio MPEG 2 Layer 3 Stream format */
- OMX_AUDIO_MP3StreamFormatMP2_5Layer3, /**< MP3 Audio MPEG2.5 Layer 3 Stream format */
- OMX_AUDIO_MP3StreamFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_MP3StreamFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_MP3StreamFormatMax = 0x7FFFFFFF
-} OMX_AUDIO_MP3STREAMFORMATTYPE;
-
-/** MP3 params */
-typedef struct OMX_AUDIO_PARAM_MP3TYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels */
- OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable
- rate or unknown bit rates */
- OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for
- variable or unknown sampling rate. */
- OMX_U32 nAudioBandWidth; /**< Audio band width (in Hz) to which an encoder should
- limit the audio signal. Use 0 to let encoder decide */
- OMX_AUDIO_CHANNELMODETYPE eChannelMode; /**< Channel mode enumeration */
- OMX_AUDIO_MP3STREAMFORMATTYPE eFormat; /**< MP3 stream format */
-} OMX_AUDIO_PARAM_MP3TYPE;
-
-
-typedef enum OMX_AUDIO_AACSTREAMFORMATTYPE {
- OMX_AUDIO_AACStreamFormatMP2ADTS = 0, /**< AAC Audio Data Transport Stream 2 format */
- OMX_AUDIO_AACStreamFormatMP4ADTS, /**< AAC Audio Data Transport Stream 4 format */
- OMX_AUDIO_AACStreamFormatMP4LOAS, /**< AAC Low Overhead Audio Stream format */
- OMX_AUDIO_AACStreamFormatMP4LATM, /**< AAC Low overhead Audio Transport Multiplex */
- OMX_AUDIO_AACStreamFormatADIF, /**< AAC Audio Data Interchange Format */
- OMX_AUDIO_AACStreamFormatMP4FF, /**< AAC inside MPEG-4/ISO File Format */
- OMX_AUDIO_AACStreamFormatRAW, /**< AAC Raw Format */
- OMX_AUDIO_AACStreamFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_AACStreamFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_AACStreamFormatMax = 0x7FFFFFFF
-} OMX_AUDIO_AACSTREAMFORMATTYPE;
-
-
-/** AAC mode type. Note that the term profile is used with the MPEG-2
- * standard and the term object type and profile is used with MPEG-4 */
-typedef enum OMX_AUDIO_AACPROFILETYPE{
- OMX_AUDIO_AACObjectNull = 0, /**< Null, not used */
- OMX_AUDIO_AACObjectMain = 1, /**< AAC Main object */
- OMX_AUDIO_AACObjectLC, /**< AAC Low Complexity object (AAC profile) */
- OMX_AUDIO_AACObjectSSR, /**< AAC Scalable Sample Rate object */
- OMX_AUDIO_AACObjectLTP, /**< AAC Long Term Prediction object */
- OMX_AUDIO_AACObjectHE, /**< AAC High Efficiency (object type SBR, HE-AAC profile) */
- OMX_AUDIO_AACObjectScalable, /**< AAC Scalable object */
- OMX_AUDIO_AACObjectERLC = 17, /**< ER AAC Low Complexity object (Error Resilient AAC-LC) */
- OMX_AUDIO_AACObjectLD = 23, /**< AAC Low Delay object (Error Resilient) */
- OMX_AUDIO_AACObjectHE_PS = 29, /**< AAC High Efficiency with Parametric Stereo coding (HE-AAC v2, object type PS) */
- OMX_AUDIO_AACObjectKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_AACObjectVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_AACObjectMax = 0x7FFFFFFF
-} OMX_AUDIO_AACPROFILETYPE;
-
-
-/** AAC tool usage (for nAACtools in OMX_AUDIO_PARAM_AACPROFILETYPE).
- * Required for encoder configuration and optional as decoder info output.
- * For MP3, OMX_AUDIO_CHANNELMODETYPE is sufficient. */
-#define OMX_AUDIO_AACToolNone 0x00000000 /**< no AAC tools allowed (encoder config) or active (decoder info output) */
-#define OMX_AUDIO_AACToolMS 0x00000001 /**< MS: Mid/side joint coding tool allowed or active */
-#define OMX_AUDIO_AACToolIS 0x00000002 /**< IS: Intensity stereo tool allowed or active */
-#define OMX_AUDIO_AACToolTNS 0x00000004 /**< TNS: Temporal Noise Shaping tool allowed or active */
-#define OMX_AUDIO_AACToolPNS 0x00000008 /**< PNS: MPEG-4 Perceptual Noise substitution tool allowed or active */
-#define OMX_AUDIO_AACToolLTP 0x00000010 /**< LTP: MPEG-4 Long Term Prediction tool allowed or active */
-#define OMX_AUDIO_AACToolAll 0x7FFFFFFF /**< all AAC tools allowed or active (*/
-
-/** MPEG-4 AAC error resilience (ER) tool usage (for nAACERtools in OMX_AUDIO_PARAM_AACPROFILETYPE).
- * Required for ER encoder configuration and optional as decoder info output */
-#define OMX_AUDIO_AACERNone 0x00000000 /**< no AAC ER tools allowed/used */
-#define OMX_AUDIO_AACERVCB11 0x00000001 /**< VCB11: Virtual Code Books for AAC section data */
-#define OMX_AUDIO_AACERRVLC 0x00000002 /**< RVLC: Reversible Variable Length Coding */
-#define OMX_AUDIO_AACERHCR 0x00000004 /**< HCR: Huffman Codeword Reordering */
-#define OMX_AUDIO_AACERAll 0x7FFFFFFF /**< all AAC ER tools allowed/used */
-
-
-/** AAC params */
-typedef struct OMX_AUDIO_PARAM_AACPROFILETYPE {
- OMX_U32 nSize; /**< Size of this structure, in Bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< Port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels */
- OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for
- variable or unknown sampling rate. */
- OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable
- rate or unknown bit rates */
- OMX_U32 nAudioBandWidth; /**< Audio band width (in Hz) to which an encoder should
- limit the audio signal. Use 0 to let encoder decide */
- OMX_U32 nFrameLength; /**< Frame length (in audio samples per channel) of the codec.
- Can be 1024 or 960 (AAC-LC), 2048 (HE-AAC), 480 or 512 (AAC-LD).
- Use 0 to let encoder decide */
- OMX_U32 nAACtools; /**< AAC tool usage */
- OMX_U32 nAACERtools; /**< MPEG-4 AAC error resilience tool usage */
- OMX_AUDIO_AACPROFILETYPE eAACProfile; /**< AAC profile enumeration */
- OMX_AUDIO_AACSTREAMFORMATTYPE eAACStreamFormat; /**< AAC stream format enumeration */
- OMX_AUDIO_CHANNELMODETYPE eChannelMode; /**< Channel mode enumeration */
-} OMX_AUDIO_PARAM_AACPROFILETYPE;
-
-
-/** VORBIS params */
-typedef struct OMX_AUDIO_PARAM_VORBISTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels */
- OMX_U32 nBitRate; /**< Bit rate of the encoded data data. Use 0 for variable
- rate or unknown bit rates. Encoding is set to the
- bitrate closest to specified value (in bps) */
- OMX_U32 nMinBitRate; /**< Sets minimum bitrate (in bps). */
- OMX_U32 nMaxBitRate; /**< Sets maximum bitrate (in bps). */
-
- OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for
- variable or unknown sampling rate. */
- OMX_U32 nAudioBandWidth; /**< Audio band width (in Hz) to which an encoder should
- limit the audio signal. Use 0 to let encoder decide */
- OMX_S32 nQuality; /**< Sets encoding quality to n, between -1 (low) and 10 (high).
- In the default mode of operation, teh quality level is 3.
- Normal quality range is 0 - 10. */
- OMX_BOOL bManaged; /**< Set bitrate management mode. This turns off the
- normal VBR encoding, but allows hard or soft bitrate
- constraints to be enforced by the encoder. This mode can
- be slower, and may also be lower quality. It is
- primarily useful for streaming. */
- OMX_BOOL bDownmix; /**< Downmix input from stereo to mono (has no effect on
- non-stereo streams). Useful for lower-bitrate encoding. */
-} OMX_AUDIO_PARAM_VORBISTYPE;
-
-
-/** WMA Version */
-typedef enum OMX_AUDIO_WMAFORMATTYPE {
- OMX_AUDIO_WMAFormatUnused = 0, /**< format unused or unknown */
- OMX_AUDIO_WMAFormat7, /**< Windows Media Audio format 7 */
- OMX_AUDIO_WMAFormat8, /**< Windows Media Audio format 8 */
- OMX_AUDIO_WMAFormat9, /**< Windows Media Audio format 9 */
- OMX_AUDIO_WMAFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_WMAFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_WMAFormatMax = 0x7FFFFFFF
-} OMX_AUDIO_WMAFORMATTYPE;
-
-
-/** WMA Profile */
-typedef enum OMX_AUDIO_WMAPROFILETYPE {
- OMX_AUDIO_WMAProfileUnused = 0, /**< profile unused or unknown */
- OMX_AUDIO_WMAProfileL1, /**< Windows Media audio version 9 profile L1 */
- OMX_AUDIO_WMAProfileL2, /**< Windows Media audio version 9 profile L2 */
- OMX_AUDIO_WMAProfileL3, /**< Windows Media audio version 9 profile L3 */
- OMX_AUDIO_WMAProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_WMAProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_WMAProfileMax = 0x7FFFFFFF
-} OMX_AUDIO_WMAPROFILETYPE;
-
-
-/** WMA params */
-typedef struct OMX_AUDIO_PARAM_WMATYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U16 nChannels; /**< Number of channels */
- OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable
- rate or unknown bit rates */
- OMX_AUDIO_WMAFORMATTYPE eFormat; /**< Version of WMA stream / data */
- OMX_AUDIO_WMAPROFILETYPE eProfile; /**< Profile of WMA stream / data */
- OMX_U32 nSamplingRate; /**< Sampling rate of the source data */
- OMX_U16 nBlockAlign; /**< is the block alignment, or block size, in bytes of the audio codec */
- OMX_U16 nEncodeOptions; /**< WMA Type-specific data */
- OMX_U32 nSuperBlockAlign; /**< WMA Type-specific data */
-} OMX_AUDIO_PARAM_WMATYPE;
-
-/**
- * RealAudio format
- */
-typedef enum OMX_AUDIO_RAFORMATTYPE {
- OMX_AUDIO_RAFormatUnused = 0, /**< Format unused or unknown */
- OMX_AUDIO_RA8, /**< RealAudio 8 codec */
- OMX_AUDIO_RA9, /**< RealAudio 9 codec */
- OMX_AUDIO_RA10_AAC, /**< MPEG-4 AAC codec for bitrates of more than 128kbps */
- OMX_AUDIO_RA10_CODEC, /**< RealAudio codec for bitrates less than 128 kbps */
- OMX_AUDIO_RA10_LOSSLESS, /**< RealAudio Lossless */
- OMX_AUDIO_RA10_MULTICHANNEL, /**< RealAudio Multichannel */
- OMX_AUDIO_RA10_VOICE, /**< RealAudio Voice for bitrates below 15 kbps */
- OMX_AUDIO_RAFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_RAFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_VIDEO_RAFormatMax = 0x7FFFFFFF
-} OMX_AUDIO_RAFORMATTYPE;
-
-/** RA (Real Audio) params */
-typedef struct OMX_AUDIO_PARAM_RATYPE {
- OMX_U32 nSize; /**< Size of this structure, in Bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< Port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels */
- OMX_U32 nSamplingRate; /**< is the sampling rate of the source data */
- OMX_U32 nBitsPerFrame; /**< is the value for bits per frame */
- OMX_U32 nSamplePerFrame; /**< is the value for samples per frame */
- OMX_U32 nCouplingQuantBits; /**< is the number of coupling quantization bits in the stream */
- OMX_U32 nCouplingStartRegion; /**< is the coupling start region in the stream */
- OMX_U32 nNumRegions; /**< is the number of regions value */
- OMX_AUDIO_RAFORMATTYPE eFormat; /**< is the RealAudio audio format */
-} OMX_AUDIO_PARAM_RATYPE;
-
-
-/** SBC Allocation Method Type */
-typedef enum OMX_AUDIO_SBCALLOCMETHODTYPE {
- OMX_AUDIO_SBCAllocMethodLoudness, /**< Loudness allocation method */
- OMX_AUDIO_SBCAllocMethodSNR, /**< SNR allocation method */
- OMX_AUDIO_SBCAllocMethodKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_SBCAllocMethodVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_SBCAllocMethodMax = 0x7FFFFFFF
-} OMX_AUDIO_SBCALLOCMETHODTYPE;
-
-
-/** SBC params */
-typedef struct OMX_AUDIO_PARAM_SBCTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels */
- OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable
- rate or unknown bit rates */
- OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for
- variable or unknown sampling rate. */
- OMX_U32 nBlocks; /**< Number of blocks */
- OMX_U32 nSubbands; /**< Number of subbands */
- OMX_U32 nBitPool; /**< Bitpool value */
- OMX_BOOL bEnableBitrate; /**< Use bitrate value instead of bitpool */
- OMX_AUDIO_CHANNELMODETYPE eChannelMode; /**< Channel mode enumeration */
- OMX_AUDIO_SBCALLOCMETHODTYPE eSBCAllocType; /**< SBC Allocation method type */
-} OMX_AUDIO_PARAM_SBCTYPE;
-
-
-/** ADPCM stream format parameters */
-typedef struct OMX_AUDIO_PARAM_ADPCMTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels in the data stream (not
- necessarily the same as the number of channels
- to be rendered. */
- OMX_U32 nBitsPerSample; /**< Number of bits in each sample */
- OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for
- variable or unknown sampling rate. */
-} OMX_AUDIO_PARAM_ADPCMTYPE;
-
-
-/** G723 rate */
-typedef enum OMX_AUDIO_G723RATE {
- OMX_AUDIO_G723ModeUnused = 0, /**< AMRNB Mode unused / unknown */
- OMX_AUDIO_G723ModeLow, /**< 5300 bps */
- OMX_AUDIO_G723ModeHigh, /**< 6300 bps */
- OMX_AUDIO_G723ModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_G723ModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_G723ModeMax = 0x7FFFFFFF
-} OMX_AUDIO_G723RATE;
-
-
-/** G723 - Sample rate must be 8 KHz */
-typedef struct OMX_AUDIO_PARAM_G723TYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels in the data stream (not
- necessarily the same as the number of channels
- to be rendered. */
- OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */
- OMX_AUDIO_G723RATE eBitRate; /**< todo: Should this be moved to a config? */
- OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */
- OMX_BOOL bPostFilter; /**< Enable Post Filter */
-} OMX_AUDIO_PARAM_G723TYPE;
-
-
-/** ITU G726 (ADPCM) rate */
-typedef enum OMX_AUDIO_G726MODE {
- OMX_AUDIO_G726ModeUnused = 0, /**< G726 Mode unused / unknown */
- OMX_AUDIO_G726Mode16, /**< 16 kbps */
- OMX_AUDIO_G726Mode24, /**< 24 kbps */
- OMX_AUDIO_G726Mode32, /**< 32 kbps, most common rate, also G721 */
- OMX_AUDIO_G726Mode40, /**< 40 kbps */
- OMX_AUDIO_G726ModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_G726ModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_G726ModeMax = 0x7FFFFFFF
-} OMX_AUDIO_G726MODE;
-
-
-/** G.726 stream format parameters - must be at 8KHz */
-typedef struct OMX_AUDIO_PARAM_G726TYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels in the data stream (not
- necessarily the same as the number of channels
- to be rendered. */
- OMX_AUDIO_G726MODE eG726Mode;
-} OMX_AUDIO_PARAM_G726TYPE;
-
-
-/** G729 coder type */
-typedef enum OMX_AUDIO_G729TYPE {
- OMX_AUDIO_G729 = 0, /**< ITU G.729 encoded data */
- OMX_AUDIO_G729A, /**< ITU G.729 annex A encoded data */
- OMX_AUDIO_G729B, /**< ITU G.729 with annex B encoded data */
- OMX_AUDIO_G729AB, /**< ITU G.729 annexes A and B encoded data */
- OMX_AUDIO_G729KhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_G729VendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_G729Max = 0x7FFFFFFF
-} OMX_AUDIO_G729TYPE;
-
-
-/** G729 stream format parameters - fixed 6KHz sample rate */
-typedef struct OMX_AUDIO_PARAM_G729TYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels in the data stream (not
- necessarily the same as the number of channels
- to be rendered. */
- OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */
- OMX_AUDIO_G729TYPE eBitType;
-} OMX_AUDIO_PARAM_G729TYPE;
-
-
-/** AMR Frame format */
-typedef enum OMX_AUDIO_AMRFRAMEFORMATTYPE {
- OMX_AUDIO_AMRFrameFormatConformance = 0, /**< Frame Format is AMR Conformance
- (Standard) Format */
- OMX_AUDIO_AMRFrameFormatIF1, /**< Frame Format is AMR Interface
- Format 1 */
- OMX_AUDIO_AMRFrameFormatIF2, /**< Frame Format is AMR Interface
- Format 2*/
- OMX_AUDIO_AMRFrameFormatFSF, /**< Frame Format is AMR File Storage
- Format */
- OMX_AUDIO_AMRFrameFormatRTPPayload, /**< Frame Format is AMR Real-Time
- Transport Protocol Payload Format */
- OMX_AUDIO_AMRFrameFormatITU, /**< Frame Format is ITU Format (added at Motorola request) */
- OMX_AUDIO_AMRFrameFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_AMRFrameFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_AMRFrameFormatMax = 0x7FFFFFFF
-} OMX_AUDIO_AMRFRAMEFORMATTYPE;
-
-
-/** AMR band mode */
-typedef enum OMX_AUDIO_AMRBANDMODETYPE {
- OMX_AUDIO_AMRBandModeUnused = 0, /**< AMRNB Mode unused / unknown */
- OMX_AUDIO_AMRBandModeNB0, /**< AMRNB Mode 0 = 4750 bps */
- OMX_AUDIO_AMRBandModeNB1, /**< AMRNB Mode 1 = 5150 bps */
- OMX_AUDIO_AMRBandModeNB2, /**< AMRNB Mode 2 = 5900 bps */
- OMX_AUDIO_AMRBandModeNB3, /**< AMRNB Mode 3 = 6700 bps */
- OMX_AUDIO_AMRBandModeNB4, /**< AMRNB Mode 4 = 7400 bps */
- OMX_AUDIO_AMRBandModeNB5, /**< AMRNB Mode 5 = 7950 bps */
- OMX_AUDIO_AMRBandModeNB6, /**< AMRNB Mode 6 = 10200 bps */
- OMX_AUDIO_AMRBandModeNB7, /**< AMRNB Mode 7 = 12200 bps */
- OMX_AUDIO_AMRBandModeWB0, /**< AMRWB Mode 0 = 6600 bps */
- OMX_AUDIO_AMRBandModeWB1, /**< AMRWB Mode 1 = 8850 bps */
- OMX_AUDIO_AMRBandModeWB2, /**< AMRWB Mode 2 = 12650 bps */
- OMX_AUDIO_AMRBandModeWB3, /**< AMRWB Mode 3 = 14250 bps */
- OMX_AUDIO_AMRBandModeWB4, /**< AMRWB Mode 4 = 15850 bps */
- OMX_AUDIO_AMRBandModeWB5, /**< AMRWB Mode 5 = 18250 bps */
- OMX_AUDIO_AMRBandModeWB6, /**< AMRWB Mode 6 = 19850 bps */
- OMX_AUDIO_AMRBandModeWB7, /**< AMRWB Mode 7 = 23050 bps */
- OMX_AUDIO_AMRBandModeWB8, /**< AMRWB Mode 8 = 23850 bps */
- OMX_AUDIO_AMRBandModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_AMRBandModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_AMRBandModeMax = 0x7FFFFFFF
-} OMX_AUDIO_AMRBANDMODETYPE;
-
-
-/** AMR Discontinuous Transmission mode */
-typedef enum OMX_AUDIO_AMRDTXMODETYPE {
- OMX_AUDIO_AMRDTXModeOff = 0, /**< AMR Discontinuous Transmission Mode is disabled */
- OMX_AUDIO_AMRDTXModeOnVAD1, /**< AMR Discontinuous Transmission Mode using
- Voice Activity Detector 1 (VAD1) is enabled */
- OMX_AUDIO_AMRDTXModeOnVAD2, /**< AMR Discontinuous Transmission Mode using
- Voice Activity Detector 2 (VAD2) is enabled */
- OMX_AUDIO_AMRDTXModeOnAuto, /**< The codec will automatically select between
- Off, VAD1 or VAD2 modes */
-
- OMX_AUDIO_AMRDTXasEFR, /**< DTX as EFR instead of AMR standard (3GPP 26.101, frame type =8,9,10) */
-
- OMX_AUDIO_AMRDTXModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_AMRDTXModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_AMRDTXModeMax = 0x7FFFFFFF
-} OMX_AUDIO_AMRDTXMODETYPE;
-
-
-/** AMR params */
-typedef struct OMX_AUDIO_PARAM_AMRTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels */
- OMX_U32 nBitRate; /**< Bit rate read only field */
- OMX_AUDIO_AMRBANDMODETYPE eAMRBandMode; /**< AMR Band Mode enumeration */
- OMX_AUDIO_AMRDTXMODETYPE eAMRDTXMode; /**< AMR DTX Mode enumeration */
- OMX_AUDIO_AMRFRAMEFORMATTYPE eAMRFrameFormat; /**< AMR frame format enumeration */
-} OMX_AUDIO_PARAM_AMRTYPE;
-
-
-/** GSM_FR (ETSI 06.10, 3GPP 46.010) stream format parameters */
-typedef struct OMX_AUDIO_PARAM_GSMFRTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */
- OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */
-} OMX_AUDIO_PARAM_GSMFRTYPE;
-
-
-/** GSM-HR (ETSI 06.20, 3GPP 46.020) stream format parameters */
-typedef struct OMX_AUDIO_PARAM_GSMHRTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */
- OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */
-} OMX_AUDIO_PARAM_GSMHRTYPE;
-
-
-/** GSM-EFR (ETSI 06.60, 3GPP 46.060) stream format parameters */
-typedef struct OMX_AUDIO_PARAM_GSMEFRTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */
- OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */
-} OMX_AUDIO_PARAM_GSMEFRTYPE;
-
-
-/** TDMA FR (TIA/EIA-136-420, VSELP 7.95kbps coder) stream format parameters */
-typedef struct OMX_AUDIO_PARAM_TDMAFRTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels in the data stream (not
- necessarily the same as the number of channels
- to be rendered. */
- OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */
- OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */
-} OMX_AUDIO_PARAM_TDMAFRTYPE;
-
-
-/** TDMA EFR (TIA/EIA-136-410, ACELP 7.4kbps coder) stream format parameters */
-typedef struct OMX_AUDIO_PARAM_TDMAEFRTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels in the data stream (not
- necessarily the same as the number of channels
- to be rendered. */
- OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */
- OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */
-} OMX_AUDIO_PARAM_TDMAEFRTYPE;
-
-
-/** PDC FR ( RCR-27, VSELP 6.7kbps coder) stream format parameters */
-typedef struct OMX_AUDIO_PARAM_PDCFRTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels in the data stream (not
- necessarily the same as the number of channels
- to be rendered. */
- OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */
- OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */
-} OMX_AUDIO_PARAM_PDCFRTYPE;
-
-
-/** PDC EFR ( RCR-27, ACELP 6.7kbps coder) stream format parameters */
-typedef struct OMX_AUDIO_PARAM_PDCEFRTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels in the data stream (not
- necessarily the same as the number of channels
- to be rendered. */
- OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */
- OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */
-} OMX_AUDIO_PARAM_PDCEFRTYPE;
-
-/** PDC HR ( RCR-27, PSI-CELP 3.45kbps coder) stream format parameters */
-typedef struct OMX_AUDIO_PARAM_PDCHRTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels in the data stream (not
- necessarily the same as the number of channels
- to be rendered. */
- OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */
- OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */
-} OMX_AUDIO_PARAM_PDCHRTYPE;
-
-
-/** CDMA Rate types */
-typedef enum OMX_AUDIO_CDMARATETYPE {
- OMX_AUDIO_CDMARateBlank = 0, /**< CDMA encoded frame is blank */
- OMX_AUDIO_CDMARateFull, /**< CDMA encoded frame in full rate */
- OMX_AUDIO_CDMARateHalf, /**< CDMA encoded frame in half rate */
- OMX_AUDIO_CDMARateQuarter, /**< CDMA encoded frame in quarter rate */
- OMX_AUDIO_CDMARateEighth, /**< CDMA encoded frame in eighth rate (DTX)*/
- OMX_AUDIO_CDMARateErasure, /**< CDMA erasure frame */
- OMX_AUDIO_CDMARateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_CDMARateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_CDMARateMax = 0x7FFFFFFF
-} OMX_AUDIO_CDMARATETYPE;
-
-
-/** QCELP8 (TIA/EIA-96, up to 8kbps coder) stream format parameters */
-typedef struct OMX_AUDIO_PARAM_QCELP8TYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels in the data stream (not
- necessarily the same as the number of channels
- to be rendered. */
- OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable
- rate or unknown bit rates */
- OMX_AUDIO_CDMARATETYPE eCDMARate; /**< Frame rate */
- OMX_U32 nMinBitRate; /**< minmal rate for the encoder = 1,2,3,4, default = 1 */
- OMX_U32 nMaxBitRate; /**< maximal rate for the encoder = 1,2,3,4, default = 4 */
-} OMX_AUDIO_PARAM_QCELP8TYPE;
-
-
-/** QCELP13 ( CDMA, EIA/TIA-733, 13.3kbps coder) stream format parameters */
-typedef struct OMX_AUDIO_PARAM_QCELP13TYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels in the data stream (not
- necessarily the same as the number of channels
- to be rendered. */
- OMX_AUDIO_CDMARATETYPE eCDMARate; /**< Frame rate */
- OMX_U32 nMinBitRate; /**< minmal rate for the encoder = 1,2,3,4, default = 1 */
- OMX_U32 nMaxBitRate; /**< maximal rate for the encoder = 1,2,3,4, default = 4 */
-} OMX_AUDIO_PARAM_QCELP13TYPE;
-
-
-/** EVRC ( CDMA, EIA/TIA-127, RCELP up to 8.55kbps coder) stream format parameters */
-typedef struct OMX_AUDIO_PARAM_EVRCTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels in the data stream (not
- necessarily the same as the number of channels
- to be rendered. */
- OMX_AUDIO_CDMARATETYPE eCDMARate; /**< actual Frame rate */
- OMX_BOOL bRATE_REDUCon; /**< RATE_REDUCtion is requested for this frame */
- OMX_U32 nMinBitRate; /**< minmal rate for the encoder = 1,2,3,4, default = 1 */
- OMX_U32 nMaxBitRate; /**< maximal rate for the encoder = 1,2,3,4, default = 4 */
- OMX_BOOL bHiPassFilter; /**< Enable encoder's High Pass Filter */
- OMX_BOOL bNoiseSuppressor; /**< Enable encoder's noise suppressor pre-processing */
- OMX_BOOL bPostFilter; /**< Enable decoder's post Filter */
-} OMX_AUDIO_PARAM_EVRCTYPE;
-
-
-/** SMV ( up to 8.55kbps coder) stream format parameters */
-typedef struct OMX_AUDIO_PARAM_SMVTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannels; /**< Number of channels in the data stream (not
- necessarily the same as the number of channels
- to be rendered. */
- OMX_AUDIO_CDMARATETYPE eCDMARate; /**< Frame rate */
- OMX_BOOL bRATE_REDUCon; /**< RATE_REDUCtion is requested for this frame */
- OMX_U32 nMinBitRate; /**< minmal rate for the encoder = 1,2,3,4, default = 1 ??*/
- OMX_U32 nMaxBitRate; /**< maximal rate for the encoder = 1,2,3,4, default = 4 ??*/
- OMX_BOOL bHiPassFilter; /**< Enable encoder's High Pass Filter ??*/
- OMX_BOOL bNoiseSuppressor; /**< Enable encoder's noise suppressor pre-processing */
- OMX_BOOL bPostFilter; /**< Enable decoder's post Filter ??*/
-} OMX_AUDIO_PARAM_SMVTYPE;
-
-
-/** MIDI Format
- * @ingroup midi
- */
-typedef enum OMX_AUDIO_MIDIFORMATTYPE
-{
- OMX_AUDIO_MIDIFormatUnknown = 0, /**< MIDI Format unknown or don't care */
- OMX_AUDIO_MIDIFormatSMF0, /**< Standard MIDI File Type 0 */
- OMX_AUDIO_MIDIFormatSMF1, /**< Standard MIDI File Type 1 */
- OMX_AUDIO_MIDIFormatSMF2, /**< Standard MIDI File Type 2 */
- OMX_AUDIO_MIDIFormatSPMIDI, /**< SP-MIDI */
- OMX_AUDIO_MIDIFormatXMF0, /**< eXtensible Music Format type 0 */
- OMX_AUDIO_MIDIFormatXMF1, /**< eXtensible Music Format type 1 */
- OMX_AUDIO_MIDIFormatMobileXMF, /**< Mobile XMF (eXtensible Music Format type 2) */
- OMX_AUDIO_MIDIFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_MIDIFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_MIDIFormatMax = 0x7FFFFFFF
-} OMX_AUDIO_MIDIFORMATTYPE;
-
-
-/** MIDI params
- * @ingroup midi
- */
-typedef struct OMX_AUDIO_PARAM_MIDITYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nFileSize; /**< size of the MIDI file in bytes, where the entire
- MIDI file passed in, otherwise if 0x0, the MIDI data
- is merged and streamed (instead of passed as an
- entire MIDI file) */
- OMX_BU32 sMaxPolyphony; /**< Specifies the maximum simultaneous polyphonic
- voices. A value of zero indicates that the default
- polyphony of the device is used */
- OMX_BOOL bLoadDefaultSound; /**< Whether to load default sound
- bank at initialization */
- OMX_AUDIO_MIDIFORMATTYPE eMidiFormat; /**< Version of the MIDI file */
-} OMX_AUDIO_PARAM_MIDITYPE;
-
-
-/** Type of the MIDI sound bank
- * @ingroup midi
- */
-typedef enum OMX_AUDIO_MIDISOUNDBANKTYPE {
- OMX_AUDIO_MIDISoundBankUnused = 0, /**< unused/unknown soundbank type */
- OMX_AUDIO_MIDISoundBankDLS1, /**< DLS version 1 */
- OMX_AUDIO_MIDISoundBankDLS2, /**< DLS version 2 */
- OMX_AUDIO_MIDISoundBankMobileDLSBase, /**< Mobile DLS, using the base functionality */
- OMX_AUDIO_MIDISoundBankMobileDLSPlusOptions, /**< Mobile DLS, using the specification-defined optional feature set */
- OMX_AUDIO_MIDISoundBankKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_MIDISoundBankVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_MIDISoundBankMax = 0x7FFFFFFF
-} OMX_AUDIO_MIDISOUNDBANKTYPE;
-
-
-/** Bank Layout describes how bank MSB & LSB are used in the DLS instrument definitions sound bank
- * @ingroup midi
- */
-typedef enum OMX_AUDIO_MIDISOUNDBANKLAYOUTTYPE {
- OMX_AUDIO_MIDISoundBankLayoutUnused = 0, /**< unused/unknown soundbank type */
- OMX_AUDIO_MIDISoundBankLayoutGM, /**< GS layout (based on bank MSB 0x00) */
- OMX_AUDIO_MIDISoundBankLayoutGM2, /**< General MIDI 2 layout (using MSB 0x78/0x79, LSB 0x00) */
- OMX_AUDIO_MIDISoundBankLayoutUser, /**< Does not conform to any bank numbering standards */
- OMX_AUDIO_MIDISoundBankLayoutKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_MIDISoundBankLayoutVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_MIDISoundBankLayoutMax = 0x7FFFFFFF
-} OMX_AUDIO_MIDISOUNDBANKLAYOUTTYPE;
-
-
-/** MIDI params to load/unload user soundbank
- * @ingroup midi
- */
-typedef struct OMX_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nDLSIndex; /**< DLS file index to be loaded */
- OMX_U32 nDLSSize; /**< Size in bytes */
- OMX_PTR pDLSData; /**< Pointer to DLS file data */
- OMX_AUDIO_MIDISOUNDBANKTYPE eMidiSoundBank; /**< Midi sound bank type enumeration */
- OMX_AUDIO_MIDISOUNDBANKLAYOUTTYPE eMidiSoundBankLayout; /**< Midi sound bank layout enumeration */
-} OMX_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE;
-
-
-/** Structure for Live MIDI events and MIP messages.
- * (MIP = Maximum Instantaneous Polyphony; part of the SP-MIDI standard.)
- * @ingroup midi
- */
-typedef struct OMX_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< Port that this structure applies to */
- OMX_U32 nMidiEventSize; /**< Size of immediate MIDI events or MIP message in bytes */
- OMX_U8 nMidiEvents[1]; /**< MIDI event array to be rendered immediately, or an
- array for the MIP message buffer, where the size is
- indicated by nMidiEventSize */
-} OMX_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE;
-
-
-/** MIDI sound bank/ program pair in a given channel
- * @ingroup midi
- */
-typedef struct OMX_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< Port that this structure applies to */
- OMX_U32 nChannel; /**< Valid channel values range from 1 to 16 */
- OMX_U16 nIDProgram; /**< Valid program ID range is 1 to 128 */
- OMX_U16 nIDSoundBank; /**< Sound bank ID */
- OMX_U32 nUserSoundBankIndex;/**< User soundbank index, easier to access soundbanks
- by index if multiple banks are present */
-} OMX_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE;
-
-
-/** MIDI control
- * @ingroup midi
- */
-typedef struct OMX_AUDIO_CONFIG_MIDICONTROLTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_BS32 sPitchTransposition; /**< Pitch transposition in semitones, stored as Q22.10
- format based on JAVA MMAPI (JSR-135) requirement */
- OMX_BU32 sPlayBackRate; /**< Relative playback rate, stored as Q14.17 fixed-point
- number based on JSR-135 requirement */
- OMX_BU32 sTempo ; /**< Tempo in beats per minute (BPM), stored as Q22.10
- fixed-point number based on JSR-135 requirement */
- OMX_U32 nMaxPolyphony; /**< Specifies the maximum simultaneous polyphonic
- voices. A value of zero indicates that the default
- polyphony of the device is used */
- OMX_U32 nNumRepeat; /**< Number of times to repeat playback */
- OMX_U32 nStopTime; /**< Time in milliseconds to indicate when playback
- will stop automatically. Set to zero if not used */
- OMX_U16 nChannelMuteMask; /**< 16 bit mask for channel mute status */
- OMX_U16 nChannelSoloMask; /**< 16 bit mask for channel solo status */
- OMX_U32 nTrack0031MuteMask; /**< 32 bit mask for track mute status. Note: This is for tracks 0-31 */
- OMX_U32 nTrack3263MuteMask; /**< 32 bit mask for track mute status. Note: This is for tracks 32-63 */
- OMX_U32 nTrack0031SoloMask; /**< 32 bit mask for track solo status. Note: This is for tracks 0-31 */
- OMX_U32 nTrack3263SoloMask; /**< 32 bit mask for track solo status. Note: This is for tracks 32-63 */
-
-} OMX_AUDIO_CONFIG_MIDICONTROLTYPE;
-
-
-/** MIDI Playback States
- * @ingroup midi
- */
-typedef enum OMX_AUDIO_MIDIPLAYBACKSTATETYPE {
- OMX_AUDIO_MIDIPlayBackStateUnknown = 0, /**< Unknown state or state does not map to
- other defined states */
- OMX_AUDIO_MIDIPlayBackStateClosedEngaged, /**< No MIDI resource is currently open.
- The MIDI engine is currently processing
- MIDI events. */
- OMX_AUDIO_MIDIPlayBackStateParsing, /**< A MIDI resource is open and is being
- primed. The MIDI engine is currently
- processing MIDI events. */
- OMX_AUDIO_MIDIPlayBackStateOpenEngaged, /**< A MIDI resource is open and primed but
- not playing. The MIDI engine is currently
- processing MIDI events. The transition to
- this state is only possible from the
- OMX_AUDIO_MIDIPlayBackStatePlaying state,
- when the 'playback head' reaches the end
- of media data or the playback stops due
- to stop time set.*/
- OMX_AUDIO_MIDIPlayBackStatePlaying, /**< A MIDI resource is open and currently
- playing. The MIDI engine is currently
- processing MIDI events.*/
- OMX_AUDIO_MIDIPlayBackStatePlayingPartially, /**< Best-effort playback due to SP-MIDI/DLS
- resource constraints */
- OMX_AUDIO_MIDIPlayBackStatePlayingSilently, /**< Due to system resource constraints and
- SP-MIDI content constraints, there is
- no audible MIDI content during playback
- currently. The situation may change if
- resources are freed later.*/
- OMX_AUDIO_MIDIPlayBackStateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_MIDIPlayBackStateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_MIDIPlayBackStateMax = 0x7FFFFFFF
-} OMX_AUDIO_MIDIPLAYBACKSTATETYPE;
-
-
-/** MIDI status
- * @ingroup midi
- */
-typedef struct OMX_AUDIO_CONFIG_MIDISTATUSTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U16 nNumTracks; /**< Number of MIDI tracks in the file, read only field.
- NOTE: May not return a meaningful value until the entire
- file is parsed and buffered. */
- OMX_U32 nDuration; /**< The length of the currently open MIDI resource
- in milliseconds. NOTE: May not return a meaningful value
- until the entire file is parsed and buffered. */
- OMX_U32 nPosition; /**< Current Position of the MIDI resource being played
- in milliseconds */
- OMX_BOOL bVibra; /**< Does Vibra track exist? NOTE: May not return a meaningful
- value until the entire file is parsed and buffered. */
- OMX_U32 nNumMetaEvents; /**< Total number of MIDI Meta Events in the currently
- open MIDI resource. NOTE: May not return a meaningful value
- until the entire file is parsed and buffered. */
- OMX_U32 nNumActiveVoices; /**< Number of active voices in the currently playing
- MIDI resource. NOTE: May not return a meaningful value until
- the entire file is parsed and buffered. */
- OMX_AUDIO_MIDIPLAYBACKSTATETYPE eMIDIPlayBackState; /**< MIDI playback state enumeration, read only field */
-} OMX_AUDIO_CONFIG_MIDISTATUSTYPE;
-
-
-/** MIDI Meta Event structure one per Meta Event.
- * MIDI Meta Events are like audio metadata, except that they are interspersed
- * with the MIDI content throughout the file and are not localized in the header.
- * As such, it is necessary to retrieve information about these Meta Events from
- * the engine, as it encounters these Meta Events within the MIDI content.
- * For example, SMF files can have up to 14 types of MIDI Meta Events (copyright,
- * author, default tempo, etc.) scattered throughout the file.
- * @ingroup midi
- */
-typedef struct OMX_AUDIO_CONFIG_MIDIMETAEVENTTYPE{
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nIndex; /**< Index of Meta Event */
- OMX_U8 nMetaEventType; /**< Meta Event Type, 7bits (i.e. 0 - 127) */
- OMX_U32 nMetaEventSize; /**< size of the Meta Event in bytes */
- OMX_U32 nTrack; /**< track number for the meta event */
- OMX_U32 nPosition; /**< Position of the meta-event in milliseconds */
-} OMX_AUDIO_CONFIG_MIDIMETAEVENTTYPE;
-
-
-/** MIDI Meta Event Data structure - one per Meta Event.
- * @ingroup midi
- */
-typedef struct OMX_AUDIO_CONFIG_MIDIMETAEVENTDATATYPE{
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nIndex; /**< Index of Meta Event */
- OMX_U32 nMetaEventSize; /**< size of the Meta Event in bytes */
- OMX_U8 nData[1]; /**< array of one or more bytes of meta data
- as indicated by the nMetaEventSize field */
-} OMX_AUDIO_CONFIG__MIDIMETAEVENTDATATYPE;
-
-
-/** Audio Volume adjustment for a port */
-typedef struct OMX_AUDIO_CONFIG_VOLUMETYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< Port index indicating which port to
- set. Select the input port to set
- just that port's volume. Select the
- output port to adjust the master
- volume. */
- OMX_BOOL bLinear; /**< Is the volume to be set in linear (0.100)
- or logarithmic scale (mB) */
- OMX_BS32 sVolume; /**< Volume linear setting in the 0..100 range, OR
- Volume logarithmic setting for this port. The values
- for volume are in mB (millibels = 1/100 dB) relative
- to a gain of 1 (e.g. the output is the same as the
- input level). Values are in mB from nMax
- (maximum volume) to nMin mB (typically negative).
- Since the volume is "voltage"
- and not a "power", it takes a setting of
- -600 mB to decrease the volume by 1/2. If
- a component cannot accurately set the
- volume to the requested value, it must
- set the volume to the closest value BELOW
- the requested value. When getting the
- volume setting, the current actual volume
- must be returned. */
-} OMX_AUDIO_CONFIG_VOLUMETYPE;
-
-
-/** Audio Volume adjustment for a channel */
-typedef struct OMX_AUDIO_CONFIG_CHANNELVOLUMETYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< Port index indicating which port to
- set. Select the input port to set
- just that port's volume. Select the
- output port to adjust the master
- volume. */
- OMX_U32 nChannel; /**< channel to select from 0 to N-1,
- using OMX_ALL to apply volume settings
- to all channels */
- OMX_BOOL bLinear; /**< Is the volume to be set in linear (0.100) or
- logarithmic scale (mB) */
- OMX_BS32 sVolume; /**< Volume linear setting in the 0..100 range, OR
- Volume logarithmic setting for this port.
- The values for volume are in mB
- (millibels = 1/100 dB) relative to a gain
- of 1 (e.g. the output is the same as the
- input level). Values are in mB from nMax
- (maximum volume) to nMin mB (typically negative).
- Since the volume is "voltage"
- and not a "power", it takes a setting of
- -600 mB to decrease the volume by 1/2. If
- a component cannot accurately set the
- volume to the requested value, it must
- set the volume to the closest value BELOW
- the requested value. When getting the
- volume setting, the current actual volume
- must be returned. */
- OMX_BOOL bIsMIDI; /**< TRUE if nChannel refers to a MIDI channel,
- FALSE otherwise */
-} OMX_AUDIO_CONFIG_CHANNELVOLUMETYPE;
-
-
-/** Audio balance setting */
-typedef struct OMX_AUDIO_CONFIG_BALANCETYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< Port index indicating which port to
- set. Select the input port to set
- just that port's balance. Select the
- output port to adjust the master
- balance. */
- OMX_S32 nBalance; /**< balance setting for this port
- (-100 to 100, where -100 indicates
- all left, and no right */
-} OMX_AUDIO_CONFIG_BALANCETYPE;
-
-
-/** Audio Port mute */
-typedef struct OMX_AUDIO_CONFIG_MUTETYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< Port index indicating which port to
- set. Select the input port to set
- just that port's mute. Select the
- output port to adjust the master
- mute. */
- OMX_BOOL bMute; /**< Mute setting for this port */
-} OMX_AUDIO_CONFIG_MUTETYPE;
-
-
-/** Audio Channel mute */
-typedef struct OMX_AUDIO_CONFIG_CHANNELMUTETYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nChannel; /**< channel to select from 0 to N-1,
- using OMX_ALL to apply mute settings
- to all channels */
- OMX_BOOL bMute; /**< Mute setting for this channel */
- OMX_BOOL bIsMIDI; /**< TRUE if nChannel refers to a MIDI channel,
- FALSE otherwise */
-} OMX_AUDIO_CONFIG_CHANNELMUTETYPE;
-
-
-
-/** Enable / Disable for loudness control, which boosts bass and to a
- * smaller extent high end frequencies to compensate for hearing
- * ability at the extreme ends of the audio spectrum
- */
-typedef struct OMX_AUDIO_CONFIG_LOUDNESSTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_BOOL bLoudness; /**< Enable/disable for loudness */
-} OMX_AUDIO_CONFIG_LOUDNESSTYPE;
-
-
-/** Enable / Disable for bass, which controls low frequencies
- */
-typedef struct OMX_AUDIO_CONFIG_BASSTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_BOOL bEnable; /**< Enable/disable for bass control */
- OMX_S32 nBass; /**< bass setting for the port, as a
- continuous value from -100 to 100
- (0 means no change in bass level)*/
-} OMX_AUDIO_CONFIG_BASSTYPE;
-
-
-/** Enable / Disable for treble, which controls high frequencies tones
- */
-typedef struct OMX_AUDIO_CONFIG_TREBLETYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_BOOL bEnable; /**< Enable/disable for treble control */
- OMX_S32 nTreble; /**< treble setting for the port, as a
- continuous value from -100 to 100
- (0 means no change in treble level) */
-} OMX_AUDIO_CONFIG_TREBLETYPE;
-
-
-/** An equalizer is typically used for two reasons: to compensate for an
- * sub-optimal frequency response of a system to make it sound more natural
- * or to create intentionally some unnatural coloring to the sound to create
- * an effect.
- * @ingroup effects
- */
-typedef struct OMX_AUDIO_CONFIG_EQUALIZERTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_BOOL bEnable; /**< Enable/disable for equalizer */
- OMX_BU32 sBandIndex; /**< Band number to be set. Upper Limit is
- N-1, where N is the number of bands, lower limit is 0 */
- OMX_BU32 sCenterFreq; /**< Center frequecies in Hz. This is a
- read only element and is used to determine
- the lower, center and upper frequency of
- this band. */
- OMX_BS32 sBandLevel; /**< band level in millibels */
-} OMX_AUDIO_CONFIG_EQUALIZERTYPE;
-
-
-/** Stereo widening mode type
- * @ingroup effects
- */
-typedef enum OMX_AUDIO_STEREOWIDENINGTYPE {
- OMX_AUDIO_StereoWideningHeadphones, /**< Stereo widening for loudspeakers */
- OMX_AUDIO_StereoWideningLoudspeakers, /**< Stereo widening for closely spaced loudspeakers */
- OMX_AUDIO_StereoWideningKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_StereoWideningVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_StereoWideningMax = 0x7FFFFFFF
-} OMX_AUDIO_STEREOWIDENINGTYPE;
-
-
-/** Control for stereo widening, which is a special 2-channel
- * case of the audio virtualizer effect. For example, for 5.1-channel
- * output, it translates to virtual surround sound.
- * @ingroup effects
- */
-typedef struct OMX_AUDIO_CONFIG_STEREOWIDENINGTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_BOOL bEnable; /**< Enable/disable for stereo widening control */
- OMX_AUDIO_STEREOWIDENINGTYPE eWideningType; /**< Stereo widening algorithm type */
- OMX_U32 nStereoWidening; /**< stereo widening setting for the port,
- as a continuous value from 0 to 100 */
-} OMX_AUDIO_CONFIG_STEREOWIDENINGTYPE;
-
-
-/** The chorus effect (or ``choralizer'') is any signal processor which makes
- * one sound source (such as a voice) sound like many such sources singing
- * (or playing) in unison. Since performance in unison is never exact, chorus
- * effects simulate this by making independently modified copies of the input
- * signal. Modifications may include (1) delay, (2) frequency shift, and
- * (3) amplitude modulation.
- * @ingroup effects
- */
-typedef struct OMX_AUDIO_CONFIG_CHORUSTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_BOOL bEnable; /**< Enable/disable for chorus */
- OMX_BU32 sDelay; /**< average delay in milliseconds */
- OMX_BU32 sModulationRate; /**< rate of modulation in millihertz */
- OMX_U32 nModulationDepth; /**< depth of modulation as a percentage of
- delay (i.e. 0 to 100) */
- OMX_BU32 nFeedback; /**< Feedback from chorus output to input in percentage */
-} OMX_AUDIO_CONFIG_CHORUSTYPE;
-
-
-/** Reverberation is part of the reflected sound that follows the early
- * reflections. In a typical room, this consists of a dense succession of
- * echoes whose energy decays exponentially. The reverberation effect structure
- * as defined here includes both (early) reflections as well as (late) reverberations.
- * @ingroup effects
- */
-typedef struct OMX_AUDIO_CONFIG_REVERBERATIONTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_BOOL bEnable; /**< Enable/disable for reverberation control */
- OMX_BS32 sRoomLevel; /**< Intensity level for the whole room effect
- (i.e. both early reflections and late
- reverberation) in millibels */
- OMX_BS32 sRoomHighFreqLevel; /**< Attenuation at high frequencies
- relative to the intensity at low
- frequencies in millibels */
- OMX_BS32 sReflectionsLevel; /**< Intensity level of early reflections
- (relative to room value), in millibels */
- OMX_BU32 sReflectionsDelay; /**< Delay time of the first reflection relative
- to the direct path, in milliseconds */
- OMX_BS32 sReverbLevel; /**< Intensity level of late reverberation
- relative to room level, in millibels */
- OMX_BU32 sReverbDelay; /**< Time delay from the first early reflection
- to the beginning of the late reverberation
- section, in milliseconds */
- OMX_BU32 sDecayTime; /**< Late reverberation decay time at low
- frequencies, in milliseconds */
- OMX_BU32 nDecayHighFreqRatio; /**< Ratio of high frequency decay time relative
- to low frequency decay time in percent */
- OMX_U32 nDensity; /**< Modal density in the late reverberation decay,
- in percent (i.e. 0 - 100) */
- OMX_U32 nDiffusion; /**< Echo density in the late reverberation decay,
- in percent (i.e. 0 - 100) */
- OMX_BU32 sReferenceHighFreq; /**< Reference high frequency in Hertz. This is
- the frequency used as the reference for all
- the high-frequency settings above */
-
-} OMX_AUDIO_CONFIG_REVERBERATIONTYPE;
-
-
-/** Possible settings for the Echo Cancelation structure to use
- * @ingroup effects
- */
-typedef enum OMX_AUDIO_ECHOCANTYPE {
- OMX_AUDIO_EchoCanOff = 0, /**< Echo Cancellation is disabled */
- OMX_AUDIO_EchoCanNormal, /**< Echo Cancellation normal operation -
- echo from plastics and face */
- OMX_AUDIO_EchoCanHFree, /**< Echo Cancellation optimized for
- Hands Free operation */
- OMX_AUDIO_EchoCanCarKit, /**< Echo Cancellation optimized for
- Car Kit (longer echo) */
- OMX_AUDIO_EchoCanKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_AUDIO_EchoCanVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_AUDIO_EchoCanMax = 0x7FFFFFFF
-} OMX_AUDIO_ECHOCANTYPE;
-
-
-/** Enable / Disable for echo cancelation, which removes undesired echo's
- * from the audio
- * @ingroup effects
- */
-typedef struct OMX_AUDIO_CONFIG_ECHOCANCELATIONTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_AUDIO_ECHOCANTYPE eEchoCancelation; /**< Echo cancelation settings */
-} OMX_AUDIO_CONFIG_ECHOCANCELATIONTYPE;
-
-
-/** Enable / Disable for noise reduction, which undesired noise from
- * the audio
- * @ingroup effects
- */
-typedef struct OMX_AUDIO_CONFIG_NOISEREDUCTIONTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_BOOL bNoiseReduction; /**< Enable/disable for noise reduction */
-} OMX_AUDIO_CONFIG_NOISEREDUCTIONTYPE;
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
-/* File EOF */
-
diff --git a/sec_mm/sec_omx/sec_omx_include/khronos/OMX_Component.h b/sec_mm/sec_omx/sec_omx_include/khronos/OMX_Component.h
deleted file mode 100644
index d595640..0000000
--- a/sec_mm/sec_omx/sec_omx_include/khronos/OMX_Component.h
+++ /dev/null
@@ -1,579 +0,0 @@
-/*
- * Copyright (c) 2008 The Khronos Group Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject
- * to the following conditions:
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-
-/** OMX_Component.h - OpenMax IL version 1.1.2
- * The OMX_Component header file contains the definitions used to define
- * the public interface of a component. This header file is intended to
- * be used by both the application and the component.
- */
-
-#ifndef OMX_Component_h
-#define OMX_Component_h
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-
-/* Each OMX header must include all required header files to allow the
- * header to compile without errors. The includes below are required
- * for this header file to compile successfully
- */
-
-#include <OMX_Audio.h>
-#include <OMX_Video.h>
-#include <OMX_Image.h>
-#include <OMX_Other.h>
-
-/** @ingroup comp */
-typedef enum OMX_PORTDOMAINTYPE {
- OMX_PortDomainAudio,
- OMX_PortDomainVideo,
- OMX_PortDomainImage,
- OMX_PortDomainOther,
- OMX_PortDomainKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_PortDomainVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_PortDomainMax = 0x7ffffff
-} OMX_PORTDOMAINTYPE;
-
-/** @ingroup comp */
-typedef struct OMX_PARAM_PORTDEFINITIONTYPE {
- OMX_U32 nSize; /**< Size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< Port number the structure applies to */
- OMX_DIRTYPE eDir; /**< Direction (input or output) of this port */
- OMX_U32 nBufferCountActual; /**< The actual number of buffers allocated on this port */
- OMX_U32 nBufferCountMin; /**< The minimum number of buffers this port requires */
- OMX_U32 nBufferSize; /**< Size, in bytes, for buffers to be used for this channel */
- OMX_BOOL bEnabled; /**< Ports default to enabled and are enabled/disabled by
- OMX_CommandPortEnable/OMX_CommandPortDisable.
- When disabled a port is unpopulated. A disabled port
- is not populated with buffers on a transition to IDLE. */
- OMX_BOOL bPopulated; /**< Port is populated with all of its buffers as indicated by
- nBufferCountActual. A disabled port is always unpopulated.
- An enabled port is populated on a transition to OMX_StateIdle
- and unpopulated on a transition to loaded. */
- OMX_PORTDOMAINTYPE eDomain; /**< Domain of the port. Determines the contents of metadata below. */
- union {
- OMX_AUDIO_PORTDEFINITIONTYPE audio;
- OMX_VIDEO_PORTDEFINITIONTYPE video;
- OMX_IMAGE_PORTDEFINITIONTYPE image;
- OMX_OTHER_PORTDEFINITIONTYPE other;
- } format;
- OMX_BOOL bBuffersContiguous;
- OMX_U32 nBufferAlignment;
-} OMX_PARAM_PORTDEFINITIONTYPE;
-
-/** @ingroup comp */
-typedef struct OMX_PARAM_U32TYPE {
- OMX_U32 nSize; /**< Size of this structure, in Bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_U32 nU32; /**< U32 value */
-} OMX_PARAM_U32TYPE;
-
-/** @ingroup rpm */
-typedef enum OMX_SUSPENSIONPOLICYTYPE {
- OMX_SuspensionDisabled, /**< No suspension; v1.0 behavior */
- OMX_SuspensionEnabled, /**< Suspension allowed */
- OMX_SuspensionPolicyKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_SuspensionPolicyStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_SuspensionPolicyMax = 0x7fffffff
-} OMX_SUSPENSIONPOLICYTYPE;
-
-/** @ingroup rpm */
-typedef struct OMX_PARAM_SUSPENSIONPOLICYTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_SUSPENSIONPOLICYTYPE ePolicy;
-} OMX_PARAM_SUSPENSIONPOLICYTYPE;
-
-/** @ingroup rpm */
-typedef enum OMX_SUSPENSIONTYPE {
- OMX_NotSuspended, /**< component is not suspended */
- OMX_Suspended, /**< component is suspended */
- OMX_SuspensionKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_SuspensionVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_SuspendMax = 0x7FFFFFFF
-} OMX_SUSPENSIONTYPE;
-
-/** @ingroup rpm */
-typedef struct OMX_PARAM_SUSPENSIONTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_SUSPENSIONTYPE eType;
-} OMX_PARAM_SUSPENSIONTYPE ;
-
-typedef struct OMX_CONFIG_BOOLEANTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_BOOL bEnabled;
-} OMX_CONFIG_BOOLEANTYPE;
-
-/* Parameter specifying the content uri to use. */
-/** @ingroup cp */
-typedef struct OMX_PARAM_CONTENTURITYPE
-{
- OMX_U32 nSize; /**< size of the structure in bytes, including
- actual URI name */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U8 contentURI[1]; /**< The URI name */
-} OMX_PARAM_CONTENTURITYPE;
-
-/* Parameter specifying the pipe to use. */
-/** @ingroup cp */
-typedef struct OMX_PARAM_CONTENTPIPETYPE
-{
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_HANDLETYPE hPipe; /**< The pipe handle*/
-} OMX_PARAM_CONTENTPIPETYPE;
-
-/** @ingroup rpm */
-typedef struct OMX_RESOURCECONCEALMENTTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_BOOL bResourceConcealmentForbidden; /**< disallow the use of resource concealment
- methods (like degrading algorithm quality to
- lower resource consumption or functional bypass)
- on a component as a resolution to resource conflicts. */
-} OMX_RESOURCECONCEALMENTTYPE;
-
-
-/** @ingroup metadata */
-typedef enum OMX_METADATACHARSETTYPE {
- OMX_MetadataCharsetUnknown = 0,
- OMX_MetadataCharsetASCII,
- OMX_MetadataCharsetBinary,
- OMX_MetadataCharsetCodePage1252,
- OMX_MetadataCharsetUTF8,
- OMX_MetadataCharsetJavaConformantUTF8,
- OMX_MetadataCharsetUTF7,
- OMX_MetadataCharsetImapUTF7,
- OMX_MetadataCharsetUTF16LE,
- OMX_MetadataCharsetUTF16BE,
- OMX_MetadataCharsetGB12345,
- OMX_MetadataCharsetHZGB2312,
- OMX_MetadataCharsetGB2312,
- OMX_MetadataCharsetGB18030,
- OMX_MetadataCharsetGBK,
- OMX_MetadataCharsetBig5,
- OMX_MetadataCharsetISO88591,
- OMX_MetadataCharsetISO88592,
- OMX_MetadataCharsetISO88593,
- OMX_MetadataCharsetISO88594,
- OMX_MetadataCharsetISO88595,
- OMX_MetadataCharsetISO88596,
- OMX_MetadataCharsetISO88597,
- OMX_MetadataCharsetISO88598,
- OMX_MetadataCharsetISO88599,
- OMX_MetadataCharsetISO885910,
- OMX_MetadataCharsetISO885913,
- OMX_MetadataCharsetISO885914,
- OMX_MetadataCharsetISO885915,
- OMX_MetadataCharsetShiftJIS,
- OMX_MetadataCharsetISO2022JP,
- OMX_MetadataCharsetISO2022JP1,
- OMX_MetadataCharsetISOEUCJP,
- OMX_MetadataCharsetSMS7Bit,
- OMX_MetadataCharsetKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_MetadataCharsetVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_MetadataCharsetTypeMax= 0x7FFFFFFF
-} OMX_METADATACHARSETTYPE;
-
-/** @ingroup metadata */
-typedef enum OMX_METADATASCOPETYPE
-{
- OMX_MetadataScopeAllLevels,
- OMX_MetadataScopeTopLevel,
- OMX_MetadataScopePortLevel,
- OMX_MetadataScopeNodeLevel,
- OMX_MetadataScopeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_MetadataScopeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_MetadataScopeTypeMax = 0x7fffffff
-} OMX_METADATASCOPETYPE;
-
-/** @ingroup metadata */
-typedef enum OMX_METADATASEARCHMODETYPE
-{
- OMX_MetadataSearchValueSizeByIndex,
- OMX_MetadataSearchItemByIndex,
- OMX_MetadataSearchNextItemByKey,
- OMX_MetadataSearchKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_MetadataSearchVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_MetadataSearchTypeMax = 0x7fffffff
-} OMX_METADATASEARCHMODETYPE;
-/** @ingroup metadata */
-typedef struct OMX_CONFIG_METADATAITEMCOUNTTYPE
-{
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_METADATASCOPETYPE eScopeMode;
- OMX_U32 nScopeSpecifier;
- OMX_U32 nMetadataItemCount;
-} OMX_CONFIG_METADATAITEMCOUNTTYPE;
-
-/** @ingroup metadata */
-typedef struct OMX_CONFIG_METADATAITEMTYPE
-{
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_METADATASCOPETYPE eScopeMode;
- OMX_U32 nScopeSpecifier;
- OMX_U32 nMetadataItemIndex;
- OMX_METADATASEARCHMODETYPE eSearchMode;
- OMX_METADATACHARSETTYPE eKeyCharset;
- OMX_U8 nKeySizeUsed;
- OMX_U8 nKey[128];
- OMX_METADATACHARSETTYPE eValueCharset;
- OMX_STRING sLanguageCountry;
- OMX_U32 nValueMaxSize;
- OMX_U32 nValueSizeUsed;
- OMX_U8 nValue[1];
-} OMX_CONFIG_METADATAITEMTYPE;
-
-/* @ingroup metadata */
-typedef struct OMX_CONFIG_CONTAINERNODECOUNTTYPE
-{
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_BOOL bAllKeys;
- OMX_U32 nParentNodeID;
- OMX_U32 nNumNodes;
-} OMX_CONFIG_CONTAINERNODECOUNTTYPE;
-
-/** @ingroup metadata */
-typedef struct OMX_CONFIG_CONTAINERNODEIDTYPE
-{
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_BOOL bAllKeys;
- OMX_U32 nParentNodeID;
- OMX_U32 nNodeIndex;
- OMX_U32 nNodeID;
- OMX_STRING cNodeName;
- OMX_BOOL bIsLeafType;
-} OMX_CONFIG_CONTAINERNODEIDTYPE;
-
-/** @ingroup metadata */
-typedef struct OMX_PARAM_METADATAFILTERTYPE
-{
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_BOOL bAllKeys; /* if true then this structure refers to all keys and
- * the three key fields below are ignored */
- OMX_METADATACHARSETTYPE eKeyCharset;
- OMX_U32 nKeySizeUsed;
- OMX_U8 nKey [128];
- OMX_U32 nLanguageCountrySizeUsed;
- OMX_U8 nLanguageCountry[128];
- OMX_BOOL bEnabled; /* if true then key is part of filter (e.g.
- * retained for query later). If false then
- * key is not part of filter */
-} OMX_PARAM_METADATAFILTERTYPE;
-
-/** The OMX_HANDLETYPE structure defines the component handle. The component
- * handle is used to access all of the component's public methods and also
- * contains pointers to the component's private data area. The component
- * handle is initialized by the OMX core (with help from the component)
- * during the process of loading the component. After the component is
- * successfully loaded, the application can safely access any of the
- * component's public functions (although some may return an error because
- * the state is inappropriate for the access).
- *
- * @ingroup comp
- */
-typedef struct OMX_COMPONENTTYPE
-{
- /** The size of this structure, in bytes. It is the responsibility
- of the allocator of this structure to fill in this value. Since
- this structure is allocated by the GetHandle function, this
- function will fill in this value. */
- OMX_U32 nSize;
-
- /** nVersion is the version of the OMX specification that the structure
- is built against. It is the responsibility of the creator of this
- structure to initialize this value and every user of this structure
- should verify that it knows how to use the exact version of
- this structure found herein. */
- OMX_VERSIONTYPE nVersion;
-
- /** pComponentPrivate is a pointer to the component private data area.
- This member is allocated and initialized by the component when the
- component is first loaded. The application should not access this
- data area. */
- OMX_PTR pComponentPrivate;
-
- /** pApplicationPrivate is a pointer that is a parameter to the
- OMX_GetHandle method, and contains an application private value
- provided by the IL client. This application private data is
- returned to the IL Client by OMX in all callbacks */
- OMX_PTR pApplicationPrivate;
-
- /** refer to OMX_GetComponentVersion in OMX_core.h or the OMX IL
- specification for details on the GetComponentVersion method.
- */
- OMX_ERRORTYPE (*GetComponentVersion)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_OUT OMX_STRING pComponentName,
- OMX_OUT OMX_VERSIONTYPE* pComponentVersion,
- OMX_OUT OMX_VERSIONTYPE* pSpecVersion,
- OMX_OUT OMX_UUIDTYPE* pComponentUUID);
-
- /** refer to OMX_SendCommand in OMX_core.h or the OMX IL
- specification for details on the SendCommand method.
- */
- OMX_ERRORTYPE (*SendCommand)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_COMMANDTYPE Cmd,
- OMX_IN OMX_U32 nParam1,
- OMX_IN OMX_PTR pCmdData);
-
- /** refer to OMX_GetParameter in OMX_core.h or the OMX IL
- specification for details on the GetParameter method.
- */
- OMX_ERRORTYPE (*GetParameter)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_INDEXTYPE nParamIndex,
- OMX_INOUT OMX_PTR pComponentParameterStructure);
-
-
- /** refer to OMX_SetParameter in OMX_core.h or the OMX IL
- specification for details on the SetParameter method.
- */
- OMX_ERRORTYPE (*SetParameter)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_INDEXTYPE nIndex,
- OMX_IN OMX_PTR pComponentParameterStructure);
-
-
- /** refer to OMX_GetConfig in OMX_core.h or the OMX IL
- specification for details on the GetConfig method.
- */
- OMX_ERRORTYPE (*GetConfig)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_INDEXTYPE nIndex,
- OMX_INOUT OMX_PTR pComponentConfigStructure);
-
-
- /** refer to OMX_SetConfig in OMX_core.h or the OMX IL
- specification for details on the SetConfig method.
- */
- OMX_ERRORTYPE (*SetConfig)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_INDEXTYPE nIndex,
- OMX_IN OMX_PTR pComponentConfigStructure);
-
-
- /** refer to OMX_GetExtensionIndex in OMX_core.h or the OMX IL
- specification for details on the GetExtensionIndex method.
- */
- OMX_ERRORTYPE (*GetExtensionIndex)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_STRING cParameterName,
- OMX_OUT OMX_INDEXTYPE* pIndexType);
-
-
- /** refer to OMX_GetState in OMX_core.h or the OMX IL
- specification for details on the GetState method.
- */
- OMX_ERRORTYPE (*GetState)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_OUT OMX_STATETYPE* pState);
-
-
- /** The ComponentTunnelRequest method will interact with another OMX
- component to determine if tunneling is possible and to setup the
- tunneling. The return codes for this method can be used to
- determine if tunneling is not possible, or if tunneling is not
- supported.
-
- Base profile components (i.e. non-interop) do not support this
- method and should return OMX_ErrorNotImplemented
-
- The interop profile component MUST support tunneling to another
- interop profile component with a compatible port parameters.
- A component may also support proprietary communication.
-
- If proprietary communication is supported the negotiation of
- proprietary communication is done outside of OMX in a vendor
- specific way. It is only required that the proper result be
- returned and the details of how the setup is done is left
- to the component implementation.
-
- When this method is invoked when nPort in an output port, the
- component will:
- 1. Populate the pTunnelSetup structure with the output port's
- requirements and constraints for the tunnel.
-
- When this method is invoked when nPort in an input port, the
- component will:
- 1. Query the necessary parameters from the output port to
- determine if the ports are compatible for tunneling
- 2. If the ports are compatible, the component should store
- the tunnel step provided by the output port
- 3. Determine which port (either input or output) is the buffer
- supplier, and call OMX_SetParameter on the output port to
- indicate this selection.
-
- The component will return from this call within 5 msec.
-
- @param [in] hComp
- Handle of the component to be accessed. This is the component
- handle returned by the call to the OMX_GetHandle method.
- @param [in] nPort
- nPort is used to select the port on the component to be used
- for tunneling.
- @param [in] hTunneledComp
- Handle of the component to tunnel with. This is the component
- handle returned by the call to the OMX_GetHandle method. When
- this parameter is 0x0 the component should setup the port for
- communication with the application / IL Client.
- @param [in] nPortOutput
- nPortOutput is used indicate the port the component should
- tunnel with.
- @param [in] pTunnelSetup
- Pointer to the tunnel setup structure. When nPort is an output port
- the component should populate the fields of this structure. When
- When nPort is an input port the component should review the setup
- provided by the component with the output port.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup tun
- */
-
- OMX_ERRORTYPE (*ComponentTunnelRequest)(
- OMX_IN OMX_HANDLETYPE hComp,
- OMX_IN OMX_U32 nPort,
- OMX_IN OMX_HANDLETYPE hTunneledComp,
- OMX_IN OMX_U32 nTunneledPort,
- OMX_INOUT OMX_TUNNELSETUPTYPE* pTunnelSetup);
-
- /** refer to OMX_UseBuffer in OMX_core.h or the OMX IL
- specification for details on the UseBuffer method.
- @ingroup buf
- */
- OMX_ERRORTYPE (*UseBuffer)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr,
- OMX_IN OMX_U32 nPortIndex,
- OMX_IN OMX_PTR pAppPrivate,
- OMX_IN OMX_U32 nSizeBytes,
- OMX_IN OMX_U8* pBuffer);
-
- /** refer to OMX_AllocateBuffer in OMX_core.h or the OMX IL
- specification for details on the AllocateBuffer method.
- @ingroup buf
- */
- OMX_ERRORTYPE (*AllocateBuffer)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_INOUT OMX_BUFFERHEADERTYPE** ppBuffer,
- OMX_IN OMX_U32 nPortIndex,
- OMX_IN OMX_PTR pAppPrivate,
- OMX_IN OMX_U32 nSizeBytes);
-
- /** refer to OMX_FreeBuffer in OMX_core.h or the OMX IL
- specification for details on the FreeBuffer method.
- @ingroup buf
- */
- OMX_ERRORTYPE (*FreeBuffer)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_U32 nPortIndex,
- OMX_IN OMX_BUFFERHEADERTYPE* pBuffer);
-
- /** refer to OMX_EmptyThisBuffer in OMX_core.h or the OMX IL
- specification for details on the EmptyThisBuffer method.
- @ingroup buf
- */
- OMX_ERRORTYPE (*EmptyThisBuffer)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_BUFFERHEADERTYPE* pBuffer);
-
- /** refer to OMX_FillThisBuffer in OMX_core.h or the OMX IL
- specification for details on the FillThisBuffer method.
- @ingroup buf
- */
- OMX_ERRORTYPE (*FillThisBuffer)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_BUFFERHEADERTYPE* pBuffer);
-
- /** The SetCallbacks method is used by the core to specify the callback
- structure from the application to the component. This is a blocking
- call. The component will return from this call within 5 msec.
- @param [in] hComponent
- Handle of the component to be accessed. This is the component
- handle returned by the call to the GetHandle function.
- @param [in] pCallbacks
- pointer to an OMX_CALLBACKTYPE structure used to provide the
- callback information to the component
- @param [in] pAppData
- pointer to an application defined value. It is anticipated that
- the application will pass a pointer to a data structure or a "this
- pointer" in this area to allow the callback (in the application)
- to determine the context of the call
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- */
- OMX_ERRORTYPE (*SetCallbacks)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_CALLBACKTYPE* pCallbacks,
- OMX_IN OMX_PTR pAppData);
-
- /** ComponentDeInit method is used to deinitialize the component
- providing a means to free any resources allocated at component
- initialization. NOTE: After this call the component handle is
- not valid for further use.
- @param [in] hComponent
- Handle of the component to be accessed. This is the component
- handle returned by the call to the GetHandle function.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- */
- OMX_ERRORTYPE (*ComponentDeInit)(
- OMX_IN OMX_HANDLETYPE hComponent);
-
- /** @ingroup buf */
- OMX_ERRORTYPE (*UseEGLImage)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr,
- OMX_IN OMX_U32 nPortIndex,
- OMX_IN OMX_PTR pAppPrivate,
- OMX_IN void* eglImage);
-
- OMX_ERRORTYPE (*ComponentRoleEnum)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_OUT OMX_U8 *cRole,
- OMX_IN OMX_U32 nIndex);
-
-} OMX_COMPONENTTYPE;
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
-/* File EOF */
diff --git a/sec_mm/sec_omx/sec_omx_include/khronos/OMX_ContentPipe.h b/sec_mm/sec_omx/sec_omx_include/khronos/OMX_ContentPipe.h
deleted file mode 100644
index 5f6310c..0000000
--- a/sec_mm/sec_omx/sec_omx_include/khronos/OMX_ContentPipe.h
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Copyright (c) 2008 The Khronos Group Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject
- * to the following conditions:
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-
-/** OMX_ContentPipe.h - OpenMax IL version 1.1.2
- * The OMX_ContentPipe header file contains the definitions used to define
- * the public interface for content piples. This header file is intended to
- * be used by the component.
- */
-
-#ifndef OMX_CONTENTPIPE_H
-#define OMX_CONTENTPIPE_H
-
-#ifndef KD_EACCES
-/* OpenKODE error codes. CPResult values may be zero (indicating success
- or one of the following values) */
-#define KD_EACCES (1)
-#define KD_EADDRINUSE (2)
-#define KD_EAGAIN (5)
-#define KD_EBADF (7)
-#define KD_EBUSY (8)
-#define KD_ECONNREFUSED (9)
-#define KD_ECONNRESET (10)
-#define KD_EDEADLK (11)
-#define KD_EDESTADDRREQ (12)
-#define KD_ERANGE (35)
-#define KD_EEXIST (13)
-#define KD_EFBIG (14)
-#define KD_EHOSTUNREACH (15)
-#define KD_EINVAL (17)
-#define KD_EIO (18)
-#define KD_EISCONN (20)
-#define KD_EISDIR (21)
-#define KD_EMFILE (22)
-#define KD_ENAMETOOLONG (23)
-#define KD_ENOENT (24)
-#define KD_ENOMEM (25)
-#define KD_ENOSPC (26)
-#define KD_ENOSYS (27)
-#define KD_ENOTCONN (28)
-#define KD_EPERM (33)
-#define KD_ETIMEDOUT (36)
-#define KD_EILSEQ (19)
-#endif
-
-/** Map types from OMX standard types only here so interface is as generic as possible. */
-typedef OMX_U32 CPresult;
-typedef char * CPstring;
-typedef void * CPhandle;
-typedef OMX_U32 CPuint;
-typedef OMX_S32 CPint;
-typedef char CPbyte;
-typedef OMX_BOOL CPbool;
-
-/** enumeration of origin types used in the CP_PIPETYPE's Seek function
- * @ingroup cp
- */
-typedef enum CP_ORIGINTYPE {
- CP_OriginBegin,
- CP_OriginCur,
- CP_OriginEnd,
- CP_OriginKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- CP_OriginVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- CP_OriginMax = 0X7FFFFFFF
-} CP_ORIGINTYPE;
-
-/** enumeration of contact access types used in the CP_PIPETYPE's Open function
- * @ingroup cp
- */
-typedef enum CP_ACCESSTYPE {
- CP_AccessRead,
- CP_AccessWrite,
- CP_AccessReadWrite ,
- CP_AccessKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- CP_AccessVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- CP_AccessMax = 0X7FFFFFFF
-} CP_ACCESSTYPE;
-
-/** enumeration of results returned by the CP_PIPETYPE's CheckAvailableBytes function
- * @ingroup cp
- */
-typedef enum CP_CHECKBYTESRESULTTYPE
-{
- CP_CheckBytesOk, /**< There are at least the request number
- of bytes available */
- CP_CheckBytesNotReady, /**< The pipe is still retrieving bytes
- and presently lacks sufficient bytes.
- Client will be called when they are
- sufficient bytes are available. */
- CP_CheckBytesInsufficientBytes , /**< The pipe has retrieved all bytes
- but those available are less than those
- requested */
- CP_CheckBytesAtEndOfStream, /**< The pipe has reached the end of stream
- and no more bytes are available. */
- CP_CheckBytesOutOfBuffers, /**< All read/write buffers are currently in use. */
- CP_CheckBytesKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- CP_CheckBytesVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- CP_CheckBytesMax = 0X7FFFFFFF
-} CP_CHECKBYTESRESULTTYPE;
-
-/** enumeration of content pipe events sent to the client callback.
- * @ingroup cp
- */
-typedef enum CP_EVENTTYPE{
- CP_BytesAvailable, /** bytes requested in a CheckAvailableBytes call are now available*/
- CP_Overflow, /** enumeration of content pipe events sent to the client callback*/
- CP_PipeDisconnected , /** enumeration of content pipe events sent to the client callback*/
- CP_EventKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- CP_EventVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- CP_EventMax = 0X7FFFFFFF
-} CP_EVENTTYPE;
-
-/** content pipe definition
- * @ingroup cp
- */
-typedef struct CP_PIPETYPE
-{
- /** Open a content stream for reading or writing. */
- CPresult (*Open)( CPhandle* hContent, CPstring szURI, CP_ACCESSTYPE eAccess );
-
- /** Close a content stream. */
- CPresult (*Close)( CPhandle hContent );
-
- /** Create a content source and open it for writing. */
- CPresult (*Create)( CPhandle *hContent, CPstring szURI );
-
- /** Check the that specified number of bytes are available for reading or writing (depending on access type).*/
- CPresult (*CheckAvailableBytes)( CPhandle hContent, CPuint nBytesRequested, CP_CHECKBYTESRESULTTYPE *eResult );
-
- /** Seek to certain position in the content relative to the specified origin. */
- CPresult (*SetPosition)( CPhandle hContent, CPint nOffset, CP_ORIGINTYPE eOrigin);
-
- /** Retrieve the current position relative to the start of the content. */
- CPresult (*GetPosition)( CPhandle hContent, CPuint *pPosition);
-
- /** Retrieve data of the specified size from the content stream (advance content pointer by size of data).
- Note: pipe client provides pointer. This function is appropriate for small high frequency reads. */
- CPresult (*Read)( CPhandle hContent, CPbyte *pData, CPuint nSize);
-
- /** Retrieve a buffer allocated by the pipe that contains the requested number of bytes.
- Buffer contains the next block of bytes, as specified by nSize, of the content. nSize also
- returns the size of the block actually read. Content pointer advances the by the returned size.
- Note: pipe provides pointer. This function is appropriate for large reads. The client must call
- ReleaseReadBuffer when done with buffer.
-
- In some cases the requested block may not reside in contiguous memory within the
- pipe implementation. For instance if the pipe leverages a circular buffer then the requested
- block may straddle the boundary of the circular buffer. By default a pipe implementation
- performs a copy in this case to provide the block to the pipe client in one contiguous buffer.
- If, however, the client sets bForbidCopy, then the pipe returns only those bytes preceding the memory
- boundary. Here the client may retrieve the data in segments over successive calls. */
- CPresult (*ReadBuffer)( CPhandle hContent, CPbyte **ppBuffer, CPuint *nSize, CPbool bForbidCopy);
-
- /** Release a buffer obtained by ReadBuffer back to the pipe. */
- CPresult (*ReleaseReadBuffer)(CPhandle hContent, CPbyte *pBuffer);
-
- /** Write data of the specified size to the content (advance content pointer by size of data).
- Note: pipe client provides pointer. This function is appropriate for small high frequency writes. */
- CPresult (*Write)( CPhandle hContent, CPbyte *data, CPuint nSize);
-
- /** Retrieve a buffer allocated by the pipe used to write data to the content.
- Client will fill buffer with output data. Note: pipe provides pointer. This function is appropriate
- for large writes. The client must call WriteBuffer when done it has filled the buffer with data.*/
- CPresult (*GetWriteBuffer)( CPhandle hContent, CPbyte **ppBuffer, CPuint nSize);
-
- /** Deliver a buffer obtained via GetWriteBuffer to the pipe. Pipe will write the
- the contents of the buffer to content and advance content pointer by the size of the buffer */
- CPresult (*WriteBuffer)( CPhandle hContent, CPbyte *pBuffer, CPuint nFilledSize);
-
- /** Register a per-handle client callback with the content pipe. */
- CPresult (*RegisterCallback)( CPhandle hContent, CPresult (*ClientCallback)(CP_EVENTTYPE eEvent, CPuint iParam));
-
-} CP_PIPETYPE;
-
-#endif
-
diff --git a/sec_mm/sec_omx/sec_omx_include/khronos/OMX_Core.h b/sec_mm/sec_omx/sec_omx_include/khronos/OMX_Core.h
deleted file mode 100644
index a076f2f..0000000
--- a/sec_mm/sec_omx/sec_omx_include/khronos/OMX_Core.h
+++ /dev/null
@@ -1,1431 +0,0 @@
-/*
- * Copyright (c) 2008 The Khronos Group Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject
- * to the following conditions:
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-
-/** OMX_Core.h - OpenMax IL version 1.1.2
- * The OMX_Core header file contains the definitions used by both the
- * application and the component to access common items.
- */
-
-#ifndef OMX_Core_h
-#define OMX_Core_h
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-/* Each OMX header shall include all required header files to allow the
- * header to compile without errors. The includes below are required
- * for this header file to compile successfully
- */
-
-#include <OMX_Index.h>
-
-
-/** The OMX_COMMANDTYPE enumeration is used to specify the action in the
- * OMX_SendCommand macro.
- * @ingroup core
- */
-typedef enum OMX_COMMANDTYPE
-{
- OMX_CommandStateSet, /**< Change the component state */
- OMX_CommandFlush, /**< Flush the data queue(s) of a component */
- OMX_CommandPortDisable, /**< Disable a port on a component. */
- OMX_CommandPortEnable, /**< Enable a port on a component. */
- OMX_CommandMarkBuffer, /**< Mark a component/buffer for observation */
- OMX_CommandKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_CommandVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_CommandMax = 0X7FFFFFFF
-} OMX_COMMANDTYPE;
-
-
-
-/** The OMX_STATETYPE enumeration is used to indicate or change the component
- * state. This enumeration reflects the current state of the component when
- * used with the OMX_GetState macro or becomes the parameter in a state change
- * command when used with the OMX_SendCommand macro.
- *
- * The component will be in the Loaded state after the component is initially
- * loaded into memory. In the Loaded state, the component is not allowed to
- * allocate or hold resources other than to build it's internal parameter
- * and configuration tables. The application will send one or more
- * SetParameters/GetParameters and SetConfig/GetConfig commands to the
- * component and the component will record each of these parameter and
- * configuration changes for use later. When the application sends the
- * Idle command, the component will acquire the resources needed for the
- * specified configuration and will transition to the idle state if the
- * allocation is successful. If the component cannot successfully
- * transition to the idle state for any reason, the state of the component
- * shall be fully rolled back to the Loaded state (e.g. all allocated
- * resources shall be released). When the component receives the command
- * to go to the Executing state, it shall begin processing buffers by
- * sending all input buffers it holds to the application. While
- * the component is in the Idle state, the application may also send the
- * Pause command. If the component receives the pause command while in the
- * Idle state, the component shall send all input buffers it holds to the
- * application, but shall not begin processing buffers. This will allow the
- * application to prefill buffers.
- *
- * @ingroup comp
- */
-
-typedef enum OMX_STATETYPE
-{
- OMX_StateInvalid, /**< component has detected that it's internal data
- structures are corrupted to the point that
- it cannot determine it's state properly */
- OMX_StateLoaded, /**< component has been loaded but has not completed
- initialization. The OMX_SetParameter macro
- and the OMX_GetParameter macro are the only
- valid macros allowed to be sent to the
- component in this state. */
- OMX_StateIdle, /**< component initialization has been completed
- successfully and the component is ready to
- to start. */
- OMX_StateExecuting, /**< component has accepted the start command and
- is processing data (if data is available) */
- OMX_StatePause, /**< component has received pause command */
- OMX_StateWaitForResources, /**< component is waiting for resources, either after
- preemption or before it gets the resources requested.
- See specification for complete details. */
- OMX_StateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_StateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_StateMax = 0X7FFFFFFF
-} OMX_STATETYPE;
-
-/** The OMX_ERRORTYPE enumeration defines the standard OMX Errors. These
- * errors should cover most of the common failure cases. However,
- * vendors are free to add additional error messages of their own as
- * long as they follow these rules:
- * 1. Vendor error messages shall be in the range of 0x90000000 to
- * 0x9000FFFF.
- * 2. Vendor error messages shall be defined in a header file provided
- * with the component. No error messages are allowed that are
- * not defined.
- */
-typedef enum OMX_ERRORTYPE
-{
- OMX_ErrorNone = 0,
-
- /** There were insufficient resources to perform the requested operation */
- OMX_ErrorInsufficientResources = (OMX_S32) 0x80001000,
-
- /** There was an error, but the cause of the error could not be determined */
- OMX_ErrorUndefined = (OMX_S32) 0x80001001,
-
- /** The component name string was not valid */
- OMX_ErrorInvalidComponentName = (OMX_S32) 0x80001002,
-
- /** No component with the specified name string was found */
- OMX_ErrorComponentNotFound = (OMX_S32) 0x80001003,
-
- /** The component specified did not have a "OMX_ComponentInit" or
- "OMX_ComponentDeInit entry point */
- OMX_ErrorInvalidComponent = (OMX_S32) 0x80001004,
-
- /** One or more parameters were not valid */
- OMX_ErrorBadParameter = (OMX_S32) 0x80001005,
-
- /** The requested function is not implemented */
- OMX_ErrorNotImplemented = (OMX_S32) 0x80001006,
-
- /** The buffer was emptied before the next buffer was ready */
- OMX_ErrorUnderflow = (OMX_S32) 0x80001007,
-
- /** The buffer was not available when it was needed */
- OMX_ErrorOverflow = (OMX_S32) 0x80001008,
-
- /** The hardware failed to respond as expected */
- OMX_ErrorHardware = (OMX_S32) 0x80001009,
-
- /** The component is in the state OMX_StateInvalid */
- OMX_ErrorInvalidState = (OMX_S32) 0x8000100A,
-
- /** Stream is found to be corrupt */
- OMX_ErrorStreamCorrupt = (OMX_S32) 0x8000100B,
-
- /** Ports being connected are not compatible */
- OMX_ErrorPortsNotCompatible = (OMX_S32) 0x8000100C,
-
- /** Resources allocated to an idle component have been
- lost resulting in the component returning to the loaded state */
- OMX_ErrorResourcesLost = (OMX_S32) 0x8000100D,
-
- /** No more indicies can be enumerated */
- OMX_ErrorNoMore = (OMX_S32) 0x8000100E,
-
- /** The component detected a version mismatch */
- OMX_ErrorVersionMismatch = (OMX_S32) 0x8000100F,
-
- /** The component is not ready to return data at this time */
- OMX_ErrorNotReady = (OMX_S32) 0x80001010,
-
- /** There was a timeout that occurred */
- OMX_ErrorTimeout = (OMX_S32) 0x80001011,
-
- /** This error occurs when trying to transition into the state you are already in */
- OMX_ErrorSameState = (OMX_S32) 0x80001012,
-
- /** Resources allocated to an executing or paused component have been
- preempted, causing the component to return to the idle state */
- OMX_ErrorResourcesPreempted = (OMX_S32) 0x80001013,
-
- /** A non-supplier port sends this error to the IL client (via the EventHandler callback)
- during the allocation of buffers (on a transition from the LOADED to the IDLE state or
- on a port restart) when it deems that it has waited an unusually long time for the supplier
- to send it an allocated buffer via a UseBuffer call. */
- OMX_ErrorPortUnresponsiveDuringAllocation = (OMX_S32) 0x80001014,
-
- /** A non-supplier port sends this error to the IL client (via the EventHandler callback)
- during the deallocation of buffers (on a transition from the IDLE to LOADED state or
- on a port stop) when it deems that it has waited an unusually long time for the supplier
- to request the deallocation of a buffer header via a FreeBuffer call. */
- OMX_ErrorPortUnresponsiveDuringDeallocation = (OMX_S32) 0x80001015,
-
- /** A supplier port sends this error to the IL client (via the EventHandler callback)
- during the stopping of a port (either on a transition from the IDLE to LOADED
- state or a port stop) when it deems that it has waited an unusually long time for
- the non-supplier to return a buffer via an EmptyThisBuffer or FillThisBuffer call. */
- OMX_ErrorPortUnresponsiveDuringStop = (OMX_S32) 0x80001016,
-
- /** Attempting a state transtion that is not allowed */
- OMX_ErrorIncorrectStateTransition = (OMX_S32) 0x80001017,
-
- /* Attempting a command that is not allowed during the present state. */
- OMX_ErrorIncorrectStateOperation = (OMX_S32) 0x80001018,
-
- /** The values encapsulated in the parameter or config structure are not supported. */
- OMX_ErrorUnsupportedSetting = (OMX_S32) 0x80001019,
-
- /** The parameter or config indicated by the given index is not supported. */
- OMX_ErrorUnsupportedIndex = (OMX_S32) 0x8000101A,
-
- /** The port index supplied is incorrect. */
- OMX_ErrorBadPortIndex = (OMX_S32) 0x8000101B,
-
- /** The port has lost one or more of its buffers and it thus unpopulated. */
- OMX_ErrorPortUnpopulated = (OMX_S32) 0x8000101C,
-
- /** Component suspended due to temporary loss of resources */
- OMX_ErrorComponentSuspended = (OMX_S32) 0x8000101D,
-
- /** Component suspended due to an inability to acquire dynamic resources */
- OMX_ErrorDynamicResourcesUnavailable = (OMX_S32) 0x8000101E,
-
- /** When the macroblock error reporting is enabled the component returns new error
- for every frame that has errors */
- OMX_ErrorMbErrorsInFrame = (OMX_S32) 0x8000101F,
-
- /** A component reports this error when it cannot parse or determine the format of an input stream. */
- OMX_ErrorFormatNotDetected = (OMX_S32) 0x80001020,
-
- /** The content open operation failed. */
- OMX_ErrorContentPipeOpenFailed = (OMX_S32) 0x80001021,
-
- /** The content creation operation failed. */
- OMX_ErrorContentPipeCreationFailed = (OMX_S32) 0x80001022,
-
- /** Separate table information is being used */
- OMX_ErrorSeperateTablesUsed = (OMX_S32) 0x80001023,
-
- /** Tunneling is unsupported by the component*/
- OMX_ErrorTunnelingUnsupported = (OMX_S32) 0x80001024,
-
- OMX_ErrorKhronosExtensions = (OMX_S32)0x8F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_ErrorVendorStartUnused = (OMX_S32)0x90000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_ErrorMax = 0x7FFFFFFF
-} OMX_ERRORTYPE;
-
-/** @ingroup core */
-typedef OMX_ERRORTYPE (* OMX_COMPONENTINITTYPE)(OMX_IN OMX_HANDLETYPE hComponent);
-
-/** @ingroup core */
-typedef struct OMX_COMPONENTREGISTERTYPE
-{
- const char * pName; /* Component name, 128 byte limit (including '\0') applies */
- OMX_COMPONENTINITTYPE pInitialize; /* Component instance initialization function */
-} OMX_COMPONENTREGISTERTYPE;
-
-/** @ingroup core */
-extern OMX_COMPONENTREGISTERTYPE OMX_ComponentRegistered[];
-
-/** @ingroup rpm */
-typedef struct OMX_PRIORITYMGMTTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nGroupPriority; /**< Priority of the component group */
- OMX_U32 nGroupID; /**< ID of the component group */
-} OMX_PRIORITYMGMTTYPE;
-
-/* Component name and Role names are limited to 128 characters including the terminating '\0'. */
-#define OMX_MAX_STRINGNAME_SIZE 128
-
-/** @ingroup comp */
-typedef struct OMX_PARAM_COMPONENTROLETYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U8 cRole[OMX_MAX_STRINGNAME_SIZE]; /**< name of standard component which defines component role */
-} OMX_PARAM_COMPONENTROLETYPE;
-
-/** End of Stream Buffer Flag:
- *
- * A component sets EOS when it has no more data to emit on a particular
- * output port. Thus an output port shall set EOS on the last buffer it
- * emits. A component's determination of when an output port should
- * cease sending data is implemenation specific.
- * @ingroup buf
- */
-
-#define OMX_BUFFERFLAG_EOS 0x00000001
-
-/** Start Time Buffer Flag:
- *
- * The source of a stream (e.g. a demux component) sets the STARTTIME
- * flag on the buffer that contains the starting timestamp for the
- * stream. The starting timestamp corresponds to the first data that
- * should be displayed at startup or after a seek.
- * The first timestamp of the stream is not necessarily the start time.
- * For instance, in the case of a seek to a particular video frame,
- * the target frame may be an interframe. Thus the first buffer of
- * the stream will be the intra-frame preceding the target frame and
- * the starttime will occur with the target frame (with any other
- * required frames required to reconstruct the target intervening).
- *
- * The STARTTIME flag is directly associated with the buffer's
- * timestamp ' thus its association to buffer data and its
- * propagation is identical to the timestamp's.
- *
- * When a Sync Component client receives a buffer with the
- * STARTTIME flag it shall perform a SetConfig on its sync port
- * using OMX_ConfigTimeClientStartTime and passing the buffer's
- * timestamp.
- *
- * @ingroup buf
- */
-
-#define OMX_BUFFERFLAG_STARTTIME 0x00000002
-
-
-
-/** Decode Only Buffer Flag:
- *
- * The source of a stream (e.g. a demux component) sets the DECODEONLY
- * flag on any buffer that should shall be decoded but should not be
- * displayed. This flag is used, for instance, when a source seeks to
- * a target interframe that requires the decode of frames preceding the
- * target to facilitate the target's reconstruction. In this case the
- * source would emit the frames preceding the target downstream
- * but mark them as decode only.
- *
- * The DECODEONLY is associated with buffer data and propagated in a
- * manner identical to the buffer timestamp.
- *
- * A component that renders data should ignore all buffers with
- * the DECODEONLY flag set.
- *
- * @ingroup buf
- */
-
-#define OMX_BUFFERFLAG_DECODEONLY 0x00000004
-
-
-/* Data Corrupt Flag: This flag is set when the IL client believes the data in the associated buffer is corrupt
- * @ingroup buf
- */
-
-#define OMX_BUFFERFLAG_DATACORRUPT 0x00000008
-
-/* End of Frame: The buffer contains exactly one end of frame and no data
- * occurs after the end of frame. This flag is an optional hint. The absence
- * of this flag does not imply the absence of an end of frame within the buffer.
- * @ingroup buf
-*/
-#define OMX_BUFFERFLAG_ENDOFFRAME 0x00000010
-
-/* Sync Frame Flag: This flag is set when the buffer content contains a coded sync frame '
- * a frame that has no dependency on any other frame information
- * @ingroup buf
- */
-#define OMX_BUFFERFLAG_SYNCFRAME 0x00000020
-
-/* Extra data present flag: there is extra data appended to the data stream
- * residing in the buffer
- * @ingroup buf
- */
-#define OMX_BUFFERFLAG_EXTRADATA 0x00000040
-
-/** Codec Config Buffer Flag:
-* OMX_BUFFERFLAG_CODECCONFIG is an optional flag that is set by an
-* output port when all bytes in the buffer form part or all of a set of
-* codec specific configuration data. Examples include SPS/PPS nal units
-* for OMX_VIDEO_CodingAVC or AudioSpecificConfig data for
-* OMX_AUDIO_CodingAAC. Any component that for a given stream sets
-* OMX_BUFFERFLAG_CODECCONFIG shall not mix codec configuration bytes
-* with frame data in the same buffer, and shall send all buffers
-* containing codec configuration bytes before any buffers containing
-* frame data that those configurations bytes describe.
-* If the stream format for a particular codec has a frame specific
-* header at the start of each frame, for example OMX_AUDIO_CodingMP3 or
-* OMX_AUDIO_CodingAAC in ADTS mode, then these shall be presented as
-* normal without setting OMX_BUFFERFLAG_CODECCONFIG.
- * @ingroup buf
- */
-#define OMX_BUFFERFLAG_CODECCONFIG 0x00000080
-
-
-
-/** @ingroup buf */
-typedef struct OMX_BUFFERHEADERTYPE
-{
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U8* pBuffer; /**< Pointer to actual block of memory
- that is acting as the buffer */
- OMX_U32 nAllocLen; /**< size of the buffer allocated, in bytes */
- OMX_U32 nFilledLen; /**< number of bytes currently in the
- buffer */
- OMX_U32 nOffset; /**< start offset of valid data in bytes from
- the start of the buffer */
- OMX_PTR pAppPrivate; /**< pointer to any data the application
- wants to associate with this buffer */
- OMX_PTR pPlatformPrivate; /**< pointer to any data the platform
- wants to associate with this buffer */
- OMX_PTR pInputPortPrivate; /**< pointer to any data the input port
- wants to associate with this buffer */
- OMX_PTR pOutputPortPrivate; /**< pointer to any data the output port
- wants to associate with this buffer */
- OMX_HANDLETYPE hMarkTargetComponent; /**< The component that will generate a
- mark event upon processing this buffer. */
- OMX_PTR pMarkData; /**< Application specific data associated with
- the mark sent on a mark event to disambiguate
- this mark from others. */
- OMX_U32 nTickCount; /**< Optional entry that the component and
- application can update with a tick count
- when they access the component. This
- value should be in microseconds. Since
- this is a value relative to an arbitrary
- starting point, this value cannot be used
- to determine absolute time. This is an
- optional entry and not all components
- will update it.*/
- OMX_TICKS nTimeStamp; /**< Timestamp corresponding to the sample
- starting at the first logical sample
- boundary in the buffer. Timestamps of
- successive samples within the buffer may
- be inferred by adding the duration of the
- of the preceding buffer to the timestamp
- of the preceding buffer.*/
- OMX_U32 nFlags; /**< buffer specific flags */
- OMX_U32 nOutputPortIndex; /**< The index of the output port (if any) using
- this buffer */
- OMX_U32 nInputPortIndex; /**< The index of the input port (if any) using
- this buffer */
-} OMX_BUFFERHEADERTYPE;
-
-/** The OMX_EXTRADATATYPE enumeration is used to define the
- * possible extra data payload types.
- * NB: this enum is binary backwards compatible with the previous
- * OMX_EXTRADATA_QUANT define. This should be replaced with
- * OMX_ExtraDataQuantization.
- */
-typedef enum OMX_EXTRADATATYPE
-{
- OMX_ExtraDataNone = 0, /**< Indicates that no more extra data sections follow */
- OMX_ExtraDataQuantization, /**< The data payload contains quantization data */
- OMX_ExtraDataKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_ExtraDataVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_ExtraDataMax = 0x7FFFFFFF
-} OMX_EXTRADATATYPE;
-
-
-typedef struct OMX_OTHER_EXTRADATATYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_EXTRADATATYPE eType; /* Extra Data type */
- OMX_U32 nDataSize; /* Size of the supporting data to follow */
- OMX_U8 data[1]; /* Supporting data hint */
-} OMX_OTHER_EXTRADATATYPE;
-
-/** @ingroup comp */
-typedef struct OMX_PORT_PARAM_TYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPorts; /**< The number of ports for this component */
- OMX_U32 nStartPortNumber; /** first port number for this type of port */
-} OMX_PORT_PARAM_TYPE;
-
-/** @ingroup comp */
-typedef enum OMX_EVENTTYPE
-{
- OMX_EventCmdComplete, /**< component has sucessfully completed a command */
- OMX_EventError, /**< component has detected an error condition */
- OMX_EventMark, /**< component has detected a buffer mark */
- OMX_EventPortSettingsChanged, /**< component is reported a port settings change */
- OMX_EventBufferFlag, /**< component has detected an EOS */
- OMX_EventResourcesAcquired, /**< component has been granted resources and is
- automatically starting the state change from
- OMX_StateWaitForResources to OMX_StateIdle. */
- OMX_EventComponentResumed, /**< Component resumed due to reacquisition of resources */
- OMX_EventDynamicResourcesAvailable, /**< Component has acquired previously unavailable dynamic resources */
- OMX_EventPortFormatDetected, /**< Component has detected a supported format. */
- OMX_EventKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_EventVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_EventMax = 0x7FFFFFFF
-} OMX_EVENTTYPE;
-
-typedef struct OMX_CALLBACKTYPE
-{
- /** The EventHandler method is used to notify the application when an
- event of interest occurs. Events are defined in the OMX_EVENTTYPE
- enumeration. Please see that enumeration for details of what will
- be returned for each type of event. Callbacks should not return
- an error to the component, so if an error occurs, the application
- shall handle it internally. This is a blocking call.
-
- The application should return from this call within 5 msec to avoid
- blocking the component for an excessively long period of time.
-
- @param hComponent
- handle of the component to access. This is the component
- handle returned by the call to the GetHandle function.
- @param pAppData
- pointer to an application defined value that was provided in the
- pAppData parameter to the OMX_GetHandle method for the component.
- This application defined value is provided so that the application
- can have a component specific context when receiving the callback.
- @param eEvent
- Event that the component wants to notify the application about.
- @param nData1
- nData will be the OMX_ERRORTYPE for an error event and will be
- an OMX_COMMANDTYPE for a command complete event and OMX_INDEXTYPE for a OMX_PortSettingsChanged event.
- @param nData2
- nData2 will hold further information related to the event. Can be OMX_STATETYPE for
- a OMX_CommandStateSet command or port index for a OMX_PortSettingsChanged event.
- Default value is 0 if not used. )
- @param pEventData
- Pointer to additional event-specific data (see spec for meaning).
- */
-
- OMX_ERRORTYPE (*EventHandler)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_PTR pAppData,
- OMX_IN OMX_EVENTTYPE eEvent,
- OMX_IN OMX_U32 nData1,
- OMX_IN OMX_U32 nData2,
- OMX_IN OMX_PTR pEventData);
-
- /** The EmptyBufferDone method is used to return emptied buffers from an
- input port back to the application for reuse. This is a blocking call
- so the application should not attempt to refill the buffers during this
- call, but should queue them and refill them in another thread. There
- is no error return, so the application shall handle any errors generated
- internally.
-
- The application should return from this call within 5 msec.
-
- @param hComponent
- handle of the component to access. This is the component
- handle returned by the call to the GetHandle function.
- @param pAppData
- pointer to an application defined value that was provided in the
- pAppData parameter to the OMX_GetHandle method for the component.
- This application defined value is provided so that the application
- can have a component specific context when receiving the callback.
- @param pBuffer
- pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer
- or AllocateBuffer indicating the buffer that was emptied.
- @ingroup buf
- */
- OMX_ERRORTYPE (*EmptyBufferDone)(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_IN OMX_PTR pAppData,
- OMX_IN OMX_BUFFERHEADERTYPE* pBuffer);
-
- /** The FillBufferDone method is used to return filled buffers from an
- output port back to the application for emptying and then reuse.
- This is a blocking call so the application should not attempt to
- empty the buffers during this call, but should queue the buffers
- and empty them in another thread. There is no error return, so
- the application shall handle any errors generated internally. The
- application shall also update the buffer header to indicate the
- number of bytes placed into the buffer.
-
- The application should return from this call within 5 msec.
-
- @param hComponent
- handle of the component to access. This is the component
- handle returned by the call to the GetHandle function.
- @param pAppData
- pointer to an application defined value that was provided in the
- pAppData parameter to the OMX_GetHandle method for the component.
- This application defined value is provided so that the application
- can have a component specific context when receiving the callback.
- @param pBuffer
- pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer
- or AllocateBuffer indicating the buffer that was filled.
- @ingroup buf
- */
- OMX_ERRORTYPE (*FillBufferDone)(
- OMX_OUT OMX_HANDLETYPE hComponent,
- OMX_OUT OMX_PTR pAppData,
- OMX_OUT OMX_BUFFERHEADERTYPE* pBuffer);
-
-} OMX_CALLBACKTYPE;
-
-/** The OMX_BUFFERSUPPLIERTYPE enumeration is used to dictate port supplier
- preference when tunneling between two ports.
- @ingroup tun buf
-*/
-typedef enum OMX_BUFFERSUPPLIERTYPE
-{
- OMX_BufferSupplyUnspecified = 0x0, /**< port supplying the buffers is unspecified,
- or don't care */
- OMX_BufferSupplyInput, /**< input port supplies the buffers */
- OMX_BufferSupplyOutput, /**< output port supplies the buffers */
- OMX_BufferSupplyKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_BufferSupplyVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_BufferSupplyMax = 0x7FFFFFFF
-} OMX_BUFFERSUPPLIERTYPE;
-
-
-/** buffer supplier parameter
- * @ingroup tun
- */
-typedef struct OMX_PARAM_BUFFERSUPPLIERTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_BUFFERSUPPLIERTYPE eBufferSupplier; /**< buffer supplier */
-} OMX_PARAM_BUFFERSUPPLIERTYPE;
-
-
-/**< indicates that buffers received by an input port of a tunnel
- may not modify the data in the buffers
- @ingroup tun
- */
-#define OMX_PORTTUNNELFLAG_READONLY 0x00000001
-
-
-/** The OMX_TUNNELSETUPTYPE structure is used to pass data from an output
- port to an input port as part the two ComponentTunnelRequest calls
- resulting from a OMX_SetupTunnel call from the IL Client.
- @ingroup tun
- */
-typedef struct OMX_TUNNELSETUPTYPE
-{
- OMX_U32 nTunnelFlags; /**< bit flags for tunneling */
- OMX_BUFFERSUPPLIERTYPE eSupplier; /**< supplier preference */
-} OMX_TUNNELSETUPTYPE;
-
-/* OMX Component headers is included to enable the core to use
- macros for functions into the component for OMX release 1.0.
- Developers should not access any structures or data from within
- the component header directly */
-/* TO BE REMOVED - #include <OMX_Component.h> */
-
-/** GetComponentVersion will return information about the component.
- This is a blocking call. This macro will go directly from the
- application to the component (via a core macro). The
- component will return from this call within 5 msec.
- @param [in] hComponent
- handle of component to execute the command
- @param [out] pComponentName
- pointer to an empty string of length 128 bytes. The component
- will write its name into this string. The name will be
- terminated by a single zero byte. The name of a component will
- be 127 bytes or less to leave room for the trailing zero byte.
- An example of a valid component name is "OMX.ABC.ChannelMixer\0".
- @param [out] pComponentVersion
- pointer to an OMX Version structure that the component will fill
- in. The component will fill in a value that indicates the
- component version. NOTE: the component version is NOT the same
- as the OMX Specification version (found in all structures). The
- component version is defined by the vendor of the component and
- its value is entirely up to the component vendor.
- @param [out] pSpecVersion
- pointer to an OMX Version structure that the component will fill
- in. The SpecVersion is the version of the specification that the
- component was built against. Please note that this value may or
- may not match the structure's version. For example, if the
- component was built against the 2.0 specification, but the
- application (which creates the structure is built against the
- 1.0 specification the versions would be different.
- @param [out] pComponentUUID
- pointer to the UUID of the component which will be filled in by
- the component. The UUID is a unique identifier that is set at
- RUN time for the component and is unique to each instantion of
- the component.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup comp
- */
-#define OMX_GetComponentVersion( \
- hComponent, \
- pComponentName, \
- pComponentVersion, \
- pSpecVersion, \
- pComponentUUID) \
- ((OMX_COMPONENTTYPE*)hComponent)->GetComponentVersion( \
- hComponent, \
- pComponentName, \
- pComponentVersion, \
- pSpecVersion, \
- pComponentUUID) /* Macro End */
-
-
-/** Send a command to the component. This call is a non-blocking call.
- The component should check the parameters and then queue the command
- to the component thread to be executed. The component thread shall
- send the EventHandler() callback at the conclusion of the command.
- This macro will go directly from the application to the component (via
- a core macro). The component will return from this call within 5 msec.
-
- When the command is "OMX_CommandStateSet" the component will queue a
- state transition to the new state idenfied in nParam.
-
- When the command is "OMX_CommandFlush", to flush a port's buffer queues,
- the command will force the component to return all buffers NOT CURRENTLY
- BEING PROCESSED to the application, in the order in which the buffers
- were received.
-
- When the command is "OMX_CommandPortDisable" or
- "OMX_CommandPortEnable", the component's port (given by the value of
- nParam) will be stopped or restarted.
-
- When the command "OMX_CommandMarkBuffer" is used to mark a buffer, the
- pCmdData will point to a OMX_MARKTYPE structure containing the component
- handle of the component to examine the buffer chain for the mark. nParam1
- contains the index of the port on which the buffer mark is applied.
-
- Specification text for more details.
-
- @param [in] hComponent
- handle of component to execute the command
- @param [in] Cmd
- Command for the component to execute
- @param [in] nParam
- Parameter for the command to be executed. When Cmd has the value
- OMX_CommandStateSet, value is a member of OMX_STATETYPE. When Cmd has
- the value OMX_CommandFlush, value of nParam indicates which port(s)
- to flush. -1 is used to flush all ports a single port index will
- only flush that port. When Cmd has the value "OMX_CommandPortDisable"
- or "OMX_CommandPortEnable", the component's port is given by
- the value of nParam. When Cmd has the value "OMX_CommandMarkBuffer"
- the components pot is given by the value of nParam.
- @param [in] pCmdData
- Parameter pointing to the OMX_MARKTYPE structure when Cmd has the value
- "OMX_CommandMarkBuffer".
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup comp
- */
-#define OMX_SendCommand( \
- hComponent, \
- Cmd, \
- nParam, \
- pCmdData) \
- ((OMX_COMPONENTTYPE*)hComponent)->SendCommand( \
- hComponent, \
- Cmd, \
- nParam, \
- pCmdData) /* Macro End */
-
-
-/** The OMX_GetParameter macro will get one of the current parameter
- settings from the component. This macro cannot only be invoked when
- the component is in the OMX_StateInvalid state. The nParamIndex
- parameter is used to indicate which structure is being requested from
- the component. The application shall allocate the correct structure
- and shall fill in the structure size and version information before
- invoking this macro. When the parameter applies to a port, the
- caller shall fill in the appropriate nPortIndex value indicating the
- port on which the parameter applies. If the component has not had
- any settings changed, then the component should return a set of
- valid DEFAULT parameters for the component. This is a blocking
- call.
-
- The component should return from this call within 20 msec.
-
- @param [in] hComponent
- Handle of the component to be accessed. This is the component
- handle returned by the call to the OMX_GetHandle function.
- @param [in] nParamIndex
- Index of the structure to be filled. This value is from the
- OMX_INDEXTYPE enumeration.
- @param [in,out] pComponentParameterStructure
- Pointer to application allocated structure to be filled by the
- component.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup comp
- */
-#define OMX_GetParameter( \
- hComponent, \
- nParamIndex, \
- pComponentParameterStructure) \
- ((OMX_COMPONENTTYPE*)hComponent)->GetParameter( \
- hComponent, \
- nParamIndex, \
- pComponentParameterStructure) /* Macro End */
-
-
-/** The OMX_SetParameter macro will send an initialization parameter
- structure to a component. Each structure shall be sent one at a time,
- in a separate invocation of the macro. This macro can only be
- invoked when the component is in the OMX_StateLoaded state, or the
- port is disabled (when the parameter applies to a port). The
- nParamIndex parameter is used to indicate which structure is being
- passed to the component. The application shall allocate the
- correct structure and shall fill in the structure size and version
- information (as well as the actual data) before invoking this macro.
- The application is free to dispose of this structure after the call
- as the component is required to copy any data it shall retain. This
- is a blocking call.
-
- The component should return from this call within 20 msec.
-
- @param [in] hComponent
- Handle of the component to be accessed. This is the component
- handle returned by the call to the OMX_GetHandle function.
- @param [in] nIndex
- Index of the structure to be sent. This value is from the
- OMX_INDEXTYPE enumeration.
- @param [in] pComponentParameterStructure
- pointer to application allocated structure to be used for
- initialization by the component.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup comp
- */
-#define OMX_SetParameter( \
- hComponent, \
- nParamIndex, \
- pComponentParameterStructure) \
- ((OMX_COMPONENTTYPE*)hComponent)->SetParameter( \
- hComponent, \
- nParamIndex, \
- pComponentParameterStructure) /* Macro End */
-
-
-/** The OMX_GetConfig macro will get one of the configuration structures
- from a component. This macro can be invoked anytime after the
- component has been loaded. The nParamIndex call parameter is used to
- indicate which structure is being requested from the component. The
- application shall allocate the correct structure and shall fill in the
- structure size and version information before invoking this macro.
- If the component has not had this configuration parameter sent before,
- then the component should return a set of valid DEFAULT values for the
- component. This is a blocking call.
-
- The component should return from this call within 5 msec.
-
- @param [in] hComponent
- Handle of the component to be accessed. This is the component
- handle returned by the call to the OMX_GetHandle function.
- @param [in] nIndex
- Index of the structure to be filled. This value is from the
- OMX_INDEXTYPE enumeration.
- @param [in,out] pComponentConfigStructure
- pointer to application allocated structure to be filled by the
- component.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup comp
-*/
-#define OMX_GetConfig( \
- hComponent, \
- nConfigIndex, \
- pComponentConfigStructure) \
- ((OMX_COMPONENTTYPE*)hComponent)->GetConfig( \
- hComponent, \
- nConfigIndex, \
- pComponentConfigStructure) /* Macro End */
-
-
-/** The OMX_SetConfig macro will send one of the configuration
- structures to a component. Each structure shall be sent one at a time,
- each in a separate invocation of the macro. This macro can be invoked
- anytime after the component has been loaded. The application shall
- allocate the correct structure and shall fill in the structure size
- and version information (as well as the actual data) before invoking
- this macro. The application is free to dispose of this structure after
- the call as the component is required to copy any data it shall retain.
- This is a blocking call.
-
- The component should return from this call within 5 msec.
-
- @param [in] hComponent
- Handle of the component to be accessed. This is the component
- handle returned by the call to the OMX_GetHandle function.
- @param [in] nConfigIndex
- Index of the structure to be sent. This value is from the
- OMX_INDEXTYPE enumeration above.
- @param [in] pComponentConfigStructure
- pointer to application allocated structure to be used for
- initialization by the component.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup comp
- */
-#define OMX_SetConfig( \
- hComponent, \
- nConfigIndex, \
- pComponentConfigStructure) \
- ((OMX_COMPONENTTYPE*)hComponent)->SetConfig( \
- hComponent, \
- nConfigIndex, \
- pComponentConfigStructure) /* Macro End */
-
-
-/** The OMX_GetExtensionIndex macro will invoke a component to translate
- a vendor specific configuration or parameter string into an OMX
- structure index. There is no requirement for the vendor to support
- this command for the indexes already found in the OMX_INDEXTYPE
- enumeration (this is done to save space in small components). The
- component shall support all vendor supplied extension indexes not found
- in the master OMX_INDEXTYPE enumeration. This is a blocking call.
-
- The component should return from this call within 5 msec.
-
- @param [in] hComponent
- Handle of the component to be accessed. This is the component
- handle returned by the call to the GetHandle function.
- @param [in] cParameterName
- OMX_STRING that shall be less than 128 characters long including
- the trailing null byte. This is the string that will get
- translated by the component into a configuration index.
- @param [out] pIndexType
- a pointer to a OMX_INDEXTYPE to receive the index value.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup comp
- */
-#define OMX_GetExtensionIndex( \
- hComponent, \
- cParameterName, \
- pIndexType) \
- ((OMX_COMPONENTTYPE*)hComponent)->GetExtensionIndex( \
- hComponent, \
- cParameterName, \
- pIndexType) /* Macro End */
-
-
-/** The OMX_GetState macro will invoke the component to get the current
- state of the component and place the state value into the location
- pointed to by pState.
-
- The component should return from this call within 5 msec.
-
- @param [in] hComponent
- Handle of the component to be accessed. This is the component
- handle returned by the call to the OMX_GetHandle function.
- @param [out] pState
- pointer to the location to receive the state. The value returned
- is one of the OMX_STATETYPE members
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup comp
- */
-#define OMX_GetState( \
- hComponent, \
- pState) \
- ((OMX_COMPONENTTYPE*)hComponent)->GetState( \
- hComponent, \
- pState) /* Macro End */
-
-
-/** The OMX_UseBuffer macro will request that the component use
- a buffer (and allocate its own buffer header) already allocated
- by another component, or by the IL Client. This is a blocking
- call.
-
- The component should return from this call within 20 msec.
-
- @param [in] hComponent
- Handle of the component to be accessed. This is the component
- handle returned by the call to the OMX_GetHandle function.
- @param [out] ppBuffer
- pointer to an OMX_BUFFERHEADERTYPE structure used to receive the
- pointer to the buffer header
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup comp buf
- */
-
-#define OMX_UseBuffer( \
- hComponent, \
- ppBufferHdr, \
- nPortIndex, \
- pAppPrivate, \
- nSizeBytes, \
- pBuffer) \
- ((OMX_COMPONENTTYPE*)hComponent)->UseBuffer( \
- hComponent, \
- ppBufferHdr, \
- nPortIndex, \
- pAppPrivate, \
- nSizeBytes, \
- pBuffer)
-
-
-/** The OMX_AllocateBuffer macro will request that the component allocate
- a new buffer and buffer header. The component will allocate the
- buffer and the buffer header and return a pointer to the buffer
- header. This is a blocking call.
-
- The component should return from this call within 5 msec.
-
- @param [in] hComponent
- Handle of the component to be accessed. This is the component
- handle returned by the call to the OMX_GetHandle function.
- @param [out] ppBuffer
- pointer to an OMX_BUFFERHEADERTYPE structure used to receive
- the pointer to the buffer header
- @param [in] nPortIndex
- nPortIndex is used to select the port on the component the buffer will
- be used with. The port can be found by using the nPortIndex
- value as an index into the Port Definition array of the component.
- @param [in] pAppPrivate
- pAppPrivate is used to initialize the pAppPrivate member of the
- buffer header structure.
- @param [in] nSizeBytes
- size of the buffer to allocate. Used when bAllocateNew is true.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup comp buf
- */
-#define OMX_AllocateBuffer( \
- hComponent, \
- ppBuffer, \
- nPortIndex, \
- pAppPrivate, \
- nSizeBytes) \
- ((OMX_COMPONENTTYPE*)hComponent)->AllocateBuffer( \
- hComponent, \
- ppBuffer, \
- nPortIndex, \
- pAppPrivate, \
- nSizeBytes) /* Macro End */
-
-
-/** The OMX_FreeBuffer macro will release a buffer header from the component
- which was allocated using either OMX_AllocateBuffer or OMX_UseBuffer. If
- the component allocated the buffer (see the OMX_UseBuffer macro) then
- the component shall free the buffer and buffer header. This is a
- blocking call.
-
- The component should return from this call within 20 msec.
-
- @param [in] hComponent
- Handle of the component to be accessed. This is the component
- handle returned by the call to the OMX_GetHandle function.
- @param [in] nPortIndex
- nPortIndex is used to select the port on the component the buffer will
- be used with.
- @param [in] pBuffer
- pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer
- or AllocateBuffer.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup comp buf
- */
-#define OMX_FreeBuffer( \
- hComponent, \
- nPortIndex, \
- pBuffer) \
- ((OMX_COMPONENTTYPE*)hComponent)->FreeBuffer( \
- hComponent, \
- nPortIndex, \
- pBuffer) /* Macro End */
-
-
-/** The OMX_EmptyThisBuffer macro will send a buffer full of data to an
- input port of a component. The buffer will be emptied by the component
- and returned to the application via the EmptyBufferDone call back.
- This is a non-blocking call in that the component will record the buffer
- and return immediately and then empty the buffer, later, at the proper
- time. As expected, this macro may be invoked only while the component
- is in the OMX_StateExecuting. If nPortIndex does not specify an input
- port, the component shall return an error.
-
- The component should return from this call within 5 msec.
-
- @param [in] hComponent
- Handle of the component to be accessed. This is the component
- handle returned by the call to the OMX_GetHandle function.
- @param [in] pBuffer
- pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer
- or AllocateBuffer.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup comp buf
- */
-#define OMX_EmptyThisBuffer( \
- hComponent, \
- pBuffer) \
- ((OMX_COMPONENTTYPE*)hComponent)->EmptyThisBuffer( \
- hComponent, \
- pBuffer) /* Macro End */
-
-
-/** The OMX_FillThisBuffer macro will send an empty buffer to an
- output port of a component. The buffer will be filled by the component
- and returned to the application via the FillBufferDone call back.
- This is a non-blocking call in that the component will record the buffer
- and return immediately and then fill the buffer, later, at the proper
- time. As expected, this macro may be invoked only while the component
- is in the OMX_ExecutingState. If nPortIndex does not specify an output
- port, the component shall return an error.
-
- The component should return from this call within 5 msec.
-
- @param [in] hComponent
- Handle of the component to be accessed. This is the component
- handle returned by the call to the OMX_GetHandle function.
- @param [in] pBuffer
- pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer
- or AllocateBuffer.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup comp buf
- */
-#define OMX_FillThisBuffer( \
- hComponent, \
- pBuffer) \
- ((OMX_COMPONENTTYPE*)hComponent)->FillThisBuffer( \
- hComponent, \
- pBuffer) /* Macro End */
-
-
-
-/** The OMX_UseEGLImage macro will request that the component use
- a EGLImage provided by EGL (and allocate its own buffer header)
- This is a blocking call.
-
- The component should return from this call within 20 msec.
-
- @param [in] hComponent
- Handle of the component to be accessed. This is the component
- handle returned by the call to the OMX_GetHandle function.
- @param [out] ppBuffer
- pointer to an OMX_BUFFERHEADERTYPE structure used to receive the
- pointer to the buffer header. Note that the memory location used
- for this buffer is NOT visible to the IL Client.
- @param [in] nPortIndex
- nPortIndex is used to select the port on the component the buffer will
- be used with. The port can be found by using the nPortIndex
- value as an index into the Port Definition array of the component.
- @param [in] pAppPrivate
- pAppPrivate is used to initialize the pAppPrivate member of the
- buffer header structure.
- @param [in] eglImage
- eglImage contains the handle of the EGLImage to use as a buffer on the
- specified port. The component is expected to validate properties of
- the EGLImage against the configuration of the port to ensure the component
- can use the EGLImage as a buffer.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup comp buf
- */
-#define OMX_UseEGLImage( \
- hComponent, \
- ppBufferHdr, \
- nPortIndex, \
- pAppPrivate, \
- eglImage) \
- ((OMX_COMPONENTTYPE*)hComponent)->UseEGLImage( \
- hComponent, \
- ppBufferHdr, \
- nPortIndex, \
- pAppPrivate, \
- eglImage)
-
-/** The OMX_Init method is used to initialize the OMX core. It shall be the
- first call made into OMX and it should only be executed one time without
- an interviening OMX_Deinit call.
-
- The core should return from this call within 20 msec.
-
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup core
- */
-OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_Init(void);
-
-
-/** The OMX_Deinit method is used to deinitialize the OMX core. It shall be
- the last call made into OMX. In the event that the core determines that
- thare are components loaded when this call is made, the core may return
- with an error rather than try to unload the components.
-
- The core should return from this call within 20 msec.
-
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup core
- */
-OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_Deinit(void);
-
-
-/** The OMX_ComponentNameEnum method will enumerate through all the names of
- recognised valid components in the system. This function is provided
- as a means to detect all the components in the system run-time. There is
- no strict ordering to the enumeration order of component names, although
- each name will only be enumerated once. If the OMX core supports run-time
- installation of new components, it is only requried to detect newly
- installed components when the first call to enumerate component names
- is made (i.e. when nIndex is 0x0).
-
- The core should return from this call in 20 msec.
-
- @param [out] cComponentName
- pointer to a null terminated string with the component name. The
- names of the components are strings less than 127 bytes in length
- plus the trailing null for a maximum size of 128 bytes. An example
- of a valid component name is "OMX.TI.AUDIO.DSP.MIXER\0". Names are
- assigned by the vendor, but shall start with "OMX." and then have
- the Vendor designation next.
- @param [in] nNameLength
- number of characters in the cComponentName string. With all
- component name strings restricted to less than 128 characters
- (including the trailing null) it is recomended that the caller
- provide a input string for the cComponentName of 128 characters.
- @param [in] nIndex
- number containing the enumeration index for the component.
- Multiple calls to OMX_ComponentNameEnum with increasing values
- of nIndex will enumerate through the component names in the
- system until OMX_ErrorNoMore is returned. The value of nIndex
- is 0 to (N-1), where N is the number of valid installed components
- in the system.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. When the value of nIndex exceeds the number of
- components in the system minus 1, OMX_ErrorNoMore will be
- returned. Otherwise the appropriate OMX error will be returned.
- @ingroup core
- */
-OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_ComponentNameEnum(
- OMX_OUT OMX_STRING cComponentName,
- OMX_IN OMX_U32 nNameLength,
- OMX_IN OMX_U32 nIndex);
-
-
-/** The OMX_GetHandle method will locate the component specified by the
- component name given, load that component into memory and then invoke
- the component's methods to create an instance of the component.
-
- The core should return from this call within 20 msec.
-
- @param [out] pHandle
- pointer to an OMX_HANDLETYPE pointer to be filled in by this method.
- @param [in] cComponentName
- pointer to a null terminated string with the component name. The
- names of the components are strings less than 127 bytes in length
- plus the trailing null for a maximum size of 128 bytes. An example
- of a valid component name is "OMX.TI.AUDIO.DSP.MIXER\0". Names are
- assigned by the vendor, but shall start with "OMX." and then have
- the Vendor designation next.
- @param [in] pAppData
- pointer to an application defined value that will be returned
- during callbacks so that the application can identify the source
- of the callback.
- @param [in] pCallBacks
- pointer to a OMX_CALLBACKTYPE structure that will be passed to the
- component to initialize it with.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup core
- */
-OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_GetHandle(
- OMX_OUT OMX_HANDLETYPE* pHandle,
- OMX_IN OMX_STRING cComponentName,
- OMX_IN OMX_PTR pAppData,
- OMX_IN OMX_CALLBACKTYPE* pCallBacks);
-
-
-/** The OMX_FreeHandle method will free a handle allocated by the OMX_GetHandle
- method. If the component reference count goes to zero, the component will
- be unloaded from memory.
-
- The core should return from this call within 20 msec when the component is
- in the OMX_StateLoaded state.
-
- @param [in] hComponent
- Handle of the component to be accessed. This is the component
- handle returned by the call to the GetHandle function.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- @ingroup core
- */
-OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_FreeHandle(
- OMX_IN OMX_HANDLETYPE hComponent);
-
-
-
-/** The OMX_SetupTunnel method will handle the necessary calls to the components
- to setup the specified tunnel the two components. NOTE: This is
- an actual method (not a #define macro). This method will make calls into
- the component ComponentTunnelRequest method to do the actual tunnel
- connection.
-
- The ComponentTunnelRequest method on both components will be called.
- This method shall not be called unless the component is in the
- OMX_StateLoaded state except when the ports used for the tunnel are
- disabled. In this case, the component may be in the OMX_StateExecuting,
- OMX_StatePause, or OMX_StateIdle states.
-
- The core should return from this call within 20 msec.
-
- @param [in] hOutput
- Handle of the component to be accessed. Also this is the handle
- of the component whose port, specified in the nPortOutput parameter
- will be used the source for the tunnel. This is the component handle
- returned by the call to the OMX_GetHandle function. There is a
- requirement that hOutput be the source for the data when
- tunelling (i.e. nPortOutput is an output port). If 0x0, the component
- specified in hInput will have it's port specified in nPortInput
- setup for communication with the application / IL client.
- @param [in] nPortOutput
- nPortOutput is used to select the source port on component to be
- used in the tunnel.
- @param [in] hInput
- This is the component to setup the tunnel with. This is the handle
- of the component whose port, specified in the nPortInput parameter
- will be used the destination for the tunnel. This is the component handle
- returned by the call to the OMX_GetHandle function. There is a
- requirement that hInput be the destination for the data when
- tunelling (i.e. nPortInut is an input port). If 0x0, the component
- specified in hOutput will have it's port specified in nPortPOutput
- setup for communication with the application / IL client.
- @param [in] nPortInput
- nPortInput is used to select the destination port on component to be
- used in the tunnel.
- @return OMX_ERRORTYPE
- If the command successfully executes, the return code will be
- OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
- When OMX_ErrorNotImplemented is returned, one or both components is
- a non-interop component and does not support tunneling.
-
- On failure, the ports of both components are setup for communication
- with the application / IL Client.
- @ingroup core tun
- */
-OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_SetupTunnel(
- OMX_IN OMX_HANDLETYPE hOutput,
- OMX_IN OMX_U32 nPortOutput,
- OMX_IN OMX_HANDLETYPE hInput,
- OMX_IN OMX_U32 nPortInput);
-
-/** @ingroup cp */
-OMX_API OMX_ERRORTYPE OMX_GetContentPipe(
- OMX_OUT OMX_HANDLETYPE *hPipe,
- OMX_IN OMX_STRING szURI);
-
-/** The OMX_GetComponentsOfRole method will return the number of components that support the given
- role and (if the compNames field is non-NULL) the names of those components. The call will fail if
- an insufficiently sized array of names is supplied. To ensure the array is sufficiently sized the
- client should:
- * first call this function with the compNames field NULL to determine the number of component names
- * second call this function with the compNames field pointing to an array of names allocated
- according to the number returned by the first call.
-
- The core should return from this call within 5 msec.
-
- @param [in] role
- This is generic standard component name consisting only of component class
- name and the type within that class (e.g. 'audio_decoder.aac').
- @param [inout] pNumComps
- This is used both as input and output.
-
- If compNames is NULL, the input is ignored and the output specifies how many components support
- the given role.
-
- If compNames is not NULL, on input it bounds the size of the input structure and
- on output, it specifies the number of components string names listed within the compNames parameter.
- @param [inout] compNames
- If NULL this field is ignored. If non-NULL this points to an array of 128-byte strings which accepts
- a list of the names of all physical components that implement the specified standard component name.
- Each name is NULL terminated. numComps indicates the number of names.
- @ingroup core
- */
-OMX_API OMX_ERRORTYPE OMX_GetComponentsOfRole (
- OMX_IN OMX_STRING role,
- OMX_INOUT OMX_U32 *pNumComps,
- OMX_INOUT OMX_U8 **compNames);
-
-/** The OMX_GetRolesOfComponent method will return the number of roles supported by the given
- component and (if the roles field is non-NULL) the names of those roles. The call will fail if
- an insufficiently sized array of names is supplied. To ensure the array is sufficiently sized the
- client should:
- * first call this function with the roles field NULL to determine the number of role names
- * second call this function with the roles field pointing to an array of names allocated
- according to the number returned by the first call.
-
- The core should return from this call within 5 msec.
-
- @param [in] compName
- This is the name of the component being queried about.
- @param [inout] pNumRoles
- This is used both as input and output.
-
- If roles is NULL, the input is ignored and the output specifies how many roles the component supports.
-
- If compNames is not NULL, on input it bounds the size of the input structure and
- on output, it specifies the number of roles string names listed within the roles parameter.
- @param [out] roles
- If NULL this field is ignored. If non-NULL this points to an array of 128-byte strings
- which accepts a list of the names of all standard components roles implemented on the
- specified component name. numComps indicates the number of names.
- @ingroup core
- */
-OMX_API OMX_ERRORTYPE OMX_GetRolesOfComponent (
- OMX_IN OMX_STRING compName,
- OMX_INOUT OMX_U32 *pNumRoles,
- OMX_OUT OMX_U8 **roles);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
-/* File EOF */
-
diff --git a/sec_mm/sec_omx/sec_omx_include/khronos/OMX_IVCommon.h b/sec_mm/sec_omx/sec_omx_include/khronos/OMX_IVCommon.h
deleted file mode 100644
index 4c4995c..0000000
--- a/sec_mm/sec_omx/sec_omx_include/khronos/OMX_IVCommon.h
+++ /dev/null
@@ -1,920 +0,0 @@
-/**
- * Copyright (c) 2008 The Khronos Group Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject
- * to the following conditions:
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-
-/**
- * @file OMX_IVCommon.h - OpenMax IL version 1.1.2
- * The structures needed by Video and Image components to exchange
- * parameters and configuration data with the components.
- */
-#ifndef OMX_IVCommon_h
-#define OMX_IVCommon_h
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/**
- * Each OMX header must include all required header files to allow the header
- * to compile without errors. The includes below are required for this header
- * file to compile successfully
- */
-
-#include <OMX_Core.h>
-
-/** @defgroup iv OpenMAX IL Imaging and Video Domain
- * Common structures for OpenMAX IL Imaging and Video domains
- * @{
- */
-
-
-/**
- * Enumeration defining possible uncompressed image/video formats.
- *
- * ENUMS:
- * Unused : Placeholder value when format is N/A
- * Monochrome : black and white
- * 8bitRGB332 : Red 7:5, Green 4:2, Blue 1:0
- * 12bitRGB444 : Red 11:8, Green 7:4, Blue 3:0
- * 16bitARGB4444 : Alpha 15:12, Red 11:8, Green 7:4, Blue 3:0
- * 16bitARGB1555 : Alpha 15, Red 14:10, Green 9:5, Blue 4:0
- * 16bitRGB565 : Red 15:11, Green 10:5, Blue 4:0
- * 16bitBGR565 : Blue 15:11, Green 10:5, Red 4:0
- * 18bitRGB666 : Red 17:12, Green 11:6, Blue 5:0
- * 18bitARGB1665 : Alpha 17, Red 16:11, Green 10:5, Blue 4:0
- * 19bitARGB1666 : Alpha 18, Red 17:12, Green 11:6, Blue 5:0
- * 24bitRGB888 : Red 24:16, Green 15:8, Blue 7:0
- * 24bitBGR888 : Blue 24:16, Green 15:8, Red 7:0
- * 24bitARGB1887 : Alpha 23, Red 22:15, Green 14:7, Blue 6:0
- * 25bitARGB1888 : Alpha 24, Red 23:16, Green 15:8, Blue 7:0
- * 32bitBGRA8888 : Blue 31:24, Green 23:16, Red 15:8, Alpha 7:0
- * 32bitARGB8888 : Alpha 31:24, Red 23:16, Green 15:8, Blue 7:0
- * YUV411Planar : U,Y are subsampled by a factor of 4 horizontally
- * YUV411PackedPlanar : packed per payload in planar slices
- * YUV420Planar : Three arrays Y,U,V.
- * YUV420PackedPlanar : packed per payload in planar slices
- * YUV420SemiPlanar : Two arrays, one is all Y, the other is U and V
- * YUV422Planar : Three arrays Y,U,V.
- * YUV422PackedPlanar : packed per payload in planar slices
- * YUV422SemiPlanar : Two arrays, one is all Y, the other is U and V
- * YCbYCr : Organized as 16bit YUYV (i.e. YCbYCr)
- * YCrYCb : Organized as 16bit YVYU (i.e. YCrYCb)
- * CbYCrY : Organized as 16bit UYVY (i.e. CbYCrY)
- * CrYCbY : Organized as 16bit VYUY (i.e. CrYCbY)
- * YUV444Interleaved : Each pixel contains equal parts YUV
- * RawBayer8bit : SMIA camera output format
- * RawBayer10bit : SMIA camera output format
- * RawBayer8bitcompressed : SMIA camera output format
- */
-typedef enum OMX_COLOR_FORMATTYPE {
- OMX_COLOR_FormatUnused,
- OMX_COLOR_FormatMonochrome,
- OMX_COLOR_Format8bitRGB332,
- OMX_COLOR_Format12bitRGB444,
- OMX_COLOR_Format16bitARGB4444,
- OMX_COLOR_Format16bitARGB1555,
- OMX_COLOR_Format16bitRGB565,
- OMX_COLOR_Format16bitBGR565,
- OMX_COLOR_Format18bitRGB666,
- OMX_COLOR_Format18bitARGB1665,
- OMX_COLOR_Format19bitARGB1666,
- OMX_COLOR_Format24bitRGB888,
- OMX_COLOR_Format24bitBGR888,
- OMX_COLOR_Format24bitARGB1887,
- OMX_COLOR_Format25bitARGB1888,
- OMX_COLOR_Format32bitBGRA8888,
- OMX_COLOR_Format32bitARGB8888,
- OMX_COLOR_FormatYUV411Planar,
- OMX_COLOR_FormatYUV411PackedPlanar,
- OMX_COLOR_FormatYUV420Planar,
- OMX_COLOR_FormatYUV420PackedPlanar,
- OMX_COLOR_FormatYUV420SemiPlanar,
- OMX_COLOR_FormatYUV422Planar,
- OMX_COLOR_FormatYUV422PackedPlanar,
- OMX_COLOR_FormatYUV422SemiPlanar,
- OMX_COLOR_FormatYCbYCr,
- OMX_COLOR_FormatYCrYCb,
- OMX_COLOR_FormatCbYCrY,
- OMX_COLOR_FormatCrYCbY,
- OMX_COLOR_FormatYUV444Interleaved,
- OMX_COLOR_FormatRawBayer8bit,
- OMX_COLOR_FormatRawBayer10bit,
- OMX_COLOR_FormatRawBayer8bitcompressed,
- OMX_COLOR_FormatL2,
- OMX_COLOR_FormatL4,
- OMX_COLOR_FormatL8,
- OMX_COLOR_FormatL16,
- OMX_COLOR_FormatL24,
- OMX_COLOR_FormatL32,
- OMX_COLOR_FormatYUV420PackedSemiPlanar,
- OMX_COLOR_FormatYUV422PackedSemiPlanar,
- OMX_COLOR_Format18BitBGR666,
- OMX_COLOR_Format24BitARGB6666,
- OMX_COLOR_Format24BitABGR6666,
- OMX_COLOR_FormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_COLOR_FormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_COLOR_FormatMax = 0x7FFFFFFF
-} OMX_COLOR_FORMATTYPE;
-
-
-/**
- * Defines the matrix for conversion from RGB to YUV or vice versa.
- * iColorMatrix should be initialized with the fixed point values
- * used in converting between formats.
- */
-typedef struct OMX_CONFIG_COLORCONVERSIONTYPE {
- OMX_U32 nSize; /**< Size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version info */
- OMX_U32 nPortIndex; /**< Port that this struct applies to */
- OMX_S32 xColorMatrix[3][3]; /**< Stored in signed Q16 format */
- OMX_S32 xColorOffset[4]; /**< Stored in signed Q16 format */
-}OMX_CONFIG_COLORCONVERSIONTYPE;
-
-
-/**
- * Structure defining percent to scale each frame dimension. For example:
- * To make the width 50% larger, use fWidth = 1.5 and to make the width
- * 1/2 the original size, use fWidth = 0.5
- */
-typedef struct OMX_CONFIG_SCALEFACTORTYPE {
- OMX_U32 nSize; /**< Size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version info */
- OMX_U32 nPortIndex; /**< Port that this struct applies to */
- OMX_S32 xWidth; /**< Fixed point value stored as Q16 */
- OMX_S32 xHeight; /**< Fixed point value stored as Q16 */
-}OMX_CONFIG_SCALEFACTORTYPE;
-
-
-/**
- * Enumeration of possible image filter types
- */
-typedef enum OMX_IMAGEFILTERTYPE {
- OMX_ImageFilterNone,
- OMX_ImageFilterNoise,
- OMX_ImageFilterEmboss,
- OMX_ImageFilterNegative,
- OMX_ImageFilterSketch,
- OMX_ImageFilterOilPaint,
- OMX_ImageFilterHatch,
- OMX_ImageFilterGpen,
- OMX_ImageFilterAntialias,
- OMX_ImageFilterDeRing,
- OMX_ImageFilterSolarize,
- OMX_ImageFilterKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_ImageFilterVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_ImageFilterMax = 0x7FFFFFFF
-} OMX_IMAGEFILTERTYPE;
-
-
-/**
- * Image filter configuration
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * eImageFilter : Image filter type enumeration
- */
-typedef struct OMX_CONFIG_IMAGEFILTERTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_IMAGEFILTERTYPE eImageFilter;
-} OMX_CONFIG_IMAGEFILTERTYPE;
-
-
-/**
- * Customized U and V for color enhancement
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * bColorEnhancement : Enable/disable color enhancement
- * nCustomizedU : Practical values: 16-240, range: 0-255, value set for
- * U component
- * nCustomizedV : Practical values: 16-240, range: 0-255, value set for
- * V component
- */
-typedef struct OMX_CONFIG_COLORENHANCEMENTTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_BOOL bColorEnhancement;
- OMX_U8 nCustomizedU;
- OMX_U8 nCustomizedV;
-} OMX_CONFIG_COLORENHANCEMENTTYPE;
-
-
-/**
- * Define color key and color key mask
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nARGBColor : 32bit Alpha, Red, Green, Blue Color
- * nARGBMask : 32bit Mask for Alpha, Red, Green, Blue channels
- */
-typedef struct OMX_CONFIG_COLORKEYTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nARGBColor;
- OMX_U32 nARGBMask;
-} OMX_CONFIG_COLORKEYTYPE;
-
-
-/**
- * List of color blend types for pre/post processing
- *
- * ENUMS:
- * None : No color blending present
- * AlphaConstant : Function is (alpha_constant * src) +
- * (1 - alpha_constant) * dst)
- * AlphaPerPixel : Function is (alpha * src) + (1 - alpha) * dst)
- * Alternate : Function is alternating pixels from src and dst
- * And : Function is (src & dst)
- * Or : Function is (src | dst)
- * Invert : Function is ~src
- */
-typedef enum OMX_COLORBLENDTYPE {
- OMX_ColorBlendNone,
- OMX_ColorBlendAlphaConstant,
- OMX_ColorBlendAlphaPerPixel,
- OMX_ColorBlendAlternate,
- OMX_ColorBlendAnd,
- OMX_ColorBlendOr,
- OMX_ColorBlendInvert,
- OMX_ColorBlendKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_ColorBlendVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_ColorBlendMax = 0x7FFFFFFF
-} OMX_COLORBLENDTYPE;
-
-
-/**
- * Color blend configuration
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nRGBAlphaConstant : Constant global alpha values when global alpha is used
- * eColorBlend : Color blend type enumeration
- */
-typedef struct OMX_CONFIG_COLORBLENDTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nRGBAlphaConstant;
- OMX_COLORBLENDTYPE eColorBlend;
-} OMX_CONFIG_COLORBLENDTYPE;
-
-
-/**
- * Hold frame dimension
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nWidth : Frame width in pixels
- * nHeight : Frame height in pixels
- */
-typedef struct OMX_FRAMESIZETYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nWidth;
- OMX_U32 nHeight;
-} OMX_FRAMESIZETYPE;
-
-
-/**
- * Rotation configuration
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nRotation : +/- integer rotation value
- */
-typedef struct OMX_CONFIG_ROTATIONTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_S32 nRotation;
-} OMX_CONFIG_ROTATIONTYPE;
-
-
-/**
- * Possible mirroring directions for pre/post processing
- *
- * ENUMS:
- * None : No mirroring
- * Vertical : Vertical mirroring, flip on X axis
- * Horizontal : Horizontal mirroring, flip on Y axis
- * Both : Both vertical and horizontal mirroring
- */
-typedef enum OMX_MIRRORTYPE {
- OMX_MirrorNone = 0,
- OMX_MirrorVertical,
- OMX_MirrorHorizontal,
- OMX_MirrorBoth,
- OMX_MirrorKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_MirrorVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_MirrorMax = 0x7FFFFFFF
-} OMX_MIRRORTYPE;
-
-
-/**
- * Mirroring configuration
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * eMirror : Mirror type enumeration
- */
-typedef struct OMX_CONFIG_MIRRORTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_MIRRORTYPE eMirror;
-} OMX_CONFIG_MIRRORTYPE;
-
-
-/**
- * Position information only
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nX : X coordinate for the point
- * nY : Y coordinate for the point
- */
-typedef struct OMX_CONFIG_POINTTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_S32 nX;
- OMX_S32 nY;
-} OMX_CONFIG_POINTTYPE;
-
-
-/**
- * Frame size plus position
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nLeft : X Coordinate of the top left corner of the rectangle
- * nTop : Y Coordinate of the top left corner of the rectangle
- * nWidth : Width of the rectangle
- * nHeight : Height of the rectangle
- */
-typedef struct OMX_CONFIG_RECTTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_S32 nLeft;
- OMX_S32 nTop;
- OMX_U32 nWidth;
- OMX_U32 nHeight;
-} OMX_CONFIG_RECTTYPE;
-
-
-/**
- * Deblocking state; it is required to be set up before starting the codec
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * bDeblocking : Enable/disable deblocking mode
- */
-typedef struct OMX_PARAM_DEBLOCKINGTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_BOOL bDeblocking;
-} OMX_PARAM_DEBLOCKINGTYPE;
-
-
-/**
- * Stabilization state
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * bStab : Enable/disable frame stabilization state
- */
-typedef struct OMX_CONFIG_FRAMESTABTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_BOOL bStab;
-} OMX_CONFIG_FRAMESTABTYPE;
-
-
-/**
- * White Balance control type
- *
- * STRUCT MEMBERS:
- * SunLight : Referenced in JSR-234
- * Flash : Optimal for device's integrated flash
- */
-typedef enum OMX_WHITEBALCONTROLTYPE {
- OMX_WhiteBalControlOff = 0,
- OMX_WhiteBalControlAuto,
- OMX_WhiteBalControlSunLight,
- OMX_WhiteBalControlCloudy,
- OMX_WhiteBalControlShade,
- OMX_WhiteBalControlTungsten,
- OMX_WhiteBalControlFluorescent,
- OMX_WhiteBalControlIncandescent,
- OMX_WhiteBalControlFlash,
- OMX_WhiteBalControlHorizon,
- OMX_WhiteBalControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_WhiteBalControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_WhiteBalControlMax = 0x7FFFFFFF
-} OMX_WHITEBALCONTROLTYPE;
-
-
-/**
- * White Balance control configuration
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * eWhiteBalControl : White balance enumeration
- */
-typedef struct OMX_CONFIG_WHITEBALCONTROLTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_WHITEBALCONTROLTYPE eWhiteBalControl;
-} OMX_CONFIG_WHITEBALCONTROLTYPE;
-
-
-/**
- * Exposure control type
- */
-typedef enum OMX_EXPOSURECONTROLTYPE {
- OMX_ExposureControlOff = 0,
- OMX_ExposureControlAuto,
- OMX_ExposureControlNight,
- OMX_ExposureControlBackLight,
- OMX_ExposureControlSpotLight,
- OMX_ExposureControlSports,
- OMX_ExposureControlSnow,
- OMX_ExposureControlBeach,
- OMX_ExposureControlLargeAperture,
- OMX_ExposureControlSmallApperture,
- OMX_ExposureControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_ExposureControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_ExposureControlMax = 0x7FFFFFFF
-} OMX_EXPOSURECONTROLTYPE;
-
-
-/**
- * White Balance control configuration
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * eExposureControl : Exposure control enumeration
- */
-typedef struct OMX_CONFIG_EXPOSURECONTROLTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_EXPOSURECONTROLTYPE eExposureControl;
-} OMX_CONFIG_EXPOSURECONTROLTYPE;
-
-
-/**
- * Defines sensor supported mode.
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nFrameRate : Single shot mode is indicated by a 0
- * bOneShot : Enable for single shot, disable for streaming
- * sFrameSize : Framesize
- */
-typedef struct OMX_PARAM_SENSORMODETYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nFrameRate;
- OMX_BOOL bOneShot;
- OMX_FRAMESIZETYPE sFrameSize;
-} OMX_PARAM_SENSORMODETYPE;
-
-
-/**
- * Defines contrast level
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nContrast : Values allowed for contrast -100 to 100, zero means no change
- */
-typedef struct OMX_CONFIG_CONTRASTTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_S32 nContrast;
-} OMX_CONFIG_CONTRASTTYPE;
-
-
-/**
- * Defines brightness level
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nBrightness : 0-100%
- */
-typedef struct OMX_CONFIG_BRIGHTNESSTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nBrightness;
-} OMX_CONFIG_BRIGHTNESSTYPE;
-
-
-/**
- * Defines backlight level configuration for a video sink, e.g. LCD panel
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nBacklight : Values allowed for backlight 0-100%
- * nTimeout : Number of milliseconds before backlight automatically turns
- * off. A value of 0x0 disables backight timeout
- */
-typedef struct OMX_CONFIG_BACKLIGHTTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nBacklight;
- OMX_U32 nTimeout;
-} OMX_CONFIG_BACKLIGHTTYPE;
-
-
-/**
- * Defines setting for Gamma
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nGamma : Values allowed for gamma -100 to 100, zero means no change
- */
-typedef struct OMX_CONFIG_GAMMATYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_S32 nGamma;
-} OMX_CONFIG_GAMMATYPE;
-
-
-/**
- * Define for setting saturation
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nSaturation : Values allowed for saturation -100 to 100, zero means
- * no change
- */
-typedef struct OMX_CONFIG_SATURATIONTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_S32 nSaturation;
-} OMX_CONFIG_SATURATIONTYPE;
-
-
-/**
- * Define for setting Lightness
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nLightness : Values allowed for lightness -100 to 100, zero means no
- * change
- */
-typedef struct OMX_CONFIG_LIGHTNESSTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_S32 nLightness;
-} OMX_CONFIG_LIGHTNESSTYPE;
-
-
-/**
- * Plane blend configuration
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Index of input port associated with the plane.
- * nDepth : Depth of the plane in relation to the screen. Higher
- * numbered depths are "behind" lower number depths.
- * This number defaults to the Port Index number.
- * nAlpha : Transparency blending component for the entire plane.
- * See blending modes for more detail.
- */
-typedef struct OMX_CONFIG_PLANEBLENDTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nDepth;
- OMX_U32 nAlpha;
-} OMX_CONFIG_PLANEBLENDTYPE;
-
-
-/**
- * Define interlace type
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * bEnable : Enable control variable for this functionality
- * (see below)
- * nInterleavePortIndex : Index of input or output port associated with
- * the interleaved plane.
- * pPlanarPortIndexes[4] : Index of input or output planar ports.
- */
-typedef struct OMX_PARAM_INTERLEAVETYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_BOOL bEnable;
- OMX_U32 nInterleavePortIndex;
-} OMX_PARAM_INTERLEAVETYPE;
-
-
-/**
- * Defines the picture effect used for an input picture
- */
-typedef enum OMX_TRANSITIONEFFECTTYPE {
- OMX_EffectNone,
- OMX_EffectFadeFromBlack,
- OMX_EffectFadeToBlack,
- OMX_EffectUnspecifiedThroughConstantColor,
- OMX_EffectDissolve,
- OMX_EffectWipe,
- OMX_EffectUnspecifiedMixOfTwoScenes,
- OMX_EffectKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_EffectVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_EffectMax = 0x7FFFFFFF
-} OMX_TRANSITIONEFFECTTYPE;
-
-
-/**
- * Structure used to configure current transition effect
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * eEffect : Effect to enable
- */
-typedef struct OMX_CONFIG_TRANSITIONEFFECTTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_TRANSITIONEFFECTTYPE eEffect;
-} OMX_CONFIG_TRANSITIONEFFECTTYPE;
-
-
-/**
- * Defines possible data unit types for encoded video data. The data unit
- * types are used both for encoded video input for playback as well as
- * encoded video output from recording.
- */
-typedef enum OMX_DATAUNITTYPE {
- OMX_DataUnitCodedPicture,
- OMX_DataUnitVideoSegment,
- OMX_DataUnitSeveralSegments,
- OMX_DataUnitArbitraryStreamSection,
- OMX_DataUnitKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_DataUnitVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_DataUnitMax = 0x7FFFFFFF
-} OMX_DATAUNITTYPE;
-
-
-/**
- * Defines possible encapsulation types for coded video data unit. The
- * encapsulation information is used both for encoded video input for
- * playback as well as encoded video output from recording.
- */
-typedef enum OMX_DATAUNITENCAPSULATIONTYPE {
- OMX_DataEncapsulationElementaryStream,
- OMX_DataEncapsulationGenericPayload,
- OMX_DataEncapsulationRtpPayload,
- OMX_DataEncapsulationKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_DataEncapsulationVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_DataEncapsulationMax = 0x7FFFFFFF
-} OMX_DATAUNITENCAPSULATIONTYPE;
-
-
-/**
- * Structure used to configure the type of being decoded/encoded
- */
-typedef struct OMX_PARAM_DATAUNITTYPE {
- OMX_U32 nSize; /**< Size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< Port that this structure applies to */
- OMX_DATAUNITTYPE eUnitType;
- OMX_DATAUNITENCAPSULATIONTYPE eEncapsulationType;
-} OMX_PARAM_DATAUNITTYPE;
-
-
-/**
- * Defines dither types
- */
-typedef enum OMX_DITHERTYPE {
- OMX_DitherNone,
- OMX_DitherOrdered,
- OMX_DitherErrorDiffusion,
- OMX_DitherOther,
- OMX_DitherKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_DitherVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_DitherMax = 0x7FFFFFFF
-} OMX_DITHERTYPE;
-
-
-/**
- * Structure used to configure current type of dithering
- */
-typedef struct OMX_CONFIG_DITHERTYPE {
- OMX_U32 nSize; /**< Size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< Port that this structure applies to */
- OMX_DITHERTYPE eDither; /**< Type of dithering to use */
-} OMX_CONFIG_DITHERTYPE;
-
-typedef struct OMX_CONFIG_CAPTUREMODETYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex; /**< Port that this structure applies to */
- OMX_BOOL bContinuous; /**< If true then ignore frame rate and emit capture
- * data as fast as possible (otherwise obey port's frame rate). */
- OMX_BOOL bFrameLimited; /**< If true then terminate capture after the port emits the
- * specified number of frames (otherwise the port does not
- * terminate the capture until instructed to do so by the client).
- * Even if set, the client may manually terminate the capture prior
- * to reaching the limit. */
- OMX_U32 nFrameLimit; /**< Limit on number of frames emitted during a capture (only
- * valid if bFrameLimited is set). */
-} OMX_CONFIG_CAPTUREMODETYPE;
-
-typedef enum OMX_METERINGTYPE {
-
- OMX_MeteringModeAverage, /**< Center-weighted average metering. */
- OMX_MeteringModeSpot, /**< Spot (partial) metering. */
- OMX_MeteringModeMatrix, /**< Matrix or evaluative metering. */
-
- OMX_MeteringKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_MeteringVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_EVModeMax = 0x7fffffff
-} OMX_METERINGTYPE;
-
-typedef struct OMX_CONFIG_EXPOSUREVALUETYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_METERINGTYPE eMetering;
- OMX_S32 xEVCompensation; /**< Fixed point value stored as Q16 */
- OMX_U32 nApertureFNumber; /**< e.g. nApertureFNumber = 2 implies "f/2" - Q16 format */
- OMX_BOOL bAutoAperture; /**< Whether aperture number is defined automatically */
- OMX_U32 nShutterSpeedMsec; /**< Shutterspeed in milliseconds */
- OMX_BOOL bAutoShutterSpeed; /**< Whether shutter speed is defined automatically */
- OMX_U32 nSensitivity; /**< e.g. nSensitivity = 100 implies "ISO 100" */
- OMX_BOOL bAutoSensitivity; /**< Whether sensitivity is defined automatically */
-} OMX_CONFIG_EXPOSUREVALUETYPE;
-
-/**
- * Focus region configuration
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * bCenter : Use center region as focus region of interest
- * bLeft : Use left region as focus region of interest
- * bRight : Use right region as focus region of interest
- * bTop : Use top region as focus region of interest
- * bBottom : Use bottom region as focus region of interest
- * bTopLeft : Use top left region as focus region of interest
- * bTopRight : Use top right region as focus region of interest
- * bBottomLeft : Use bottom left region as focus region of interest
- * bBottomRight : Use bottom right region as focus region of interest
- */
-typedef struct OMX_CONFIG_FOCUSREGIONTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_BOOL bCenter;
- OMX_BOOL bLeft;
- OMX_BOOL bRight;
- OMX_BOOL bTop;
- OMX_BOOL bBottom;
- OMX_BOOL bTopLeft;
- OMX_BOOL bTopRight;
- OMX_BOOL bBottomLeft;
- OMX_BOOL bBottomRight;
-} OMX_CONFIG_FOCUSREGIONTYPE;
-
-/**
- * Focus Status type
- */
-typedef enum OMX_FOCUSSTATUSTYPE {
- OMX_FocusStatusOff = 0,
- OMX_FocusStatusRequest,
- OMX_FocusStatusReached,
- OMX_FocusStatusUnableToReach,
- OMX_FocusStatusLost,
- OMX_FocusStatusKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_FocusStatusVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_FocusStatusMax = 0x7FFFFFFF
-} OMX_FOCUSSTATUSTYPE;
-
-/**
- * Focus status configuration
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * eFocusStatus : Specifies the focus status
- * bCenterStatus : Use center region as focus region of interest
- * bLeftStatus : Use left region as focus region of interest
- * bRightStatus : Use right region as focus region of interest
- * bTopStatus : Use top region as focus region of interest
- * bBottomStatus : Use bottom region as focus region of interest
- * bTopLeftStatus : Use top left region as focus region of interest
- * bTopRightStatus : Use top right region as focus region of interest
- * bBottomLeftStatus : Use bottom left region as focus region of interest
- * bBottomRightStatus : Use bottom right region as focus region of interest
- */
-typedef struct OMX_PARAM_FOCUSSTATUSTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_FOCUSSTATUSTYPE eFocusStatus;
- OMX_BOOL bCenterStatus;
- OMX_BOOL bLeftStatus;
- OMX_BOOL bRightStatus;
- OMX_BOOL bTopStatus;
- OMX_BOOL bBottomStatus;
- OMX_BOOL bTopLeftStatus;
- OMX_BOOL bTopRightStatus;
- OMX_BOOL bBottomLeftStatus;
- OMX_BOOL bBottomRightStatus;
-} OMX_PARAM_FOCUSSTATUSTYPE;
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
-/* File EOF */
diff --git a/sec_mm/sec_omx/sec_omx_include/khronos/OMX_Image.h b/sec_mm/sec_omx/sec_omx_include/khronos/OMX_Image.h
deleted file mode 100644
index a6d4666..0000000
--- a/sec_mm/sec_omx/sec_omx_include/khronos/OMX_Image.h
+++ /dev/null
@@ -1,328 +0,0 @@
-/**
- * Copyright (c) 2008 The Khronos Group Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject
- * to the following conditions:
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/**
- * @file OMX_Image.h - OpenMax IL version 1.1.2
- * The structures needed by Image components to exchange parameters and
- * configuration data with the components.
- */
-#ifndef OMX_Image_h
-#define OMX_Image_h
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-/**
- * Each OMX header must include all required header files to allow the
- * header to compile without errors. The includes below are required
- * for this header file to compile successfully
- */
-
-#include <OMX_IVCommon.h>
-
-/** @defgroup imaging OpenMAX IL Imaging Domain
- * @ingroup iv
- * Structures for OpenMAX IL Imaging domain
- * @{
- */
-
-/**
- * Enumeration used to define the possible image compression coding.
- */
-typedef enum OMX_IMAGE_CODINGTYPE {
- OMX_IMAGE_CodingUnused, /**< Value when format is N/A */
- OMX_IMAGE_CodingAutoDetect, /**< Auto detection of image format */
- OMX_IMAGE_CodingJPEG, /**< JPEG/JFIF image format */
- OMX_IMAGE_CodingJPEG2K, /**< JPEG 2000 image format */
- OMX_IMAGE_CodingEXIF, /**< EXIF image format */
- OMX_IMAGE_CodingTIFF, /**< TIFF image format */
- OMX_IMAGE_CodingGIF, /**< Graphics image format */
- OMX_IMAGE_CodingPNG, /**< PNG image format */
- OMX_IMAGE_CodingLZW, /**< LZW image format */
- OMX_IMAGE_CodingBMP, /**< Windows Bitmap format */
- OMX_IMAGE_CodingKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_IMAGE_CodingVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_IMAGE_CodingMax = 0x7FFFFFFF
-} OMX_IMAGE_CODINGTYPE;
-
-
-/**
- * Data structure used to define an image path. The number of image paths
- * for input and output will vary by type of the image component.
- *
- * Input (aka Source) : Zero Inputs, one Output,
- * Splitter : One Input, 2 or more Outputs,
- * Processing Element : One Input, one output,
- * Mixer : 2 or more inputs, one output,
- * Output (aka Sink) : One Input, zero outputs.
- *
- * The PortDefinition structure is used to define all of the parameters
- * necessary for the compliant component to setup an input or an output
- * image path. If additional vendor specific data is required, it should
- * be transmitted to the component using the CustomCommand function.
- * Compliant components will prepopulate this structure with optimal
- * values during the OMX_GetParameter() command.
- *
- * STRUCT MEMBERS:
- * cMIMEType : MIME type of data for the port
- * pNativeRender : Platform specific reference for a display if a
- * sync, otherwise this field is 0
- * nFrameWidth : Width of frame to be used on port if
- * uncompressed format is used. Use 0 for
- * unknown, don't care or variable
- * nFrameHeight : Height of frame to be used on port if
- * uncompressed format is used. Use 0 for
- * unknown, don't care or variable
- * nStride : Number of bytes per span of an image (i.e.
- * indicates the number of bytes to get from
- * span N to span N+1, where negative stride
- * indicates the image is bottom up
- * nSliceHeight : Height used when encoding in slices
- * bFlagErrorConcealment : Turns on error concealment if it is supported by
- * the OMX component
- * eCompressionFormat : Compression format used in this instance of
- * the component. When OMX_IMAGE_CodingUnused is
- * specified, eColorFormat is valid
- * eColorFormat : Decompressed format used by this component
- * pNativeWindow : Platform specific reference for a window object if a
- * display sink , otherwise this field is 0x0.
- */
-typedef struct OMX_IMAGE_PORTDEFINITIONTYPE {
- OMX_STRING cMIMEType;
- OMX_NATIVE_DEVICETYPE pNativeRender;
- OMX_U32 nFrameWidth;
- OMX_U32 nFrameHeight;
- OMX_S32 nStride;
- OMX_U32 nSliceHeight;
- OMX_BOOL bFlagErrorConcealment;
- OMX_IMAGE_CODINGTYPE eCompressionFormat;
- OMX_COLOR_FORMATTYPE eColorFormat;
- OMX_NATIVE_WINDOWTYPE pNativeWindow;
-} OMX_IMAGE_PORTDEFINITIONTYPE;
-
-
-/**
- * Port format parameter. This structure is used to enumerate the various
- * data input/output format supported by the port.
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Indicates which port to set
- * nIndex : Indicates the enumeration index for the format from
- * 0x0 to N-1
- * eCompressionFormat : Compression format used in this instance of the
- * component. When OMX_IMAGE_CodingUnused is specified,
- * eColorFormat is valid
- * eColorFormat : Decompressed format used by this component
- */
-typedef struct OMX_IMAGE_PARAM_PORTFORMATTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nIndex;
- OMX_IMAGE_CODINGTYPE eCompressionFormat;
- OMX_COLOR_FORMATTYPE eColorFormat;
-} OMX_IMAGE_PARAM_PORTFORMATTYPE;
-
-
-/**
- * Flash control type
- *
- * ENUMS
- * Torch : Flash forced constantly on
- */
-typedef enum OMX_IMAGE_FLASHCONTROLTYPE {
- OMX_IMAGE_FlashControlOn = 0,
- OMX_IMAGE_FlashControlOff,
- OMX_IMAGE_FlashControlAuto,
- OMX_IMAGE_FlashControlRedEyeReduction,
- OMX_IMAGE_FlashControlFillin,
- OMX_IMAGE_FlashControlTorch,
- OMX_IMAGE_FlashControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_IMAGE_FlashControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_IMAGE_FlashControlMax = 0x7FFFFFFF
-} OMX_IMAGE_FLASHCONTROLTYPE;
-
-
-/**
- * Flash control configuration
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * eFlashControl : Flash control type
- */
-typedef struct OMX_IMAGE_PARAM_FLASHCONTROLTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_IMAGE_FLASHCONTROLTYPE eFlashControl;
-} OMX_IMAGE_PARAM_FLASHCONTROLTYPE;
-
-
-/**
- * Focus control type
- */
-typedef enum OMX_IMAGE_FOCUSCONTROLTYPE {
- OMX_IMAGE_FocusControlOn = 0,
- OMX_IMAGE_FocusControlOff,
- OMX_IMAGE_FocusControlAuto,
- OMX_IMAGE_FocusControlAutoLock,
- OMX_IMAGE_FocusControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_IMAGE_FocusControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_IMAGE_FocusControlMax = 0x7FFFFFFF
-} OMX_IMAGE_FOCUSCONTROLTYPE;
-
-
-/**
- * Focus control configuration
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * eFocusControl : Focus control
- * nFocusSteps : Focus can take on values from 0 mm to infinity.
- * Interest is only in number of steps over this range.
- * nFocusStepIndex : Current focus step index
- */
-typedef struct OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_IMAGE_FOCUSCONTROLTYPE eFocusControl;
- OMX_U32 nFocusSteps;
- OMX_U32 nFocusStepIndex;
-} OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE;
-
-
-/**
- * Q Factor for JPEG compression, which controls the tradeoff between image
- * quality and size. Q Factor provides a more simple means of controlling
- * JPEG compression quality, without directly programming Quantization
- * tables for chroma and luma
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nQFactor : JPEG Q factor value in the range of 1-100. A factor of 1
- * produces the smallest, worst quality images, and a factor
- * of 100 produces the largest, best quality images. A
- * typical default is 75 for small good quality images
- */
-typedef struct OMX_IMAGE_PARAM_QFACTORTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nQFactor;
-} OMX_IMAGE_PARAM_QFACTORTYPE;
-
-/**
- * Quantization table type
- */
-
-typedef enum OMX_IMAGE_QUANTIZATIONTABLETYPE {
- OMX_IMAGE_QuantizationTableLuma = 0,
- OMX_IMAGE_QuantizationTableChroma,
- OMX_IMAGE_QuantizationTableChromaCb,
- OMX_IMAGE_QuantizationTableChromaCr,
- OMX_IMAGE_QuantizationTableKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_IMAGE_QuantizationTableVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_IMAGE_QuantizationTableMax = 0x7FFFFFFF
-} OMX_IMAGE_QUANTIZATIONTABLETYPE;
-
-/**
- * JPEG quantization tables are used to determine DCT compression for
- * YUV data, as an alternative to specifying Q factor, providing exact
- * control of compression
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * eQuantizationTable : Quantization table type
- * nQuantizationMatrix[64] : JPEG quantization table of coefficients stored
- * in increasing columns then by rows of data (i.e.
- * row 1, ... row 8). Quantization values are in
- * the range 0-255 and stored in linear order
- * (i.e. the component will zig-zag the
- * quantization table data if required internally)
- */
-typedef struct OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_IMAGE_QUANTIZATIONTABLETYPE eQuantizationTable;
- OMX_U8 nQuantizationMatrix[64];
-} OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE;
-
-
-/**
- * Huffman table type, the same Huffman table is applied for chroma and
- * luma component
- */
-typedef enum OMX_IMAGE_HUFFMANTABLETYPE {
- OMX_IMAGE_HuffmanTableAC = 0,
- OMX_IMAGE_HuffmanTableDC,
- OMX_IMAGE_HuffmanTableACLuma,
- OMX_IMAGE_HuffmanTableACChroma,
- OMX_IMAGE_HuffmanTableDCLuma,
- OMX_IMAGE_HuffmanTableDCChroma,
- OMX_IMAGE_HuffmanTableKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_IMAGE_HuffmanTableVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_IMAGE_HuffmanTableMax = 0x7FFFFFFF
-} OMX_IMAGE_HUFFMANTABLETYPE;
-
-/**
- * JPEG Huffman table
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * eHuffmanTable : Huffman table type
- * nNumberOfHuffmanCodeOfLength[16] : 0-16, number of Huffman codes of each
- * possible length
- * nHuffmanTable[256] : 0-255, the size used for AC and DC
- * HuffmanTable are 16 and 162
- */
-typedef struct OMX_IMAGE_PARAM_HUFFMANTTABLETYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_IMAGE_HUFFMANTABLETYPE eHuffmanTable;
- OMX_U8 nNumberOfHuffmanCodeOfLength[16];
- OMX_U8 nHuffmanTable[256];
-}OMX_IMAGE_PARAM_HUFFMANTTABLETYPE;
-
-/** @} */
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
-/* File EOF */
diff --git a/sec_mm/sec_omx/sec_omx_include/khronos/OMX_Index.h b/sec_mm/sec_omx/sec_omx_include/khronos/OMX_Index.h
deleted file mode 100644
index 44d4ea7..0000000
--- a/sec_mm/sec_omx/sec_omx_include/khronos/OMX_Index.h
+++ /dev/null
@@ -1,258 +0,0 @@
-/*
- * Copyright (c) 2008 The Khronos Group Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject
- * to the following conditions:
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-
-/** @file OMX_Index.h - OpenMax IL version 1.1.2
- * The OMX_Index header file contains the definitions for both applications
- * and components .
- */
-
-
-#ifndef OMX_Index_h
-#define OMX_Index_h
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-/* Each OMX header must include all required header files to allow the
- * header to compile without errors. The includes below are required
- * for this header file to compile successfully
- */
-#include <OMX_Types.h>
-
-
-/** The OMX_INDEXTYPE enumeration is used to select a structure when either
- * getting or setting parameters and/or configuration data. Each entry in
- * this enumeration maps to an OMX specified structure. When the
- * OMX_GetParameter, OMX_SetParameter, OMX_GetConfig or OMX_SetConfig methods
- * are used, the second parameter will always be an entry from this enumeration
- * and the third entry will be the structure shown in the comments for the entry.
- * For example, if the application is initializing a cropping function, the
- * OMX_SetConfig command would have OMX_IndexConfigCommonInputCrop as the second parameter
- * and would send a pointer to an initialized OMX_RECTTYPE structure as the
- * third parameter.
- *
- * The enumeration entries named with the OMX_Config prefix are sent using
- * the OMX_SetConfig command and the enumeration entries named with the
- * OMX_PARAM_ prefix are sent using the OMX_SetParameter command.
- */
-typedef enum OMX_INDEXTYPE {
-
- OMX_IndexComponentStartUnused = 0x01000000,
- OMX_IndexParamPriorityMgmt, /**< reference: OMX_PRIORITYMGMTTYPE */
- OMX_IndexParamAudioInit, /**< reference: OMX_PORT_PARAM_TYPE */
- OMX_IndexParamImageInit, /**< reference: OMX_PORT_PARAM_TYPE */
- OMX_IndexParamVideoInit, /**< reference: OMX_PORT_PARAM_TYPE */
- OMX_IndexParamOtherInit, /**< reference: OMX_PORT_PARAM_TYPE */
- OMX_IndexParamNumAvailableStreams, /**< reference: OMX_PARAM_U32TYPE */
- OMX_IndexParamActiveStream, /**< reference: OMX_PARAM_U32TYPE */
- OMX_IndexParamSuspensionPolicy, /**< reference: OMX_PARAM_SUSPENSIONPOLICYTYPE */
- OMX_IndexParamComponentSuspended, /**< reference: OMX_PARAM_SUSPENSIONTYPE */
- OMX_IndexConfigCapturing, /**< reference: OMX_CONFIG_BOOLEANTYPE */
- OMX_IndexConfigCaptureMode, /**< reference: OMX_CONFIG_CAPTUREMODETYPE */
- OMX_IndexAutoPauseAfterCapture, /**< reference: OMX_CONFIG_BOOLEANTYPE */
- OMX_IndexParamContentURI, /**< reference: OMX_PARAM_CONTENTURITYPE */
- OMX_IndexParamCustomContentPipe, /**< reference: OMX_PARAM_CONTENTPIPETYPE */
- OMX_IndexParamDisableResourceConcealment, /**< reference: OMX_RESOURCECONCEALMENTTYPE */
- OMX_IndexConfigMetadataItemCount, /**< reference: OMX_CONFIG_METADATAITEMCOUNTTYPE */
- OMX_IndexConfigContainerNodeCount, /**< reference: OMX_CONFIG_CONTAINERNODECOUNTTYPE */
- OMX_IndexConfigMetadataItem, /**< reference: OMX_CONFIG_METADATAITEMTYPE */
- OMX_IndexConfigCounterNodeID, /**< reference: OMX_CONFIG_CONTAINERNODEIDTYPE */
- OMX_IndexParamMetadataFilterType, /**< reference: OMX_PARAM_METADATAFILTERTYPE */
- OMX_IndexParamMetadataKeyFilter, /**< reference: OMX_PARAM_METADATAFILTERTYPE */
- OMX_IndexConfigPriorityMgmt, /**< reference: OMX_PRIORITYMGMTTYPE */
- OMX_IndexParamStandardComponentRole, /**< reference: OMX_PARAM_COMPONENTROLETYPE */
-
- OMX_IndexPortStartUnused = 0x02000000,
- OMX_IndexParamPortDefinition, /**< reference: OMX_PARAM_PORTDEFINITIONTYPE */
- OMX_IndexParamCompBufferSupplier, /**< reference: OMX_PARAM_BUFFERSUPPLIERTYPE */
- OMX_IndexReservedStartUnused = 0x03000000,
-
- /* Audio parameters and configurations */
- OMX_IndexAudioStartUnused = 0x04000000,
- OMX_IndexParamAudioPortFormat, /**< reference: OMX_AUDIO_PARAM_PORTFORMATTYPE */
- OMX_IndexParamAudioPcm, /**< reference: OMX_AUDIO_PARAM_PCMMODETYPE */
- OMX_IndexParamAudioAac, /**< reference: OMX_AUDIO_PARAM_AACPROFILETYPE */
- OMX_IndexParamAudioRa, /**< reference: OMX_AUDIO_PARAM_RATYPE */
- OMX_IndexParamAudioMp3, /**< reference: OMX_AUDIO_PARAM_MP3TYPE */
- OMX_IndexParamAudioAdpcm, /**< reference: OMX_AUDIO_PARAM_ADPCMTYPE */
- OMX_IndexParamAudioG723, /**< reference: OMX_AUDIO_PARAM_G723TYPE */
- OMX_IndexParamAudioG729, /**< reference: OMX_AUDIO_PARAM_G729TYPE */
- OMX_IndexParamAudioAmr, /**< reference: OMX_AUDIO_PARAM_AMRTYPE */
- OMX_IndexParamAudioWma, /**< reference: OMX_AUDIO_PARAM_WMATYPE */
- OMX_IndexParamAudioSbc, /**< reference: OMX_AUDIO_PARAM_SBCTYPE */
- OMX_IndexParamAudioMidi, /**< reference: OMX_AUDIO_PARAM_MIDITYPE */
- OMX_IndexParamAudioGsm_FR, /**< reference: OMX_AUDIO_PARAM_GSMFRTYPE */
- OMX_IndexParamAudioMidiLoadUserSound, /**< reference: OMX_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE */
- OMX_IndexParamAudioG726, /**< reference: OMX_AUDIO_PARAM_G726TYPE */
- OMX_IndexParamAudioGsm_EFR, /**< reference: OMX_AUDIO_PARAM_GSMEFRTYPE */
- OMX_IndexParamAudioGsm_HR, /**< reference: OMX_AUDIO_PARAM_GSMHRTYPE */
- OMX_IndexParamAudioPdc_FR, /**< reference: OMX_AUDIO_PARAM_PDCFRTYPE */
- OMX_IndexParamAudioPdc_EFR, /**< reference: OMX_AUDIO_PARAM_PDCEFRTYPE */
- OMX_IndexParamAudioPdc_HR, /**< reference: OMX_AUDIO_PARAM_PDCHRTYPE */
- OMX_IndexParamAudioTdma_FR, /**< reference: OMX_AUDIO_PARAM_TDMAFRTYPE */
- OMX_IndexParamAudioTdma_EFR, /**< reference: OMX_AUDIO_PARAM_TDMAEFRTYPE */
- OMX_IndexParamAudioQcelp8, /**< reference: OMX_AUDIO_PARAM_QCELP8TYPE */
- OMX_IndexParamAudioQcelp13, /**< reference: OMX_AUDIO_PARAM_QCELP13TYPE */
- OMX_IndexParamAudioEvrc, /**< reference: OMX_AUDIO_PARAM_EVRCTYPE */
- OMX_IndexParamAudioSmv, /**< reference: OMX_AUDIO_PARAM_SMVTYPE */
- OMX_IndexParamAudioVorbis, /**< reference: OMX_AUDIO_PARAM_VORBISTYPE */
-
- OMX_IndexConfigAudioMidiImmediateEvent, /**< reference: OMX_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE */
- OMX_IndexConfigAudioMidiControl, /**< reference: OMX_AUDIO_CONFIG_MIDICONTROLTYPE */
- OMX_IndexConfigAudioMidiSoundBankProgram, /**< reference: OMX_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE */
- OMX_IndexConfigAudioMidiStatus, /**< reference: OMX_AUDIO_CONFIG_MIDISTATUSTYPE */
- OMX_IndexConfigAudioMidiMetaEvent, /**< reference: OMX_AUDIO_CONFIG_MIDIMETAEVENTTYPE */
- OMX_IndexConfigAudioMidiMetaEventData, /**< reference: OMX_AUDIO_CONFIG_MIDIMETAEVENTDATATYPE */
- OMX_IndexConfigAudioVolume, /**< reference: OMX_AUDIO_CONFIG_VOLUMETYPE */
- OMX_IndexConfigAudioBalance, /**< reference: OMX_AUDIO_CONFIG_BALANCETYPE */
- OMX_IndexConfigAudioChannelMute, /**< reference: OMX_AUDIO_CONFIG_CHANNELMUTETYPE */
- OMX_IndexConfigAudioMute, /**< reference: OMX_AUDIO_CONFIG_MUTETYPE */
- OMX_IndexConfigAudioLoudness, /**< reference: OMX_AUDIO_CONFIG_LOUDNESSTYPE */
- OMX_IndexConfigAudioEchoCancelation, /**< reference: OMX_AUDIO_CONFIG_ECHOCANCELATIONTYPE */
- OMX_IndexConfigAudioNoiseReduction, /**< reference: OMX_AUDIO_CONFIG_NOISEREDUCTIONTYPE */
- OMX_IndexConfigAudioBass, /**< reference: OMX_AUDIO_CONFIG_BASSTYPE */
- OMX_IndexConfigAudioTreble, /**< reference: OMX_AUDIO_CONFIG_TREBLETYPE */
- OMX_IndexConfigAudioStereoWidening, /**< reference: OMX_AUDIO_CONFIG_STEREOWIDENINGTYPE */
- OMX_IndexConfigAudioChorus, /**< reference: OMX_AUDIO_CONFIG_CHORUSTYPE */
- OMX_IndexConfigAudioEqualizer, /**< reference: OMX_AUDIO_CONFIG_EQUALIZERTYPE */
- OMX_IndexConfigAudioReverberation, /**< reference: OMX_AUDIO_CONFIG_REVERBERATIONTYPE */
- OMX_IndexConfigAudioChannelVolume, /**< reference: OMX_AUDIO_CONFIG_CHANNELVOLUMETYPE */
-
- /* Image specific parameters and configurations */
- OMX_IndexImageStartUnused = 0x05000000,
- OMX_IndexParamImagePortFormat, /**< reference: OMX_IMAGE_PARAM_PORTFORMATTYPE */
- OMX_IndexParamFlashControl, /**< reference: OMX_IMAGE_PARAM_FLASHCONTROLTYPE */
- OMX_IndexConfigFocusControl, /**< reference: OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE */
- OMX_IndexParamQFactor, /**< reference: OMX_IMAGE_PARAM_QFACTORTYPE */
- OMX_IndexParamQuantizationTable, /**< reference: OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE */
- OMX_IndexParamHuffmanTable, /**< reference: OMX_IMAGE_PARAM_HUFFMANTTABLETYPE */
- OMX_IndexConfigFlashControl, /**< reference: OMX_IMAGE_PARAM_FLASHCONTROLTYPE */
-
- /* Video specific parameters and configurations */
- OMX_IndexVideoStartUnused = 0x06000000,
- OMX_IndexParamVideoPortFormat, /**< reference: OMX_VIDEO_PARAM_PORTFORMATTYPE */
- OMX_IndexParamVideoQuantization, /**< reference: OMX_VIDEO_PARAM_QUANTIZATIONTYPE */
- OMX_IndexParamVideoFastUpdate, /**< reference: OMX_VIDEO_PARAM_VIDEOFASTUPDATETYPE */
- OMX_IndexParamVideoBitrate, /**< reference: OMX_VIDEO_PARAM_BITRATETYPE */
- OMX_IndexParamVideoMotionVector, /**< reference: OMX_VIDEO_PARAM_MOTIONVECTORTYPE */
- OMX_IndexParamVideoIntraRefresh, /**< reference: OMX_VIDEO_PARAM_INTRAREFRESHTYPE */
- OMX_IndexParamVideoErrorCorrection, /**< reference: OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE */
- OMX_IndexParamVideoVBSMC, /**< reference: OMX_VIDEO_PARAM_VBSMCTYPE */
- OMX_IndexParamVideoMpeg2, /**< reference: OMX_VIDEO_PARAM_MPEG2TYPE */
- OMX_IndexParamVideoMpeg4, /**< reference: OMX_VIDEO_PARAM_MPEG4TYPE */
- OMX_IndexParamVideoWmv, /**< reference: OMX_VIDEO_PARAM_WMVTYPE */
- OMX_IndexParamVideoRv, /**< reference: OMX_VIDEO_PARAM_RVTYPE */
- OMX_IndexParamVideoAvc, /**< reference: OMX_VIDEO_PARAM_AVCTYPE */
- OMX_IndexParamVideoH263, /**< reference: OMX_VIDEO_PARAM_H263TYPE */
- OMX_IndexParamVideoProfileLevelQuerySupported, /**< reference: OMX_VIDEO_PARAM_PROFILELEVELTYPE */
- OMX_IndexParamVideoProfileLevelCurrent, /**< reference: OMX_VIDEO_PARAM_PROFILELEVELTYPE */
- OMX_IndexConfigVideoBitrate, /**< reference: OMX_VIDEO_CONFIG_BITRATETYPE */
- OMX_IndexConfigVideoFramerate, /**< reference: OMX_CONFIG_FRAMERATETYPE */
- OMX_IndexConfigVideoIntraVOPRefresh, /**< reference: OMX_CONFIG_INTRAREFRESHVOPTYPE */
- OMX_IndexConfigVideoIntraMBRefresh, /**< reference: OMX_CONFIG_MACROBLOCKERRORMAPTYPE */
- OMX_IndexConfigVideoMBErrorReporting, /**< reference: OMX_CONFIG_MBERRORREPORTINGTYPE */
- OMX_IndexParamVideoMacroblocksPerFrame, /**< reference: OMX_PARAM_MACROBLOCKSTYPE */
- OMX_IndexConfigVideoMacroBlockErrorMap, /**< reference: OMX_CONFIG_MACROBLOCKERRORMAPTYPE */
- OMX_IndexParamVideoSliceFMO, /**< reference: OMX_VIDEO_PARAM_AVCSLICEFMO */
- OMX_IndexConfigVideoAVCIntraPeriod, /**< reference: OMX_VIDEO_CONFIG_AVCINTRAPERIOD */
- OMX_IndexConfigVideoNalSize, /**< reference: OMX_VIDEO_CONFIG_NALSIZE */
-
- /* Image & Video common Configurations */
- OMX_IndexCommonStartUnused = 0x07000000,
- OMX_IndexParamCommonDeblocking, /**< reference: OMX_PARAM_DEBLOCKINGTYPE */
- OMX_IndexParamCommonSensorMode, /**< reference: OMX_PARAM_SENSORMODETYPE */
- OMX_IndexParamCommonInterleave, /**< reference: OMX_PARAM_INTERLEAVETYPE */
- OMX_IndexConfigCommonColorFormatConversion, /**< reference: OMX_CONFIG_COLORCONVERSIONTYPE */
- OMX_IndexConfigCommonScale, /**< reference: OMX_CONFIG_SCALEFACTORTYPE */
- OMX_IndexConfigCommonImageFilter, /**< reference: OMX_CONFIG_IMAGEFILTERTYPE */
- OMX_IndexConfigCommonColorEnhancement, /**< reference: OMX_CONFIG_COLORENHANCEMENTTYPE */
- OMX_IndexConfigCommonColorKey, /**< reference: OMX_CONFIG_COLORKEYTYPE */
- OMX_IndexConfigCommonColorBlend, /**< reference: OMX_CONFIG_COLORBLENDTYPE */
- OMX_IndexConfigCommonFrameStabilisation,/**< reference: OMX_CONFIG_FRAMESTABTYPE */
- OMX_IndexConfigCommonRotate, /**< reference: OMX_CONFIG_ROTATIONTYPE */
- OMX_IndexConfigCommonMirror, /**< reference: OMX_CONFIG_MIRRORTYPE */
- OMX_IndexConfigCommonOutputPosition, /**< reference: OMX_CONFIG_POINTTYPE */
- OMX_IndexConfigCommonInputCrop, /**< reference: OMX_CONFIG_RECTTYPE */
- OMX_IndexConfigCommonOutputCrop, /**< reference: OMX_CONFIG_RECTTYPE */
- OMX_IndexConfigCommonDigitalZoom, /**< reference: OMX_CONFIG_SCALEFACTORTYPE */
- OMX_IndexConfigCommonOpticalZoom, /**< reference: OMX_CONFIG_SCALEFACTORTYPE*/
- OMX_IndexConfigCommonWhiteBalance, /**< reference: OMX_CONFIG_WHITEBALCONTROLTYPE */
- OMX_IndexConfigCommonExposure, /**< reference: OMX_CONFIG_EXPOSURECONTROLTYPE */
- OMX_IndexConfigCommonContrast, /**< reference: OMX_CONFIG_CONTRASTTYPE */
- OMX_IndexConfigCommonBrightness, /**< reference: OMX_CONFIG_BRIGHTNESSTYPE */
- OMX_IndexConfigCommonBacklight, /**< reference: OMX_CONFIG_BACKLIGHTTYPE */
- OMX_IndexConfigCommonGamma, /**< reference: OMX_CONFIG_GAMMATYPE */
- OMX_IndexConfigCommonSaturation, /**< reference: OMX_CONFIG_SATURATIONTYPE */
- OMX_IndexConfigCommonLightness, /**< reference: OMX_CONFIG_LIGHTNESSTYPE */
- OMX_IndexConfigCommonExclusionRect, /**< reference: OMX_CONFIG_RECTTYPE */
- OMX_IndexConfigCommonDithering, /**< reference: OMX_CONFIG_DITHERTYPE */
- OMX_IndexConfigCommonPlaneBlend, /**< reference: OMX_CONFIG_PLANEBLENDTYPE */
- OMX_IndexConfigCommonExposureValue, /**< reference: OMX_CONFIG_EXPOSUREVALUETYPE */
- OMX_IndexConfigCommonOutputSize, /**< reference: OMX_FRAMESIZETYPE */
- OMX_IndexParamCommonExtraQuantData, /**< reference: OMX_OTHER_EXTRADATATYPE */
- OMX_IndexConfigCommonFocusRegion, /**< reference: OMX_CONFIG_FOCUSREGIONTYPE */
- OMX_IndexConfigCommonFocusStatus, /**< reference: OMX_PARAM_FOCUSSTATUSTYPE */
- OMX_IndexConfigCommonTransitionEffect, /**< reference: OMX_CONFIG_TRANSITIONEFFECTTYPE */
-
- /* Reserved Configuration range */
- OMX_IndexOtherStartUnused = 0x08000000,
- OMX_IndexParamOtherPortFormat, /**< reference: OMX_OTHER_PARAM_PORTFORMATTYPE */
- OMX_IndexConfigOtherPower, /**< reference: OMX_OTHER_CONFIG_POWERTYPE */
- OMX_IndexConfigOtherStats, /**< reference: OMX_OTHER_CONFIG_STATSTYPE */
-
-
- /* Reserved Time range */
- OMX_IndexTimeStartUnused = 0x09000000,
- OMX_IndexConfigTimeScale, /**< reference: OMX_TIME_CONFIG_SCALETYPE */
- OMX_IndexConfigTimeClockState, /**< reference: OMX_TIME_CONFIG_CLOCKSTATETYPE */
- OMX_IndexConfigTimeActiveRefClock, /**< reference: OMX_TIME_CONFIG_ACTIVEREFCLOCKTYPE */
- OMX_IndexConfigTimeCurrentMediaTime, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (read only) */
- OMX_IndexConfigTimeCurrentWallTime, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (read only) */
- OMX_IndexConfigTimeCurrentAudioReference, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (write only) */
- OMX_IndexConfigTimeCurrentVideoReference, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (write only) */
- OMX_IndexConfigTimeMediaTimeRequest, /**< reference: OMX_TIME_CONFIG_MEDIATIMEREQUESTTYPE (write only) */
- OMX_IndexConfigTimeClientStartTime, /**<reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (write only) */
- OMX_IndexConfigTimePosition, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE */
- OMX_IndexConfigTimeSeekMode, /**< reference: OMX_TIME_CONFIG_SEEKMODETYPE */
-
-
- OMX_IndexKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- /* Vendor specific area */
- OMX_IndexVendorStartUnused = 0x7F000000,
- /* Vendor specific structures should be in the range of 0x7F000000
- to 0x7FFFFFFE. This range is not broken out by vendor, so
- private indexes are not guaranteed unique and therefore should
- only be sent to the appropriate component. */
-
- OMX_IndexMax = 0x7FFFFFFF
-
-} OMX_INDEXTYPE;
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
-/* File EOF */
diff --git a/sec_mm/sec_omx/sec_omx_include/khronos/OMX_Other.h b/sec_mm/sec_omx/sec_omx_include/khronos/OMX_Other.h
deleted file mode 100644
index caf7f38..0000000
--- a/sec_mm/sec_omx/sec_omx_include/khronos/OMX_Other.h
+++ /dev/null
@@ -1,337 +0,0 @@
-/*
- * Copyright (c) 2008 The Khronos Group Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject
- * to the following conditions:
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-
-/** @file OMX_Other.h - OpenMax IL version 1.1.2
- * The structures needed by Other components to exchange
- * parameters and configuration data with the components.
- */
-
-#ifndef OMX_Other_h
-#define OMX_Other_h
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-/* Each OMX header must include all required header files to allow the
- * header to compile without errors. The includes below are required
- * for this header file to compile successfully
- */
-
-#include <OMX_Core.h>
-
-
-/**
- * Enumeration of possible data types which match to multiple domains or no
- * domain at all. For types which are vendor specific, a value above
- * OMX_OTHER_VENDORTSTART should be used.
- */
-typedef enum OMX_OTHER_FORMATTYPE {
- OMX_OTHER_FormatTime = 0, /**< Transmission of various timestamps, elapsed time,
- time deltas, etc */
- OMX_OTHER_FormatPower, /**< Perhaps used for enabling/disabling power
- management, setting clocks? */
- OMX_OTHER_FormatStats, /**< Could be things such as frame rate, frames
- dropped, etc */
- OMX_OTHER_FormatBinary, /**< Arbitrary binary data */
- OMX_OTHER_FormatVendorReserved = 1000, /**< Starting value for vendor specific
- formats */
-
- OMX_OTHER_FormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_OTHER_FormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_OTHER_FormatMax = 0x7FFFFFFF
-} OMX_OTHER_FORMATTYPE;
-
-/**
- * Enumeration of seek modes.
- */
-typedef enum OMX_TIME_SEEKMODETYPE {
- OMX_TIME_SeekModeFast = 0, /**< Prefer seeking to an approximation
- * of the requested seek position over
- * the actual seek position if it
- * results in a faster seek. */
- OMX_TIME_SeekModeAccurate, /**< Prefer seeking to the actual seek
- * position over an approximation
- * of the requested seek position even
- * if it results in a slower seek. */
- OMX_TIME_SeekModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_TIME_SeekModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_TIME_SeekModeMax = 0x7FFFFFFF
-} OMX_TIME_SEEKMODETYPE;
-
-/* Structure representing the seekmode of the component */
-typedef struct OMX_TIME_CONFIG_SEEKMODETYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_TIME_SEEKMODETYPE eType; /**< The seek mode */
-} OMX_TIME_CONFIG_SEEKMODETYPE;
-
-/** Structure representing a time stamp used with the following configs
- * on the Clock Component (CC):
- *
- * OMX_IndexConfigTimeCurrentWallTime: query of the CC’s current wall
- * time
- * OMX_IndexConfigTimeCurrentMediaTime: query of the CC’s current media
- * time
- * OMX_IndexConfigTimeCurrentAudioReference and
- * OMX_IndexConfigTimeCurrentVideoReference: audio/video reference
- * clock sending SC its reference time
- * OMX_IndexConfigTimeClientStartTime: a Clock Component client sends
- * this structure to the Clock Component via a SetConfig on its
- * client port when it receives a buffer with
- * OMX_BUFFERFLAG_STARTTIME set. It must use the timestamp
- * specified by that buffer for nStartTimestamp.
- *
- * It’s also used with the following config on components in general:
- *
- * OMX_IndexConfigTimePosition: IL client querying component position
- * (GetConfig) or commanding a component to seek to the given location
- * (SetConfig)
- */
-typedef struct OMX_TIME_CONFIG_TIMESTAMPTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version
- * information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_TICKS nTimestamp; /**< timestamp .*/
-} OMX_TIME_CONFIG_TIMESTAMPTYPE;
-
-/** Enumeration of possible reference clocks to the media time. */
-typedef enum OMX_TIME_UPDATETYPE {
- OMX_TIME_UpdateRequestFulfillment, /**< Update is the fulfillment of a media time request. */
- OMX_TIME_UpdateScaleChanged, /**< Update was generated because the scale chagned. */
- OMX_TIME_UpdateClockStateChanged, /**< Update was generated because the clock state changed. */
- OMX_TIME_UpdateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_TIME_UpdateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_TIME_UpdateMax = 0x7FFFFFFF
-} OMX_TIME_UPDATETYPE;
-
-/** Enumeration of possible reference clocks to the media time. */
-typedef enum OMX_TIME_REFCLOCKTYPE {
- OMX_TIME_RefClockNone, /**< Use no references. */
- OMX_TIME_RefClockAudio, /**< Use references sent through OMX_IndexConfigTimeCurrentAudioReference */
- OMX_TIME_RefClockVideo, /**< Use references sent through OMX_IndexConfigTimeCurrentVideoReference */
- OMX_TIME_RefClockKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_TIME_RefClockVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_TIME_RefClockMax = 0x7FFFFFFF
-} OMX_TIME_REFCLOCKTYPE;
-
-/** Enumeration of clock states. */
-typedef enum OMX_TIME_CLOCKSTATE {
- OMX_TIME_ClockStateRunning, /**< Clock running. */
- OMX_TIME_ClockStateWaitingForStartTime, /**< Clock waiting until the
- * prescribed clients emit their
- * start time. */
- OMX_TIME_ClockStateStopped, /**< Clock stopped. */
- OMX_TIME_ClockStateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_TIME_ClockStateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_TIME_ClockStateMax = 0x7FFFFFFF
-} OMX_TIME_CLOCKSTATE;
-
-/** Structure representing a media time request to the clock component.
- *
- * A client component sends this structure to the Clock Component via a SetConfig
- * on its client port to specify a media timestamp the Clock Component
- * should emit. The Clock Component should fulfill the request by sending a
- * OMX_TIME_MEDIATIMETYPE when its media clock matches the requested
- * timestamp.
- *
- * The client may require a media time request be fulfilled slightly
- * earlier than the media time specified. In this case the client specifies
- * an offset which is equal to the difference between wall time corresponding
- * to the requested media time and the wall time when it will be
- * fulfilled.
- *
- * A client component may uses these requests and the OMX_TIME_MEDIATIMETYPE to
- * time events according to timestamps. If a client must perform an operation O at
- * a time T (e.g. deliver a video frame at its corresponding timestamp), it makes a
- * media time request at T (perhaps specifying an offset to ensure the request fulfillment
- * is a little early). When the clock component passes the resulting OMX_TIME_MEDIATIMETYPE
- * structure back to the client component, the client may perform operation O (perhaps having
- * to wait a slight amount more time itself as specified by the return values).
- */
-
-typedef struct OMX_TIME_CONFIG_MEDIATIMEREQUESTTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< port that this structure applies to */
- OMX_PTR pClientPrivate; /**< Client private data to disabiguate this media time
- * from others (e.g. the number of the frame to deliver).
- * Duplicated in the media time structure that fulfills
- * this request. A value of zero is reserved for time scale
- * updates. */
- OMX_TICKS nMediaTimestamp; /**< Media timestamp requested.*/
- OMX_TICKS nOffset; /**< Amount of wall clock time by which this
- * request should be fulfilled early */
-} OMX_TIME_CONFIG_MEDIATIMEREQUESTTYPE;
-
-/**< Structure sent from the clock component client either when fulfilling
- * a media time request or when the time scale has changed.
- *
- * In the former case the Clock Component fills this structure and times its emission
- * to a client component (via the client port) according to the corresponding media
- * time request sent by the client. The Clock Component should time the emission to occur
- * when the requested timestamp matches the Clock Component's media time but also the
- * prescribed offset early.
- *
- * Upon scale changes the clock component clears the nClientPrivate data, sends the current
- * media time and sets the nScale to the new scale via the client port. It emits a
- * OMX_TIME_MEDIATIMETYPE to all clients independent of any requests. This allows clients to
- * alter processing to accomodate scaling. For instance a video component might skip inter-frames
- * in the case of extreme fastforward. Likewise an audio component might add or remove samples
- * from an audio frame to scale audio data.
- *
- * It is expected that some clock components may not be able to fulfill requests
- * at exactly the prescribed time. This is acceptable so long as the request is
- * fulfilled at least as early as described and not later. This structure provides
- * fields the client may use to wait for the remaining time.
- *
- * The client may use either the nOffset or nWallTimeAtMedia fields to determine the
- * wall time until the nMediaTimestamp actually occurs. In the latter case the
- * client can get a more accurate value for offset by getting the current wall
- * from the cloc component and subtracting it from nWallTimeAtMedia.
- */
-
-typedef struct OMX_TIME_MEDIATIMETYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nClientPrivate; /**< Client private data to disabiguate this media time
- * from others. Copied from the media time request.
- * A value of zero is reserved for time scale updates. */
- OMX_TIME_UPDATETYPE eUpdateType; /**< Reason for the update */
- OMX_TICKS nMediaTimestamp; /**< Media time requested. If no media time was
- * requested then this is the current media time. */
- OMX_TICKS nOffset; /**< Amount of wall clock time by which this
- * request was actually fulfilled early */
-
- OMX_TICKS nWallTimeAtMediaTime; /**< Wall time corresponding to nMediaTimeStamp.
- * A client may compare this value to current
- * media time obtained from the Clock Component to determine
- * the wall time until the media timestamp is really
- * current. */
- OMX_S32 xScale; /**< Current media time scale in Q16 format. */
- OMX_TIME_CLOCKSTATE eState; /* Seeking Change. Added 7/12.*/
- /**< State of the media time. */
-} OMX_TIME_MEDIATIMETYPE;
-
-/** Structure representing the current media time scale factor. Applicable only to clock
- * component, other components see scale changes via OMX_TIME_MEDIATIMETYPE buffers sent via
- * the clock component client ports. Upon recieving this config the clock component changes
- * the rate by which the media time increases or decreases effectively implementing trick modes.
- */
-typedef struct OMX_TIME_CONFIG_SCALETYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_S32 xScale; /**< This is a value in Q16 format which is used for
- * scaling the media time */
-} OMX_TIME_CONFIG_SCALETYPE;
-
-/** Bits used to identify a clock port. Used in OMX_TIME_CONFIG_CLOCKSTATETYPE’s nWaitMask field */
-#define OMX_CLOCKPORT0 0x00000001
-#define OMX_CLOCKPORT1 0x00000002
-#define OMX_CLOCKPORT2 0x00000004
-#define OMX_CLOCKPORT3 0x00000008
-#define OMX_CLOCKPORT4 0x00000010
-#define OMX_CLOCKPORT5 0x00000020
-#define OMX_CLOCKPORT6 0x00000040
-#define OMX_CLOCKPORT7 0x00000080
-
-/** Structure representing the current mode of the media clock.
- * IL Client uses this config to change or query the mode of the
- * media clock of the clock component. Applicable only to clock
- * component.
- *
- * On a SetConfig if eState is OMX_TIME_ClockStateRunning media time
- * starts immediately at the prescribed start time. If
- * OMX_TIME_ClockStateWaitingForStartTime the Clock Component ignores
- * the given nStartTime and waits for all clients specified in the
- * nWaitMask to send starttimes (via
- * OMX_IndexConfigTimeClientStartTime). The Clock Component then starts
- * the media clock using the earliest start time supplied. */
-typedef struct OMX_TIME_CONFIG_CLOCKSTATETYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version
- * information */
- OMX_TIME_CLOCKSTATE eState; /**< State of the media time. */
- OMX_TICKS nStartTime; /**< Start time of the media time. */
- OMX_TICKS nOffset; /**< Time to offset the media time by
- * (e.g. preroll). Media time will be
- * reported to be nOffset ticks earlier.
- */
- OMX_U32 nWaitMask; /**< Mask of OMX_CLOCKPORT values. */
-} OMX_TIME_CONFIG_CLOCKSTATETYPE;
-
-/** Structure representing the reference clock currently being used to
- * compute media time. IL client uses this config to change or query the
- * clock component's active reference clock */
-typedef struct OMX_TIME_CONFIG_ACTIVEREFCLOCKTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_TIME_REFCLOCKTYPE eClock; /**< Reference clock used to compute media time */
-} OMX_TIME_CONFIG_ACTIVEREFCLOCKTYPE;
-
-/** Descriptor for setting specifics of power type.
- * Note: this structure is listed for backwards compatibility. */
-typedef struct OMX_OTHER_CONFIG_POWERTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_BOOL bEnablePM; /**< Flag to enable Power Management */
-} OMX_OTHER_CONFIG_POWERTYPE;
-
-
-/** Descriptor for setting specifics of stats type.
- * Note: this structure is listed for backwards compatibility. */
-typedef struct OMX_OTHER_CONFIG_STATSTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- /* what goes here */
-} OMX_OTHER_CONFIG_STATSTYPE;
-
-
-/**
- * The PortDefinition structure is used to define all of the parameters
- * necessary for the compliant component to setup an input or an output other
- * path.
- */
-typedef struct OMX_OTHER_PORTDEFINITIONTYPE {
- OMX_OTHER_FORMATTYPE eFormat; /**< Type of data expected for this channel */
-} OMX_OTHER_PORTDEFINITIONTYPE;
-
-/** Port format parameter. This structure is used to enumerate
- * the various data input/output format supported by the port.
- */
-typedef struct OMX_OTHER_PARAM_PORTFORMATTYPE {
- OMX_U32 nSize; /**< size of the structure in bytes */
- OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
- OMX_U32 nPortIndex; /**< Indicates which port to set */
- OMX_U32 nIndex; /**< Indicates the enumeration index for the format from 0x0 to N-1 */
- OMX_OTHER_FORMATTYPE eFormat; /**< Type of data expected for this channel */
-} OMX_OTHER_PARAM_PORTFORMATTYPE;
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
-/* File EOF */
diff --git a/sec_mm/sec_omx/sec_omx_include/khronos/OMX_Types.h b/sec_mm/sec_omx/sec_omx_include/khronos/OMX_Types.h
deleted file mode 100644
index 31be916..0000000
--- a/sec_mm/sec_omx/sec_omx_include/khronos/OMX_Types.h
+++ /dev/null
@@ -1,347 +0,0 @@
-/*
- * Copyright (c) 2008 The Khronos Group Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject
- * to the following conditions:
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-
-/** OMX_Types.h - OpenMax IL version 1.1.2
- * The OMX_Types header file contains the primitive type definitions used by
- * the core, the application and the component. This file may need to be
- * modified to be used on systems that do not have "char" set to 8 bits,
- * "short" set to 16 bits and "long" set to 32 bits.
- */
-
-#ifndef OMX_Types_h
-#define OMX_Types_h
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/** The OMX_API and OMX_APIENTRY are platform specific definitions used
- * to declare OMX function prototypes. They are modified to meet the
- * requirements for a particular platform */
-#ifdef __SYMBIAN32__
-# ifdef __OMX_EXPORTS
-# define OMX_API __declspec(dllexport)
-# else
-# ifdef _WIN32
-# define OMX_API __declspec(dllexport)
-# else
-# define OMX_API __declspec(dllimport)
-# endif
-# endif
-#else
-# ifdef _WIN32
-# ifdef __OMX_EXPORTS
-# define OMX_API __declspec(dllexport)
-# else
-# define OMX_API __declspec(dllimport)
-# endif
-# else
-# ifdef __OMX_EXPORTS
-# define OMX_API
-# else
-# define OMX_API extern
-# endif
-# endif
-#endif
-
-#ifndef OMX_APIENTRY
-#define OMX_APIENTRY
-#endif
-
-/** OMX_IN is used to identify inputs to an OMX function. This designation
- will also be used in the case of a pointer that points to a parameter
- that is used as an output. */
-#ifndef OMX_IN
-#define OMX_IN
-#endif
-
-/** OMX_OUT is used to identify outputs from an OMX function. This
- designation will also be used in the case of a pointer that points
- to a parameter that is used as an input. */
-#ifndef OMX_OUT
-#define OMX_OUT
-#endif
-
-
-/** OMX_INOUT is used to identify parameters that may be either inputs or
- outputs from an OMX function at the same time. This designation will
- also be used in the case of a pointer that points to a parameter that
- is used both as an input and an output. */
-#ifndef OMX_INOUT
-#define OMX_INOUT
-#endif
-
-/** OMX_ALL is used to as a wildcard to select all entities of the same type
- * when specifying the index, or referring to a object by an index. (i.e.
- * use OMX_ALL to indicate all N channels). When used as a port index
- * for a config or parameter this OMX_ALL denotes that the config or
- * parameter applies to the entire component not just one port. */
-#define OMX_ALL 0xFFFFFFFF
-
-/** In the following we define groups that help building doxygen documentation */
-
-/** @defgroup core OpenMAX IL core
- * Functions and structure related to the OMX IL core
- */
-
- /** @defgroup comp OpenMAX IL component
- * Functions and structure related to the OMX IL component
- */
-
-/** @defgroup rpm Resource and Policy Management
- * Structures for resource and policy management of components
- */
-
-/** @defgroup buf Buffer Management
- * Buffer handling functions and structures
- */
-
-/** @defgroup tun Tunneling
- * @ingroup core comp
- * Structures and functions to manage tunnels among component ports
- */
-
-/** @defgroup cp Content Pipes
- * @ingroup core
- */
-
- /** @defgroup metadata Metadata handling
- *
- */
-
-/** OMX_U8 is an 8 bit unsigned quantity that is byte aligned */
-typedef unsigned char OMX_U8;
-
-/** OMX_S8 is an 8 bit signed quantity that is byte aligned */
-typedef signed char OMX_S8;
-
-/** OMX_U16 is a 16 bit unsigned quantity that is 16 bit word aligned */
-typedef unsigned short OMX_U16;
-
-/** OMX_S16 is a 16 bit signed quantity that is 16 bit word aligned */
-typedef signed short OMX_S16;
-
-/** OMX_U32 is a 32 bit unsigned quantity that is 32 bit word aligned */
-typedef unsigned long OMX_U32;
-
-/** OMX_S32 is a 32 bit signed quantity that is 32 bit word aligned */
-typedef signed long OMX_S32;
-
-
-/* Users with compilers that cannot accept the "long long" designation should
- define the OMX_SKIP64BIT macro. It should be noted that this may cause
- some components to fail to compile if the component was written to require
- 64 bit integral types. However, these components would NOT compile anyway
- since the compiler does not support the way the component was written.
-*/
-#ifndef OMX_SKIP64BIT
-#ifdef __SYMBIAN32__
-/** OMX_U64 is a 64 bit unsigned quantity that is 64 bit word aligned */
-typedef unsigned long long OMX_U64;
-
-/** OMX_S64 is a 64 bit signed quantity that is 64 bit word aligned */
-typedef signed long long OMX_S64;
-
-#elif defined(WIN32)
-
-/** OMX_U64 is a 64 bit unsigned quantity that is 64 bit word aligned */
-typedef unsigned __int64 OMX_U64;
-
-/** OMX_S64 is a 64 bit signed quantity that is 64 bit word aligned */
-typedef signed __int64 OMX_S64;
-
-#else /* WIN32 */
-
-/** OMX_U64 is a 64 bit unsigned quantity that is 64 bit word aligned */
-typedef unsigned long long OMX_U64;
-
-/** OMX_S64 is a 64 bit signed quantity that is 64 bit word aligned */
-typedef signed long long OMX_S64;
-
-#endif /* WIN32 */
-#endif
-
-
-/** The OMX_BOOL type is intended to be used to represent a true or a false
- value when passing parameters to and from the OMX core and components. The
- OMX_BOOL is a 32 bit quantity and is aligned on a 32 bit word boundary.
- */
-typedef enum OMX_BOOL {
- OMX_FALSE = 0,
- OMX_TRUE = !OMX_FALSE,
- OMX_BOOL_MAX = 0x7FFFFFFF
-} OMX_BOOL;
-
-/** The OMX_PTR type is intended to be used to pass pointers between the OMX
- applications and the OMX Core and components. This is a 32 bit pointer and
- is aligned on a 32 bit boundary.
- */
-typedef void* OMX_PTR;
-
-/** The OMX_STRING type is intended to be used to pass "C" type strings between
- the application and the core and component. The OMX_STRING type is a 32
- bit pointer to a zero terminated string. The pointer is word aligned and
- the string is byte aligned.
- */
-typedef char* OMX_STRING;
-
-/** The OMX_BYTE type is intended to be used to pass arrays of bytes such as
- buffers between the application and the component and core. The OMX_BYTE
- type is a 32 bit pointer to a zero terminated string. The pointer is word
- aligned and the string is byte aligned.
- */
-typedef unsigned char* OMX_BYTE;
-
-/** OMX_UUIDTYPE is a very long unique identifier to uniquely identify
- at runtime. This identifier should be generated by a component in a way
- that guarantees that every instance of the identifier running on the system
- is unique. */
-typedef unsigned char OMX_UUIDTYPE[128];
-
-/** The OMX_DIRTYPE enumeration is used to indicate if a port is an input or
- an output port. This enumeration is common across all component types.
- */
-typedef enum OMX_DIRTYPE
-{
- OMX_DirInput, /**< Port is an input port */
- OMX_DirOutput, /**< Port is an output port */
- OMX_DirMax = 0x7FFFFFFF
-} OMX_DIRTYPE;
-
-/** The OMX_ENDIANTYPE enumeration is used to indicate the bit ordering
- for numerical data (i.e. big endian, or little endian).
- */
-typedef enum OMX_ENDIANTYPE
-{
- OMX_EndianBig, /**< big endian */
- OMX_EndianLittle, /**< little endian */
- OMX_EndianMax = 0x7FFFFFFF
-} OMX_ENDIANTYPE;
-
-
-/** The OMX_NUMERICALDATATYPE enumeration is used to indicate if data
- is signed or unsigned
- */
-typedef enum OMX_NUMERICALDATATYPE
-{
- OMX_NumericalDataSigned, /**< signed data */
- OMX_NumericalDataUnsigned, /**< unsigned data */
- OMX_NumercialDataMax = 0x7FFFFFFF
-} OMX_NUMERICALDATATYPE;
-
-
-/** Unsigned bounded value type */
-typedef struct OMX_BU32 {
- OMX_U32 nValue; /**< actual value */
- OMX_U32 nMin; /**< minimum for value (i.e. nValue >= nMin) */
- OMX_U32 nMax; /**< maximum for value (i.e. nValue <= nMax) */
-} OMX_BU32;
-
-
-/** Signed bounded value type */
-typedef struct OMX_BS32 {
- OMX_S32 nValue; /**< actual value */
- OMX_S32 nMin; /**< minimum for value (i.e. nValue >= nMin) */
- OMX_S32 nMax; /**< maximum for value (i.e. nValue <= nMax) */
-} OMX_BS32;
-
-
-/** Structure representing some time or duration in microseconds. This structure
- * must be interpreted as a signed 64 bit value. The quantity is signed to accommodate
- * negative deltas and preroll scenarios. The quantity is represented in microseconds
- * to accomodate high resolution timestamps (e.g. DVD presentation timestamps based
- * on a 90kHz clock) and to allow more accurate and synchronized delivery (e.g.
- * individual audio samples delivered at 192 kHz). The quantity is 64 bit to
- * accommodate a large dynamic range (signed 32 bit values would allow only for plus
- * or minus 35 minutes).
- *
- * Implementations with limited precision may convert the signed 64 bit value to
- * a signed 32 bit value internally but risk loss of precision.
- */
-#ifndef OMX_SKIP64BIT
-typedef OMX_S64 OMX_TICKS;
-#else
-typedef struct OMX_TICKS
-{
- OMX_U32 nLowPart; /** low bits of the signed 64 bit tick value */
- OMX_U32 nHighPart; /** high bits of the signed 64 bit tick value */
-} OMX_TICKS;
-#endif
-#define OMX_TICKS_PER_SECOND 1000000
-
-/** Define the public interface for the OMX Handle. The core will not use
- this value internally, but the application should only use this value.
- */
-typedef void* OMX_HANDLETYPE;
-
-typedef struct OMX_MARKTYPE
-{
- OMX_HANDLETYPE hMarkTargetComponent; /**< The component that will
- generate a mark event upon
- processing the mark. */
- OMX_PTR pMarkData; /**< Application specific data associated with
- the mark sent on a mark event to disambiguate
- this mark from others. */
-} OMX_MARKTYPE;
-
-
-/** OMX_NATIVE_DEVICETYPE is used to map a OMX video port to the
- * platform & operating specific object used to reference the display
- * or can be used by a audio port for native audio rendering */
-typedef void* OMX_NATIVE_DEVICETYPE;
-
-/** OMX_NATIVE_WINDOWTYPE is used to map a OMX video port to the
- * platform & operating specific object used to reference the window */
-typedef void* OMX_NATIVE_WINDOWTYPE;
-
-/** The OMX_VERSIONTYPE union is used to specify the version for
- a structure or component. For a component, the version is entirely
- specified by the component vendor. Components doing the same function
- from different vendors may or may not have the same version. For
- structures, the version shall be set by the entity that allocates the
- structure. For structures specified in the OMX 1.1 specification, the
- value of the version shall be set to 1.1.0.0 in all cases. Access to the
- OMX_VERSIONTYPE can be by a single 32 bit access (e.g. by nVersion) or
- by accessing one of the structure elements to, for example, check only
- the Major revision.
- */
-typedef union OMX_VERSIONTYPE
-{
- struct
- {
- OMX_U8 nVersionMajor; /**< Major version accessor element */
- OMX_U8 nVersionMinor; /**< Minor version accessor element */
- OMX_U8 nRevision; /**< Revision version accessor element */
- OMX_U8 nStep; /**< Step version accessor element */
- } s;
- OMX_U32 nVersion; /**< 32 bit value to make accessing the
- version easily done in a single word
- size copy/compare operation */
-} OMX_VERSIONTYPE;
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
-/* File EOF */
diff --git a/sec_mm/sec_omx/sec_omx_include/khronos/OMX_Video.h b/sec_mm/sec_omx/sec_omx_include/khronos/OMX_Video.h
deleted file mode 100644
index 163e450..0000000
--- a/sec_mm/sec_omx/sec_omx_include/khronos/OMX_Video.h
+++ /dev/null
@@ -1,1060 +0,0 @@
-/**
- * Copyright (c) 2008 The Khronos Group Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject
- * to the following conditions:
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-
-/**
- * @file OMX_Video.h - OpenMax IL version 1.1.2
- * The structures is needed by Video components to exchange parameters
- * and configuration data with OMX components.
- */
-#ifndef OMX_Video_h
-#define OMX_Video_h
-
-/** @defgroup video OpenMAX IL Video Domain
- * @ingroup iv
- * Structures for OpenMAX IL Video domain
- * @{
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-/**
- * Each OMX header must include all required header files to allow the
- * header to compile without errors. The includes below are required
- * for this header file to compile successfully
- */
-
-#include <OMX_IVCommon.h>
-
-
-/**
- * Enumeration used to define the possible video compression codings.
- * NOTE: This essentially refers to file extensions. If the coding is
- * being used to specify the ENCODE type, then additional work
- * must be done to configure the exact flavor of the compression
- * to be used. For decode cases where the user application can
- * not differentiate between MPEG-4 and H.264 bit streams, it is
- * up to the codec to handle this.
- */
-typedef enum OMX_VIDEO_CODINGTYPE {
- OMX_VIDEO_CodingUnused, /**< Value when coding is N/A */
- OMX_VIDEO_CodingAutoDetect, /**< Autodetection of coding type */
- OMX_VIDEO_CodingMPEG2, /**< AKA: H.262 */
- OMX_VIDEO_CodingH263, /**< H.263 */
- OMX_VIDEO_CodingMPEG4, /**< MPEG-4 */
- OMX_VIDEO_CodingWMV, /**< all versions of Windows Media Video */
- OMX_VIDEO_CodingRV, /**< all versions of Real Video */
- OMX_VIDEO_CodingAVC, /**< H.264/AVC */
- OMX_VIDEO_CodingMJPEG, /**< Motion JPEG */
- OMX_VIDEO_CodingKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_VIDEO_CodingVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_VIDEO_CodingMax = 0x7FFFFFFF
-} OMX_VIDEO_CODINGTYPE;
-
-
-/**
- * Data structure used to define a video path. The number of Video paths for
- * input and output will vary by type of the Video component.
- *
- * Input (aka Source) : zero Inputs, one Output,
- * Splitter : one Input, 2 or more Outputs,
- * Processing Element : one Input, one output,
- * Mixer : 2 or more inputs, one output,
- * Output (aka Sink) : one Input, zero outputs.
- *
- * The PortDefinition structure is used to define all of the parameters
- * necessary for the compliant component to setup an input or an output video
- * path. If additional vendor specific data is required, it should be
- * transmitted to the component using the CustomCommand function. Compliant
- * components will prepopulate this structure with optimal values during the
- * GetDefaultInitParams command.
- *
- * STRUCT MEMBERS:
- * cMIMEType : MIME type of data for the port
- * pNativeRender : Platform specific reference for a display if a
- * sync, otherwise this field is 0
- * nFrameWidth : Width of frame to be used on channel if
- * uncompressed format is used. Use 0 for unknown,
- * don't care or variable
- * nFrameHeight : Height of frame to be used on channel if
- * uncompressed format is used. Use 0 for unknown,
- * don't care or variable
- * nStride : Number of bytes per span of an image
- * (i.e. indicates the number of bytes to get
- * from span N to span N+1, where negative stride
- * indicates the image is bottom up
- * nSliceHeight : Height used when encoding in slices
- * nBitrate : Bit rate of frame to be used on channel if
- * compressed format is used. Use 0 for unknown,
- * don't care or variable
- * xFramerate : Frame rate to be used on channel if uncompressed
- * format is used. Use 0 for unknown, don't care or
- * variable. Units are Q16 frames per second.
- * bFlagErrorConcealment : Turns on error concealment if it is supported by
- * the OMX component
- * eCompressionFormat : Compression format used in this instance of the
- * component. When OMX_VIDEO_CodingUnused is
- * specified, eColorFormat is used
- * eColorFormat : Decompressed format used by this component
- * pNativeWindow : Platform specific reference for a window object if a
- * display sink , otherwise this field is 0x0.
- */
-typedef struct OMX_VIDEO_PORTDEFINITIONTYPE {
- OMX_STRING cMIMEType;
- OMX_NATIVE_DEVICETYPE pNativeRender;
- OMX_U32 nFrameWidth;
- OMX_U32 nFrameHeight;
- OMX_S32 nStride;
- OMX_U32 nSliceHeight;
- OMX_U32 nBitrate;
- OMX_U32 xFramerate;
- OMX_BOOL bFlagErrorConcealment;
- OMX_VIDEO_CODINGTYPE eCompressionFormat;
- OMX_COLOR_FORMATTYPE eColorFormat;
- OMX_NATIVE_WINDOWTYPE pNativeWindow;
-} OMX_VIDEO_PORTDEFINITIONTYPE;
-
-/**
- * Port format parameter. This structure is used to enumerate the various
- * data input/output format supported by the port.
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Indicates which port to set
- * nIndex : Indicates the enumeration index for the format from
- * 0x0 to N-1
- * eCompressionFormat : Compression format used in this instance of the
- * component. When OMX_VIDEO_CodingUnused is specified,
- * eColorFormat is used
- * eColorFormat : Decompressed format used by this component
- * xFrameRate : Indicates the video frame rate in Q16 format
- */
-typedef struct OMX_VIDEO_PARAM_PORTFORMATTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nIndex;
- OMX_VIDEO_CODINGTYPE eCompressionFormat;
- OMX_COLOR_FORMATTYPE eColorFormat;
- OMX_U32 xFramerate;
-} OMX_VIDEO_PARAM_PORTFORMATTYPE;
-
-
-/**
- * This is a structure for configuring video compression quantization
- * parameter values. Codecs may support different QP values for different
- * frame types.
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version info
- * nPortIndex : Port that this structure applies to
- * nQpI : QP value to use for index frames
- * nQpP : QP value to use for P frames
- * nQpB : QP values to use for bidirectional frames
- */
-typedef struct OMX_VIDEO_PARAM_QUANTIZATIONTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nQpI;
- OMX_U32 nQpP;
- OMX_U32 nQpB;
-} OMX_VIDEO_PARAM_QUANTIZATIONTYPE;
-
-
-/**
- * Structure for configuration of video fast update parameters.
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version info
- * nPortIndex : Port that this structure applies to
- * bEnableVFU : Enable/Disable video fast update
- * nFirstGOB : Specifies the number of the first macroblock row
- * nFirstMB : specifies the first MB relative to the specified first GOB
- * nNumMBs : Specifies the number of MBs to be refreshed from nFirstGOB
- * and nFirstMB
- */
-typedef struct OMX_VIDEO_PARAM_VIDEOFASTUPDATETYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_BOOL bEnableVFU;
- OMX_U32 nFirstGOB;
- OMX_U32 nFirstMB;
- OMX_U32 nNumMBs;
-} OMX_VIDEO_PARAM_VIDEOFASTUPDATETYPE;
-
-
-/**
- * Enumeration of possible bitrate control types
- */
-typedef enum OMX_VIDEO_CONTROLRATETYPE {
- OMX_Video_ControlRateDisable,
- OMX_Video_ControlRateVariable,
- OMX_Video_ControlRateConstant,
- OMX_Video_ControlRateVariableSkipFrames,
- OMX_Video_ControlRateConstantSkipFrames,
- OMX_Video_ControlRateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_Video_ControlRateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_Video_ControlRateMax = 0x7FFFFFFF
-} OMX_VIDEO_CONTROLRATETYPE;
-
-
-/**
- * Structure for configuring bitrate mode of a codec.
- *
- * STRUCT MEMBERS:
- * nSize : Size of the struct in bytes
- * nVersion : OMX spec version info
- * nPortIndex : Port that this struct applies to
- * eControlRate : Control rate type enum
- * nTargetBitrate : Target bitrate to encode with
- */
-typedef struct OMX_VIDEO_PARAM_BITRATETYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_VIDEO_CONTROLRATETYPE eControlRate;
- OMX_U32 nTargetBitrate;
-} OMX_VIDEO_PARAM_BITRATETYPE;
-
-
-/**
- * Enumeration of possible motion vector (MV) types
- */
-typedef enum OMX_VIDEO_MOTIONVECTORTYPE {
- OMX_Video_MotionVectorPixel,
- OMX_Video_MotionVectorHalfPel,
- OMX_Video_MotionVectorQuarterPel,
- OMX_Video_MotionVectorEighthPel,
- OMX_Video_MotionVectorKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_Video_MotionVectorVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_Video_MotionVectorMax = 0x7FFFFFFF
-} OMX_VIDEO_MOTIONVECTORTYPE;
-
-
-/**
- * Structure for configuring the number of motion vectors used as well
- * as their accuracy.
- *
- * STRUCT MEMBERS:
- * nSize : Size of the struct in bytes
- * nVersion : OMX spec version info
- * nPortIndex : port that this structure applies to
- * eAccuracy : Enumerated MV accuracy
- * bUnrestrictedMVs : Allow unrestricted MVs
- * bFourMV : Allow use of 4 MVs
- * sXSearchRange : Search range in horizontal direction for MVs
- * sYSearchRange : Search range in vertical direction for MVs
- */
-typedef struct OMX_VIDEO_PARAM_MOTIONVECTORTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_VIDEO_MOTIONVECTORTYPE eAccuracy;
- OMX_BOOL bUnrestrictedMVs;
- OMX_BOOL bFourMV;
- OMX_S32 sXSearchRange;
- OMX_S32 sYSearchRange;
-} OMX_VIDEO_PARAM_MOTIONVECTORTYPE;
-
-
-/**
- * Enumeration of possible methods to use for Intra Refresh
- */
-typedef enum OMX_VIDEO_INTRAREFRESHTYPE {
- OMX_VIDEO_IntraRefreshCyclic,
- OMX_VIDEO_IntraRefreshAdaptive,
- OMX_VIDEO_IntraRefreshBoth,
- OMX_VIDEO_IntraRefreshKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_VIDEO_IntraRefreshVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_VIDEO_IntraRefreshMax = 0x7FFFFFFF
-} OMX_VIDEO_INTRAREFRESHTYPE;
-
-
-/**
- * Structure for configuring intra refresh mode
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * eRefreshMode : Cyclic, Adaptive, or Both
- * nAirMBs : Number of intra macroblocks to refresh in a frame when
- * AIR is enabled
- * nAirRef : Number of times a motion marked macroblock has to be
- * intra coded
- * nCirMBs : Number of consecutive macroblocks to be coded as "intra"
- * when CIR is enabled
- */
-typedef struct OMX_VIDEO_PARAM_INTRAREFRESHTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_VIDEO_INTRAREFRESHTYPE eRefreshMode;
- OMX_U32 nAirMBs;
- OMX_U32 nAirRef;
- OMX_U32 nCirMBs;
-} OMX_VIDEO_PARAM_INTRAREFRESHTYPE;
-
-
-/**
- * Structure for enabling various error correction methods for video
- * compression.
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * bEnableHEC : Enable/disable header extension codes (HEC)
- * bEnableResync : Enable/disable resynchronization markers
- * nResynchMarkerSpacing : Resynch markers interval (in bits) to be
- * applied in the stream
- * bEnableDataPartitioning : Enable/disable data partitioning
- * bEnableRVLC : Enable/disable reversible variable length
- * coding
- */
-typedef struct OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_BOOL bEnableHEC;
- OMX_BOOL bEnableResync;
- OMX_U32 nResynchMarkerSpacing;
- OMX_BOOL bEnableDataPartitioning;
- OMX_BOOL bEnableRVLC;
-} OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE;
-
-
-/**
- * Configuration of variable block-size motion compensation (VBSMC)
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * b16x16 : Enable inter block search 16x16
- * b16x8 : Enable inter block search 16x8
- * b8x16 : Enable inter block search 8x16
- * b8x8 : Enable inter block search 8x8
- * b8x4 : Enable inter block search 8x4
- * b4x8 : Enable inter block search 4x8
- * b4x4 : Enable inter block search 4x4
- */
-typedef struct OMX_VIDEO_PARAM_VBSMCTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_BOOL b16x16;
- OMX_BOOL b16x8;
- OMX_BOOL b8x16;
- OMX_BOOL b8x8;
- OMX_BOOL b8x4;
- OMX_BOOL b4x8;
- OMX_BOOL b4x4;
-} OMX_VIDEO_PARAM_VBSMCTYPE;
-
-
-/**
- * H.263 profile types, each profile indicates support for various
- * performance bounds and different annexes.
- *
- * ENUMS:
- * Baseline : Baseline Profile: H.263 (V1), no optional modes
- * H320 Coding : H.320 Coding Efficiency Backward Compatibility
- * Profile: H.263+ (V2), includes annexes I, J, L.4
- * and T
- * BackwardCompatible : Backward Compatibility Profile: H.263 (V1),
- * includes annex F
- * ISWV2 : Interactive Streaming Wireless Profile: H.263+
- * (V2), includes annexes I, J, K and T
- * ISWV3 : Interactive Streaming Wireless Profile: H.263++
- * (V3), includes profile 3 and annexes V and W.6.3.8
- * HighCompression : Conversational High Compression Profile: H.263++
- * (V3), includes profiles 1 & 2 and annexes D and U
- * Internet : Conversational Internet Profile: H.263++ (V3),
- * includes profile 5 and annex K
- * Interlace : Conversational Interlace Profile: H.263++ (V3),
- * includes profile 5 and annex W.6.3.11
- * HighLatency : High Latency Profile: H.263++ (V3), includes
- * profile 6 and annexes O.1 and P.5
- */
-typedef enum OMX_VIDEO_H263PROFILETYPE {
- OMX_VIDEO_H263ProfileBaseline = 0x01,
- OMX_VIDEO_H263ProfileH320Coding = 0x02,
- OMX_VIDEO_H263ProfileBackwardCompatible = 0x04,
- OMX_VIDEO_H263ProfileISWV2 = 0x08,
- OMX_VIDEO_H263ProfileISWV3 = 0x10,
- OMX_VIDEO_H263ProfileHighCompression = 0x20,
- OMX_VIDEO_H263ProfileInternet = 0x40,
- OMX_VIDEO_H263ProfileInterlace = 0x80,
- OMX_VIDEO_H263ProfileHighLatency = 0x100,
- OMX_VIDEO_H263ProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_VIDEO_H263ProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_VIDEO_H263ProfileMax = 0x7FFFFFFF
-} OMX_VIDEO_H263PROFILETYPE;
-
-
-/**
- * H.263 level types, each level indicates support for various frame sizes,
- * bit rates, decoder frame rates.
- */
-typedef enum OMX_VIDEO_H263LEVELTYPE {
- OMX_VIDEO_H263Level10 = 0x01,
- OMX_VIDEO_H263Level20 = 0x02,
- OMX_VIDEO_H263Level30 = 0x04,
- OMX_VIDEO_H263Level40 = 0x08,
- OMX_VIDEO_H263Level45 = 0x10,
- OMX_VIDEO_H263Level50 = 0x20,
- OMX_VIDEO_H263Level60 = 0x40,
- OMX_VIDEO_H263Level70 = 0x80,
- OMX_VIDEO_H263LevelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_VIDEO_H263LevelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_VIDEO_H263LevelMax = 0x7FFFFFFF
-} OMX_VIDEO_H263LEVELTYPE;
-
-
-/**
- * Specifies the picture type. These values should be OR'd to signal all
- * pictures types which are allowed.
- *
- * ENUMS:
- * Generic Picture Types: I, P and B
- * H.263 Specific Picture Types: SI and SP
- * H.264 Specific Picture Types: EI and EP
- * MPEG-4 Specific Picture Types: S
- */
-typedef enum OMX_VIDEO_PICTURETYPE {
- OMX_VIDEO_PictureTypeI = 0x01,
- OMX_VIDEO_PictureTypeP = 0x02,
- OMX_VIDEO_PictureTypeB = 0x04,
- OMX_VIDEO_PictureTypeSI = 0x08,
- OMX_VIDEO_PictureTypeSP = 0x10,
- OMX_VIDEO_PictureTypeEI = 0x11,
- OMX_VIDEO_PictureTypeEP = 0x12,
- OMX_VIDEO_PictureTypeS = 0x14,
- OMX_VIDEO_PictureTypeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_VIDEO_PictureTypeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_VIDEO_PictureTypeMax = 0x7FFFFFFF
-} OMX_VIDEO_PICTURETYPE;
-
-
-/**
- * H.263 Params
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nPFrames : Number of P frames between each I frame
- * nBFrames : Number of B frames between each I frame
- * eProfile : H.263 profile(s) to use
- * eLevel : H.263 level(s) to use
- * bPLUSPTYPEAllowed : Indicating that it is allowed to use PLUSPTYPE
- * (specified in the 1998 version of H.263) to
- * indicate custom picture sizes or clock
- * frequencies
- * nAllowedPictureTypes : Specifies the picture types allowed in the
- * bitstream
- * bForceRoundingTypeToZero : value of the RTYPE bit (bit 6 of MPPTYPE) is
- * not constrained. It is recommended to change
- * the value of the RTYPE bit for each reference
- * picture in error-free communication
- * nPictureHeaderRepetition : Specifies the frequency of picture header
- * repetition
- * nGOBHeaderInterval : Specifies the interval of non-empty GOB
- * headers in units of GOBs
- */
-typedef struct OMX_VIDEO_PARAM_H263TYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nPFrames;
- OMX_U32 nBFrames;
- OMX_VIDEO_H263PROFILETYPE eProfile;
- OMX_VIDEO_H263LEVELTYPE eLevel;
- OMX_BOOL bPLUSPTYPEAllowed;
- OMX_U32 nAllowedPictureTypes;
- OMX_BOOL bForceRoundingTypeToZero;
- OMX_U32 nPictureHeaderRepetition;
- OMX_U32 nGOBHeaderInterval;
-} OMX_VIDEO_PARAM_H263TYPE;
-
-
-/**
- * MPEG-2 profile types, each profile indicates support for various
- * performance bounds and different annexes.
- */
-typedef enum OMX_VIDEO_MPEG2PROFILETYPE {
- OMX_VIDEO_MPEG2ProfileSimple = 0, /**< Simple Profile */
- OMX_VIDEO_MPEG2ProfileMain, /**< Main Profile */
- OMX_VIDEO_MPEG2Profile422, /**< 4:2:2 Profile */
- OMX_VIDEO_MPEG2ProfileSNR, /**< SNR Profile */
- OMX_VIDEO_MPEG2ProfileSpatial, /**< Spatial Profile */
- OMX_VIDEO_MPEG2ProfileHigh, /**< High Profile */
- OMX_VIDEO_MPEG2ProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_VIDEO_MPEG2ProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_VIDEO_MPEG2ProfileMax = 0x7FFFFFFF
-} OMX_VIDEO_MPEG2PROFILETYPE;
-
-
-/**
- * MPEG-2 level types, each level indicates support for various frame
- * sizes, bit rates, decoder frame rates. No need
- */
-typedef enum OMX_VIDEO_MPEG2LEVELTYPE {
- OMX_VIDEO_MPEG2LevelLL = 0, /**< Low Level */
- OMX_VIDEO_MPEG2LevelML, /**< Main Level */
- OMX_VIDEO_MPEG2LevelH14, /**< High 1440 */
- OMX_VIDEO_MPEG2LevelHL, /**< High Level */
- OMX_VIDEO_MPEG2LevelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_VIDEO_MPEG2LevelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_VIDEO_MPEG2LevelMax = 0x7FFFFFFF
-} OMX_VIDEO_MPEG2LEVELTYPE;
-
-
-/**
- * MPEG-2 params
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nPFrames : Number of P frames between each I frame
- * nBFrames : Number of B frames between each I frame
- * eProfile : MPEG-2 profile(s) to use
- * eLevel : MPEG-2 levels(s) to use
- */
-typedef struct OMX_VIDEO_PARAM_MPEG2TYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nPFrames;
- OMX_U32 nBFrames;
- OMX_VIDEO_MPEG2PROFILETYPE eProfile;
- OMX_VIDEO_MPEG2LEVELTYPE eLevel;
-} OMX_VIDEO_PARAM_MPEG2TYPE;
-
-
-/**
- * MPEG-4 profile types, each profile indicates support for various
- * performance bounds and different annexes.
- *
- * ENUMS:
- * - Simple Profile, Levels 1-3
- * - Simple Scalable Profile, Levels 1-2
- * - Core Profile, Levels 1-2
- * - Main Profile, Levels 2-4
- * - N-bit Profile, Level 2
- * - Scalable Texture Profile, Level 1
- * - Simple Face Animation Profile, Levels 1-2
- * - Simple Face and Body Animation (FBA) Profile, Levels 1-2
- * - Basic Animated Texture Profile, Levels 1-2
- * - Hybrid Profile, Levels 1-2
- * - Advanced Real Time Simple Profiles, Levels 1-4
- * - Core Scalable Profile, Levels 1-3
- * - Advanced Coding Efficiency Profile, Levels 1-4
- * - Advanced Core Profile, Levels 1-2
- * - Advanced Scalable Texture, Levels 2-3
- */
-typedef enum OMX_VIDEO_MPEG4PROFILETYPE {
- OMX_VIDEO_MPEG4ProfileSimple = 0x01,
- OMX_VIDEO_MPEG4ProfileSimpleScalable = 0x02,
- OMX_VIDEO_MPEG4ProfileCore = 0x04,
- OMX_VIDEO_MPEG4ProfileMain = 0x08,
- OMX_VIDEO_MPEG4ProfileNbit = 0x10,
- OMX_VIDEO_MPEG4ProfileScalableTexture = 0x20,
- OMX_VIDEO_MPEG4ProfileSimpleFace = 0x40,
- OMX_VIDEO_MPEG4ProfileSimpleFBA = 0x80,
- OMX_VIDEO_MPEG4ProfileBasicAnimated = 0x100,
- OMX_VIDEO_MPEG4ProfileHybrid = 0x200,
- OMX_VIDEO_MPEG4ProfileAdvancedRealTime = 0x400,
- OMX_VIDEO_MPEG4ProfileCoreScalable = 0x800,
- OMX_VIDEO_MPEG4ProfileAdvancedCoding = 0x1000,
- OMX_VIDEO_MPEG4ProfileAdvancedCore = 0x2000,
- OMX_VIDEO_MPEG4ProfileAdvancedScalable = 0x4000,
- OMX_VIDEO_MPEG4ProfileAdvancedSimple = 0x8000,
- OMX_VIDEO_MPEG4ProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_VIDEO_MPEG4ProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_VIDEO_MPEG4ProfileMax = 0x7FFFFFFF
-} OMX_VIDEO_MPEG4PROFILETYPE;
-
-
-/**
- * MPEG-4 level types, each level indicates support for various frame
- * sizes, bit rates, decoder frame rates. No need
- */
-typedef enum OMX_VIDEO_MPEG4LEVELTYPE {
- OMX_VIDEO_MPEG4Level0 = 0x01, /**< Level 0 */
- OMX_VIDEO_MPEG4Level0b = 0x02, /**< Level 0b */
- OMX_VIDEO_MPEG4Level1 = 0x04, /**< Level 1 */
- OMX_VIDEO_MPEG4Level2 = 0x08, /**< Level 2 */
- OMX_VIDEO_MPEG4Level3 = 0x10, /**< Level 3 */
- OMX_VIDEO_MPEG4Level4 = 0x20, /**< Level 4 */
- OMX_VIDEO_MPEG4Level4a = 0x40, /**< Level 4a */
- OMX_VIDEO_MPEG4Level5 = 0x80, /**< Level 5 */
- OMX_VIDEO_MPEG4LevelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_VIDEO_MPEG4LevelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_VIDEO_MPEG4LevelMax = 0x7FFFFFFF
-} OMX_VIDEO_MPEG4LEVELTYPE;
-
-
-/**
- * MPEG-4 configuration. This structure handles configuration options
- * which are specific to MPEG4 algorithms
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nSliceHeaderSpacing : Number of macroblocks between slice header (H263+
- * Annex K). Put zero if not used
- * bSVH : Enable Short Video Header mode
- * bGov : Flag to enable GOV
- * nPFrames : Number of P frames between each I frame (also called
- * GOV period)
- * nBFrames : Number of B frames between each I frame
- * nIDCVLCThreshold : Value of intra DC VLC threshold
- * bACPred : Flag to use ac prediction
- * nMaxPacketSize : Maximum size of packet in bytes.
- * nTimeIncRes : Used to pass VOP time increment resolution for MPEG4.
- * Interpreted as described in MPEG4 standard.
- * eProfile : MPEG-4 profile(s) to use.
- * eLevel : MPEG-4 level(s) to use.
- * nAllowedPictureTypes : Specifies the picture types allowed in the bitstream
- * nHeaderExtension : Specifies the number of consecutive video packet
- * headers within a VOP
- * bReversibleVLC : Specifies whether reversible variable length coding
- * is in use
- */
-typedef struct OMX_VIDEO_PARAM_MPEG4TYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nSliceHeaderSpacing;
- OMX_BOOL bSVH;
- OMX_BOOL bGov;
- OMX_U32 nPFrames;
- OMX_U32 nBFrames;
- OMX_U32 nIDCVLCThreshold;
- OMX_BOOL bACPred;
- OMX_U32 nMaxPacketSize;
- OMX_U32 nTimeIncRes;
- OMX_VIDEO_MPEG4PROFILETYPE eProfile;
- OMX_VIDEO_MPEG4LEVELTYPE eLevel;
- OMX_U32 nAllowedPictureTypes;
- OMX_U32 nHeaderExtension;
- OMX_BOOL bReversibleVLC;
-} OMX_VIDEO_PARAM_MPEG4TYPE;
-
-
-/**
- * WMV Versions
- */
-typedef enum OMX_VIDEO_WMVFORMATTYPE {
- OMX_VIDEO_WMVFormatUnused = 0x01, /**< Format unused or unknown */
- OMX_VIDEO_WMVFormat7 = 0x02, /**< Windows Media Video format 7 */
- OMX_VIDEO_WMVFormat8 = 0x04, /**< Windows Media Video format 8 */
- OMX_VIDEO_WMVFormat9 = 0x08, /**< Windows Media Video format 9 */
- OMX_VIDEO_WMFFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_VIDEO_WMFFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_VIDEO_WMVFormatMax = 0x7FFFFFFF
-} OMX_VIDEO_WMVFORMATTYPE;
-
-
-/**
- * WMV Params
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * eFormat : Version of WMV stream / data
- */
-typedef struct OMX_VIDEO_PARAM_WMVTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_VIDEO_WMVFORMATTYPE eFormat;
-} OMX_VIDEO_PARAM_WMVTYPE;
-
-
-/**
- * Real Video Version
- */
-typedef enum OMX_VIDEO_RVFORMATTYPE {
- OMX_VIDEO_RVFormatUnused = 0, /**< Format unused or unknown */
- OMX_VIDEO_RVFormat8, /**< Real Video format 8 */
- OMX_VIDEO_RVFormat9, /**< Real Video format 9 */
- OMX_VIDEO_RVFormatG2, /**< Real Video Format G2 */
- OMX_VIDEO_RVFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_VIDEO_RVFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_VIDEO_RVFormatMax = 0x7FFFFFFF
-} OMX_VIDEO_RVFORMATTYPE;
-
-
-/**
- * Real Video Params
- *
- * STUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * eFormat : Version of RV stream / data
- * nBitsPerPixel : Bits per pixel coded in the frame
- * nPaddedWidth : Padded width in pixel of a video frame
- * nPaddedHeight : Padded Height in pixels of a video frame
- * nFrameRate : Rate of video in frames per second
- * nBitstreamFlags : Flags which internal information about the bitstream
- * nBitstreamVersion : Bitstream version
- * nMaxEncodeFrameSize: Max encoded frame size
- * bEnablePostFilter : Turn on/off post filter
- * bEnableTemporalInterpolation : Turn on/off temporal interpolation
- * bEnableLatencyMode : When enabled, the decoder does not display a decoded
- * frame until it has detected that no enhancement layer
- * frames or dependent B frames will be coming. This
- * detection usually occurs when a subsequent non-B
- * frame is encountered
- */
-typedef struct OMX_VIDEO_PARAM_RVTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_VIDEO_RVFORMATTYPE eFormat;
- OMX_U16 nBitsPerPixel;
- OMX_U16 nPaddedWidth;
- OMX_U16 nPaddedHeight;
- OMX_U32 nFrameRate;
- OMX_U32 nBitstreamFlags;
- OMX_U32 nBitstreamVersion;
- OMX_U32 nMaxEncodeFrameSize;
- OMX_BOOL bEnablePostFilter;
- OMX_BOOL bEnableTemporalInterpolation;
- OMX_BOOL bEnableLatencyMode;
-} OMX_VIDEO_PARAM_RVTYPE;
-
-
-/**
- * AVC profile types, each profile indicates support for various
- * performance bounds and different annexes.
- */
-typedef enum OMX_VIDEO_AVCPROFILETYPE {
- OMX_VIDEO_AVCProfileBaseline = 0x01, /**< Baseline profile */
- OMX_VIDEO_AVCProfileMain = 0x02, /**< Main profile */
- OMX_VIDEO_AVCProfileExtended = 0x04, /**< Extended profile */
- OMX_VIDEO_AVCProfileHigh = 0x08, /**< High profile */
- OMX_VIDEO_AVCProfileHigh10 = 0x10, /**< High 10 profile */
- OMX_VIDEO_AVCProfileHigh422 = 0x20, /**< High 4:2:2 profile */
- OMX_VIDEO_AVCProfileHigh444 = 0x40, /**< High 4:4:4 profile */
- OMX_VIDEO_AVCProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_VIDEO_AVCProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_VIDEO_AVCProfileMax = 0x7FFFFFFF
-} OMX_VIDEO_AVCPROFILETYPE;
-
-
-/**
- * AVC level types, each level indicates support for various frame sizes,
- * bit rates, decoder frame rates. No need
- */
-typedef enum OMX_VIDEO_AVCLEVELTYPE {
- OMX_VIDEO_AVCLevel1 = 0x01, /**< Level 1 */
- OMX_VIDEO_AVCLevel1b = 0x02, /**< Level 1b */
- OMX_VIDEO_AVCLevel11 = 0x04, /**< Level 1.1 */
- OMX_VIDEO_AVCLevel12 = 0x08, /**< Level 1.2 */
- OMX_VIDEO_AVCLevel13 = 0x10, /**< Level 1.3 */
- OMX_VIDEO_AVCLevel2 = 0x20, /**< Level 2 */
- OMX_VIDEO_AVCLevel21 = 0x40, /**< Level 2.1 */
- OMX_VIDEO_AVCLevel22 = 0x80, /**< Level 2.2 */
- OMX_VIDEO_AVCLevel3 = 0x100, /**< Level 3 */
- OMX_VIDEO_AVCLevel31 = 0x200, /**< Level 3.1 */
- OMX_VIDEO_AVCLevel32 = 0x400, /**< Level 3.2 */
- OMX_VIDEO_AVCLevel4 = 0x800, /**< Level 4 */
- OMX_VIDEO_AVCLevel41 = 0x1000, /**< Level 4.1 */
- OMX_VIDEO_AVCLevel42 = 0x2000, /**< Level 4.2 */
- OMX_VIDEO_AVCLevel5 = 0x4000, /**< Level 5 */
- OMX_VIDEO_AVCLevel51 = 0x8000, /**< Level 5.1 */
- OMX_VIDEO_AVCLevelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_VIDEO_AVCLevelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_VIDEO_AVCLevelMax = 0x7FFFFFFF
-} OMX_VIDEO_AVCLEVELTYPE;
-
-
-/**
- * AVC loop filter modes
- *
- * OMX_VIDEO_AVCLoopFilterEnable : Enable
- * OMX_VIDEO_AVCLoopFilterDisable : Disable
- * OMX_VIDEO_AVCLoopFilterDisableSliceBoundary : Disabled on slice boundaries
- */
-typedef enum OMX_VIDEO_AVCLOOPFILTERTYPE {
- OMX_VIDEO_AVCLoopFilterEnable = 0,
- OMX_VIDEO_AVCLoopFilterDisable,
- OMX_VIDEO_AVCLoopFilterDisableSliceBoundary,
- OMX_VIDEO_AVCLoopFilterKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_VIDEO_AVCLoopFilterVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_VIDEO_AVCLoopFilterMax = 0x7FFFFFFF
-} OMX_VIDEO_AVCLOOPFILTERTYPE;
-
-
-/**
- * AVC params
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nSliceHeaderSpacing : Number of macroblocks between slice header, put
- * zero if not used
- * nPFrames : Number of P frames between each I frame
- * nBFrames : Number of B frames between each I frame
- * bUseHadamard : Enable/disable Hadamard transform
- * nRefFrames : Max number of reference frames to use for inter
- * motion search (1-16)
- * nRefIdxTrailing : Pic param set ref frame index (index into ref
- * frame buffer of trailing frames list), B frame
- * support
- * nRefIdxForward : Pic param set ref frame index (index into ref
- * frame buffer of forward frames list), B frame
- * support
- * bEnableUEP : Enable/disable unequal error protection. This
- * is only valid of data partitioning is enabled.
- * bEnableFMO : Enable/disable flexible macroblock ordering
- * bEnableASO : Enable/disable arbitrary slice ordering
- * bEnableRS : Enable/disable sending of redundant slices
- * eProfile : AVC profile(s) to use
- * eLevel : AVC level(s) to use
- * nAllowedPictureTypes : Specifies the picture types allowed in the
- * bitstream
- * bFrameMBsOnly : specifies that every coded picture of the
- * coded video sequence is a coded frame
- * containing only frame macroblocks
- * bMBAFF : Enable/disable switching between frame and
- * field macroblocks within a picture
- * bEntropyCodingCABAC : Entropy decoding method to be applied for the
- * syntax elements for which two descriptors appear
- * in the syntax tables
- * bWeightedPPrediction : Enable/disable weighted prediction shall not
- * be applied to P and SP slices
- * nWeightedBipredicitonMode : Default weighted prediction is applied to B
- * slices
- * bconstIpred : Enable/disable intra prediction
- * bDirect8x8Inference : Specifies the method used in the derivation
- * process for luma motion vectors for B_Skip,
- * B_Direct_16x16 and B_Direct_8x8 as specified
- * in subclause 8.4.1.2 of the AVC spec
- * bDirectSpatialTemporal : Flag indicating spatial or temporal direct
- * mode used in B slice coding (related to
- * bDirect8x8Inference) . Spatial direct mode is
- * more common and should be the default.
- * nCabacInitIdx : Index used to init CABAC contexts
- * eLoopFilterMode : Enable/disable loop filter
- */
-typedef struct OMX_VIDEO_PARAM_AVCTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nSliceHeaderSpacing;
- OMX_U32 nPFrames;
- OMX_U32 nBFrames;
- OMX_BOOL bUseHadamard;
- OMX_U32 nRefFrames;
- OMX_U32 nRefIdx10ActiveMinus1;
- OMX_U32 nRefIdx11ActiveMinus1;
- OMX_BOOL bEnableUEP;
- OMX_BOOL bEnableFMO;
- OMX_BOOL bEnableASO;
- OMX_BOOL bEnableRS;
- OMX_VIDEO_AVCPROFILETYPE eProfile;
- OMX_VIDEO_AVCLEVELTYPE eLevel;
- OMX_U32 nAllowedPictureTypes;
- OMX_BOOL bFrameMBsOnly;
- OMX_BOOL bMBAFF;
- OMX_BOOL bEntropyCodingCABAC;
- OMX_BOOL bWeightedPPrediction;
- OMX_U32 nWeightedBipredicitonMode;
- OMX_BOOL bconstIpred ;
- OMX_BOOL bDirect8x8Inference;
- OMX_BOOL bDirectSpatialTemporal;
- OMX_U32 nCabacInitIdc;
- OMX_VIDEO_AVCLOOPFILTERTYPE eLoopFilterMode;
-} OMX_VIDEO_PARAM_AVCTYPE;
-
-typedef struct OMX_VIDEO_PARAM_PROFILELEVELTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 eProfile; /**< type is OMX_VIDEO_AVCPROFILETYPE, OMX_VIDEO_H263PROFILETYPE,
- or OMX_VIDEO_MPEG4PROFILETYPE depending on context */
- OMX_U32 eLevel; /**< type is OMX_VIDEO_AVCLEVELTYPE, OMX_VIDEO_H263LEVELTYPE,
- or OMX_VIDEO_MPEG4PROFILETYPE depending on context */
- OMX_U32 nProfileIndex; /**< Used to query for individual profile support information,
- This parameter is valid only for
- OMX_IndexParamVideoProfileLevelQuerySupported index,
- For all other indices this parameter is to be ignored. */
-} OMX_VIDEO_PARAM_PROFILELEVELTYPE;
-
-/**
- * Structure for dynamically configuring bitrate mode of a codec.
- *
- * STRUCT MEMBERS:
- * nSize : Size of the struct in bytes
- * nVersion : OMX spec version info
- * nPortIndex : Port that this struct applies to
- * nEncodeBitrate : Target average bitrate to be generated in bps
- */
-typedef struct OMX_VIDEO_CONFIG_BITRATETYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nEncodeBitrate;
-} OMX_VIDEO_CONFIG_BITRATETYPE;
-
-/**
- * Defines Encoder Frame Rate setting
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * xEncodeFramerate : Encoding framerate represented in Q16 format
- */
-typedef struct OMX_CONFIG_FRAMERATETYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 xEncodeFramerate; /* Q16 format */
-} OMX_CONFIG_FRAMERATETYPE;
-
-typedef struct OMX_CONFIG_INTRAREFRESHVOPTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_BOOL IntraRefreshVOP;
-} OMX_CONFIG_INTRAREFRESHVOPTYPE;
-
-typedef struct OMX_CONFIG_MACROBLOCKERRORMAPTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nErrMapSize; /* Size of the Error Map in bytes */
- OMX_U8 ErrMap[1]; /* Error map hint */
-} OMX_CONFIG_MACROBLOCKERRORMAPTYPE;
-
-typedef struct OMX_CONFIG_MBERRORREPORTINGTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_BOOL bEnabled;
-} OMX_CONFIG_MBERRORREPORTINGTYPE;
-
-typedef struct OMX_PARAM_MACROBLOCKSTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nMacroblocks;
-} OMX_PARAM_MACROBLOCKSTYPE;
-
-/**
- * AVC Slice Mode modes
- *
- * OMX_VIDEO_SLICEMODE_AVCDefault : Normal frame encoding, one slice per frame
- * OMX_VIDEO_SLICEMODE_AVCMBSlice : NAL mode, number of MBs per frame
- * OMX_VIDEO_SLICEMODE_AVCByteSlice : NAL mode, number of bytes per frame
- */
-typedef enum OMX_VIDEO_AVCSLICEMODETYPE {
- OMX_VIDEO_SLICEMODE_AVCDefault = 0,
- OMX_VIDEO_SLICEMODE_AVCMBSlice,
- OMX_VIDEO_SLICEMODE_AVCByteSlice,
- OMX_VIDEO_SLICEMODE_AVCKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
- OMX_VIDEO_SLICEMODE_AVCVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
- OMX_VIDEO_SLICEMODE_AVCLevelMax = 0x7FFFFFFF
-} OMX_VIDEO_AVCSLICEMODETYPE;
-
-/**
- * AVC FMO Slice Mode Params
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nNumSliceGroups : Specifies the number of slice groups
- * nSliceGroupMapType : Specifies the type of slice groups
- * eSliceMode : Specifies the type of slice
- */
-typedef struct OMX_VIDEO_PARAM_AVCSLICEFMO {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U8 nNumSliceGroups;
- OMX_U8 nSliceGroupMapType;
- OMX_VIDEO_AVCSLICEMODETYPE eSliceMode;
-} OMX_VIDEO_PARAM_AVCSLICEFMO;
-
-/**
- * AVC IDR Period Configs
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nIDRPeriod : Specifies periodicity of IDR frames
- * nPFrames : Specifies internal of coding Intra frames
- */
-typedef struct OMX_VIDEO_CONFIG_AVCINTRAPERIOD {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nIDRPeriod;
- OMX_U32 nPFrames;
-} OMX_VIDEO_CONFIG_AVCINTRAPERIOD;
-
-/**
- * AVC NAL Size Configs
- *
- * STRUCT MEMBERS:
- * nSize : Size of the structure in bytes
- * nVersion : OMX specification version information
- * nPortIndex : Port that this structure applies to
- * nNaluBytes : Specifies the NAL unit size
- */
-typedef struct OMX_VIDEO_CONFIG_NALSIZE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nNaluBytes;
-} OMX_VIDEO_CONFIG_NALSIZE;
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
-/* File EOF */
-
diff --git a/sec_mm/sec_omx/sec_omx_include/sec/SEC_OMX_Def.h b/sec_mm/sec_omx/sec_omx_include/sec/SEC_OMX_Def.h
deleted file mode 100644
index 10b6144..0000000
--- a/sec_mm/sec_omx/sec_omx_include/sec/SEC_OMX_Def.h
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OMX_Def.h
- * @brief SEC_OMX specific define
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#ifndef SEC_OMX_DEF
-#define SEC_OMX_DEF
-
-#include "OMX_Types.h"
-#include "OMX_IVCommon.h"
-
-#define VERSIONMAJOR_NUMBER 1
-#define VERSIONMINOR_NUMBER 0
-#define REVISION_NUMBER 0
-#define STEP_NUMBER 0
-
-
-#define MAX_OMX_COMPONENT_NUM 20
-#define MAX_OMX_COMPONENT_ROLE_NUM 10
-#define MAX_OMX_COMPONENT_NAME_SIZE OMX_MAX_STRINGNAME_SIZE
-#define MAX_OMX_COMPONENT_ROLE_SIZE OMX_MAX_STRINGNAME_SIZE
-#define MAX_OMX_COMPONENT_LIBNAME_SIZE OMX_MAX_STRINGNAME_SIZE * 2
-#define MAX_OMX_MIMETYPE_SIZE OMX_MAX_STRINGNAME_SIZE
-
-#define MAX_TIMESTAMP 17
-#define MAX_FLAGS 17
-
-#define USE_ANDROID_EXTENSION
-
-
-typedef enum _SEC_CODEC_TYPE
-{
- SW_CODEC,
- HW_VIDEO_CODEC,
- HW_AUDIO_CODEC
-} SEC_CODEC_TYPE;
-
-typedef struct _SEC_OMX_PRIORITYMGMTTYPE
-{
- OMX_U32 nGroupPriority; /* the value 0 represents the highest priority */
- /* for a group of components */
- OMX_U32 nGroupID;
-} SEC_OMX_PRIORITYMGMTTYPE;
-
-typedef enum _SEC_OMX_INDEXTYPE
-{
-#define SEC_INDEX_PARAM_ENABLE_THUMBNAIL "OMX.SEC.index.ThumbnailMode"
- OMX_IndexVendorThumbnailMode = 0x7F000001,
-
- /* for Android Native Window */
-#define SEC_INDEX_PARAM_ENABLE_ANB "OMX.google.android.index.enableAndroidNativeBuffers"
- OMX_IndexParamEnableAndroidBuffers = 0x7F000011,
-#define SEC_INDEX_PARAM_GET_ANB "OMX.google.android.index.getAndroidNativeBufferUsage"
- OMX_IndexParamGetAndroidNativeBuffer = 0x7F000012,
-#define SEC_INDEX_PARAM_USE_ANB "OMX.google.android.index.useAndroidNativeBuffer"
- OMX_IndexParamUseAndroidNativeBuffer = 0x7F000013,
- /* for Android Store Metadata Inbuffer */
-#define SEC_INDEX_PARAM_STORE_METADATA_BUFFER "OMX.google.android.index.storeMetaDataInBuffers"
- OMX_IndexParamStoreMetaDataBuffer = 0x7F000014,
-
- /* for Android PV OpenCore*/
- OMX_COMPONENT_CAPABILITY_TYPE_INDEX = 0xFF7A347
-} SEC_OMX_INDEXTYPE;
-
-typedef enum _SEC_OMX_ERRORTYPE
-{
- OMX_ErrorNoEOF = 0x90000001,
- OMX_ErrorInputDataDecodeYet,
- OMX_ErrorInputDataEncodeYet,
- OMX_ErrorMFCInit
-} SEC_OMX_ERRORTYPE;
-
-typedef enum _SEC_OMX_COMMANDTYPE
-{
- SEC_OMX_CommandComponentDeInit = 0x7F000001,
- SEC_OMX_CommandEmptyBuffer,
- SEC_OMX_CommandFillBuffer
-} SEC_OMX_COMMANDTYPE;
-
-typedef enum _SEC_OMX_TRANS_STATETYPE {
- SEC_OMX_TransStateInvalid,
- SEC_OMX_TransStateLoadedToIdle,
- SEC_OMX_TransStateIdleToExecuting,
- SEC_OMX_TransStateExecutingToIdle,
- SEC_OMX_TransStateIdleToLoaded,
- SEC_OMX_TransStateMax = 0X7FFFFFFF
-} SEC_OMX_TRANS_STATETYPE;
-
-typedef enum _SEC_OMX_COLOR_FORMATTYPE {
- OMX_SEC_COLOR_FormatNV12TPhysicalAddress = 0x7F000001, /**< Reserved region for introducing Vendor Extensions */
- /* for Android Native Window */
- OMX_SEC_COLOR_FormatANBYUV420SemiPlanar = 0x100,
- /* for Android surface texture encode */
- OMX_COLOR_FormatAndroidOpaque = 0x7F000789
-}SEC_OMX_COLOR_FORMATTYPE;
-
-typedef enum _SEC_OMX_SUPPORTFORMAT_TYPE
-{
- supportFormat_0 = 0x00,
- supportFormat_1,
- supportFormat_2,
- supportFormat_3
-} SEC_OMX_SUPPORTFORMAT_TYPE;
-
-
-/* for Android */
-typedef struct _OMXComponentCapabilityFlagsType
-{
- /* OMX COMPONENT CAPABILITY RELATED MEMBERS */
- OMX_BOOL iIsOMXComponentMultiThreaded;
- OMX_BOOL iOMXComponentSupportsExternalOutputBufferAlloc;
- OMX_BOOL iOMXComponentSupportsExternalInputBufferAlloc;
- OMX_BOOL iOMXComponentSupportsMovableInputBuffers;
- OMX_BOOL iOMXComponentSupportsPartialFrames;
- OMX_BOOL iOMXComponentUsesNALStartCodes;
- OMX_BOOL iOMXComponentCanHandleIncompleteFrames;
- OMX_BOOL iOMXComponentUsesFullAVCFrames;
-} OMXComponentCapabilityFlagsType;
-
-typedef struct _SEC_OMX_VIDEO_PROFILELEVEL
-{
- OMX_S32 profile;
- OMX_S32 level;
-} SEC_OMX_VIDEO_PROFILELEVEL;
-
-
-#ifndef __OMX_EXPORTS
-#define __OMX_EXPORTS
-#define SEC_EXPORT_REF __attribute__((visibility("default")))
-#define SEC_IMPORT_REF __attribute__((visibility("default")))
-#endif
-
-#endif
diff --git a/sec_mm/sec_omx/sec_omx_include/sec/SEC_OMX_Macros.h b/sec_mm/sec_omx/sec_omx_include/sec/SEC_OMX_Macros.h
deleted file mode 100644
index 1debc62..0000000
--- a/sec_mm/sec_omx/sec_omx_include/sec/SEC_OMX_Macros.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OMX_Macros.h
- * @brief Macros
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#ifndef SEC_OMX_MACROS
-#define SEC_OMX_MACROS
-
-#include "SEC_OMX_Def.h"
-#include "SEC_OSAL_Memory.h"
-
-
-/*
- * MACROS
- */
-#define ALIGN_TO_32B(x) ((((x) + (1 << 5) - 1) >> 5) << 5)
-#define ALIGN_TO_128B(x) ((((x) + (1 << 7) - 1) >> 7) << 7)
-#define ALIGN_TO_8KB(x) ((((x) + (1 << 13) - 1) >> 13) << 13)
-
-#define INIT_SET_SIZE_VERSION(_struct_, _structType_) \
- do { \
- SEC_OSAL_Memset((_struct_), 0, sizeof(_structType_)); \
- (_struct_)->nSize = sizeof(_structType_); \
- (_struct_)->nVersion.s.nVersionMajor = VERSIONMAJOR_NUMBER; \
- (_struct_)->nVersion.s.nVersionMinor = VERSIONMINOR_NUMBER; \
- (_struct_)->nVersion.s.nRevision = REVISION_NUMBER; \
- (_struct_)->nVersion.s.nStep = STEP_NUMBER; \
- } while (0)
-
-/*
- * Port Specific
- */
-#define SEC_TUNNEL_ESTABLISHED 0x0001
-#define SEC_TUNNEL_IS_SUPPLIER 0x0002
-
-#define CHECK_PORT_BEING_FLUSHED(port) (port->bIsPortFlushed == OMX_TRUE)
-#define CHECK_PORT_BEING_DISABLED(port) (port->bIsPortDisabled == OMX_TRUE)
-#define CHECK_PORT_ENABLED(port) (port->portDefinition.bEnabled == OMX_TRUE)
-#define CHECK_PORT_POPULATED(port) (port->portDefinition.bPopulated == OMX_TRUE)
-#define CHECK_PORT_TUNNELED(port) (port->tunnelFlags & SEC_TUNNEL_ESTABLISHED)
-#define CHECK_PORT_BUFFER_SUPPLIER(port) (port->tunnelFlags & SEC_TUNNEL_IS_SUPPLIER)
-
-#endif
diff --git a/sec_mm/sec_omx/sec_osal/Android.mk b/sec_mm/sec_omx/sec_osal/Android.mk
deleted file mode 100644
index 3cecc21..0000000
--- a/sec_mm/sec_omx/sec_osal/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := \
- SEC_OSAL_Event.c \
- SEC_OSAL_Queue.c \
- SEC_OSAL_ETC.c \
- SEC_OSAL_Mutex.c \
- SEC_OSAL_Thread.c \
- SEC_OSAL_Memory.c \
- SEC_OSAL_Semaphore.c \
- SEC_OSAL_Library.c \
- SEC_OSAL_Log.c \
- SEC_OSAL_Buffer.cpp
-
-
-LOCAL_MODULE := libsecosal.aries
-
-LOCAL_CFLAGS :=
-
-LOCAL_STATIC_LIBRARIES :=
-
-LOCAL_SHARED_LIBRARIES := libcutils \
- libutils \
- libui \
- libhardware \
- libandroid_runtime
-
-LOCAL_C_INCLUDES := $(SEC_OMX_INC)/khronos \
- $(SEC_OMX_INC)/sec \
- $(SEC_OMX_TOP)/sec_osal \
- $(SEC_OMX_COMPONENT)/common \
- $(SEC_OMX_TOP)/../../include \
- $(TOP)/frameworks/native/include/media/hardware
-
-include $(BUILD_STATIC_LIBRARY)
diff --git a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Buffer.cpp b/sec_mm/sec_omx/sec_osal/SEC_OSAL_Buffer.cpp
deleted file mode 100644
index b28f702..0000000
--- a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Buffer.cpp
+++ /dev/null
@@ -1,456 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OSAL_Buffer.c
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * Jinsung Yang (jsgood.yang@samsung.com)
- * @version 1.0.2
- * @history
- * 2011.5.15 : Create
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "SEC_OMX_Def.h"
-#include "SEC_OMX_Macros.h"
-#include "SEC_OSAL_Memory.h"
-#include "SEC_OSAL_Semaphore.h"
-#include "SEC_OSAL_Buffer.h"
-#include "SEC_OMX_Basecomponent.h"
-
-#define SEC_LOG_OFF
-#include "SEC_OSAL_Log.h"
-
-#ifdef __cplusplus
-}
-#endif
-
-#include <cutils/properties.h>
-#include <ui/GraphicBuffer.h>
-#include <ui/GraphicBufferMapper.h>
-#include <ui/Rect.h>
-#include <HardwareAPI.h>
-#include <hardware/hardware.h>
-#include <MetadataBufferType.h>
-#include "hal_public.h"
-
-#define HAL_PIXEL_FORMAT_C110_NV12 0x100
-
-using namespace android;
-
-
-struct AndroidNativeBuffersParams {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
-};
-
-#ifdef USE_ANDROID_EXTENSION
-OMX_ERRORTYPE checkVersionANB(OMX_PTR ComponentParameterStructure)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_VERSIONTYPE* version = NULL;
-
-
- AndroidNativeBuffersParams *pANBP;
- pANBP = (AndroidNativeBuffersParams *)ComponentParameterStructure;
-
- version = (OMX_VERSIONTYPE*)((char*)pANBP + sizeof(OMX_U32));
- if (*((OMX_U32*)pANBP) <= sizeof(AndroidNativeBuffersParams)) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- if (version->s.nVersionMajor != VERSIONMAJOR_NUMBER ||
- version->s.nVersionMinor != VERSIONMINOR_NUMBER) {
- ret = OMX_ErrorVersionMismatch;
- goto EXIT;
- }
-
- ret = OMX_ErrorNone;
-
-EXIT:
- return ret;
-}
-
-OMX_U32 checkPortIndexANB(OMX_PTR ComponentParameterStructure)
-{
- AndroidNativeBuffersParams *pANBP;
- pANBP = (AndroidNativeBuffersParams *)ComponentParameterStructure;
-
- return pANBP->nPortIndex;
-}
-
-OMX_U32 getMetadataBufferType(const uint8_t *ptr)
-{
- OMX_U32 type = *(OMX_U32 *) ptr;
- SEC_OSAL_Log(SEC_LOG_TRACE, "getMetadataBufferType: %ld", type);
- return type;
-}
-
-OMX_U32 getVADDRfromANB(OMX_PTR pUnreadableBuffer, OMX_U32 Width, OMX_U32 Height, void *pVirAddrs[])
-{
- OMX_U32 ret = 0;
- android_native_buffer_t *buf;
- void *readableBuffer;
- GraphicBufferMapper &mapper = GraphicBufferMapper::get();
- Rect bounds(Width, Height);
-
- FunctionIn();
-
- buf = (android_native_buffer_t *)pUnreadableBuffer;
- SEC_OSAL_Log(SEC_LOG_TRACE, "pUnreadableBuffer:0x%x, buf:0x%x, buf->handle:0x%x",
- pUnreadableBuffer, buf, buf->handle);
-
- ret = mapper.lock(buf->handle, GRALLOC_USAGE_SW_WRITE_OFTEN, bounds, pVirAddrs);
- if (ret != 0) {
- SEC_OSAL_Log(SEC_LOG_ERROR, "mapper.lock Error, Error code:%d", ret);
- }
- FunctionOut();
-
- return ret;
-}
-
-OMX_U32 putVADDRtoANB(OMX_PTR pUnreadableBuffer)
-{
- android_native_buffer_t *buf;
- void *readableBuffer;
- int ret = 0;
- GraphicBufferMapper &mapper = GraphicBufferMapper::get();
-
- FunctionIn();
-
- buf = (android_native_buffer_t *)pUnreadableBuffer;
-
- FunctionOut();
-
- return mapper.unlock(buf->handle);
-}
-
-OMX_ERRORTYPE enableAndroidNativeBuffer(OMX_HANDLETYPE hComponent, OMX_PTR ComponentParameterStructure)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_BASEPORT *pSECPort = NULL;
-
- EnableAndroidNativeBuffersParams *peanbp;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- peanbp = (EnableAndroidNativeBuffersParams *)ComponentParameterStructure;
- pSECPort = &pSECComponent->pSECPort[peanbp->nPortIndex];
-
- if (peanbp->enable == OMX_FALSE) {
- SEC_OSAL_Log(SEC_LOG_TRACE, "disable AndroidNativeBuffer");
- pSECPort->bUseAndroidNativeBuffer = OMX_FALSE;
- } else {
- SEC_OSAL_Log(SEC_LOG_TRACE, "enable AndroidNativeBuffer");
- pSECPort->bUseAndroidNativeBuffer = OMX_TRUE;
- pSECPort->portDefinition.format.video.eColorFormat = (OMX_COLOR_FORMATTYPE)OMX_SEC_COLOR_FormatANBYUV420SemiPlanar;
- }
-
- ret = OMX_ErrorNone;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE getAndroidNativeBuffer(OMX_HANDLETYPE hComponent, OMX_PTR ComponentParameterStructure)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_BASEPORT *pSECPort = NULL;
-
- GetAndroidNativeBufferUsageParams *pganbp;
-
- FunctionIn();
-
- pganbp = (GetAndroidNativeBufferUsageParams *)ComponentParameterStructure;
-
- pganbp->nUsage = GRALLOC_USAGE_SW_WRITE_OFTEN;
-
- ret = OMX_ErrorNone;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE UseBufferANB(
- OMX_IN OMX_HANDLETYPE hComponent,
- OMX_INOUT OMX_BUFFERHEADERTYPE **ppBufferHdr,
- OMX_IN OMX_U32 nPortIndex,
- OMX_IN OMX_PTR pAppPrivate,
- OMX_IN OMX_U32 nSizeBytes,
- OMX_IN OMX_U8 *pBuffer)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- OMX_BUFFERHEADERTYPE *temp_bufferHeader = NULL;
- int i = 0;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
-
- pSECPort = &pSECComponent->pSECPort[nPortIndex];
- if (nPortIndex >= pSECComponent->portParam.nPorts) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
- if (pSECPort->portState != OMX_StateIdle) {
- ret = OMX_ErrorIncorrectStateOperation;
- goto EXIT;
- }
-
- if (CHECK_PORT_TUNNELED(pSECPort) && CHECK_PORT_BUFFER_SUPPLIER(pSECPort)) {
- ret = OMX_ErrorBadPortIndex;
- goto EXIT;
- }
-
- temp_bufferHeader = (OMX_BUFFERHEADERTYPE *)SEC_OSAL_Malloc(sizeof(OMX_BUFFERHEADERTYPE));
- if (temp_bufferHeader == NULL) {
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
- SEC_OSAL_Memset(temp_bufferHeader, 0, sizeof(OMX_BUFFERHEADERTYPE));
-
- for (i = 0; i < pSECPort->portDefinition.nBufferCountActual; i++) {
- if (pSECPort->bufferStateAllocate[i] == BUFFER_STATE_FREE) {
- pSECPort->bufferHeader[i] = temp_bufferHeader;
- pSECPort->bufferStateAllocate[i] = (BUFFER_STATE_ASSIGNED | HEADER_STATE_ALLOCATED);
- INIT_SET_SIZE_VERSION(temp_bufferHeader, OMX_BUFFERHEADERTYPE);
- temp_bufferHeader->pBuffer = pBuffer;
- temp_bufferHeader->nAllocLen = nSizeBytes;
- temp_bufferHeader->pAppPrivate = pAppPrivate;
- if (nPortIndex == INPUT_PORT_INDEX)
- temp_bufferHeader->nInputPortIndex = INPUT_PORT_INDEX;
- else
- temp_bufferHeader->nOutputPortIndex = OUTPUT_PORT_INDEX;
-
- pSECPort->assignedBufferNum++;
- if (pSECPort->assignedBufferNum == pSECPort->portDefinition.nBufferCountActual) {
- pSECPort->portDefinition.bPopulated = OMX_TRUE;
- /* SEC_OSAL_MutexLock(pSECComponent->compMutex); */
- SEC_OSAL_SemaphorePost(pSECPort->loadedResource);
- /* SEC_OSAL_MutexUnlock(pSECComponent->compMutex); */
- }
- *ppBufferHdr = temp_bufferHeader;
- ret = OMX_ErrorNone;
- goto EXIT;
- }
- }
-
- SEC_OSAL_Free(temp_bufferHeader);
- ret = OMX_ErrorInsufficientResources;
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE useAndroidNativeBuffer(OMX_HANDLETYPE hComponent, OMX_PTR ComponentParameterStructure)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- OMX_U32 frameSize = 0;
- OMX_U32 bufWidth, bufHeight;
- UseAndroidNativeBufferParams *puanbp;
-
- FunctionIn();
-
- puanbp = (UseAndroidNativeBufferParams *)ComponentParameterStructure;
-
- OMX_PTR buffer = (void *)puanbp->nativeBuffer.get();
- android_native_buffer_t *buf = (android_native_buffer_t *)buffer;
- bufWidth = ((buf->width + 15) / 16) * 16;
- bufHeight = ((buf->height + 15) / 16) * 16;
- frameSize = (bufWidth * bufHeight * 3) / 2;
- SEC_OSAL_Log(SEC_LOG_TRACE, "buffer:0x%x, buf:0x%x, buf->handle:0x%x", buffer, buf, buf->handle);
-
- ret = UseBufferANB(hComponent, puanbp->bufferHeader, puanbp->nPortIndex,
- puanbp->pAppPrivate, frameSize, (OMX_U8 *)buffer);
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE enableStoreMetaDataInBuffers(OMX_HANDLETYPE hComponent, OMX_PTR ComponentParameterStructure)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_BASEPORT *pSECPort = NULL;
-
- StoreMetaDataInBuffersParams *pStoreMetaData;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- pStoreMetaData = (StoreMetaDataInBuffersParams*)ComponentParameterStructure;
- pSECPort = &pSECComponent->pSECPort[pStoreMetaData->nPortIndex];
-
- if (pStoreMetaData->bStoreMetaData == OMX_FALSE) {
- SEC_OSAL_Log(SEC_LOG_TRACE, "disable StoreMetaDataInBuffers");
- pSECPort->bStoreMetaDataInBuffer = OMX_FALSE;
- } else {
- SEC_OSAL_Log(SEC_LOG_TRACE, "enable StoreMetaDataInBuffers");
- pSECPort->bStoreMetaDataInBuffer = OMX_TRUE;
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_BOOL isMetadataBufferTypeGrallocSource(OMX_BYTE pInputDataBuffer)
-{
- OMX_U32 type = getMetadataBufferType(pInputDataBuffer);
-
- if (type == kMetadataBufferTypeGrallocSource)
- return OMX_TRUE;
- else
- return OMX_FALSE;
-}
-
-OMX_ERRORTYPE preprocessMetaDataInBuffers(OMX_HANDLETYPE hComponent, OMX_BYTE pInputDataBuffer, BUFFER_ADDRESS_INFO *pInputInfo)
-{
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- OMX_COMPONENTTYPE *pOMXComponent = NULL;
- SEC_OMX_BASECOMPONENT *pSECComponent = NULL;
- SEC_OMX_BASEPORT *pSECPort = NULL;
- OMX_U32 type = 0;
-
- FunctionIn();
-
- if (hComponent == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pOMXComponent = (OMX_COMPONENTTYPE *)hComponent;
- if (pOMXComponent->pComponentPrivate == NULL) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- pSECComponent = (SEC_OMX_BASECOMPONENT *)pOMXComponent->pComponentPrivate;
- pSECPort = &pSECComponent->pSECPort[INPUT_PORT_INDEX];
-
- type = getMetadataBufferType(pInputDataBuffer);
- if (type == kMetadataBufferTypeCameraSource) {
- SEC_OSAL_Memcpy(&pInputInfo->YPhyAddr, pInputDataBuffer + 4, sizeof(void *));
- SEC_OSAL_Memcpy(&pInputInfo->CPhyAddr, pInputDataBuffer + 4 + sizeof(void *), sizeof(void *));
- } else if (type == kMetadataBufferTypeGrallocSource){
- IMG_gralloc_module_public_t *module = (IMG_gralloc_module_public_t *)pSECPort->pIMGGrallocModule;
- OMX_PTR pUnreadableBuffer = NULL;
- OMX_PTR pReadableBuffer = NULL;
- OMX_PTR pVirAddrs[3];
- int err = 0;
-
- pVirAddrs[0] = pSECComponent->processData[INPUT_PORT_INDEX].specificBufferHeader.YVirAddr;
- pVirAddrs[1] = pSECComponent->processData[INPUT_PORT_INDEX].specificBufferHeader.CVirAddr;
- pVirAddrs[2] = NULL;
-
- if (module == NULL) {
- err = hw_get_module(GRALLOC_HARDWARE_MODULE_ID, (const hw_module_t **)&module);
- if(err) {
- SEC_OSAL_Log(SEC_LOG_ERROR, "hw_get_module failed (err=%d)\n", err);
- ret = OMX_ErrorUndefined;
- goto EXIT;
- }
- pSECPort->pIMGGrallocModule = (OMX_PTR)module;
- }
-
- /**************************************/
- /* IMG CSC RGB to NV12 */
- /**************************************/
- buffer_handle_t buf = *((buffer_handle_t *) (pInputDataBuffer + 4));
- SEC_OSAL_Log(SEC_LOG_TRACE, "buffer handle %p)\n", buf);
- err = module->Blit(module, buf, pVirAddrs, HAL_PIXEL_FORMAT_C110_NV12);
- if(err) {
- SEC_OSAL_Log(SEC_LOG_ERROR, "module->Blit() failed (err=%d)\n", err);
- ret = OMX_ErrorUndefined;
- goto EXIT;
- }
-
- pInputInfo->YPhyAddr = pSECComponent->processData[INPUT_PORT_INDEX].specificBufferHeader.YPhyAddr;
- pInputInfo->CPhyAddr = pSECComponent->processData[INPUT_PORT_INDEX].specificBufferHeader.CPhyAddr;
- } else {
- ret = OMX_ErrorNotImplemented;
- goto EXIT;
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-int isTvOutEnabled() {
- char value[PROPERTY_VALUE_MAX];
- property_get("init.svc.tvouthack", value, "");
- return (strcmp(value, "running") == 0);
-}
-
-#endif
diff --git a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Buffer.h b/sec_mm/sec_omx/sec_osal/SEC_OSAL_Buffer.h
deleted file mode 100644
index 4ab32a3..0000000
--- a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Buffer.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OSAL_Buffer.h
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * Jinsung Yang (jsgood.yang@samsung.com)
- * @version 1.0.2
- * @history
- * 2011.5.15 : Create
- */
-
-#ifndef SEC_OSAL_BUFFER
-#define SEC_OSAL_BUFFER
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "OMX_Types.h"
-
-typedef struct {
- void *YPhyAddr; // [IN/OUT] physical address of Y
- void *CPhyAddr; // [IN/OUT] physical address of CbCr
- void *YVirAddr; // [IN/OUT] virtual address of Y
- void *CVirAddr; // [IN/OUT] virtual address of CbCr
- int YSize; // [IN/OUT] input size of Y data
- int CSize; // [IN/OUT] input size of CbCr data
-} BUFFER_ADDRESS_INFO;
-
-
-OMX_ERRORTYPE checkVersionANB(OMX_PTR ComponentParameterStructure);
-OMX_U32 checkPortIndexANB(OMX_PTR ComponentParameterStructure);
-OMX_U32 getMetadataBufferType(const uint8_t *ptr);
-OMX_ERRORTYPE enableAndroidNativeBuffer(OMX_HANDLETYPE hComponent, OMX_PTR ComponentParameterStructure);
-OMX_ERRORTYPE getAndroidNativeBuffer(OMX_HANDLETYPE hComponent, OMX_PTR ComponentParameterStructure);
-OMX_ERRORTYPE useAndroidNativeBuffer(OMX_HANDLETYPE hComponent, OMX_PTR ComponentParameterStructure);
-OMX_U32 getVADDRfromANB(OMX_PTR pUnreadableBuffer, OMX_U32 Width, OMX_U32 Height, void *vaddress[]);
-OMX_U32 putVADDRtoANB(OMX_PTR pUnreadableBuffer);
-OMX_ERRORTYPE enableStoreMetaDataInBuffers(OMX_HANDLETYPE hComponent, OMX_PTR ComponentParameterStructure);
-OMX_BOOL isMetadataBufferTypeGrallocSource(OMX_BYTE pInputDataBuffer);
-OMX_ERRORTYPE preprocessMetaDataInBuffers(OMX_HANDLETYPE hComponent, OMX_BYTE pInputDataBuffer, BUFFER_ADDRESS_INFO *pInputInfo);
-
-int isTvOutEnabled();
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/sec_mm/sec_omx/sec_osal/SEC_OSAL_ETC.c b/sec_mm/sec_omx/sec_osal/SEC_OSAL_ETC.c
deleted file mode 100644
index 66f8355..0000000
--- a/sec_mm/sec_omx/sec_osal/SEC_OSAL_ETC.c
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OSAL_ETC.c
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "SEC_OSAL_Memory.h"
-#include "SEC_OSAL_ETC.h"
-
-
-#ifndef HAVE_GETLINE
-ssize_t getline(char **ppLine, size_t *pLen, FILE *pStream)
-{
- char *pCurrentPointer = NULL;
- size_t const chunk = 512;
-
- size_t defaultBufferSize = chunk + 1;
- size_t retSize = 0;
-
- if (*ppLine == NULL) {
- *ppLine = (char *)malloc(defaultBufferSize);
- if (*ppLine == NULL) {
- retSize = -1;
- goto EXIT;
- }
- *pLen = defaultBufferSize;
- }
- else {
- if (*pLen < defaultBufferSize) {
- *ppLine = (char *)realloc(*ppLine, defaultBufferSize);
- if (*ppLine == NULL) {
- retSize = -1;
- goto EXIT;
- }
- *pLen = defaultBufferSize;
- }
- }
-
- while (1) {
- size_t i;
- size_t j = 0;
- size_t readByte = 0;
-
- pCurrentPointer = *ppLine + readByte;
-
- i = fread(pCurrentPointer, 1, chunk, pStream);
- if (i < chunk && ferror(pStream)) {
- retSize = -1;
- goto EXIT;
- }
- while (j < i) {
- ++j;
- if (*pCurrentPointer++ == (char)'\n') {
- *pCurrentPointer = '\0';
- if (j != i) {
- if (fseek(pStream, j - i, SEEK_CUR)) {
- retSize = -1;
- goto EXIT;
- }
- if (feof(pStream))
- clearerr(pStream);
- }
- readByte += j;
- retSize = readByte;
- goto EXIT;
- }
- }
-
- readByte += j;
- if (feof(pStream)) {
- if (readByte) {
- retSize = readByte;
- goto EXIT;
- }
- if (!i) {
- retSize = -1;
- goto EXIT;
- }
- }
-
- i = ((readByte + (chunk * 2)) / chunk) * chunk;
- if (i != *pLen) {
- *ppLine = (char *)realloc(*ppLine, i);
- if (*ppLine == NULL) {
- retSize = -1;
- goto EXIT;
- }
- *pLen = i;
- }
- }
-
-EXIT:
- return retSize;
-}
-#endif /* HAVE_GETLINE */
-
-OMX_PTR SEC_OSAL_Strcpy(OMX_PTR dest, OMX_PTR src)
-{
- return strcpy(dest, src);
-}
-
-OMX_PTR SEC_OSAL_Strncpy(OMX_PTR dest, OMX_PTR src, size_t num)
-{
- return strncpy(dest, src, num);
-}
-
-OMX_S32 SEC_OSAL_Strcmp(OMX_PTR str1, OMX_PTR str2)
-{
- return strcmp(str1, str2);
-}
-
-OMX_PTR SEC_OSAL_Strcat(OMX_PTR dest, OMX_PTR src)
-{
- return strcat(dest, src);
-}
-
-size_t SEC_OSAL_Strlen(const char *str)
-{
- return strlen(str);
-}
diff --git a/sec_mm/sec_omx/sec_osal/SEC_OSAL_ETC.h b/sec_mm/sec_omx/sec_osal/SEC_OSAL_ETC.h
deleted file mode 100644
index 6c6ede7..0000000
--- a/sec_mm/sec_omx/sec_osal/SEC_OSAL_ETC.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OSAL_ETC.h
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#ifndef SEC_OSAL_ETC
-#define SEC_OSAL_ETC
-
-#include "OMX_Types.h"
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-OMX_PTR SEC_OSAL_Strcpy(OMX_PTR dest, OMX_PTR src);
-OMX_PTR SEC_OSAL_Strncpy(OMX_PTR dest, OMX_PTR src, size_t num);
-OMX_S32 SEC_OSAL_Strcmp(OMX_PTR str1, OMX_PTR str2);
-OMX_PTR SEC_OSAL_Strcat(OMX_PTR dest, OMX_PTR src);
-size_t SEC_OSAL_Strlen(const char *str);
-ssize_t getline(char **ppLine, size_t *len, FILE *stream);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Event.c b/sec_mm/sec_omx/sec_osal/SEC_OSAL_Event.c
deleted file mode 100644
index 51b3ca2..0000000
--- a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Event.c
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-/*
- * @file SEC_OSAL_Event.c
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <pthread.h>
-#include <errno.h>
-
-#include "SEC_OSAL_Memory.h"
-#include "SEC_OSAL_Mutex.h"
-#include "SEC_OSAL_Event.h"
-
-#undef SEC_LOG_TAG
-#define SEC_LOG_TAG "SEC_OSAL_EVENT"
-#define SEC_LOG_OFF
-#include "SEC_OSAL_Log.h"
-
-
-OMX_ERRORTYPE SEC_OSAL_SignalCreate(OMX_HANDLETYPE *eventHandle)
-{
- SEC_OSAL_THREADEVENT *event;
- OMX_ERRORTYPE ret = OMX_ErrorNone;
-
- event = (SEC_OSAL_THREADEVENT *)SEC_OSAL_Malloc(sizeof(SEC_OSAL_THREADEVENT));
- if (!event) {
- ret = OMX_ErrorInsufficientResources;
- goto EXIT;
- }
-
- SEC_OSAL_Memset(event, 0, sizeof(SEC_OSAL_THREADEVENT));
- event->signal = OMX_FALSE;
-
- ret = SEC_OSAL_MutexCreate(&event->mutex);
- if (ret != OMX_ErrorNone) {
- SEC_OSAL_Free(event);
- goto EXIT;
- }
-
- if (pthread_cond_init(&event->condition, NULL)) {
- SEC_OSAL_MutexTerminate(event->mutex);
- SEC_OSAL_Free(event);
- ret = OMX_ErrorUndefined;
- goto EXIT;
- }
-
- *eventHandle = (OMX_HANDLETYPE)event;
- ret = OMX_ErrorNone;
-
-EXIT:
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OSAL_SignalTerminate(OMX_HANDLETYPE eventHandle)
-{
- SEC_OSAL_THREADEVENT *event = (SEC_OSAL_THREADEVENT *)eventHandle;
- OMX_ERRORTYPE ret = OMX_ErrorNone;
-
- if (!event) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- ret = SEC_OSAL_MutexLock(event->mutex);
- if (ret != OMX_ErrorNone) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- if (pthread_cond_destroy(&event->condition)) {
- ret = OMX_ErrorUndefined;
- goto EXIT;
- }
-
- ret = SEC_OSAL_MutexUnlock(event->mutex);
- if (ret != OMX_ErrorNone) {
- ret = OMX_ErrorUndefined;
- goto EXIT;
- }
-
- ret = SEC_OSAL_MutexTerminate(event->mutex);
- if (ret != OMX_ErrorNone) {
- ret = OMX_ErrorUndefined;
- goto EXIT;
- }
-
- SEC_OSAL_Free(event);
-
-EXIT:
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OSAL_SignalReset(OMX_HANDLETYPE eventHandle)
-{
- SEC_OSAL_THREADEVENT *event = (SEC_OSAL_THREADEVENT *)eventHandle;
- OMX_ERRORTYPE ret = OMX_ErrorNone;
-
- if (!event) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- ret = SEC_OSAL_MutexLock(event->mutex);
- if (ret != OMX_ErrorNone) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- event->signal = OMX_FALSE;
-
- SEC_OSAL_MutexUnlock(event->mutex);
-
-EXIT:
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OSAL_SignalSet(OMX_HANDLETYPE eventHandle)
-{
- SEC_OSAL_THREADEVENT *event = (SEC_OSAL_THREADEVENT *)eventHandle;
- OMX_ERRORTYPE ret = OMX_ErrorNone;
-
- if (!event) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- ret = SEC_OSAL_MutexLock(event->mutex);
- if (ret != OMX_ErrorNone) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- event->signal = OMX_TRUE;
- pthread_cond_signal(&event->condition);
-
- SEC_OSAL_MutexUnlock(event->mutex);
-
-EXIT:
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OSAL_SignalWait(OMX_HANDLETYPE eventHandle, OMX_U32 ms)
-{
- SEC_OSAL_THREADEVENT *event = (SEC_OSAL_THREADEVENT *)eventHandle;
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- struct timespec timeout;
- struct timeval now;
- int funcret = 0;
- OMX_U32 tv_us;
-
- FunctionIn();
-
- if (!event) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- gettimeofday(&now, NULL);
-
- tv_us = now.tv_usec + ms * 1000;
- timeout.tv_sec = now.tv_sec + tv_us / 1000000;
- timeout.tv_nsec = (tv_us % 1000000) * 1000;
-
- ret = SEC_OSAL_MutexLock(event->mutex);
- if (ret != OMX_ErrorNone) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
-
- if (ms == 0) {
- if (!event->signal)
- ret = OMX_ErrorTimeout;
- } else if (ms == DEF_MAX_WAIT_TIME) {
- while (!event->signal)
- pthread_cond_wait(&event->condition, (pthread_mutex_t *)(event->mutex));
- ret = OMX_ErrorNone;
- } else {
- while (!event->signal) {
- funcret = pthread_cond_timedwait(&event->condition, (pthread_mutex_t *)(event->mutex), &timeout);
- if ((!event->signal) && (funcret == ETIMEDOUT)) {
- ret = OMX_ErrorTimeout;
- break;
- }
- }
- }
-
- SEC_OSAL_MutexUnlock(event->mutex);
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
diff --git a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Event.h b/sec_mm/sec_omx/sec_osal/SEC_OSAL_Event.h
deleted file mode 100644
index 640d2cc..0000000
--- a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Event.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OSAL_Event.h
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#ifndef SEC_OSAL_EVENT
-#define SEC_OSAL_EVENT
-
-#include <pthread.h>
-#include "OMX_Types.h"
-#include "OMX_Core.h"
-
-
-#define DEF_MAX_WAIT_TIME 0xFFFFFFFF
-
-typedef struct _SEC_OSAL_THREADEVENT
-{
- OMX_BOOL signal;
- OMX_HANDLETYPE mutex;
- pthread_cond_t condition;
-} SEC_OSAL_THREADEVENT;
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-OMX_ERRORTYPE SEC_OSAL_SignalCreate(OMX_HANDLETYPE *eventHandle);
-OMX_ERRORTYPE SEC_OSAL_SignalTerminate(OMX_HANDLETYPE eventHandle);
-OMX_ERRORTYPE SEC_OSAL_SignalReset(OMX_HANDLETYPE eventHandle);
-OMX_ERRORTYPE SEC_OSAL_SignalSet(OMX_HANDLETYPE eventHandle);
-OMX_ERRORTYPE SEC_OSAL_SignalWait(OMX_HANDLETYPE eventHandle, OMX_U32 ms);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Library.c b/sec_mm/sec_omx/sec_osal/SEC_OSAL_Library.c
deleted file mode 100644
index 06ac712..0000000
--- a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Library.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OSAL_Library.c
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <dlfcn.h>
-
-#include "SEC_OSAL_Library.h"
-
-
-void *SEC_OSAL_dlopen(const char *filename, int flag)
-{
- return dlopen(filename, flag);
-}
-
-void *SEC_OSAL_dlsym(void *handle, const char *symbol)
-{
- return dlsym(handle, symbol);
-}
-
-int SEC_OSAL_dlclose(void *handle)
-{
- return dlclose(handle);
-}
-
-const char *SEC_OSAL_dlerror(void)
-{
- return dlerror();
-}
diff --git a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Library.h b/sec_mm/sec_omx/sec_osal/SEC_OSAL_Library.h
deleted file mode 100644
index 687cecd..0000000
--- a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Library.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OSAL_Library.h
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#ifndef SEC_OSAL_LIBRARY
-#define SEC_OSAL_LIBRARY
-
-#include "OMX_Types.h"
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void *SEC_OSAL_dlopen(const char *filename, int flag);
-void *SEC_OSAL_dlsym(void *handle, const char *symbol);
-int SEC_OSAL_dlclose(void *handle);
-const char *SEC_OSAL_dlerror(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Log.c b/sec_mm/sec_omx/sec_osal/SEC_OSAL_Log.c
deleted file mode 100644
index bae4974..0000000
--- a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Log.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OSAL_Log.c
- * @brief
- * @author Yunji Kim (yunji.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#include <utils/Log.h>
-
-#include "SEC_OSAL_Log.h"
-
-
-void _SEC_OSAL_Log(SEC_LOG_LEVEL logLevel, const char *tag, const char *msg, ...)
-{
- va_list argptr;
-
- va_start(argptr, msg);
-
- switch (logLevel) {
- case SEC_LOG_TRACE:
- __android_log_vprint(ANDROID_LOG_DEBUG, tag, msg, argptr);
- break;
- case SEC_LOG_WARNING:
- __android_log_vprint(ANDROID_LOG_WARN, tag, msg, argptr);
- break;
- case SEC_LOG_ERROR:
- __android_log_vprint(ANDROID_LOG_ERROR, tag, msg, argptr);
- break;
- default:
- __android_log_vprint(ANDROID_LOG_VERBOSE, tag, msg, argptr);
- }
-
- va_end(argptr);
-}
diff --git a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Log.h b/sec_mm/sec_omx/sec_osal/SEC_OSAL_Log.h
deleted file mode 100644
index 2f8a6ce..0000000
--- a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Log.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OSAL_Log.h
- * @brief
- * @author Yunji Kim (yunji.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- * 2010.8.27 : Add trace function
- */
-
-#ifndef SEC_OSAL_LOG
-#define SEC_OSAL_LOG
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef SEC_LOG_OFF
-#define SEC_LOG
-#endif
-
-#ifndef SEC_LOG_TAG
-#define SEC_LOG_TAG "SEC_LOG"
-#endif
-
-#ifdef SEC_TRACE_ON
-#define SEC_TRACE
-#endif
-
-typedef enum _LOG_LEVEL
-{
- SEC_LOG_TRACE,
- SEC_LOG_WARNING,
- SEC_LOG_ERROR
-} SEC_LOG_LEVEL;
-
-#ifdef SEC_LOG
-#define SEC_OSAL_Log(a, ...) ((void)_SEC_OSAL_Log(a, SEC_LOG_TAG, __VA_ARGS__))
-#else
-#define SEC_OSAL_Log(a, ...) \
- do { \
- if (a == SEC_LOG_ERROR) \
- ((void)_SEC_OSAL_Log(a, SEC_LOG_TAG, __VA_ARGS__)); \
- } while (0)
-#endif
-
-#ifdef SEC_TRACE
-#define FunctionIn() _SEC_OSAL_Log(SEC_LOG_TRACE, SEC_LOG_TAG, "%s In , Line: %d", __FUNCTION__, __LINE__)
-#define FunctionOut() _SEC_OSAL_Log(SEC_LOG_TRACE, SEC_LOG_TAG, "%s Out , Line: %d", __FUNCTION__, __LINE__)
-#else
-#define FunctionIn() ((void *)0)
-#define FunctionOut() ((void *)0)
-#endif
-
-extern void _SEC_OSAL_Log(SEC_LOG_LEVEL logLevel, const char *tag, const char *msg, ...);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Memory.c b/sec_mm/sec_omx/sec_osal/SEC_OSAL_Memory.c
deleted file mode 100644
index 3579d92..0000000
--- a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Memory.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OSAL_Memory.c
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "SEC_OSAL_Memory.h"
-
-#define SEC_LOG_OFF
-#include "SEC_OSAL_Log.h"
-
-
-static int mem_cnt = 0;
-
-OMX_PTR SEC_OSAL_Malloc(OMX_U32 size)
-{
- mem_cnt++;
- SEC_OSAL_Log(SEC_LOG_TRACE, "alloc count: %d", mem_cnt);
-
- return (OMX_PTR)malloc(size);
-}
-
-void SEC_OSAL_Free(OMX_PTR addr)
-{
- mem_cnt--;
- SEC_OSAL_Log(SEC_LOG_TRACE, "free count: %d", mem_cnt);
-
- if (addr)
- free(addr);
-
- return;
-}
-
-OMX_PTR SEC_OSAL_Memset(OMX_PTR dest, OMX_S32 c, OMX_S32 n)
-{
- return memset(dest, c, n);
-}
-
-OMX_PTR SEC_OSAL_Memcpy(OMX_PTR dest, OMX_PTR src, OMX_S32 n)
-{
- return memcpy(dest, src, n);
-}
-
-OMX_PTR SEC_OSAL_Memmove(OMX_PTR dest, OMX_PTR src, OMX_S32 n)
-{
- return memmove(dest, src, n);
-}
diff --git a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Memory.h b/sec_mm/sec_omx/sec_osal/SEC_OSAL_Memory.h
deleted file mode 100644
index 3a12838..0000000
--- a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Memory.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OSAL_Memory.h
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#ifndef SEC_OSAL_MEMORY
-#define SEC_OSAL_MEMORY
-
-#include "OMX_Types.h"
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-OMX_PTR SEC_OSAL_Malloc(OMX_U32 size);
-void SEC_OSAL_Free(OMX_PTR addr);
-OMX_PTR SEC_OSAL_Memset(OMX_PTR dest, OMX_S32 c, OMX_S32 n);
-OMX_PTR SEC_OSAL_Memcpy(OMX_PTR dest, OMX_PTR src, OMX_S32 n);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Mutex.c b/sec_mm/sec_omx/sec_osal/SEC_OSAL_Mutex.c
deleted file mode 100644
index 146809c..0000000
--- a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Mutex.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OSAL_Mutex.c
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <pthread.h>
-
-#include "SEC_OSAL_Memory.h"
-#include "SEC_OSAL_Mutex.h"
-
-
-OMX_ERRORTYPE SEC_OSAL_MutexCreate(OMX_HANDLETYPE *mutexHandle)
-{
- pthread_mutex_t *mutex;
-
- mutex = (pthread_mutex_t *)SEC_OSAL_Malloc(sizeof(pthread_mutex_t));
- if (!mutex)
- return OMX_ErrorInsufficientResources;
-
- if (pthread_mutex_init(mutex, NULL) != 0)
- return OMX_ErrorUndefined;
-
- *mutexHandle = (OMX_HANDLETYPE)mutex;
- return OMX_ErrorNone;
-}
-
-OMX_ERRORTYPE SEC_OSAL_MutexTerminate(OMX_HANDLETYPE mutexHandle)
-{
- pthread_mutex_t *mutex = (pthread_mutex_t *)mutexHandle;
-
- if (mutex == NULL)
- return OMX_ErrorBadParameter;
-
- if (pthread_mutex_destroy(mutex) != 0)
- return OMX_ErrorUndefined;
-
- SEC_OSAL_Free(mutex);
- return OMX_ErrorNone;
-}
-
-OMX_ERRORTYPE SEC_OSAL_MutexLock(OMX_HANDLETYPE mutexHandle)
-{
- pthread_mutex_t *mutex = (pthread_mutex_t *)mutexHandle;
- int result;
-
- if (mutex == NULL)
- return OMX_ErrorBadParameter;
-
- if (pthread_mutex_lock(mutex) != 0)
- return OMX_ErrorUndefined;
-
- return OMX_ErrorNone;
-}
-
-OMX_ERRORTYPE SEC_OSAL_MutexUnlock(OMX_HANDLETYPE mutexHandle)
-{
- pthread_mutex_t *mutex = (pthread_mutex_t *)mutexHandle;
- int result;
-
- if (mutex == NULL)
- return OMX_ErrorBadParameter;
-
- if (pthread_mutex_unlock(mutex) != 0)
- return OMX_ErrorUndefined;
-
- return OMX_ErrorNone;
-}
diff --git a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Mutex.h b/sec_mm/sec_omx/sec_osal/SEC_OSAL_Mutex.h
deleted file mode 100644
index 70dcd9d..0000000
--- a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Mutex.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OSAL_Mutex.h
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
-*/
-
-#ifndef SEC_OSAL_MUTEX
-#define SEC_OSAL_MUTEX
-
-#include "OMX_Types.h"
-#include "OMX_Core.h"
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-OMX_ERRORTYPE SEC_OSAL_MutexCreate(OMX_HANDLETYPE *mutexHandle);
-OMX_ERRORTYPE SEC_OSAL_MutexTerminate(OMX_HANDLETYPE mutexHandle);
-OMX_ERRORTYPE SEC_OSAL_MutexLock(OMX_HANDLETYPE mutexHandle);
-OMX_ERRORTYPE SEC_OSAL_MutexUnlock(OMX_HANDLETYPE mutexHandle);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Queue.c b/sec_mm/sec_omx/sec_osal/SEC_OSAL_Queue.c
deleted file mode 100644
index 7a6c024..0000000
--- a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Queue.c
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OSAL_Queue.c
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "SEC_OSAL_Memory.h"
-#include "SEC_OSAL_Mutex.h"
-#include "SEC_OSAL_Queue.h"
-
-
-OMX_ERRORTYPE SEC_OSAL_QueueCreate(SEC_QUEUE *queueHandle)
-{
- int i = 0;
- SEC_QElem *newqelem = NULL;
- SEC_QElem *currentqelem = NULL;
- SEC_QUEUE *queue = (SEC_QUEUE *)queueHandle;
-
- OMX_ERRORTYPE ret = OMX_ErrorNone;
-
- if (!queue)
- return OMX_ErrorBadParameter;
-
- ret = SEC_OSAL_MutexCreate(&queue->qMutex);
- if (ret != OMX_ErrorNone)
- return ret;
-
- queue->first = (SEC_QElem *)SEC_OSAL_Malloc(sizeof(SEC_QElem));
- if (queue->first == NULL)
- return OMX_ErrorInsufficientResources;
-
- SEC_OSAL_Memset(queue->first, 0, sizeof(SEC_QElem));
- currentqelem = queue->last = queue->first;
- queue->numElem = 0;
-
- for (i = 0; i < (MAX_QUEUE_ELEMENTS - 2); i++) {
- newqelem = (SEC_QElem *)SEC_OSAL_Malloc(sizeof(SEC_QElem));
- if (newqelem == NULL) {
- while (queue->first != NULL) {
- currentqelem = queue->first->qNext;
- SEC_OSAL_Free((OMX_PTR)queue->first);
- queue->first = currentqelem;
- }
- return OMX_ErrorInsufficientResources;
- } else {
- SEC_OSAL_Memset(newqelem, 0, sizeof(SEC_QElem));
- currentqelem->qNext = newqelem;
- currentqelem = newqelem;
- }
- }
-
- currentqelem->qNext = queue->first;
-
- return OMX_ErrorNone;
-}
-
-OMX_ERRORTYPE SEC_OSAL_QueueTerminate(SEC_QUEUE *queueHandle)
-{
- int i = 0;
- SEC_QElem *currentqelem = NULL;
- SEC_QUEUE *queue = (SEC_QUEUE *)queueHandle;
- OMX_ERRORTYPE ret = OMX_ErrorNone;
-
- if (!queue)
- return OMX_ErrorBadParameter;
-
- for ( i = 0; i < (MAX_QUEUE_ELEMENTS - 2); i++) {
- currentqelem = queue->first->qNext;
- SEC_OSAL_Free(queue->first);
- queue->first = currentqelem;
- }
-
- if(queue->first) {
- SEC_OSAL_Free(queue->first);
- queue->first = NULL;
- }
-
- ret = SEC_OSAL_MutexTerminate(queue->qMutex);
-
- return ret;
-}
-
-int SEC_OSAL_Queue(SEC_QUEUE *queueHandle, void *data)
-{
- SEC_QUEUE *queue = (SEC_QUEUE *)queueHandle;
- if (queue == NULL)
- return -1;
-
- SEC_OSAL_MutexLock(queue->qMutex);
-
- if ((queue->last->data != NULL) || (queue->numElem >= MAX_QUEUE_ELEMENTS)) {
- SEC_OSAL_MutexUnlock(queue->qMutex);
- return -1;
- }
- queue->last->data = data;
- queue->last = queue->last->qNext;
- queue->numElem++;
-
- SEC_OSAL_MutexUnlock(queue->qMutex);
- return 0;
-}
-
-void *SEC_OSAL_Dequeue(SEC_QUEUE *queueHandle)
-{
- void *data = NULL;
- SEC_QUEUE *queue = (SEC_QUEUE *)queueHandle;
- if (queue == NULL)
- return NULL;
-
- SEC_OSAL_MutexLock(queue->qMutex);
-
- if ((queue->first->data == NULL) || (queue->numElem <= 0)) {
- SEC_OSAL_MutexUnlock(queue->qMutex);
- return NULL;
- }
- data = queue->first->data;
- queue->first->data = NULL;
- queue->first = queue->first->qNext;
- queue->numElem--;
-
- SEC_OSAL_MutexUnlock(queue->qMutex);
- return data;
-}
-
-int SEC_OSAL_GetElemNum(SEC_QUEUE *queueHandle)
-{
- int ElemNum = 0;
- SEC_QUEUE *queue = (SEC_QUEUE *)queueHandle;
- if (queue == NULL)
- return -1;
-
- SEC_OSAL_MutexLock(queue->qMutex);
- ElemNum = queue->numElem;
- SEC_OSAL_MutexUnlock(queue->qMutex);
- return ElemNum;
-}
-
-int SEC_OSAL_SetElemNum(SEC_QUEUE *queueHandle, int ElemNum)
-{
- SEC_QUEUE *queue = (SEC_QUEUE *)queueHandle;
- if (queue == NULL)
- return -1;
-
- SEC_OSAL_MutexLock(queue->qMutex);
- queue->numElem = ElemNum;
- SEC_OSAL_MutexUnlock(queue->qMutex);
- return ElemNum;
-}
-
diff --git a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Queue.h b/sec_mm/sec_omx/sec_osal/SEC_OSAL_Queue.h
deleted file mode 100644
index 3f0938f..0000000
--- a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Queue.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OSAL_Queue.h
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#ifndef SEC_OSAL_QUEUE
-#define SEC_OSAL_QUEUE
-
-#include "OMX_Types.h"
-#include "OMX_Core.h"
-
-
-#define MAX_QUEUE_ELEMENTS 10
-
-typedef struct _SEC_QElem
-{
- void *data;
- struct _SEC_QElem *qNext;
-} SEC_QElem;
-
-typedef struct _SEC_QUEUE
-{
- SEC_QElem *first;
- SEC_QElem *last;
- int numElem;
- OMX_HANDLETYPE qMutex;
-} SEC_QUEUE;
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-OMX_ERRORTYPE SEC_OSAL_QueueCreate(SEC_QUEUE *queueHandle);
-OMX_ERRORTYPE SEC_OSAL_QueueTerminate(SEC_QUEUE *queueHandle);
-int SEC_OSAL_Queue(SEC_QUEUE *queueHandle, void *data);
-void *SEC_OSAL_Dequeue(SEC_QUEUE *queueHandle);
-int SEC_OSAL_GetElemNum(SEC_QUEUE *queueHandle);
-int SEC_OSAL_SetElemNum(SEC_QUEUE *queueHandle, int ElemNum);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Semaphore.c b/sec_mm/sec_omx/sec_osal/SEC_OSAL_Semaphore.c
deleted file mode 100644
index 94bc9c8..0000000
--- a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Semaphore.c
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OSAL_Semaphore.c
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <pthread.h>
-#include <semaphore.h>
-
-#include "SEC_OSAL_Memory.h"
-#include "SEC_OSAL_Semaphore.h"
-
-#undef SEC_LOG_TAG
-#define SEC_LOG_TAG "SEC_LOG_SEMA"
-#define SEC_LOG_OFF
-#include "SEC_OSAL_Log.h"
-
-
-OMX_ERRORTYPE SEC_OSAL_SemaphoreCreate(OMX_HANDLETYPE *semaphoreHandle)
-{
- sem_t *sema;
-
- sema = (sem_t *)SEC_OSAL_Malloc(sizeof(sem_t));
- if (!sema)
- return OMX_ErrorInsufficientResources;
-
- if (sem_init(sema, 0, 0) != 0)
- return OMX_ErrorUndefined;
-
- *semaphoreHandle = (OMX_HANDLETYPE)sema;
- return OMX_ErrorNone;
-}
-
-OMX_ERRORTYPE SEC_OSAL_SemaphoreTerminate(OMX_HANDLETYPE semaphoreHandle)
-{
- sem_t *sema = (sem_t *)semaphoreHandle;
-
- if (sema == NULL)
- return OMX_ErrorBadParameter;
-
- if (sem_destroy(sema) != 0)
- return OMX_ErrorUndefined;
-
- SEC_OSAL_Free(sema);
- return OMX_ErrorNone;
-}
-
-OMX_ERRORTYPE SEC_OSAL_SemaphoreWait(OMX_HANDLETYPE semaphoreHandle)
-{
- sem_t *sema = (sem_t *)semaphoreHandle;
-
- FunctionIn();
-
- if (sema == NULL)
- return OMX_ErrorBadParameter;
-
- if (sem_wait(sema) != 0)
- return OMX_ErrorUndefined;
-
- FunctionOut();
-
- return OMX_ErrorNone;
-}
-
-OMX_ERRORTYPE SEC_OSAL_SemaphorePost(OMX_HANDLETYPE semaphoreHandle)
-{
- sem_t *sema = (sem_t *)semaphoreHandle;
-
- FunctionIn();
-
- if (sema == NULL)
- return OMX_ErrorBadParameter;
-
- if (sem_post(sema) != 0)
- return OMX_ErrorUndefined;
-
- FunctionOut();
-
- return OMX_ErrorNone;
-}
-
-OMX_ERRORTYPE SEC_OSAL_Set_SemaphoreCount(OMX_HANDLETYPE semaphoreHandle, OMX_S32 val)
-{
- sem_t *sema = (sem_t *)semaphoreHandle;
-
- if (sema == NULL)
- return OMX_ErrorBadParameter;
-
- if (sem_init(sema, 0, val) != 0)
- return OMX_ErrorUndefined;
-
- return OMX_ErrorNone;
-}
-
-OMX_ERRORTYPE SEC_OSAL_Get_SemaphoreCount(OMX_HANDLETYPE semaphoreHandle, OMX_S32 *val)
-{
- sem_t *sema = (sem_t *)semaphoreHandle;
- OMX_U32 semaVal = 0;
-
- if (sema == NULL)
- return OMX_ErrorBadParameter;
-
- if (sem_getvalue(sema, &semaVal) != 0)
- return OMX_ErrorUndefined;
-
- *val = semaVal;
-
- return OMX_ErrorNone;
-}
diff --git a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Semaphore.h b/sec_mm/sec_omx/sec_osal/SEC_OSAL_Semaphore.h
deleted file mode 100644
index f23d3d6..0000000
--- a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Semaphore.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OSAL_Semaphore.h
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#ifndef SEC_OSAL_SEMAPHORE
-#define SEC_OSAL_SEMAPHORE
-
-#include "OMX_Types.h"
-#include "OMX_Core.h"
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-OMX_ERRORTYPE SEC_OSAL_SemaphoreCreate(OMX_HANDLETYPE *semaphoreHandle);
-OMX_ERRORTYPE SEC_OSAL_SemaphoreTerminate(OMX_HANDLETYPE semaphoreHandle);
-OMX_ERRORTYPE SEC_OSAL_SemaphoreWait(OMX_HANDLETYPE semaphoreHandle);
-OMX_ERRORTYPE SEC_OSAL_SemaphorePost(OMX_HANDLETYPE semaphoreHandle);
-OMX_ERRORTYPE SEC_OSAL_Set_SemaphoreCount(OMX_HANDLETYPE semaphoreHandle, OMX_S32 val);
-OMX_ERRORTYPE SEC_OSAL_Get_SemaphoreCount(OMX_HANDLETYPE semaphoreHandle, OMX_S32 *val);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Thread.c b/sec_mm/sec_omx/sec_osal/SEC_OSAL_Thread.c
deleted file mode 100644
index 3b69d30..0000000
--- a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Thread.c
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OSAL_Thread.c
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <pthread.h>
-#include <semaphore.h>
-#include <errno.h>
-
-#include "SEC_OSAL_Memory.h"
-#include "SEC_OSAL_Thread.h"
-
-#undef SEC_LOG_TAG
-#define SEC_LOG_TAG "SEC_LOG_THREAD"
-#define SEC_LOG_OFF
-#include "SEC_OSAL_Log.h"
-
-
-typedef struct _SEC_THREAD_HANDLE_TYPE
-{
- pthread_t pthread;
- pthread_attr_t attr;
- struct sched_param schedparam;
- int stack_size;
-} SEC_THREAD_HANDLE_TYPE;
-
-
-OMX_ERRORTYPE SEC_OSAL_ThreadCreate(OMX_HANDLETYPE *threadHandle, OMX_PTR function_name, OMX_PTR argument)
-{
- FunctionIn();
-
- int result = 0;
- int detach_ret = 0;
- SEC_THREAD_HANDLE_TYPE *thread;
- OMX_ERRORTYPE ret = OMX_ErrorNone;
-
- thread = SEC_OSAL_Malloc(sizeof(SEC_THREAD_HANDLE_TYPE));
- SEC_OSAL_Memset(thread, 0, sizeof(SEC_THREAD_HANDLE_TYPE));
-
- pthread_attr_init(&thread->attr);
- if (thread->stack_size != 0)
- pthread_attr_setstacksize(&thread->attr, thread->stack_size);
-
- /* set priority */
- if (thread->schedparam.sched_priority != 0)
- pthread_attr_setschedparam(&thread->attr, &thread->schedparam);
-
- detach_ret = pthread_attr_setdetachstate(&thread->attr, PTHREAD_CREATE_JOINABLE);
- if (detach_ret != 0) {
- ret = OMX_ErrorUndefined;
- goto EXIT;
- }
-
- result = pthread_create(&thread->pthread, &thread->attr, function_name, (void *)argument);
- /* pthread_setschedparam(thread->pthread, SCHED_RR, &thread->schedparam); */
-
- switch (result) {
- case 0:
- *threadHandle = (OMX_HANDLETYPE)thread;
- ret = OMX_ErrorNone;
- break;
- case EAGAIN:
- *threadHandle = NULL;
- ret = OMX_ErrorInsufficientResources;
- break;
- default:
- *threadHandle = NULL;
- ret = OMX_ErrorUndefined;
- break;
- }
-
-EXIT:
- FunctionOut();
-
- return ret;
-}
-
-OMX_ERRORTYPE SEC_OSAL_ThreadTerminate(OMX_HANDLETYPE threadHandle)
-{
- FunctionIn();
-
- OMX_ERRORTYPE ret = OMX_ErrorNone;
- SEC_THREAD_HANDLE_TYPE *thread = (SEC_THREAD_HANDLE_TYPE *)threadHandle;
-
- if (!thread) {
- ret = OMX_ErrorBadParameter;
- goto EXIT;
- }
- if (pthread_join(thread->pthread, NULL) != 0) {
- ret = OMX_ErrorUndefined;
- goto EXIT;
- }
-
- SEC_OSAL_Free(thread);
- ret = OMX_ErrorNone;
-
-EXIT:
- FunctionOut();
-
- return ret;
-
-}
-
-OMX_ERRORTYPE SEC_OSAL_ThreadCancel(OMX_HANDLETYPE threadHandle)
-{
- SEC_THREAD_HANDLE_TYPE *thread = (SEC_THREAD_HANDLE_TYPE *)threadHandle;
-
- if (!thread)
- return OMX_ErrorBadParameter;
-
- /* thread_cancel(thread->pthread); */
- pthread_exit(thread->pthread);
- pthread_join(thread->pthread, NULL);
-
- SEC_OSAL_Free(thread);
- return OMX_ErrorNone;
-}
-
-void SEC_OSAL_ThreadExit(void *value_ptr)
-{
- pthread_exit(value_ptr);
- return;
-}
-
-void SEC_OSAL_SleepMillisec(OMX_U32 ms)
-{
- usleep(ms * 1000);
- return;
-}
diff --git a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Thread.h b/sec_mm/sec_omx/sec_osal/SEC_OSAL_Thread.h
deleted file mode 100644
index ccd2609..0000000
--- a/sec_mm/sec_omx/sec_osal/SEC_OSAL_Thread.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- *
- * Copyright 2010 Samsung Electronics S.LSI Co. LTD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * @file SEC_OSAL_Thread.h
- * @brief
- * @author SeungBeom Kim (sbcrux.kim@samsung.com)
- * @version 1.0
- * @history
- * 2010.7.15 : Create
- */
-
-#ifndef SEC_OSAL_THREAD
-#define SEC_OSAL_THREAD
-
-#include "OMX_Types.h"
-#include "OMX_Core.h"
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-OMX_ERRORTYPE SEC_OSAL_ThreadCreate(OMX_HANDLETYPE *threadHandle, OMX_PTR function_name, OMX_PTR argument);
-OMX_ERRORTYPE SEC_OSAL_ThreadTerminate(OMX_HANDLETYPE threadHandle);
-OMX_ERRORTYPE SEC_OSAL_ThreadCancel(OMX_HANDLETYPE threadHandle);
-void SEC_OSAL_ThreadExit(void *value_ptr);
-void SEC_OSAL_SleepMillisec(OMX_U32 ms);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif