Merge "mm-video-v4l2: remove video driver context update in FBD"
diff --git a/conf_files/kona/kona.mk b/conf_files/kona/kona.mk
index 14c7446..9001279 100644
--- a/conf_files/kona/kona.mk
+++ b/conf_files/kona/kona.mk
@@ -10,7 +10,11 @@
$(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
+# Enable CLANG/LLVM integer-overflow sanitization
+TARGET_ENABLE_VIDC_INTSAN := false
+
# Enable DIAG mode for CLANG/LLVM integer-overflow sanitization
+# TARGET_ENABLE_VIDC_INTSAN must be set to 'true' before enabling DIAG mode
# NOTE: DIAG mode should be used only for debug builds
TARGET_ENABLE_VIDC_INTSAN_DIAG := false
diff --git a/conf_files/kona/media_codecs.xml b/conf_files/kona/media_codecs.xml
index 90ca0cc..ffb158e 100644
--- a/conf_files/kona/media_codecs.xml
+++ b/conf_files/kona/media_codecs.xml
@@ -246,8 +246,10 @@
<Quirk name="requires-allocate-on-output-ports" />
<Quirk name="requires-loaded-to-idle-after-allocation" />
<Limit name="size" min="128x128" max="512x512" />
+ <Limit name="alignment" value="2x2" />
+ <Limit name="block-size" value="16x16" />
<Limit name="frame-rate" range="1-20" />
- <Limit name="concurrent-instances" max="6" />
+ <Limit name="concurrent-instances" max="16" />
<Limit name="quality" range="0-100" default="80" />
<Feature name="bitrate-modes" value="CQ" />
</MediaCodec>
@@ -257,6 +259,8 @@
<Quirk name="requires-allocate-on-output-ports" />
<Quirk name="requires-loaded-to-idle-after-allocation" />
<Limit name="size" min="512x512" max="8192x8192" />
+ <Limit name="alignment" value="2x2" />
+ <Limit name="block-size" value="16x16" />
<Limit name="frame-rate" range="1-20" />
<Limit name="concurrent-instances" max="6" />
<Limit name="quality" range="0-100" default="80" />
@@ -509,5 +513,4 @@
</MediaCodec>
</Decoders>
<Include href="media_codecs_google_video.xml" />
- <Include href="media_codecs_vendor_audio.xml" />
</MediaCodecs>
diff --git a/conf_files/kona/media_codecs_vendor.xml b/conf_files/kona/media_codecs_vendor.xml
index f6541b3..496c906 100644
--- a/conf_files/kona/media_codecs_vendor.xml
+++ b/conf_files/kona/media_codecs_vendor.xml
@@ -182,6 +182,7 @@
-->
<MediaCodecs>
+ <Include href="media_codecs_google_audio.xml" />
<Include href="media_codecs_vendor_audio.xml" />
<Include href="media_codecs_google_telephony.xml" />
<Settings>
@@ -246,8 +247,10 @@
<Quirk name="requires-allocate-on-output-ports" />
<Quirk name="requires-loaded-to-idle-after-allocation" />
<Limit name="size" min="128x128" max="512x512" />
+ <Limit name="alignment" value="2x2" />
+ <Limit name="block-size" value="16x16" />
<Limit name="frame-rate" range="1-20" />
- <Limit name="concurrent-instances" max="6" />
+ <Limit name="concurrent-instances" max="16" />
<Limit name="quality" range="0-100" default="80" />
<Feature name="bitrate-modes" value="CQ" />
</MediaCodec>
@@ -257,6 +260,8 @@
<Quirk name="requires-allocate-on-output-ports" />
<Quirk name="requires-loaded-to-idle-after-allocation" />
<Limit name="size" min="512x512" max="8192x8192" />
+ <Limit name="alignment" value="2x2" />
+ <Limit name="block-size" value="16x16" />
<Limit name="frame-rate" range="1-20" />
<Limit name="concurrent-instances" max="6" />
<Limit name="quality" range="0-100" default="80" />
diff --git a/conf_files/kona/system_properties.xml b/conf_files/kona/system_properties.xml
index 1177da9..db77bbc 100644
--- a/conf_files/kona/system_properties.xml
+++ b/conf_files/kona/system_properties.xml
@@ -40,4 +40,5 @@
<property name="vidc_dec_sec_prefetch_size_internal" value="209715200"/>
<property name="vidc_dec_sec_prefetch_size_output" value="13434880"/>
<property name="vidc_enc_bitrate_savings_enable" value="1"/>
+ <property name="vidc_enc_auto_blur_disable" value="0"/>
</configs>
diff --git a/conf_files/lito/media_profiles.xml b/conf_files/lito/media_profiles.xml
index 95ab071..a7ff232 100644
--- a/conf_files/lito/media_profiles.xml
+++ b/conf_files/lito/media_profiles.xml
@@ -27,7 +27,7 @@
<!ATTLIST EncoderProfile quality (high|low) #REQUIRED>
<!ATTLIST EncoderProfile fileFormat (mp4|3gp) #REQUIRED>
<!ATTLIST EncoderProfile duration (30|60) #REQUIRED>
-<!ATTLIST EncoderProfile cameraId (0|1|2|3) #REQUIRED>
+<!ATTLIST EncoderProfile cameraId (0|1|2|3|4|5) #REQUIRED>
<!ELEMENT Video EMPTY>
<!ATTLIST Video codec (h264|h263|m4v) #REQUIRED>
<!ATTLIST Video bitRate CDATA #REQUIRED>
@@ -1100,6 +1100,7 @@
<ImageDecoding memCap="20000000" />
</CamcorderProfiles>
+
<!-- Camera ID 3 -->
<CamcorderProfiles cameraId="3">
@@ -1460,6 +1461,726 @@
</CamcorderProfiles>
+ <!-- Camera ID 4 -->
+ <CamcorderProfiles cameraId="4">
+
+ <EncoderProfile quality="low" fileFormat="3gp" duration="30">
+ <Video codec="h264"
+ bitRate="192000"
+ width="176"
+ height="144"
+ frameRate="30" />
+
+ <Audio codec="amrnb"
+ bitRate="12200"
+ sampleRate="8000"
+ channels="1" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="high" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="42000000"
+ width="4096"
+ height="2160"
+ frameRate="30" />
+
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="qvga" fileFormat="mp4" duration="60">
+ <Video codec="h264"
+ bitRate="512000"
+ width="320"
+ height="240"
+ frameRate="30" />
+
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="cif" fileFormat="3gp" duration="30">
+ <Video codec="h264"
+ bitRate="720000"
+ width="352"
+ height="288"
+ frameRate="30" />
+
+ <Audio codec="amrnb"
+ bitRate="12200"
+ sampleRate="8000"
+ channels="1" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="480p" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="2000000"
+ width="720"
+ height="480"
+ frameRate="30" />
+
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="720p" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="14000000"
+ width="1280"
+ height="720"
+ frameRate="30" />
+
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="1080p" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="20000000"
+ width="1920"
+ height="1080"
+ frameRate="30" />
+
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="qhd" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="42000000"
+ width="2560"
+ height="1440"
+ frameRate="30" />
+
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="2k" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="20000000"
+ width="2048"
+ height="1080"
+ frameRate="30" />
+
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="4kdci" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="42000000"
+ width="4096"
+ height="2160"
+ frameRate="30" />
+
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="2160p" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="42000000"
+ width="3840"
+ height="2160"
+ frameRate="30" />
+
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="qcif" fileFormat="3gp" duration="30">
+ <Video codec="h264"
+ bitRate="192000"
+ width="176"
+ height="144"
+ frameRate="30" />
+
+ <Audio codec="amrnb"
+ bitRate="12200"
+ sampleRate="8000"
+ channels="1" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="vga" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="2000000"
+ width="640"
+ height="480"
+ frameRate="30" />
+
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="timelapselow" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="192000"
+ width="176"
+ height="144"
+ frameRate="30" />
+
+ <!-- audio setting is ignored -->
+ <Audio codec="amrnb"
+ bitRate="12200"
+ sampleRate="8000"
+ channels="1" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="timelapsehigh" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="42000000"
+ width="4096"
+ height="2160"
+ frameRate="30" />
+
+ <!-- audio setting is ignored -->
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="timelapseqcif" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="192000"
+ width="176"
+ height="144"
+ frameRate="30" />
+
+ <!-- audio setting is ignored -->
+ <Audio codec="amrnb"
+ bitRate="12200"
+ sampleRate="8000"
+ channels="1" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="timelapsecif" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="720000"
+ width="352"
+ height="288"
+ frameRate="30" />
+
+ <!-- audio setting is ignored -->
+ <Audio codec="amrnb"
+ bitRate="12200"
+ sampleRate="8000"
+ channels="1" />
+ </EncoderProfile>
+
+
+ <EncoderProfile quality="timelapseqvga" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="512000"
+ width="320"
+ height="240"
+ frameRate="30" />
+
+ <!-- audio setting is ignored -->
+ <Audio codec="amrnb"
+ bitRate="12200"
+ sampleRate="8000"
+ channels="1" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="timelapsevga" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="2000000"
+ width="640"
+ height="480"
+ frameRate="30" />
+
+ <!-- audio setting is ignored -->
+ <Audio codec="amrnb"
+ bitRate="12200"
+ sampleRate="8000"
+ channels="1" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="timelapse480p" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="2000000"
+ width="640"
+ height="480"
+ frameRate="30" />
+
+ <!-- audio setting is ignored -->
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="timelapse720p" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="14000000"
+ width="1280"
+ height="720"
+ frameRate="30" />
+
+ <!-- audio setting is ignored -->
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="timelapse1080p" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="20000000"
+ width="1920"
+ height="1080"
+ frameRate="30" />
+
+ <!-- audio setting is ignored -->
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="timelapseqhd" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="42000000"
+ width="2560"
+ height="1440"
+ frameRate="30" />
+
+ <!-- audio setting is ignored -->
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="timelapse2k" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="20000000"
+ width="2048"
+ height="1080"
+ frameRate="30" />
+
+ <!-- audio setting is ignored -->
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="timelapse4kdci" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="42000000"
+ width="4096"
+ height="2160"
+ frameRate="30" />
+
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="timelapse2160p" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="42000000"
+ width="3840"
+ height="2160"
+ frameRate="30" />
+
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <ImageEncoding quality="95" />
+ <ImageEncoding quality="80" />
+ <ImageEncoding quality="70" />
+ <ImageDecoding memCap="20000000" />
+
+ </CamcorderProfiles>
+
+ <!-- Camera ID 5 -->
+ <CamcorderProfiles cameraId="5">
+
+ <EncoderProfile quality="low" fileFormat="3gp" duration="30">
+ <Video codec="h264"
+ bitRate="192000"
+ width="176"
+ height="144"
+ frameRate="30" />
+
+ <Audio codec="amrnb"
+ bitRate="12200"
+ sampleRate="8000"
+ channels="1" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="high" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="42000000"
+ width="4096"
+ height="2160"
+ frameRate="30" />
+
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="qvga" fileFormat="mp4" duration="60">
+ <Video codec="h264"
+ bitRate="512000"
+ width="320"
+ height="240"
+ frameRate="30" />
+
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="cif" fileFormat="3gp" duration="30">
+ <Video codec="h264"
+ bitRate="720000"
+ width="352"
+ height="288"
+ frameRate="30" />
+
+ <Audio codec="amrnb"
+ bitRate="12200"
+ sampleRate="8000"
+ channels="1" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="480p" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="2000000"
+ width="720"
+ height="480"
+ frameRate="30" />
+
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="720p" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="14000000"
+ width="1280"
+ height="720"
+ frameRate="30" />
+
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="1080p" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="20000000"
+ width="1920"
+ height="1080"
+ frameRate="30" />
+
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="qhd" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="42000000"
+ width="2560"
+ height="1440"
+ frameRate="30" />
+
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="2k" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="20000000"
+ width="2048"
+ height="1080"
+ frameRate="30" />
+
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="4kdci" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="42000000"
+ width="4096"
+ height="2160"
+ frameRate="30" />
+
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="2160p" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="42000000"
+ width="3840"
+ height="2160"
+ frameRate="30" />
+
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="qcif" fileFormat="3gp" duration="30">
+ <Video codec="h264"
+ bitRate="192000"
+ width="176"
+ height="144"
+ frameRate="30" />
+
+ <Audio codec="amrnb"
+ bitRate="12200"
+ sampleRate="8000"
+ channels="1" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="vga" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="2000000"
+ width="640"
+ height="480"
+ frameRate="30" />
+
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="timelapselow" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="192000"
+ width="176"
+ height="144"
+ frameRate="30" />
+
+ <!-- audio setting is ignored -->
+ <Audio codec="amrnb"
+ bitRate="12200"
+ sampleRate="8000"
+ channels="1" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="timelapsehigh" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="42000000"
+ width="4096"
+ height="2160"
+ frameRate="30" />
+
+ <!-- audio setting is ignored -->
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="timelapseqcif" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="192000"
+ width="176"
+ height="144"
+ frameRate="30" />
+
+ <!-- audio setting is ignored -->
+ <Audio codec="amrnb"
+ bitRate="12200"
+ sampleRate="8000"
+ channels="1" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="timelapsecif" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="720000"
+ width="352"
+ height="288"
+ frameRate="30" />
+
+ <!-- audio setting is ignored -->
+ <Audio codec="amrnb"
+ bitRate="12200"
+ sampleRate="8000"
+ channels="1" />
+ </EncoderProfile>
+
+
+ <EncoderProfile quality="timelapseqvga" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="512000"
+ width="320"
+ height="240"
+ frameRate="30" />
+
+ <!-- audio setting is ignored -->
+ <Audio codec="amrnb"
+ bitRate="12200"
+ sampleRate="8000"
+ channels="1" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="timelapsevga" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="2000000"
+ width="640"
+ height="480"
+ frameRate="30" />
+
+ <!-- audio setting is ignored -->
+ <Audio codec="amrnb"
+ bitRate="12200"
+ sampleRate="8000"
+ channels="1" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="timelapse480p" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="2000000"
+ width="640"
+ height="480"
+ frameRate="30" />
+
+ <!-- audio setting is ignored -->
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="timelapse720p" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="14000000"
+ width="1280"
+ height="720"
+ frameRate="30" />
+
+ <!-- audio setting is ignored -->
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="timelapse1080p" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="20000000"
+ width="1920"
+ height="1080"
+ frameRate="30" />
+
+ <!-- audio setting is ignored -->
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="timelapseqhd" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="42000000"
+ width="2560"
+ height="1440"
+ frameRate="30" />
+
+ <!-- audio setting is ignored -->
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="timelapse2k" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="20000000"
+ width="2048"
+ height="1080"
+ frameRate="30" />
+
+ <!-- audio setting is ignored -->
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="timelapse4kdci" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="42000000"
+ width="4096"
+ height="2160"
+ frameRate="30" />
+
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <EncoderProfile quality="timelapse2160p" fileFormat="mp4" duration="30">
+ <Video codec="h264"
+ bitRate="42000000"
+ width="3840"
+ height="2160"
+ frameRate="30" />
+
+ <Audio codec="aac"
+ bitRate="156000"
+ sampleRate="48000"
+ channels="2" />
+ </EncoderProfile>
+
+ <ImageEncoding quality="95" />
+ <ImageEncoding quality="80" />
+ <ImageEncoding quality="70" />
+ <ImageDecoding memCap="20000000" />
+
+ </CamcorderProfiles>
+
<EncoderOutputFileFormat name="3gp" />
<EncoderOutputFileFormat name="mp4" />
diff --git a/libc2dcolorconvert/Android.mk b/libc2dcolorconvert/Android.mk
index 675ebc7..1e7b1a5 100644
--- a/libc2dcolorconvert/Android.mk
+++ b/libc2dcolorconvert/Android.mk
@@ -2,11 +2,13 @@
include $(CLEAR_VARS)
+ifeq ($(TARGET_ENABLE_VIDC_INTSAN), true)
LOCAL_SANITIZE := integer_overflow
ifeq ($(TARGET_ENABLE_VIDC_INTSAN_DIAG), true)
$(warning INTSAN_DIAG_ENABLED)
LOCAL_SANITIZE_DIAG := integer_overflow
endif
+endif
LOCAL_SRC_FILES := \
C2DColorConverter.cpp
diff --git a/libplatformconfig/Android.mk b/libplatformconfig/Android.mk
index b59682f..bde1add 100644
--- a/libplatformconfig/Android.mk
+++ b/libplatformconfig/Android.mk
@@ -19,11 +19,13 @@
LOCAL_CFLAGS := $(COMMON_CFLAGS) $(libplatformconfig-def)
+ifeq ($(TARGET_ENABLE_VIDC_INTSAN), true)
LOCAL_SANITIZE := integer_overflow
ifeq ($(TARGET_ENABLE_VIDC_INTSAN_DIAG), true)
$(warning INTSAN_DIAG_ENABLED)
LOCAL_SANITIZE_DIAG := integer_overflow
endif
+endif
LOCAL_SHARED_LIBRARIES += \
libexpat \
diff --git a/libplatformconfig/PlatformConfig.h b/libplatformconfig/PlatformConfig.h
index f696b2e..cbbb4d2 100644
--- a/libplatformconfig/PlatformConfig.h
+++ b/libplatformconfig/PlatformConfig.h
@@ -72,6 +72,7 @@
vidc_perf_control_enable,
vidc_enc_linear_color_format,
vidc_enc_bitrate_savings_enable,
+ vidc_enc_auto_blur_disable,
} Config_t;
struct configStr {
@@ -93,6 +94,7 @@
{vidc_perf_control_enable, "vidc_perf_control_enable"},
{vidc_enc_linear_color_format, "vidc_enc_linear_color_format"},
{vidc_enc_bitrate_savings_enable, "vidc_enc_bitrate_savings_enable"},
+ {vidc_enc_auto_blur_disable, "vidc_enc_auto_blur_disable"},
};
class Config {
diff --git a/libstagefrighthw/Android.mk b/libstagefrighthw/Android.mk
index cce48e8..5c19539 100644
--- a/libstagefrighthw/Android.mk
+++ b/libstagefrighthw/Android.mk
@@ -30,11 +30,13 @@
LOCAL_CFLAGS := $(PV_CFLAGS_MINUS_VISIBILITY)
+ifeq ($(TARGET_ENABLE_VIDC_INTSAN), true)
LOCAL_SANITIZE := integer_overflow
ifeq ($(TARGET_ENABLE_VIDC_INTSAN_DIAG), true)
$(warning INTSAN_DIAG_ENABLED)
LOCAL_SANITIZE_DIAG := integer_overflow
endif
+endif
ifeq ($(PLATFORM_SDK_VERSION), 18) #JB_MR2
LOCAL_CFLAGS += -DANDROID_JELLYBEAN_MR2=1
diff --git a/mm-core/Android.mk b/mm-core/Android.mk
index 2be2844..f20c0eb 100644
--- a/mm-core/Android.mk
+++ b/mm-core/Android.mk
@@ -72,10 +72,13 @@
LOCAL_HEADER_LIBRARIES := \
libutils_headers
+ifeq ($(TARGET_ENABLE_VIDC_INTSAN), true)
LOCAL_SANITIZE := integer_overflow
-ifeq ($(TARGET_MSM_VIDC_INTSAN_DIAG),true)
+ifeq ($(TARGET_ENABLE_VIDC_INTSAN_DIAG), true)
+$(warning INTSAN_DIAG_ENABLED)
LOCAL_SANITIZE_DIAG := integer_overflow
endif
+endif
LOCAL_PRELINK_MODULE := false
LOCAL_MODULE := libOmxCore
@@ -124,10 +127,13 @@
endif
LOCAL_CFLAGS := $(OMXCORE_CFLAGS)
+ifeq ($(TARGET_ENABLE_VIDC_INTSAN), true)
LOCAL_SANITIZE := integer_overflow
-ifeq ($(TARGET_MSM_VIDC_INTSAN_DIAG),true)
+ifeq ($(TARGET_ENABLE_VIDC_INTSAN_DIAG), true)
+$(warning INTSAN_DIAG_ENABLED)
LOCAL_SANITIZE_DIAG := integer_overflow
endif
+endif
LOCAL_SRC_FILES := src/common/omx_core_cmp.cpp
LOCAL_SRC_FILES += src/common/qc_omx_core.c
diff --git a/mm-video-v4l2/vidc/common/Android.mk b/mm-video-v4l2/vidc/common/Android.mk
index 9896cb1..9625fc0 100644
--- a/mm-video-v4l2/vidc/common/Android.mk
+++ b/mm-video-v4l2/vidc/common/Android.mk
@@ -41,11 +41,13 @@
LOCAL_C_INCLUDES := $(libmm-vidc-inc)
# The type of overflow check must be specified for static libraries
+ifeq ($(TARGET_ENABLE_VIDC_INTSAN), true)
LOCAL_SANITIZE := signed-integer-overflow unsigned-integer-overflow
ifeq ($(TARGET_ENABLE_VIDC_INTSAN_DIAG), true)
$(warning INTSAN_DIAG_ENABLED)
LOCAL_SANITIZE_DIAG := signed-integer-overflow unsigned-integer-overflow
endif
+endif
LOCAL_PRELINK_MODULE := false
LOCAL_SHARED_LIBRARIES := liblog libcutils libdl
diff --git a/mm-video-v4l2/vidc/vdec/Android.mk b/mm-video-v4l2/vidc/vdec/Android.mk
index cab611b..08d3490 100644
--- a/mm-video-v4l2/vidc/vdec/Android.mk
+++ b/mm-video-v4l2/vidc/vdec/Android.mk
@@ -103,11 +103,13 @@
LOCAL_VENDOR_MODULE := true
LOCAL_CFLAGS := $(libmm-vdec-def) -Werror
+ifeq ($(TARGET_ENABLE_VIDC_INTSAN), true)
LOCAL_SANITIZE := integer_overflow
ifeq ($(TARGET_ENABLE_VIDC_INTSAN_DIAG), true)
$(warning INTSAN_DIAG_ENABLED)
LOCAL_SANITIZE_DIAG := integer_overflow
endif
+endif
LOCAL_HEADER_LIBRARIES := \
media_plugin_headers \
@@ -148,11 +150,13 @@
LOCAL_VENDOR_MODULE := true
LOCAL_CFLAGS := $(libmm-vdec-def)
+ifeq ($(TARGET_ENABLE_VIDC_INTSAN), true)
LOCAL_SANITIZE := integer_overflow
ifeq ($(TARGET_ENABLE_VIDC_INTSAN_DIAG), true)
$(warning INTSAN_DIAG_ENABLED)
LOCAL_SANITIZE_DIAG := integer_overflow
endif
+endif
LOCAL_HEADER_LIBRARIES := \
media_plugin_headers \
diff --git a/mm-video-v4l2/vidc/vdec/src/omx_swvdec.cpp b/mm-video-v4l2/vidc/vdec/src/omx_swvdec.cpp
index 7ecd92c..6707653 100644
--- a/mm-video-v4l2/vidc/vdec/src/omx_swvdec.cpp
+++ b/mm-video-v4l2/vidc/vdec/src/omx_swvdec.cpp
@@ -264,6 +264,12 @@
goto component_init_exit;
}
+ if ((retval_swvdec = swvdec_check_inst_load(m_swvdec_handle)) !=
+ SWVDEC_STATUS_SUCCESS)
+ {
+ retval = retval_swvdec2omx(retval_swvdec);
+ goto component_init_exit;
+ }
m_swvdec_created = true;
if ((retval = set_frame_dimensions(DEFAULT_FRAME_WIDTH,
diff --git a/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp b/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
index 13eff1c..dac88ca 100644
--- a/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
+++ b/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
@@ -173,8 +173,8 @@
vdec_msg.msgdata.output_frame.client_data=(void*)&v4l2_buf;
vdec_msg.msgdata.output_frame.len=plane[0].bytesused;
vdec_msg.msgdata.output_frame.bufferaddr=(void*)plane[0].m.userptr;
- vdec_msg.msgdata.output_frame.time_stamp= ((uint64_t)v4l2_buf.timestamp.tv_sec * (uint64_t)1000000) +
- (uint64_t)v4l2_buf.timestamp.tv_usec;
+ vdec_msg.msgdata.output_frame.time_stamp= ((int64_t)v4l2_buf.timestamp.tv_sec * (int64_t)1000000) +
+ (int64_t)v4l2_buf.timestamp.tv_usec;
if (omx->async_message_process(input,&vdec_msg) < 0) {
DEBUG_PRINT_HIGH("async_message_thread Exited");
diff --git a/mm-video-v4l2/vidc/venc/Android.mk b/mm-video-v4l2/vidc/venc/Android.mk
index 661a576..adf9aed 100644
--- a/mm-video-v4l2/vidc/venc/Android.mk
+++ b/mm-video-v4l2/vidc/venc/Android.mk
@@ -83,11 +83,13 @@
LOCAL_VENDOR_MODULE := true
LOCAL_CFLAGS := $(libmm-venc-def)
+ifeq ($(TARGET_ENABLE_VIDC_INTSAN), true)
LOCAL_SANITIZE := integer_overflow
ifeq ($(TARGET_ENABLE_VIDC_INTSAN_DIAG), true)
$(warning INTSAN_DIAG_ENABLED)
LOCAL_SANITIZE_DIAG := integer_overflow
endif
+endif
LOCAL_HEADER_LIBRARIES := \
media_plugin_headers \
@@ -131,11 +133,13 @@
LOCAL_VENDOR_MODULE := true
LOCAL_CFLAGS := $(libmm-venc-def)
+ifeq ($(TARGET_ENABLE_VIDC_INTSAN), true)
LOCAL_SANITIZE := integer_overflow
ifeq ($(TARGET_ENABLE_VIDC_INTSAN_DIAG), true)
$(warning INTSAN_DIAG_ENABLED)
LOCAL_SANITIZE_DIAG := integer_overflow
endif
+endif
LOCAL_HEADER_LIBRARIES := \
media_plugin_headers \
diff --git a/mm-video-v4l2/vidc/venc/inc/video_encoder_device_v4l2.h b/mm-video-v4l2/vidc/venc/inc/video_encoder_device_v4l2.h
index 15b9b23..18b87f7 100644
--- a/mm-video-v4l2/vidc/venc/inc/video_encoder_device_v4l2.h
+++ b/mm-video-v4l2/vidc/venc/inc/video_encoder_device_v4l2.h
@@ -368,6 +368,7 @@
bool is_gralloc_source_ubwc;
bool is_camera_source_ubwc;
bool is_csc_custom_matrix_enabled;
+ bool is_auto_blur_disabled;
bool csc_enable;
OMX_U32 fd_list[64];
unsigned long get_media_colorformat(unsigned long);
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 3c11c40..2418f7d 100644
--- a/mm-video-v4l2/vidc/venc/src/omx_swvenc_mpeg4.cpp
+++ b/mm-video-v4l2/vidc/venc/src/omx_swvenc_mpeg4.cpp
@@ -189,6 +189,14 @@
RETURN(OMX_ErrorInsufficientResources);
}
+ sRet = swvenc_check_inst_load(m_hSwVenc);
+ if (sRet != SWVENC_S_SUCCESS)
+ {
+ DEBUG_PRINT_ERROR("swvenc_init returned %d, ret insufficient resources",
+ sRet);
+ RETURN(OMX_ErrorInsufficientResources);
+ }
+
m_stopped = true;
//Intialise the OMX layer variables
@@ -3085,13 +3093,14 @@
size = handle->size;
}
}
- int status = munmap(p_ipbuffer->p_buffer, size);
- DEBUG_PRINT_HIGH("Unmapped pBuffer <%p> size <%d> status <%d>", p_ipbuffer->p_buffer, size, status);
+
+ DEBUG_PRINT_HIGH("Unmapping pBuffer <%p> size <%d>", p_ipbuffer->p_buffer, size);
+ if (-1 == munmap(p_ipbuffer->p_buffer, size))
+ DEBUG_PRINT_HIGH("Unmap failed");
}
#endif
post_event ((unsigned long)omxhdr,error,OMX_COMPONENT_GENERATE_EBD);
}
-
RETURN(eRet);
}
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
old mode 100644
new mode 100755
index 4c22640..9335666
--- a/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp
+++ b/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp
@@ -167,6 +167,8 @@
(int32_t *)&m_debug.out_buffer_log, 0);
Platform::Config::getInt32(Platform::vidc_enc_csc_custom_matrix,
(int32_t *)&is_csc_custom_matrix_enabled, 0);
+ Platform::Config::getInt32(Platform::vidc_enc_auto_blur_disable,
+ (int32_t *)&is_auto_blur_disabled, 0);
char property_value[PROPERTY_VALUE_MAX] = {0};
@@ -633,7 +635,7 @@
unsigned int index = 0;
int height = m_sVenc_cfg.input_height;
int width = m_sVenc_cfg.input_width;
- OMX_TICKS nTimeStamp = buf.timestamp.tv_sec * 1000000 + buf.timestamp.tv_usec;
+ OMX_TICKS nTimeStamp = static_cast<OMX_TICKS>(buf.timestamp.tv_sec) * 1000000 + buf.timestamp.tv_usec;
int fd = buf.m.planes[0].reserved[0];
char *p_extradata = NULL;
OMX_OTHER_EXTRADATATYPE *data = NULL;
@@ -1480,9 +1482,13 @@
idrperiod.idrperiod = 1;
minqp = 0;
maxqp = 51;
- if (codec == OMX_VIDEO_CodingImageHEIC)
+ if (codec == OMX_VIDEO_CodingImageHEIC) {
+ m_sVenc_cfg.input_width = DEFAULT_TILE_DIMENSION;
+ m_sVenc_cfg.input_height= DEFAULT_TILE_DIMENSION;
+ m_sVenc_cfg.dvs_width = DEFAULT_TILE_DIMENSION;
+ m_sVenc_cfg.dvs_height = DEFAULT_TILE_DIMENSION;
codec_profile.profile = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE;
- else
+ } else
codec_profile.profile = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN;
profile_level.level = V4L2_MPEG_VIDEO_HEVC_LEVEL_1;
}
@@ -1567,6 +1573,13 @@
ret = ioctl(m_nDriver_fd, VIDIOC_S_FMT, &fmt);
m_sInput_buff_property.datasize=fmt.fmt.pix_mp.plane_fmt[0].sizeimage;
+ if (m_codec == OMX_VIDEO_CodingImageHEIC) {
+ if (!venc_set_grid_enable()) {
+ DEBUG_PRINT_ERROR("Failed to enable grid");
+ return false;
+ }
+ }
+
bufreq.memory = V4L2_MEMORY_USERPTR;
bufreq.count = 2;
@@ -1621,6 +1634,14 @@
DEBUG_PRINT_ERROR("Failed to set V4L2_CID_MPEG_VIDC_VIDEO_NUM_P_FRAME\n");
}
+ //Disable auto blur by default
+ if (is_auto_blur_disabled) {
+ control.id = V4L2_CID_MPEG_VIDC_VIDEO_BLUR_DIMENSIONS;
+ control.value = 0x2;
+ if (ioctl(m_nDriver_fd, VIDIOC_S_CTRL, &control))
+ DEBUG_PRINT_ERROR("Failed to set V4L2_CID_MPEG_VIDC_VIDEO_BLUR_DIMENSIONS\n");
+ }
+
/* Enable Low power mode by default for better power */
@@ -1801,19 +1822,6 @@
return false;
}
- // Increase buffer-header count for metadata-mode on input port
- // to improve buffering and reduce bottlenecks in clients
- if (metadatamode) {
- DEBUG_PRINT_LOW("FW returned buffer count = %d , overwriting with 9",
- control.value);
- minCount = 9;
- }
-
- if (m_sVenc_cfg.input_height * m_sVenc_cfg.input_width >= 3840*2160) {
- DEBUG_PRINT_LOW("Increasing buffer count = %d to 11", minCount);
- minCount = 11;
- }
-
/* Need more buffers for HFR usecase */
if (operating_rate >= 120 || (m_sVenc_cfg.fps_num / m_sVenc_cfg.fps_den) >= 120) {
minCount = MAX(minCount, 16);