...
 
Commits (43)
......@@ -33,6 +33,15 @@ TARGET_OTA_ASSERT_DEVICE := foster,darcy,mdarcy,sif,jetson,porg,loki,icosa
# Bootloader versions
TARGET_BOARD_INFO_FILE := device/nvidia/foster/board-info.txt
# Manifest
DEVICE_MANIFEST_FILE := device/nvidia/foster/manifest.xml
# Bluetooth
ifeq ($(TARGET_TEGRA_BT),bcm)
BOARD_CUSTOM_BT_CONFIG := device/nvidia/foster/comms/vnd_foster.txt
BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := device/nvidia/foster/comms
endif
# Kernel
KERNEL_TOOLCHAIN := $(shell pwd)/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-gnu-6.4.1/bin
KERNEL_TOOLCHAIN_PREFIX := aarch64-linux-gnu-
......@@ -42,17 +51,35 @@ BOARD_KERNEL_IMAGE_NAME := Image.gz
BOARD_KERNEL_BASE := 0x80080000
BOARD_KERNEL_PAGESIZE := 4096
# Light
include hardware/nvidia/light/BoardLight.mk
# Lineage Hardware Support
JAVA_SOURCE_OVERLAYS := org.lineageos.hardware|device/nvidia/foster/lineagehw|**/*.java
# Recovery
TARGET_RECOVERY_FSTAB := device/nvidia/foster/initfiles/fstab.foster
BOARD_SUPPRESS_EMMC_WIPE := true
# Releasetools
TARGET_RELEASETOOLS_EXTENSIONS := device/nvidia/foster/releasetools
# Security Patch Level
VENDOR_SECURITY_PATCH := 2019-07-05
# Treble
BOARD_PROPERTY_OVERRIDES_SPLIT_ENABLED := true
BOARD_VNDK_VERSION := current
PRODUCT_FULL_TREBLE_OVERRIDE := true
# TWRP Support
ifeq ($(WITH_TWRP),true)
include device/nvidia/foster/twrp/twrp.mk
endif
#Vendor Init
TARGET_INIT_VENDOR_LIB := libinit_foster
include device/nvidia/t210-common/BoardConfigCommon.mk
include device/nvidia/touch/BoardConfigTouch.mk
include vendor/nvidia/foster/BoardConfigVendor.mk
# Copyright (C) 2018 The LineageOS 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_MODULE := wifi_scan_config.conf
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := wifi_scan_config.conf
LOCAL_MODULE_RELATIVE_PATH := wifi
include $(BUILD_PREBUILT)
/*
* Copyright (C) 2012 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 _BDROID_BUILDCFG_H
#define _BDROID_BUILDCFG_H
// SERVICE_CLASS:0x5A (Bit17 -Networking,Bit19 - Capturing,Bit20 -Object Transfer,Bit22 -Telephony)
// MAJOR CLASS: COMPUTER
// MINOR CLASS: TABLET
#define BTA_DM_COD {0x5A, 0x01, 0x10}
// SERVICE_CLASS:0x20 (Bit18 - Rendering)
// MAJOR CLASS: AUDIO/VIDEO
// MINOR CLASS: set top box
#define BTA_DM_COD_ATV {0x20, BTM_COD_MAJOR_AUDIO, BTM_COD_MINOR_SET_TOP_BOX}
#define BTIF_HF_WBS_PREFERRED TRUE
#define BTM_WBS_INCLUDED TRUE
#define BLE_VND_INCLUDED TRUE
#define BTSNOOP_MEM_BUFFER_SIZE (1024 * 1024)
#define DEBUG_FS_UART_PATH "/d/70006300.serial/tty_buffer_count"
// To sync with CONN TIMEOUT of pepper
#define BTM_BLE_CONN_TIMEOUT_DEF 1000
// Increase MAX GATT notification to 75
#define BTA_GATTC_NOTIF_REG_MAX 75
#endif
BLUETOOTH_UART_DEVICE_PORT = "/dev/ttyTHS3"
FW_PATCHFILE_LOCATION = "/vendor/firmware/"
#Device no movement time configuration in seconds
devicenomovementtime=120
#Device max exponential time in seconds, after max time expo time will be reset.
maxexpotime=300
#ATV:Block Settings Page Scan outside network page when Ethernet is connected
scan={
app=com.android.tv.settings
rate=-1
#Ethernet case
nvappproperty=connectivity.state:ethernet
nvappproperty=settings.uipage:other
#ATV check
appproperty=ro.product.model:SHIELD Android TV
#Block scan
scanpolicy=1:block_scan -W 8 1 536 2 -H 3 -n 1 -a 3 -p 3 -h 32 -c 1-14*8,36-165*4
}
#ATV: BLOCK SCAN WHEN TS is having a2dp in sniff mode
scan={
app=DEFAULT
rate=-1
#APP PROPERTY
appproperty=ro.product.model:SHIELD Android TV
nvappproperty=pc2shield.state:active ||
nvappproperty=grid2shield.state:active ||
appproperty=bluetooth.ts.a2dp.sniff:1
#NVAPP PROPERTY
nvappproperty=settings.uipage:other
#BLOCK SCAN
scanpolicy=1:block_scan -W 8 1 536 2 -H 3 -n 1 -a 3 -p 3 -h 32 -c 1-14*8,36-165*4
}
#ATV specific WHEN ETHERNET NETWORK IS CONNECTED- DO Fast Scan
scan={
app=DEFAULT
#Ethernet case
nvappproperty=connectivity.state:ethernet
nvappproperty=settings.uipage:other
#ATV check
appproperty=ro.product.model:SHIELD Android TV
#Do fast scan
scanpolicy=atv_fast_scan -H 100 -n 1 -a 10 -p 130 -h 45
}
#ATV specific WHEN Wi-FI IS CONNECTED- DO Fast Scan
scan={
app=DEFAULT
# Wi-Fi connected
wpastate=CONNECTED
nvappproperty=settings.uipage:other
#ATV check
appproperty=ro.product.model:SHIELD Android TV
#Do fast scan
scanpolicy=atv_fast_scan -H 100 -n 2 -a 10 -p 130 -h 45
}
#G.S/BLAKE/CAST PROFILE
scan={
app=DEFAULT
rate=15
#SCAN RATE VALUE FOR DISPLAY TURNED OFF
displayoffrate=300
#APP PROPERTIES
nvappproperty=blake.conn.count:>0 ||
nvappproperty=pc2shield.state:active ||
appproperty=sys.cast.on:1 ||
nvappproperty=grid2shield.state:active
#ALLOW ONLY IF DISPLAY IS ON
#display=1
#ALLOW ONLY FOREGROUND APP
#foreground=1
#ENABLE SCAN EXPONENTIAL
scanexponential=1
#REPEAT EACH CHANNEL 2.4 GHZ 8 times and 5GHZ 4 times.
#ALLIGN BLAKE PKT 8ms, 1 p2p interface, 536 pkt size, 2 count
scanpolicy=1:blake_activea -W 8 1 536 2 -H 3 -n 1 -a 3 -p 3 -h 32 -c 1-14*8,36-165*4
scanpolicy=1:blake_activea -W 8 1 536 2 -H 3 -n 1 -a 3 -p 3 -h 32 -c 1-14*8,36-165*4
scanpolicy=1:blake_activea -W 8 1 536 2 -H 3 -n 1 -a 3 -p 3 -h 32 -c 1-14*8,36-165*4
#PASSIVE SCANNING
#-O optional is used only if DFS(PASSIVE) channels are not available.
scanpolicy=1:blake_passivea -W 8 1 536 2 -H 3 -a 3 -p 3 -h 32 -c 12-14*34 -- -W 8 1 536 2 -H 5 -a 5 -p 5 -h 32 -c 52-59*34 -- -W 8 1 536 2 -H 5 -a 5 -p 5 -h 32 -c 60-79*34 -- -O -W 8 1 536 2 -H 3 -n 1 -a 3 -p 3 -h 32 -c 1-14*8,36-165*4
scanpolicy=1:blake_activea -W 8 1 536 2 -H 3 -n 1 -a 3 -p 3 -h 32 -c 1-14*8,36-165*4
scanpolicy=1:blake_passiveb -W 8 1 536 2 -H 5 -a 5 -p 5 -h 32 -c 80-99*34 -- -W 8 1 536 2 -H 5 -a 5 -p 5 -h 32 -c 100-119*34 -- -W 8 1 536 2 -H 5 -a 5 -p 5 -h 32 -c 120-139*34 -- -W 8 1 536 2 -O -H 3 -n 1 -a 3 -p 3 -h 32 -c 1-14*8,36-165*4
}
#DEFAULT ASSOCIATED PROFILE
scan={
app=DEFAULT
wpastate=CONNECTED
rate=15
#SCAN RATE VALUE FOR DISPLAY TURNED OFF
displayoffrate=300
#APP PROPERTY
nvappproperty=blake.conn.count:0
#ENABLE SCAN EXPONENTIAL
scanexponential=1
#ALLOW ONLY IF DISPLAY IS ON
#display=1
#ALLOW ONLY FOREGROUND APP
#foreground=1
scanpolicy=default_assoc -H 100 -n 2 -a 35 -p 130 -h 45 -c 1-13 -- -H 100 -n 2 -a 35 -p 130 -h 45 -c 36-100 -- -H 100 -n 2 -a 35 -p 130 -h 45 -c 100-165
}
#THIS IS LAST RULE IF any of the above rule doesnt match
scan={
app=DEFAULT
wpastate=SCANNING
rate=15
#SCAN RATE VALUE FOR DISPLAY TURNED OFF
displayoffrate=300
#APP PROPERTY
nvappproperty=blake.conn.count:0
#ENABLE SCAN EXPONENTIAL
scanexponential=1
#PNO contains TIME REPEAT EXPONENTIAL, PNO scans every 5min
pno=150 1 1
#appproperty=wifi.interface:wlan0
scanpolicy=default_unassoc -H 100 -n 2 -a 65 -p 130 -h 45 -c 1-13 -- -H 100 -n 2 -a 65 -p 130 -h 45 -c 36-100 -- -H 100 -n 2 -a 65 -p 130 -h 45 -c 100-165
}
......@@ -17,7 +17,28 @@
TARGET_REFERENCE_DEVICE ?= foster
TARGET_TEGRA_VARIANT := common
TARGET_TEGRA_AUDIO ?= nvaudio
TARGET_TEGRA_BT ?= bcm
TARGET_TEGRA_CEC ?= nvhdmi
TARGET_TEGRA_KEYSTORE ?= nvkeystore
TARGET_TEGRA_MEMTRACK ?= nvmemtrack
TARGET_TEGRA_OMX ?= nvmm64
TARGET_TEGRA_PHS ?= nvphs
TARGET_TEGRA_POWER ?= lineage
TARGET_TEGRA_WIDEVINE ?= true
TARGET_TEGRA_WIFI ?= bcm
$(call inherit-product, device/nvidia/t210-common/t210.mk)
$(call inherit-product, device/nvidia/touch/raydium.mk)
$(call inherit-product, device/nvidia/touch/shtouch.mk)
# Only include Shield apps for first party targets
ifneq ($(filter $(word 2,$(subst _, ,$(TARGET_PRODUCT))), foster foster_tab),)
$(call inherit-product, device/nvidia/shield-common/shield.mk)
endif
# System properties
include $(LOCAL_PATH)/system_prop.mk
PRODUCT_CHARACTERISTICS := tv
PRODUCT_AAPT_CONFIG := xlarge large
......@@ -35,6 +56,10 @@ PRODUCT_VENDOR_PROPERTY_BLACKLIST := \
ro.product.vendor.name \
ro.vendor.build.fingerprint
# Overlays
DEVICE_PACKAGE_OVERLAYS += \
device/nvidia/foster/overlay
# Init related
PRODUCT_PACKAGES += \
init_tegra \
......@@ -104,3 +129,105 @@ PRODUCT_PACKAGES += \
power.porg.rc \
power.porg_sd.rc \
power.sif.rc
# Permissions
PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.audio.low_latency.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.low_latency.xml \
frameworks/native/data/etc/android.hardware.ethernet.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.ethernet.xml
# ATV specific stuff
ifeq ($(PRODUCT_IS_ATV),true)
$(call inherit-product-if-exists, vendor/google/atv/atv-common.mk)
PRODUCT_PACKAGES += \
android.hardware.tv.input@1.0-impl
endif
# Audio
ifeq ($(TARGET_TEGRA_AUDIO),nvaudio)
PRODUCT_PACKAGES += \
audio_effects.xml \
audio_policy_configuration.xml \
dragon_nvaudio_conf.xml \
icosa_nvaudio_conf.xml \
icosa_emmc_nvaudio_conf.xml \
nvaudio_conf.xml \
nvaudio_fx.xml
endif
# Charger
PRODUCT_PACKAGES += \
charger \
charger_res_images
# EKS
ifeq ($(TARGET_TEGRA_KEYSTORE),nvkeystore)
PRODUCT_PACKAGES += \
eks2_darcy.dat \
eks2_foster.dat \
eks2_mdarcy.dat \
eks2_public.dat \
eks2_sif.dat
endif
# Joycon daemon
PRODUCT_PACKAGES += \
joycond
# Light
PRODUCT_PACKAGES += \
android.hardware.light@2.0-service-nvidia
# Loadable kernel modules
PRODUCT_PACKAGES += \
init.lkm.rc \
lkm_loader
# Media config
PRODUCT_COPY_FILES += \
frameworks/av/media/libstagefright/data/media_codecs_google_audio.xml:$(TARGET_COPY_OUT_ODM)/etc/media_codecs_google_audio.xml \
frameworks/av/media/libstagefright/data/media_codecs_google_video.xml:$(TARGET_COPY_OUT_ODM)/etc/media_codecs_google_video.xml
PRODUCT_PACKAGES += \
media_codecs.xml
ifneq ($(filter $(TARGET_TEGRA_OMX), nvmm nvmm64),)
PRODUCT_PACKAGES += \
media_codecs_performance.xml \
media_profiles_V1_0.xml
endif
# Netflix nrdp
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/permissions/nrdp.modelgroup.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/nrdp.modelgroup.xml
# NVIDIA specific permissions
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/permissions/com.nvidia.feature.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.nvidia.feature.xml
# PHS
ifeq ($(TARGET_TEGRA_PHS),nvphs)
PRODUCT_PACKAGES += \
nvphsd.conf
endif
# Thermal
PRODUCT_PACKAGES += \
android.hardware.thermal@1.0-service-nvidia \
thermalhal.jetson_cv.xml \
thermalhal.jetson_e.xml \
thermalhal.loki_e_lte.xml \
thermalhal.loki_e_wifi.xml
# Trust HAL
PRODUCT_PACKAGES += \
vendor.lineage.trust@1.0-service
# Variant blobs script
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/releasetools/variant_blobs.sh:install/bin/variant_blobs.sh
# WiFi
ifeq ($(TARGET_TEGRA_WIFI),bcm)
PRODUCT_PACKAGES += \
cypress-fmac \
wifi_scan_config.conf
endif
#
# Copyright (C) 2019 The LineageOS 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_MODULE := eks2_foster.dat
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := eks2_foster.dat
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/app/eks2
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := eks2_darcy.dat
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := eks2_darcy.dat
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/app/eks2
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := eks2_mdarcy.dat
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := eks2_mdarcy.dat
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/app/eks2
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := eks2_public.dat
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := eks2_public.dat
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/app/eks2
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := eks2_sif.dat
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := eks2_sif.dat
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/app/eks2
include $(BUILD_PREBUILT)
#!/bin/bash
#
# Copyright (C) 2018 The LineageOS 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.
#
set -e
DEVICE=foster
VENDOR=nvidia
# Load extract_utils and do some sanity checks
MY_DIR="${BASH_SOURCE%/*}"
if [[ ! -d "$MY_DIR" ]]; then MY_DIR="$PWD"; fi
LINEAGE_ROOT="$MY_DIR"/../../..
HELPER="$LINEAGE_ROOT"/vendor/lineage/build/tools/extract_utils.sh
if [ ! -f "$HELPER" ]; then
echo "Unable to find helper script at $HELPER"
exit 1
fi
. "$HELPER"
while [ "$1" != "" ]; do
case $1 in
-n | --no-cleanup ) CLEAN_VENDOR=false
;;
-s | --section ) shift
SECTION=$1
CLEAN_VENDOR=false
;;
* ) SRC=$1
;;
esac
shift
done
if [ -z "$SRC" ]; then
SRC=adb
fi
# Initialize the helper
setup_vendor "$DEVICE" "$VENDOR" "$LINEAGE_ROOT" false "$CLEAN_VENDOR"
extract "$MY_DIR"/proprietary-files.txt "$SRC" "$SECTION"
"$MY_DIR"/setup-makefiles.sh
......@@ -494,3 +494,11 @@ LOCAL_MODULE_CLASS := ETC
LOCAL_ODM_MODULE := true
LOCAL_SRC_FILES := power.darcy.rc
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := lkm_loader
LOCAL_SRC_FILES := lkm_loader.sh
LOCAL_MODULE_SUFFIX := .sh
LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_VENDOR_MODULE := true
include $(BUILD_PREBUILT)
This diff is collapsed.
[
{
"repository": "android_device_nvidia_shield-common",
"target_path": "device/nvidia/shield-common"
},
{
"repository": "android_device_nvidia_t210-common",
"target_path": "device/nvidia/t210-common"
},
{
"repository": "android_kernel_nvidia_cypress-fmac",
"target_path": "kernel/nvidia/cypress-fmac"
},
{
"repository": "android_kernel_nvidia_linux-4.9_kernel_kernel-4.9",
"target_path": "kernel/nvidia/linux-4.9/kernel/kernel-4.9"
},
{
"repository": "android_hardware_nvidia_thermal",
"target_path": "hardware/nvidia/thermal"
}
]
/*
* Copyright (C) 2018 The LineageOS 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.
*/
package org.lineageos.hardware;
import org.lineageos.internal.util.FileUtils;
/**
* NVIDIA SmartDimmer adaptive backlight implementation
*
* {@link frameworks/opt/hardware/src/org/cyanogenmod/hardware/AdaptiveBacklight.java}
*/
public class AdaptiveBacklight {
private static final String SMARTDIMMER_SYSFS =
"/sys/devices/platform/host1x/tegradc.0/smartdimmer/enable";
public static boolean isSupported() {
return true;
}
public static boolean isEnabled() {
try {
String value = FileUtils.readOneLine(SMARTDIMMER_SYSFS);
if (value == null) {
return false;
}
return Integer.parseInt(value) == 1;
} catch (NumberFormatException nfex) {
return false;
}
}
public static boolean setEnabled(boolean status) {
return FileUtils.writeLine(SMARTDIMMER_SYSFS, status ? "1" : "0");
}
}
<manifest version="1.0" type="device">
<hal format="hidl">
<name>vendor.lineage.trust</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IUsbRestrict</name>
<instance>default</instance>
</interface>
</hal>
</manifest>
# Copyright (C) 2018 The LineageOS 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_MODULE := audio_effects.xml
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := audio_effects.xml
LOCAL_VENDOR_MODULE := true
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := audio_policy_configuration.xml
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := audio_policy_configuration_nv.xml
LOCAL_VENDOR_MODULE := true
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := dragon_nvaudio_conf.xml
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := dragon_nvaudio_conf.xml
LOCAL_VENDOR_MODULE := true
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := icosa_nvaudio_conf.xml
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := icosa_nvaudio_conf.xml
LOCAL_VENDOR_MODULE := true
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := icosa_emmc_nvaudio_conf.xml
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := icosa_nvaudio_conf.xml
LOCAL_VENDOR_MODULE := true
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := nvaudio_conf.xml
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := nvaudio_conf.xml
LOCAL_VENDOR_MODULE := true
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := nvaudio_fx.xml
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := nvaudio_fx.xml
LOCAL_VENDOR_MODULE := true
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := media_codecs.xml
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
ifneq ($(filter $(TARGET_TEGRA_OMX), nvmm nvmm64),)
LOCAL_SRC_FILES := media_codecs.xml
else
LOCAL_SRC_FILES := media_codecs_sw.xml
endif
LOCAL_ODM_MODULE := true
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := media_codecs_performance.xml
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := media_codecs_performance.xml
LOCAL_ODM_MODULE := true
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := media_profiles_V1_0.xml
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := media_profiles_V1_0.xml
LOCAL_VENDOR_MODULE := true
include $(BUILD_PREBUILT)
<?xml version="1.0" encoding="UTF-8"?>
<audio_effects_conf version="2.0" xmlns="http://schemas.android.com/audio/audio_effects_conf/v2_0">
<!-- List of effect libraries to load.
Each library element must contain a "name" attribute and a "path" attribute giving the
name of a library .so file in /vendor/lib/soundfx on the target
-->
<libraries>
<library name="proxy" path="libeffectproxy.so"/>
<library name="sw_visualizer_lib" path="libvisualizer.so"/>
<library name="hw_visualizer_lib" path="libnvvisualizer.so"/>
<library name="bundle" path="libbundlewrapper.so"/>
<library name="reverb" path="libreverbwrapper.so"/>
<library name="downmix" path="libdownmix.so"/>
<library name="loudness_enhancer" path="libldnhncr.so"/>
<library name="preprocessing" path="libnvoicefx.so"/>
<library name="dynamics_processing" path="libdynproc.so"/>
</libraries>
<effects>
<effectProxy name="visualizer" library="proxy" uuid="ec7178ec-e5e1-4432-a3f4-4657e6795210">
<libsw library="sw_visualizer_lib" uuid="d069d9e0-8329-11df-9168-0002a5d5c51b"/>
<libhw library="hw_visualizer_lib" uuid="09f673c0-10bc-11e4-9589-0002a5d5c51b"/>
</effectProxy>
<effect name="bassboost" library="bundle" uuid="8631f300-72e2-11df-b57e-0002a5d5c51b"/>
<effect name="virtualizer" library="bundle" uuid="1d4033c0-8557-11df-9f2d-0002a5d5c51b"/>
<effect name="equalizer" library="bundle" uuid="ce772f20-847d-11df-bb17-0002a5d5c51b"/>
<effect name="volume" library="bundle" uuid="119341a0-8469-11df-81f9-0002a5d5c51b"/>
<effect name="reverb_env_aux" library="reverb" uuid="4a387fc0-8ab3-11df-8bad-0002a5d5c51b"/>
<effect name="reverb_env_ins" library="reverb" uuid="c7a511a0-a3bb-11df-860e-0002a5d5c51b"/>
<effect name="reverb_pre_aux" library="reverb" uuid="f29a1400-a3bb-11df-8ddc-0002a5d5c51b"/>
<effect name="reverb_pre_ins" library="reverb" uuid="172cdf00-a3bc-11df-a72f-0002a5d5c51b"/>
<effect name="downmix" library="downmix" uuid="93f04452-e4fe-41cc-91f9-e475b6d1d69f"/>
<effect name="loudness_enhancer" library="loudness_enhancer" uuid="fa415329-2034-4bea-b5dc-5b381c8d1e2c"/>
<effect name="dynamics_processing" library="dynamics_processing" uuid="e0e6539b-1781-7261-676f-6d7573696340"/>
<!-- agc is using nvoice lib for preprocessing which doesn't support it, so disabling agc -->
<!--effect name="agc" library="preprocessing" uuid="aa8130e0-66fc-11e0-bad0-0002a5d5c51b"/-->
<effect name="ns" library="preprocessing" uuid="c06c8400-8e06-11e0-9cb6-0002a5d5c51b"/>
</effects>
<preprocess>
<stream type="camcorder">
<!--apply effect="agc"/-->
<apply effect="ns"/>
</stream>
<stream type="mic">
<!--apply effect="agc"/-->
<apply effect="ns"/>
</stream>
<stream type="voice_communication">
<!--apply effect="agc"/-->
<apply effect="ns"/>
</stream>
</preprocess>
</audio_effects_conf>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Copyright (C) 2015 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.
-->
<!-- Copyright (C) 2018-2019 NVIDIA Corporation. All rights reserved. -->
<audioPolicyConfiguration version="1.0" xmlns:xi="http://www.w3.org/2001/XInclude">
<!-- version section contains a “version” tag in the form “major.minor” e.g version=”1.0” -->
<!-- Global configuration Decalaration -->
<!--globalConfiguration speaker_drc_enabled="true"/-->
<!-- Modules section:
There is one section per audio HW module present on the platform.
Each module section will contains two mandator y tags for audio HAL “halVersion” and “name”.
The module names are the same as in current .conf file:
“primary”, “A2DP”, “remote_submix”, “USB”
Each module will contain the following sections:
“devicePorts”: a list of device descriptors for all input and output devices accessible via this
module.
This contains both permanently attached devices and removable devices.
“mixPorts”: listing all output and input streams exposed by the audio HAL
“routes”: list of possible connections between input and output devices or between stream and
devices.
"route": is defined by an attribute:
-"type": <mux|mix> means all sources are mutual exclusive (mux) or can be mixed (mix)
-"sink": the sink involved in this route
-"sources": all the sources than can be connected to the sink via vis route
“attachedDevices”: permanently attached devices.
The attachedDevices section is a list of devices names. The names correspond to device names
defined in <devicePorts> section.
“defaultOutputDevice”: device to be used by default when no policy rule applies
-->
<modules>
<!-- Primary Audio HAL -->
<module name="primary" halVersion="2.0">
<attachedDevices>
<item>Speaker</item>
<item>Built-In Mic</item>
</attachedDevices>
<defaultOutputDevice>Speaker</defaultOutputDevice>
<!-- Primary HAL mixPorts and devicePorts -->
<xi:include href="primary_module_mixports.xml"/>
<xi:include href="primary_module_deviceports.xml"/>
<!-- route declaration, i.e. list all available sources for a given sink -->
<routes>
<!-- Playback routes -->
<route type="mix" sink="Speaker"
sources="primary_output"/>
<route type="mix" sink="Wired Headset"
sources="primary_output"/>
<route type="mix" sink="Wired Headphones"
sources="primary_output"/>
<route type="mix" sink="BT SCO"
sources="primary_output"/>
<route type="mix" sink="BT SCO Headset"
sources="primary_output"/>
<route type="mix" sink="BT SCO Car Kit"
sources="primary_output"/>
<route type="mix" sink="AUX Digital"
sources="primary_output,multichannel,passthrough,hra"/>
<route type="mix" sink="Digital Dock HS"
sources="primary_output"/>
<!-- Capture routes -->
<route type="mix" sink="primary_input"
sources="Built-In Mic,BT SCO Headset Mic,Digital Dock HS Mic,AudioIP-In"/>
</routes>
</module>
<!-- A2dp Audio HAL -->
<module name="a2dp" halVersion="2.0">
<xi:include href="a2dp_module_mixports.xml"/>
<xi:include href="a2dp_module_deviceports.xml"/>
<routes>
<route type="mix" sink="BT A2DP Out"
sources="a2dp output"/>
<route type="mix" sink="BT A2DP Headphones"
sources="a2dp output"/>
<route type="mix" sink="BT A2DP Speaker"
sources="a2dp output"/>
</routes>
</module>
<!-- Usb Audio HAL -->
<module name="usb" halVersion="2.0">
<xi:include href="usb_module_mixports.xml"/>
<xi:include href="usb_module_deviceports.xml"/>
<routes>
<route type="mix" sink="USB Host Out"
sources="usb_accessory output"/>
<route type="mix" sink="USB Device Out"
sources="usb_device output,usb_passthrough"/>
<route type="mix" sink="USB Headset Out"
sources="usb_device output,usb_passthrough"/>
<route type="mix" sink="usb_device input"
sources="USB Device In,USB Headset In"/>
</routes>
</module>
<!-- Remote Submix Audio HAL -->
<xi:include href="r_submix_audio_policy_configuration.xml"/>
<!-- MSD Audio HAL -->
<xi:include href="msd_audio_policy_configuration.xml"/>
</modules>
<!-- End of Modules section -->
<!-- Volume section -->
<xi:include href="ne_audio_policy_volumes.xml"/>
<xi:include href="ne_default_volume_tables.xml"/>
<!-- End of Volume section -->
</audioPolicyConfiguration>
<?xml version="1.0" encoding="utf-8"?>
<AudioConfigs version="2">
<card name="tegra-hda">
<pcm_config name ="hdmi-playback"
device_id="3"
rate="48000"
channels="2"
bps="16"
period_size="256"
period_count="8"
start_threshold="2047"
stop_threshold="4294967295"
silence_threshold="0"
silence_size="4294967295"
avail_min="1"
devices="hdmi"/>
<param name="HDMI HW Latency" val="50"/>
<param name="DP DEVICE ID" val="3"/>
</card>
<card name="tegra-snd-t210ref-mobile-rt5677">
<pcm_config name="music-playback"
device_id="0"
rate="48000"
channels="2"
bps="16"
period_size="512"
period_count="2"
start_threshold="1023"
stop_threshold="1024"
silence_threshold="0"
avail_min="1"/>
<pcm_config name="music-capture"
device_id="0"
rate="48000"
channels="2"
bps="16"
period_size="1024"
period_count="2"
start_threshold="1"
stop_threshold="0"
silence_threshold="0"
avail_min="1"/>
<pcm_config name="bt-sco-playback"
device_id="1"
rate="8000"
channels="1"
bps="16"
period_size="128"
period_count="4"
start_threshold="511"
stop_threshold="512"
silence_threshold="0"
avail_min="1"/>
<pcm_config name="bt-sco-capture"
device_id="1"
rate="8000"
channels="1"
bps="16"
period_size="128"
period_count="4"
start_threshold="1"
stop_threshold="512"
silence_threshold="0"
avail_min="1"/>
<param name="ulp" val="0"/>
<param name="ulp formats" val="mp3 aac"/>
<!-- <param name="builtin speaker" val="0"/>-->
<param name="nvoice" val="0"/>
<!-- <param name="safe-routing" val="1"/>
<param name="spkprot-flag" val="CPU"/>-->
<param name="HW Rates" val="48000 44100"/>
<param name="flags" val="AUDIO_OUTPUT_FLAG_PRIMARY"/>
<!-- Boot ADSP -->
<ctl name="x ADSP init" val="1"/>
<!-- Keep MIXER output ready for "adsp-spkprot" or "adsp-bypass"
<ctl name="x I2S3 Mux" val="ADMAIF3"/>
<ctl name="x ADMAIF3 Mux" val="I2S2"/>
<ctl name="x I2S2 Mux" val="ADMAIF2"/>
<ctl name="x ADMAIF2 Mux" val="I2S2"/>-->
<ctl name="x I2S1 Mux" val="ADMAIF1"/>
<ctl name="x ADMAIF1 Mux" val="I2S1"/>
<ctl name="x I2S1 Sample Rate" val="48000"/>
<ctl name="x DAC1 Playback Volume" val="87"/>
<ctl name="x STO1 ADC Boost Volume" val="2"/>
<ctl name="x STO2 ADC Boost Volume" val="2"/>
<ctl name="x STO3 ADC Boost Volume" val="0"/>
<ctl name="x Mono ADC Boost Volume" val="2"/>
<ctl name="x ADC1 Capture Volume" val="23"/>
<ctl name="x ADC2 Capture Volume" val="23"/>
<ctl name="x ADC3 Capture Volume" val="23"/>
<ctl name="x Mic Volume" val="207"/>
<ctl name="x Frontend PGA Volume" val="1"/>
<ctl name="x Stereo1 DMIC Mux" val="DMIC2"/>
<ctl name="x Stereo1 ADC2 Mux" val="DMIC"/>
<ctl name="x Stereo2 DMIC Mux" val="DMIC1"/>
<ctl name="x Stereo2 ADC2 Mux" val="DMIC"/>
<ctl name="x Stereo3 ADC1 Mux" val="Stereo DAC MIX"/>
<ctl name="x DAC1 Mux" val="IF1 DAC 01"/>
<ctl name="x DAC1 MIXL DAC1 Switch" val="1"/>
<ctl name="x DAC1 MIXR DAC1 Switch" val="1"/>
<ctl name="x Stereo DAC MIXL DAC1 L Switch" val="1"/>
<ctl name="x Stereo DAC MIXR DAC1 R Switch" val="1"/>
<ctl name="x DAC3 L Mux" val="IF3 DAC L"/>
<ctl name="x DAC3 R Mux" val="IF3 DAC R"/>
<ctl name="x DD1 MIXL DAC3 L Switch" val="1"/>
<ctl name="x DD1 MIXR DAC3 R Switch" val="1"/>
<ctl name="x DACL Mux" val="DACL"/>
<ctl name="x DACR Mux" val="DACR"/>
<ctl name="x Sto1 ADC MIXL ADC2 Switch" val="1"/>
<ctl name="x Sto1 ADC MIXR ADC2 Switch" val="1"/>
<ctl name="x Sto2 ADC MIXL ADC2 Switch" val="1"/>
<ctl name="x Sto2 ADC MIXR ADC2 Switch" val="1"/>
<ctl name="x Sto3 ADC MIXL ADC1 Switch" val="1"/>
<ctl name="x Sto3 ADC MIXR ADC1 Switch" val="1"/>
<!--
IF1 - link to SoC
IF2 - link to Speaker
IF3 - link to Headset
-->
<ctl name="x IF1 ADC1 Mux" val="STO1 ADC MIX"/>
<ctl name="x IF1 ADC2 Mux" val="STO2 ADC MIX"/>
<ctl name="x IF1 ADC3 Mux" val="OB45"/>
<ctl name="x IF1 ADC TDM Swap Mux" val="1/2/3/4"/>
<ctl name="x IF2 ADC1 Mux" val="OB01"/>
<ctl name="x IF2 ADC2 Mux" val="OB23"/>
<ctl name="x IF2 ADC3 Mux" val="OB45"/>
<ctl name="x IF2 ADC TDM Swap Mux" val="2/3/1/4"/>
<ctl name="x IF3 ADC Mux" val="OB01"/>
<ctl name="x IF2 ADC3 Swap Mux" val="L/R"/>
<ctl name="x Int Spk Switch" val="0"/>
<ctl name="x Headphone Jack Switch" val="0"/>
<ctl name="x Mic Jack Switch" val="0"/>
<ctl name="x Int Mic Switch" val="0"/>
<path name="adsp-bypass">
<!-- No specifc controls now -->
</path>
<path name="rt5677-speaker">
<ctl name="x Headphone Jack Switch" val="0"/>
<ctl name="x ADC3 Capture Volume" val="28"/>
<ctl name="x IF2 ADC3 Mux" val="STO3 ADC MIX"/>
<ctl name="x IF3 ADC Mux" val="OB01"/>
<ctl name="x Int Spk Switch" val="1"/>
</path>
<path name="rt5677-headphone">
<ctl name="x Int Spk Switch" val="0"/>
<ctl name="x ADC3 Capture Volume" val="23"/>
<ctl name="x IF2 ADC3 Mux" val="OB45"/>
<ctl name="x IF3 ADC Mux" val="STO3 ADC MIX"/>
<ctl name="x Headphone Jack Switch" val="1"/>
</path>
<!-- dmic -->
<path name="builtin-mic">
<ctl name="x Mic Jack Switch" val="0"/>
<ctl name="x Stereo1 ADC2 Mux" val="DMIC"/>
<ctl name="x Int Mic Switch" val="1"/>
</path>
<!-- analog mic -->
<path name="headset-mic">
<ctl name="x Int Mic Switch" val="0"/>
<ctl name="x Stereo1 ADC2 Mux" val="DD MIX1"/>
<ctl name="x Mic Jack Switch" val="1"/>
<ctl name="x STO1 ADC Boost Volume" val="2"/>
<ctl name="x ADC1 Capture Volume" val="27"/>
</path>
<path name="speaker">
<path name="rt5677-speaker"/>
<path name="adsp-bypass"/>
</path>
<path name="headphone">
<path name="rt5677-headphone"/>
<path name="adsp-bypass"/>
</path>
<path name="headset">
<path name="headphone"/>
</path>
<path name="speaker-and-headphone">
<ctl name="x ADC3 Capture Volume" val="23"/>
<ctl name="x IF2 ADC3 Mux" val="STO3 ADC MIX"/>
<ctl name="x IF3 ADC Mux" val="STO3 ADC MIX"/>
<ctl name="x Int Spk Switch" val="1"/>
<ctl name="x Headphone Jack Switch" val="1"/>
<path name="adsp-bypass"/>
</path>
<path name="speaker-and-headset">
<path name="speaker-and-headphone"/>
</path>
</card>
</AudioConfigs>
<?xml version="1.0" encoding="utf-8"?>
<AudioConfigs version="2">
<card name="tegra-hda">
<pcm_config name ="hdmi-playback"
device_id="3"
rate="48000"
channels="2"
bps="16"
period_size="256"
period_count="8"
start_threshold="2047"
stop_threshold="4294967295"
silence_threshold="0"
silence_size="4294967295"
avail_min="1"
devices="hdmi"/>
<param name="HDMI HW Latency" val="50"/>
<param name="DP DEVICE ID" val="3"/>
</card>
<card name="tegra-snd-t210ref-mobile-rt565x">
<pcm_config name="music-playback"
device_id="0"
rate="48000"
channels="2"
bps="16"
period_size="1024"
period_count="4"
start_threshold="4095"
stop_threshold="4294967295"
silence_threshold="0"
silence_size="4294967295"
avail_min="1"
devices="speaker|headphone|headset"/>
<pcm_config name="fast-playback"
device_id="5"
rate="48000"
channels="2"
bps="16"
period_size="128"
period_count="2"
start_threshold="255"
stop_threshold="4294967295"
silence_threshold="0"
silence_size="4294967295"
avail_min="1"
devices="speaker|headphone|headset"/>
<param name="nvoice" val="0"/>
<param name="builtin speaker" val="0"/>
<param name="nvoice" val="0"/>
<param name="safe-routing" val="1"/>
<param name="spkprot-flag" val="CPU"/>
<ctl name="ADMAIF1 Mux" val="I2S1"/>
<ctl name="codec-x rate" val="None"/>
<!-- Boot ADSP -->
<ctl name="ADSP init" val="0"/>
<!-- Keep MIXER output ready for "adsp-spkprot" or "adsp-bypass" -->
<ctl name="ADMAIF1 Mux" val="I2S1"/>
<ctl name="I2S1 Mux" val="ADMAIF1"/>
<ctl name="I2S1 Sample Rate" val="48000"/>
<ctl name="x Stereo DAC MIXL DAC L1 Switch" val="0"/>
<ctl name="x Stereo DAC MIXR DAC R1 Switch" val="0"/>
<ctl name="x SPK MIXL DAC L1 Switch" val="0"/>
<ctl name="x SPK MIXR DAC R1 Switch" val="0"/>
<ctl name="x Speaker L Playback Switch" val="0"/>
<ctl name="x Speaker R Playback Switch" val="0"/>
<ctl name="x SPOL MIX SPKVOL L Switch" val="0"/>
<ctl name="x SPOR MIX SPKVOL R Switch" val="0"/>
<ctl name="x Speaker Playback Volume" val="0,0"/>
<ctl name="x Speaker Channel Switch" val="0,0"/>
<ctl name="x OUT MIXL DAC L1 Switch" val="0"/>
<ctl name="x OUT MIXR DAC R1 Switch" val="0"/>
<ctl name="x HPO MIX HPVOL Switch" val="0"/>
<ctl name="x HP L Playback Switch" val="0"/>
<ctl name="x HP R Playback Switch" val="0"/>
<ctl name="x HP Playback Volume" val="0,0"/>
<ctl name="x HP Channel Switch" val="0,0"/>
<path name="adsp-bypass">
<!-- No specifc controls now -->
</path>
<path name="rt5640-speaker">
<ctl name="x Stereo DAC MIXL DAC L1 Switch" val="1"/>
<ctl name="x Stereo DAC MIXR DAC R1 Switch" val="1"/>
<ctl name="x SPK MIXL DAC L1 Switch" val="1"/>
<ctl name="x SPK MIXR DAC R1 Switch" val="1"/>
<ctl name="x Speaker L Playback Switch" val="1"/>
<ctl name="x Speaker R Playback Switch" val="1"/>
<ctl name="x SPOL MIX SPKVOL L Switch" val="1"/>
<ctl name="x SPOR MIX SPKVOL R Switch" val="1"/>
<ctl name="x Speaker Playback Volume" val="30,30"/>
<ctl name="x Speaker Channel Switch" val="1,1"/>
</path>
<path name="rt5640-headphone">
<ctl name="x HPO MIX HPVOL Switch" val="1"/>
<ctl name="x HP L Playback Switch" val="1"/>
<ctl name="x HP R Playback Switch" val="1"/>
<ctl name="x Stereo DAC MIXL DAC L1 Switch" val="1"/>
<ctl name="x Stereo DAC MIXR DAC R1 Switch" val="1"/>
<ctl name="x HP Playback Volume" val="38,38"/>
<ctl name="x HP Channel Switch" val="1,1"/>
<ctl name="x OUT MIXR DAC R1 Switch" val="1"/>
<ctl name="x OUT MIXL DAC L1 Switch" val="1"/>
</path>
<path name="speaker">
<path name="rt5640-speaker"/>
<path name="adsp-bypass"/>
</path>
<path name="headphone">
<path name="rt5640-headphone"/>
<path name="adsp-bypass"/>
</path>
<path name="headset">
<path name="headphone"/>
</path>
<path name="speaker-and-headphone">
<path name="rt5640-speaker"/>
<path name="rt5640-headphone"/>
<path name="adsp-bypass"/>
</path>
<path name="speaker-and-headset">
<path name="speaker-and-headphone"/>
</path>
</card>
</AudioConfigs>
This diff is collapsed.
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2015 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.
-->
<MediaCodecs>
<Encoders>
<MediaCodec name="OMX.Nvidia.h264.encoder" type="video/avc" update="true">
<Limit name="measured-frame-rate-320x240" range="760-902" />
<Limit name="measured-frame-rate-720x480" range="280-387" />
<Limit name="measured-frame-rate-1280x720" range="130-192" />
<Limit name="measured-frame-rate-1920x1080" range="70-95" />
</MediaCodec>
<MediaCodec name="OMX.Nvidia.vp8.encoder" type="video/x-vnd.on2.vp8" update="true">
<Limit name="measured-frame-rate-320x180" range="841-854" />
<Limit name="measured-frame-rate-640x360" range="363-421" />
<Limit name="measured-frame-rate-1280x720" range="114-145" />
</MediaCodec>
<MediaCodec name="OMX.Nvidia.h265.encoder" type="video/hevc" update="true">
<Limit name="measured-frame-rate-320x240" range="850-982" />
<Limit name="measured-frame-rate-720x480" range="300-364" />
<Limit name="measured-frame-rate-1280x720" range="135-171" />
<Limit name="measured-frame-rate-1920x1080" range="65-80" />
<Limit name="measured-frame-rate-3840x2160" range="18-22" />
</MediaCodec>
<MediaCodec name="OMX.google.h264.encoder" type="video/avc" update="true">
<Limit name="measured-frame-rate-320x240" range="490-610" />
<Limit name="measured-frame-rate-720x480" range="170-200" />
<Limit name="measured-frame-rate-1280x720" range="88-112" />
<Limit name="measured-frame-rate-1920x1080" range="45-56" />
</MediaCodec>
<MediaCodec name="OMX.google.h263.encoder" type="video/3gpp" update="true">
<Limit name="measured-frame-rate-176x144" range="643-656" />
</MediaCodec>
<MediaCodec name="OMX.google.mpeg4.encoder" type="video/mp4v-es" update="true">
<Limit name="measured-frame-rate-176x144" range="689-754" />
</MediaCodec>
<MediaCodec name="OMX.google.vp8.encoder" type="video/x-vnd.on2.vp8" update="true">
<Limit name="measured-frame-rate-320x180" range="242-253" />
<Limit name="measured-frame-rate-640x360" range="114-116" />
<Limit name="measured-frame-rate-1280x720" range="35-36" />
<Limit name="measured-frame-rate-1920x1080" range="28-28" />
</MediaCodec>
</Encoders>
<Decoders>
<MediaCodec name="OMX.Nvidia.h265.decode" type="video/hevc" update="true">
<Limit name="measured-frame-rate-352x288" range="2239-2239" />
<Limit name="measured-frame-rate-640x368" range="1950-1950" />
<Limit name="measured-frame-rate-1280x720" range="1030-1030" />
<Limit name="measured-frame-rate-1920x1088" range="409-589" />
</MediaCodec>
<MediaCodec name="OMX.Nvidia.h264.decode" type="video/avc" update="true">
<Limit name="measured-frame-rate-320x240" range="2273-2273" />
<Limit name="measured-frame-rate-720x480" range="1413-1413" />
<Limit name="measured-frame-rate-1280x720" range="811-811" />
<Limit name="measured-frame-rate-1920x1088" range="346-346" />
</MediaCodec>
<MediaCodec name="OMX.Nvidia.h263.decode" type="video/3gpp" update="true">
<Limit name="measured-frame-rate-176x144" range="2335-2335" />
<Limit name="measured-frame-rate-352x288" range="1492-1950" />
</MediaCodec>
<MediaCodec name="OMX.Nvidia.mp4.decode" type="video/mp4v-es" update="true">
<Limit name="measured-frame-rate-176x144" range="2635-2635" />
<Limit name="measured-frame-rate-480x368" range="1738-1738" />
</MediaCodec>
<MediaCodec name="OMX.Nvidia.vp8.decode" type="video/x-vnd.on2.vp8" update="true">
<Limit name="measured-frame-rate-320x192" range="2057-2057" />
<Limit name="measured-frame-rate-640x368" range="1438-1438" />
<Limit name="measured-frame-rate-1280x720" range="536-536" />
<Limit name="measured-frame-rate-1920x1088" range="300-339" />
</MediaCodec>
<MediaCodec name="OMX.Nvidia.vp9.decode" type="video/x-vnd.on2.vp9" update="true">
<Limit name="measured-frame-rate-320x192" range="3400-3500" />
<Limit name="measured-frame-rate-640x368" range="1532-1532" />
<Limit name="measured-frame-rate-1280x720" range="643-643" />
<Limit name="measured-frame-rate-1920x1088" range="319-319" />
</MediaCodec>
<MediaCodec name="OMX.google.h264.decoder" type="video/avc" update="true">
<Limit name="measured-frame-rate-320x240" range="782-782" />
<Limit name="measured-frame-rate-720x480" range="227-253" />
<Limit name="measured-frame-rate-1280x720" range="86-96" />
<Limit name="measured-frame-rate-1920x1080" range="71-71" />
</MediaCodec>
<MediaCodec name="OMX.google.h263.decoder" type="video/3gpp" update="true">
<Limit name="measured-frame-rate-176x144" range="1122-1187" />
</MediaCodec>
<MediaCodec name="OMX.google.hevc.decoder" type="video/hevc" update="true">
<Limit name="measured-frame-rate-352x288" range="584-590" />
<Limit name="measured-frame-rate-640x360" range="306-319" />
<Limit name="measured-frame-rate-1280x720" range="120-140" />
<Limit name="measured-frame-rate-1920x1080" range="63-78" />
</MediaCodec>
<MediaCodec name="OMX.google.mpeg4.decoder" type="video/mp4v-es" update="true">
<Limit name="measured-frame-rate-176x144" range="1140-1194" />
</MediaCodec>
<MediaCodec name="OMX.google.vp8.decoder" type="video/x-vnd.on2.vp8" update="true">
<Limit name="measured-frame-rate-320x180" range="990-1087" />
<Limit name="measured-frame-rate-640x360" range="324-351" />
<Limit name="measured-frame-rate-1280x720" range="67-76" />
<Limit name="measured-frame-rate-1920x1080" range="26-29" />
</MediaCodec>
<MediaCodec name="OMX.google.vp9.decoder" type="video/x-vnd.on2.vp9" update="true">
<Limit name="measured-frame-rate-320x180" range="682-753" />
<Limit name="measured-frame-rate-640x360" range="287-313" />
<Limit name="measured-frame-rate-1280x720" range="94-103" />
<Limit name="measured-frame-rate-1920x1080" range="52-57" />
</MediaCodec>
</Decoders>
</MediaCodecs>
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright (C) 2012 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.
-->
<!--
<!DOCTYPE MediaCodecs [
<!ELEMENT MediaCodecs (Decoders,Encoders)>
<!ELEMENT Decoders (MediaCodec*)>
<!ELEMENT Encoders (MediaCodec*)>
<!ELEMENT MediaCodec (Type*,Quirk*)>
<!ATTLIST MediaCodec name CDATA #REQUIRED>
<!ATTLIST MediaCodec type CDATA>
<!ELEMENT Type EMPTY>
<!ATTLIST Type name CDATA #REQUIRED>
<!ELEMENT Quirk EMPTY>
<!ATTLIST Quirk name CDATA #REQUIRED>
]>
There's a simple and a complex syntax to declare the availability of a
media codec:
A codec that properly follows the OpenMax spec and therefore doesn't have any
quirks and that only supports a single content type can be declared like so:
<MediaCodec name="OMX.foo.bar" type="something/interesting" />
If a codec has quirks OR supports multiple content types, the following syntax
can be used:
<MediaCodec name="OMX.foo.bar" >
<Type name="something/interesting" />
<Type name="something/else" />
...
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Quirk name="output-buffers-are-unreadable" />
</MediaCodec>
Only the three quirks included above are recognized at this point:
"requires-allocate-on-input-ports"
must be advertised if the component does not properly support specification
of input buffers using the OMX_UseBuffer(...) API but instead requires
OMX_AllocateBuffer to be used.
"requires-allocate-on-output-ports"
must be advertised if the component does not properly support specification
of output buffers using the OMX_UseBuffer(...) API but instead requires
OMX_AllocateBuffer to be used.
"output-buffers-are-unreadable"
must be advertised if the emitted output buffers of a decoder component
are not readable, i.e. use a custom format even though abusing one of
the official OMX colorspace constants.
Clients of such decoders will not be able to access the decoded data,
naturally making the component much less useful. The only use for
a component with this quirk is to render the output to the screen.
Audio decoders MUST NOT advertise this quirk.
Video decoders that advertise this quirk must be accompanied by a
corresponding color space converter for thumbnail extraction,
matching surfaceflinger support that can render the custom format to
a texture and possibly other code, so just DON'T USE THIS QUIRK.
-->
<MediaCodecs>
<Include href="media_codecs_google_audio.xml" />