Merge remote-tracking branch 'goog/qcom/release/LA.UM.8.9.R1.10.00.00.558.053' into qt-qpr1-dev
Bug: 144079922
Change-Id: I0386d5fc7ad8b95d73b1a1b43490eb05b21feeea
diff --git a/conf_files/atoll/media_profiles.xml b/conf_files/atoll/media_profiles.xml
index 95ab071..38aa45e 100644
--- a/conf_files/atoll/media_profiles.xml
+++ b/conf_files/atoll/media_profiles.xml
@@ -111,7 +111,7 @@
<EncoderProfile quality="high" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="42000000"
- width="4096"
+ width="3840"
height="2160"
frameRate="30" />
@@ -281,7 +281,7 @@
<EncoderProfile quality="timelapsehigh" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="42000000"
- width="4096"
+ width="3840"
height="2160"
frameRate="30" />
@@ -470,7 +470,7 @@
<EncoderProfile quality="high" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="42000000"
- width="4096"
+ width="3840"
height="2160"
frameRate="30" />
@@ -633,7 +633,7 @@
<EncoderProfile quality="timelapsehigh" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="42000000"
- width="4096"
+ width="3840"
height="2160"
frameRate="30" />
@@ -1119,7 +1119,7 @@
<EncoderProfile quality="high" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="42000000"
- width="4096"
+ width="3840"
height="2160"
frameRate="30" />
@@ -1289,7 +1289,7 @@
<EncoderProfile quality="timelapsehigh" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="42000000"
- width="4096"
+ width="3840"
height="2160"
frameRate="30" />
diff --git a/conf_files/sm6150/c2_manifest.xml b/conf_files/sm6150/c2_manifest.xml
new file mode 100644
index 0000000..0c7048c
--- /dev/null
+++ b/conf_files/sm6150/c2_manifest.xml
@@ -0,0 +1,39 @@
+<!-- Copyright (c) 2018, The Linux Foundation. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+<manifest version="1.0" type="device" target-level="3">
+ <!-- Codec2 HAl service -->
+ <hal format="hidl">
+ <name>android.hardware.media.c2</name>
+ <transport>hwbinder</transport>
+ <version>1.0</version>
+ <interface>
+ <name>IComponentStore</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+</manifest>
diff --git a/conf_files/sm6150/codec2.vendor.ext.policy b/conf_files/sm6150/codec2.vendor.ext.policy
new file mode 100644
index 0000000..df836de
--- /dev/null
+++ b/conf_files/sm6150/codec2.vendor.ext.policy
@@ -0,0 +1,36 @@
+# Copyright (c) 2019, The Linux Foundation. All rights reserved.
+
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following
+# disclaimer in the documentation and/or other materials provided
+# with the distribution.
+# * Neither the name of The Linux Foundation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# device specific syscalls
+pselect6: 1
+eventfd2: 1
+sendto: 1
+recvfrom: 1
+_llseek: 1
+sysinfo: 1
+getcwd: 1
+getdents64: 1
diff --git a/conf_files/sm6150/sm6150.mk b/conf_files/sm6150/sm6150.mk
index 032b54a..8c6a090 100644
--- a/conf_files/sm6150/sm6150.mk
+++ b/conf_files/sm6150/sm6150.mk
@@ -4,6 +4,7 @@
# Video configuration files
PRODUCT_COPY_FILES += \
+ $(CONFIG_PATH)/codec2.vendor.ext.policy:$(TARGET_COPY_OUT_VENDOR)/etc/seccomp_policy/codec2.vendor.ext.policy \
$(CONFIG_PATH)/media_codecs.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs.xml \
$(CONFIG_PATH)/media_codecs_performance.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_performance.xml \
$(CONFIG_PATH)/media_codecs_vendor.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_vendor.xml \
@@ -18,6 +19,18 @@
$(CONFIG_PATH)/mediacodec-seccomp.policy:$(TARGET_COPY_OUT_VENDOR)/etc/seccomp_policy/mediacodec.policy \
$(CONFIG_PATH)/system_properties.xml:$(TARGET_COPY_OUT_VENDOR)/etc/system_properties.xml
+# Produce packages addition
+PRODUCT_PACKAGES += \
+ libcodec2_vndk.vendor \
+ libcodec2_hidl@1.0.vendor
+
+ifeq ($(TARGET_FWK_SUPPORTS_FULL_VALUEADDS),true)
+ $(warning "Compiling with full value-added framework")
+else
+ $(warning "Compiling without full value-added framework - enabling GENERIC_ODM_IMAGE")
+ GENERIC_ODM_IMAGE := true
+endif
+
# Vendor property overrides
ifeq ($(GENERIC_ODM_IMAGE),true)
@@ -31,3 +44,8 @@
PRODUCT_PROPERTY_OVERRIDES += debug.stagefright.omx_default_rank.sw-audio=1
PRODUCT_PROPERTY_OVERRIDES += debug.stagefright.omx_default_rank=0
endif
+
+# Enable Codec2.0 HAL for pure AOSP variants.
+ifeq ($(GENERIC_ODM_IMAGE),true)
+DEVICE_MANIFEST_FILE += hardware/qcom/media/conf_files/$(MSMSTEPPE)/c2_manifest.xml
+endif
\ No newline at end of file
diff --git a/mm-video-v4l2/vidc/venc/inc/omx_video_base.h b/mm-video-v4l2/vidc/venc/inc/omx_video_base.h
index b667be1..2de1f27 100644
--- a/mm-video-v4l2/vidc/venc/inc/omx_video_base.h
+++ b/mm-video-v4l2/vidc/venc/inc/omx_video_base.h
@@ -141,6 +141,8 @@
#define LEGACY_CAM_METADATA_TYPE encoder_media_buffer_type
#endif
+class omx_video;
+void post_message(omx_video *omx, unsigned char id);
void* message_thread_enc(void *);
bool is_ubwc_interlaced(private_handle_t *handle);
diff --git a/mm-video-v4l2/vidc/venc/src/omx_swvenc_mpeg4.cpp b/mm-video-v4l2/vidc/venc/src/omx_swvenc_mpeg4.cpp
index 955814d..6fd85a9 100644
--- a/mm-video-v4l2/vidc/venc/src/omx_swvenc_mpeg4.cpp
+++ b/mm-video-v4l2/vidc/venc/src/omx_swvenc_mpeg4.cpp
@@ -2073,6 +2073,13 @@
DEBUG_PRINT_HIGH("Calling swvenc_deinit()");
swvenc_deinit(m_hSwVenc);
+ if (msg_thread_created) {
+ msg_thread_created = false;
+ msg_thread_stop = true;
+ post_message(this, OMX_COMPONENT_CLOSE_MSG);
+ DEBUG_PRINT_HIGH("omx_video: Waiting on Msg Thread exit");
+ pthread_join(msg_thread_id,NULL);
+ }
DEBUG_PRINT_HIGH("OMX_Venc:Component Deinit");
RETURN(OMX_ErrorNone);
diff --git a/mm-video-v4l2/vidc/venc/src/omx_video_base.cpp b/mm-video-v4l2/vidc/venc/src/omx_video_base.cpp
index cb42c74..5c6c8db 100644
--- a/mm-video-v4l2/vidc/venc/src/omx_video_base.cpp
+++ b/mm-video-v4l2/vidc/venc/src/omx_video_base.cpp
@@ -330,13 +330,6 @@
omx_video::~omx_video()
{
DEBUG_PRINT_HIGH("~omx_video(): Inside Destructor()");
- if (msg_thread_created) {
- msg_thread_stop = true;
- post_message(this, OMX_COMPONENT_CLOSE_MSG);
- DEBUG_PRINT_HIGH("omx_video: Waiting on Msg Thread exit");
- pthread_join(msg_thread_id,NULL);
- }
- DEBUG_PRINT_HIGH("omx_video: Waiting on Async Thread exit");
/*For V4L2 based drivers, pthread_join is done in device_close
* so no need to do it here*/
pthread_mutex_destroy(&m_lock);
diff --git a/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp b/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp
index 9e75fcb..a54dd78 100755
--- a/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp
+++ b/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp
@@ -1937,6 +1937,13 @@
if (async_thread_created)
pthread_join(m_tid,NULL);
+ if (venc_handle->msg_thread_created) {
+ venc_handle->msg_thread_created = false;
+ venc_handle->msg_thread_stop = true;
+ post_message(venc_handle, omx_video::OMX_COMPONENT_CLOSE_MSG);
+ DEBUG_PRINT_HIGH("omx_video: Waiting on Msg Thread exit");
+ pthread_join(venc_handle->msg_thread_id, NULL);
+ }
DEBUG_PRINT_HIGH("venc_close X");
unsubscribe_to_events(m_nDriver_fd);
close(m_poll_efd);