summaryrefslogtreecommitdiff
path: root/mm-video-v4l2
diff options
context:
space:
mode:
authorVinay Kalia <vkalia@codeaurora.org>2014-07-31 12:34:21 -0700
committerShalaj Jain <shalajj@codeaurora.org>2014-08-06 12:10:34 -0700
commit7c8ab489c6113baed54c066a5ea4dbf8a3b4a220 (patch)
tree9754109bb7e85325d1786ea56ee63a06255a6f0b /mm-video-v4l2
parent32590c334b7682448e180857d5d6b260502e7737 (diff)
downloadmedia-7c8ab489c6113baed54c066a5ea4dbf8a3b4a220.tar.gz
mm-video: common: Fix race conditions during compilation
The intermediate obj files for the source code files in common directory were being created in out directory under common location. Both libOmxVdec and libOmxVenc were referring to the obj files from this location. Since compilation of both Vdec and Venc can go in parallel, this results in a compile time race condition. Fix those by compiling common source files as a static library and including this library in vdec and venc. Change-Id: Ie03da79063f21e56c8fe078ac7078b963b2e0c34
Diffstat (limited to 'mm-video-v4l2')
-rw-r--r--mm-video-v4l2/Android.mk1
-rw-r--r--mm-video-v4l2/vidc/common/Android.mk48
-rw-r--r--mm-video-v4l2/vidc/common/src/extra_data_handler.cpp4
-rw-r--r--mm-video-v4l2/vidc/vdec/Android.mk14
-rw-r--r--mm-video-v4l2/vidc/vdec/src/omx_vdec_hevc.cpp2
-rw-r--r--mm-video-v4l2/vidc/vdec/src/omx_vdec_hevc_swvdec.cpp2
-rw-r--r--mm-video-v4l2/vidc/vdec/src/omx_vdec_msm8974.cpp1
-rw-r--r--mm-video-v4l2/vidc/venc/Android.mk2
-rw-r--r--mm-video-v4l2/vidc/venc/src/omx_video_encoder.cpp1
9 files changed, 59 insertions, 16 deletions
diff --git a/mm-video-v4l2/Android.mk b/mm-video-v4l2/Android.mk
index 4bda2e1f..487eb3e2 100644
--- a/mm-video-v4l2/Android.mk
+++ b/mm-video-v4l2/Android.mk
@@ -1,6 +1,7 @@
OMX_VIDEO_PATH := $(call my-dir)
include $(CLEAR_VARS)
+include $(OMX_VIDEO_PATH)/vidc/common/Android.mk
include $(OMX_VIDEO_PATH)/vidc/vdec/Android.mk
include $(OMX_VIDEO_PATH)/vidc/venc/Android.mk
include $(OMX_VIDEO_PATH)/vidc/test/Android.mk
diff --git a/mm-video-v4l2/vidc/common/Android.mk b/mm-video-v4l2/vidc/common/Android.mk
new file mode 100644
index 00000000..f8d0d4a7
--- /dev/null
+++ b/mm-video-v4l2/vidc/common/Android.mk
@@ -0,0 +1,48 @@
+ifneq ($(BUILD_TINY_ANDROID),true)
+
+ROOT_DIR := $(call my-dir)
+
+include $(CLEAR_VARS)
+LOCAL_PATH:= $(ROOT_DIR)
+
+# ---------------------------------------------------------------------------------
+# Common definitons
+# ---------------------------------------------------------------------------------
+
+libmm-vidc-def := -g -O3 -Dlrintf=_ffix_r
+libmm-vidc-def += -D__align=__alignx
+libmm-vidc-def += -D__alignx\(x\)=__attribute__\(\(__aligned__\(x\)\)\)
+libmm-vidc-def += -DT_ARM
+libmm-vidc-def += -Dinline=__inline
+libmm-vidc-def += -D_ANDROID_
+libmm-vidc-def += -Werror
+libmm-vidc-def += -D_ANDROID_ICS_
+
+# ---------------------------------------------------------------------------------
+# Make the Shared library (libOmxVidcCommon)
+# ---------------------------------------------------------------------------------
+
+libmm-vidc-inc := $(LOCAL_PATH)/inc
+libmm-vidc-inc += $(TOP)/hardware/qcom/media/mm-core/inc
+libmm-vidc-inc += $(TARGET_OUT_HEADERS)/qcom/display
+libmm-vidc-inc += $(TOP)/hardware/qcom/media/libc2dcolorconvert
+libmm-vidc-inc += $(TOP)/frameworks/av/include/media/stagefright
+libmm-vidc-inc += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include
+
+LOCAL_MODULE := libOmxVidcCommon
+LOCAL_MODULE_TAGS := optional
+LOCAL_CFLAGS := $(libmm-vidc-def)
+LOCAL_C_INCLUDES := $(libmm-vidc-inc)
+
+LOCAL_PRELINK_MODULE := false
+LOCAL_SHARED_LIBRARIES := liblog libutils libcutils libdl
+
+LOCAL_SRC_FILES := src/extra_data_handler.cpp
+LOCAL_SRC_FILES += src/vidc_color_converter.cpp
+
+include $(BUILD_STATIC_LIBRARY)
+endif #BUILD_TINY_ANDROID
+
+# ---------------------------------------------------------------------------------
+# END
+# ---------------------------------------------------------------------------------
diff --git a/mm-video-v4l2/vidc/common/src/extra_data_handler.cpp b/mm-video-v4l2/vidc/common/src/extra_data_handler.cpp
index fd998446..187eb77a 100644
--- a/mm-video-v4l2/vidc/common/src/extra_data_handler.cpp
+++ b/mm-video-v4l2/vidc/common/src/extra_data_handler.cpp
@@ -1,5 +1,5 @@
/*--------------------------------------------------------------------------
-Copyright (c) 2010-2013, The Linux Foundation. All rights reserved.
+Copyright (c) 2010-2014, The Linux Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
@@ -28,6 +28,8 @@ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "extra_data_handler.h"
+int debug_level = PRIO_ERROR;
+
extra_data_handler::extra_data_handler()
{
rbsp_buf = (OMX_U8 *) calloc(1,100);
diff --git a/mm-video-v4l2/vidc/vdec/Android.mk b/mm-video-v4l2/vidc/vdec/Android.mk
index b61d803e..73367b93 100644
--- a/mm-video-v4l2/vidc/vdec/Android.mk
+++ b/mm-video-v4l2/vidc/vdec/Android.mk
@@ -131,9 +131,9 @@ libmm-vdec-inc += $(TARGET_OUT_HEADERS)/adreno
libmm-vdec-inc += $(TOP)/frameworks/native/include/media/openmax
libmm-vdec-inc += $(TOP)/frameworks/native/include/media/hardware
libmm-vdec-inc += $(vdec-inc)
-libmm-vdec-inc += $(TOP)/hardware/qcom/media/libc2dcolorconvert
-libmm-vdec-inc += $(TOP)/frameworks/av/include/media/stagefright
-libmm-vdec-inc += $(TARGET_OUT_HEADERS)/mm-video/SwVdec
+libmm-vdec-inc += $(TOP)/hardware/qcom/media/libc2dcolorconvert
+libmm-vdec-inc += $(TOP)/frameworks/av/include/media/stagefright
+libmm-vdec-inc += $(TARGET_OUT_HEADERS)/mm-video/SwVdec
ifeq ($(PLATFORM_SDK_VERSION), 18) #JB_MR2
libOmxVdec-def += -DANDROID_JELLYBEAN_MR2=1
@@ -162,12 +162,11 @@ LOCAL_SRC_FILES += src/h264_utils.cpp
LOCAL_SRC_FILES += src/ts_parser.cpp
LOCAL_SRC_FILES += src/mp4_utils.cpp
LOCAL_SRC_FILES += src/hevc_utils.cpp
+LOCAL_STATIC_LIBRARIES := libOmxVidcCommon
ifneq (,$(filter msm8974 msm8610 msm8226 apq8084 mpq8092 msm_bronze msm8916 msm8994 ferrum,$(TARGET_BOARD_PLATFORM)))
LOCAL_SRC_FILES += src/omx_vdec_msm8974.cpp
endif
-LOCAL_SRC_FILES += ../common/src/extra_data_handler.cpp
-LOCAL_SRC_FILES += ../common/src/vidc_color_converter.cpp
LOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr
include $(BUILD_SHARED_LIBRARY)
@@ -210,11 +209,10 @@ endif
LOCAL_SRC_FILES += src/hevc_utils.cpp
-LOCAL_SRC_FILES += ../common/src/extra_data_handler.cpp
-LOCAL_SRC_FILES += ../common/src/vidc_color_converter.cpp
+LOCAL_STATIC_LIBRARIES := libOmxVidcCommon
LOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr
-LOCAL_32_BIT_ONLY := true
+LOCAL_32_BIT_ONLY := true
include $(BUILD_SHARED_LIBRARY)
diff --git a/mm-video-v4l2/vidc/vdec/src/omx_vdec_hevc.cpp b/mm-video-v4l2/vidc/vdec/src/omx_vdec_hevc.cpp
index c7fa8834..9960bfc8 100644
--- a/mm-video-v4l2/vidc/vdec/src/omx_vdec_hevc.cpp
+++ b/mm-video-v4l2/vidc/vdec/src/omx_vdec_hevc.cpp
@@ -136,8 +136,6 @@ extern "C" {
#define DEFAULT_EXTRADATA (OMX_INTERLACE_EXTRADATA)
-int debug_level = PRIO_ERROR;
-
void* async_message_thread (void *input)
{
OMX_BUFFERHEADERTYPE *buffer;
diff --git a/mm-video-v4l2/vidc/vdec/src/omx_vdec_hevc_swvdec.cpp b/mm-video-v4l2/vidc/vdec/src/omx_vdec_hevc_swvdec.cpp
index cef7c338..3b894d2a 100644
--- a/mm-video-v4l2/vidc/vdec/src/omx_vdec_hevc_swvdec.cpp
+++ b/mm-video-v4l2/vidc/vdec/src/omx_vdec_hevc_swvdec.cpp
@@ -123,8 +123,6 @@ extern "C"{
#define DEFAULT_EXTRADATA (OMX_INTERLACE_EXTRADATA)
-int debug_level = PRIO_ERROR;
-
static OMX_U32 maxSmoothStreamingWidth = 1920;
static OMX_U32 maxSmoothStreamingHeight = 1088;
void* async_message_thread (void *input)
diff --git a/mm-video-v4l2/vidc/vdec/src/omx_vdec_msm8974.cpp b/mm-video-v4l2/vidc/vdec/src/omx_vdec_msm8974.cpp
index 092ccc53..43b55606 100644
--- a/mm-video-v4l2/vidc/vdec/src/omx_vdec_msm8974.cpp
+++ b/mm-video-v4l2/vidc/vdec/src/omx_vdec_msm8974.cpp
@@ -128,7 +128,6 @@ extern "C" {
#define DEFAULT_EXTRADATA (OMX_INTERLACE_EXTRADATA)
#define DEFAULT_CONCEAL_COLOR "32784" //0x8010, black by default
-int debug_level = PRIO_ERROR;
static OMX_U32 maxSmoothStreamingWidth = 1920;
static OMX_U32 maxSmoothStreamingHeight = 1088;
diff --git a/mm-video-v4l2/vidc/venc/Android.mk b/mm-video-v4l2/vidc/venc/Android.mk
index 6f8e01e6..7108215e 100644
--- a/mm-video-v4l2/vidc/venc/Android.mk
+++ b/mm-video-v4l2/vidc/venc/Android.mk
@@ -126,6 +126,7 @@ LOCAL_C_INCLUDES := $(libmm-venc-inc)
LOCAL_PRELINK_MODULE := false
LOCAL_SHARED_LIBRARIES := liblog libutils libbinder libcutils \
libc2dcolorconvert libdl libgui
+LOCAL_STATIC_LIBRARIES := libOmxVidcCommon
LOCAL_SRC_FILES := src/omx_video_base.cpp
LOCAL_SRC_FILES += src/omx_video_encoder.cpp
@@ -137,7 +138,6 @@ endif
LOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr
-LOCAL_SRC_FILES += ../common/src/extra_data_handler.cpp
include $(BUILD_SHARED_LIBRARY)
endif #BUILD_TINY_ANDROID
diff --git a/mm-video-v4l2/vidc/venc/src/omx_video_encoder.cpp b/mm-video-v4l2/vidc/venc/src/omx_video_encoder.cpp
index 93fd5135..a4992f3c 100644
--- a/mm-video-v4l2/vidc/venc/src/omx_video_encoder.cpp
+++ b/mm-video-v4l2/vidc/venc/src/omx_video_encoder.cpp
@@ -50,7 +50,6 @@ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
(_s_)->nVersion.nVersion = OMX_SPEC_VERSION
extern int m_pipe;
-int debug_level = PRIO_ERROR;
static int bframes;
static int entropy;
// factory function executed by the core to create instances