diff options
author | Vinay Kalia <vkalia@codeaurora.org> | 2014-07-31 12:34:21 -0700 |
---|---|---|
committer | Shalaj Jain <shalajj@codeaurora.org> | 2014-08-06 12:10:34 -0700 |
commit | 7c8ab489c6113baed54c066a5ea4dbf8a3b4a220 (patch) | |
tree | 9754109bb7e85325d1786ea56ee63a06255a6f0b | |
parent | 32590c334b7682448e180857d5d6b260502e7737 (diff) | |
download | media-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
-rw-r--r-- | mm-video-v4l2/Android.mk | 1 | ||||
-rw-r--r-- | mm-video-v4l2/vidc/common/Android.mk | 48 | ||||
-rw-r--r-- | mm-video-v4l2/vidc/common/src/extra_data_handler.cpp | 4 | ||||
-rw-r--r-- | mm-video-v4l2/vidc/vdec/Android.mk | 14 | ||||
-rw-r--r-- | mm-video-v4l2/vidc/vdec/src/omx_vdec_hevc.cpp | 2 | ||||
-rw-r--r-- | mm-video-v4l2/vidc/vdec/src/omx_vdec_hevc_swvdec.cpp | 2 | ||||
-rw-r--r-- | mm-video-v4l2/vidc/vdec/src/omx_vdec_msm8974.cpp | 1 | ||||
-rw-r--r-- | mm-video-v4l2/vidc/venc/Android.mk | 2 | ||||
-rw-r--r-- | mm-video-v4l2/vidc/venc/src/omx_video_encoder.cpp | 1 |
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 |