am 0dc9087b: am 208ce6f9: am deaaf79a: Share more code with the default recovery image.

* commit '0dc9087bb7b63b715ef85ac309d90b27a3709bc4':
  Share more code with the default recovery image.
diff --git a/BoardConfig.mk b/BoardConfig.mk
index 2c90706..f4ad76e 100644
--- a/BoardConfig.mk
+++ b/BoardConfig.mk
@@ -138,8 +138,8 @@
 
 COMMON_GLOBAL_CFLAGS += -DGFX_BUF_EXT
 
-# Disable IMG RS GPU driver
-OVERRIDE_RS_DRIVER := libPVRRS.so
+# Disable IMG RS GPU driver (b/19412176)
+# OVERRIDE_RS_DRIVER := libPVRRS.so
 
 # enable ARM codegen for x86 with Houdini
 BUILD_ARM_FOR_X86 := true
diff --git a/Nexus_Remote.idc b/Nexus_Remote.idc
new file mode 100644
index 0000000..210fc80
--- /dev/null
+++ b/Nexus_Remote.idc
@@ -0,0 +1,16 @@
+# 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.
+
+device.internal = 0
+audio.mic = 1
diff --git a/audio_policy.conf b/audio_policy.conf
index b7148d2..7de1bb7 100644
--- a/audio_policy.conf
+++ b/audio_policy.conf
@@ -46,6 +46,24 @@
       }
     }
   }
+  usb {
+    outputs {
+      usb_device {
+        sampling_rates dynamic
+        channel_masks dynamic
+        formats dynamic
+        devices AUDIO_DEVICE_OUT_USB_DEVICE
+      }
+    }
+    inputs {
+      usb_device {
+        sampling_rates dynamic
+        channel_masks dynamic
+        formats dynamic
+        devices AUDIO_DEVICE_IN_USB_DEVICE
+      }
+    }
+  }
   r_submix {
     outputs {
       submix {
diff --git a/device.mk b/device.mk
index 03ffb92..38c02a2 100644
--- a/device.mk
+++ b/device.mk
@@ -76,7 +76,8 @@
 # Audio
 PRODUCT_PACKAGES += \
     libtinyalsa \
-    audio.primary.fugu
+    audio.primary.fugu \
+    audio.usb.default
 
 USE_CUSTOM_AUDIO_POLICY := 1
 
@@ -162,6 +163,7 @@
     libmixvbp_h264secure \
     libmixvbp_vc1 \
     libmixvbp_vp8 \
+    libmixvbp_mpeg2 \
     libmixvbp \
     libva_videodecoder \
     libva_videoencoder
@@ -174,6 +176,7 @@
     libOMXVideoDecoderMPEG4 \
     libOMXVideoDecoderWMV \
     libOMXVideoDecoderVP8 \
+    libOMXVideoDecoderMPEG2 \
     libOMXVideoDecoderVP9HWR \
     libOMXVideoDecoderVP9Hybrid \
     libOMXVideoEncoderAVC \
@@ -212,13 +215,14 @@
     frameworks/native/data/etc/android.hardware.wifi.direct.xml:system/etc/permissions/android.hardware.wifi.direct.xml \
     frameworks/native/data/etc/android.hardware.bluetooth_le.xml:system/etc/permissions/android.hardware.bluetooth_le.xml \
     frameworks/native/data/etc/android.hardware.bluetooth.xml:system/etc/permissions/android.hardware.bluetooth.xml \
-    frameworks/native/data/etc/android.hardware.ethernet.xml:system/etc/permissions/android.hardware.ethernet.xml \
     frameworks/native/data/etc/android.hardware.usb.accessory.xml:system/etc/permissions/android.hardware.usb.accessory.xml \
     frameworks/native/data/etc/android.hardware.usb.host.xml:system/etc/permissions/android.hardware.usb.host.xml \
-    frameworks/native/data/etc/android.hardware.hdmi.cec.xml:system/etc/permissions/android.hardware.hdmi.cec.xml
+    frameworks/native/data/etc/android.hardware.hdmi.cec.xml:system/etc/permissions/android.hardware.hdmi.cec.xml \
+    frameworks/native/data/etc/android.software.midi.xml:system/etc/permissions/android.software.midi.xml
 
 # Key layout files
 PRODUCT_COPY_FILES += \
+    device/asus/fugu/Nexus_Remote.idc:system/usr/idc/Nexus_Remote.idc \
     device/asus/fugu/gpio-keys.idc:system/usr/idc/gpio-keys.idc \
     device/asus/fugu/gpio-keys.kl:system/usr/keylayout/gpio-keys.kl \
     device/asus/fugu/gpio-keys.kcm:system/usr/keychars/gpio-keys.kcm \
@@ -259,3 +263,6 @@
 PRODUCT_DEX_PREOPT_DEFAULT_FLAGS += --compiler-filter=space
 
 #PRODUCT_CHARACTERISTICS := tablet
+
+# To enable Live Channels app update through PlayStore
+USE_GMS_LIVECHANNELS := true
diff --git a/init.fugu.rc b/init.fugu.rc
index 3b966b6..8dd7f30 100644
--- a/init.fugu.rc
+++ b/init.fugu.rc
@@ -25,14 +25,6 @@
     symlink /dev/dri/card0 /dev/card0
 
 on init
-    # See storage config details at http://source.android.com/tech/storage/
-    mkdir /mnt/shell/emulated 0700 shell shell
-    mkdir /storage/emulated 0555 root root
-
-    export EXTERNAL_STORAGE /storage/emulated/legacy
-    export EMULATED_STORAGE_SOURCE /mnt/shell/emulated
-    export EMULATED_STORAGE_TARGET /storage/emulated
-
     # Android creates by-name disk links with the disk controller
     # in the generated path, so that the names pulled out of the GPT
     # can be associated with the correct disk. Create a shortcut to
@@ -40,10 +32,8 @@
     symlink /dev/block/pci/pci0000:00/0000:00:01.0/by-name /dev/block/by-name
 
     # Support legacy paths
-    symlink /storage/emulated/legacy /sdcard
-    symlink /storage/emulated/legacy /mnt/sdcard
-    symlink /storage/emulated/legacy /storage/sdcard0
-    symlink /mnt/shell/emulated/0 /storage/emulated/legacy
+    symlink /sdcard /mnt/sdcard
+    symlink /sdcard /storage/sdcard0
 
     # KSM options
     write /sys/kernel/mm/ksm/pages_to_scan 100
@@ -59,7 +49,6 @@
 
     mount_all ./fstab.fugu
     swapon_all ./fstab.fugu
-    setprop ro.crypto.fuse_sdcard true
 
     restorecon_recursive /factory
 
@@ -126,8 +115,6 @@
     chmod 0440 /sys/module/tngdisp/parameters/hdmi_edid_src_phy_addr
 
 on post-fs-data
-    mkdir /data/media 0770 media_rw media_rw
-
     # Create the directories used by the Wireless subsystem
     mkdir /data/misc/wifi 0770 wifi wifi
     mkdir /data/misc/wifi/sockets 0770 wifi wifi
@@ -263,10 +250,6 @@
     disabled
     oneshot
 
-# virtual sdcard daemon running as media_rw (1023)
-service sdcard /system/bin/sdcard -u 1023 -g 1023 -l /data/media /mnt/shell/emulated
-    class late_start
-
 # bugreport is triggered by holding down volume down, volume up and power
 service bugreport /system/bin/dumpstate -d -p -B \
         -o /data/data/com.android.shell/files/bugreports/bugreport
diff --git a/libaudio/ATVAudioPolicyManager.cpp b/libaudio/ATVAudioPolicyManager.cpp
index 08d6b68..7074593 100644
--- a/libaudio/ATVAudioPolicyManager.cpp
+++ b/libaudio/ATVAudioPolicyManager.cpp
@@ -60,21 +60,20 @@
 
 float ATVAudioPolicyManager::computeVolume(audio_stream_type_t stream,
                                            int index,
-                                           audio_io_handle_t output,
                                            audio_devices_t device)
 {
     // We only use master volume, so all audio flinger streams
     // should be set to maximum
     (void)stream;
     (void)index;
-    (void)output;
     (void)device;
-    return 1.0;
+    return 0.0; // no attenuation == 0.0dB
 }
 
 status_t ATVAudioPolicyManager::setDeviceConnectionState(audio_devices_t device,
                                                          audio_policy_dev_state_t state,
-                                                         const char *device_address)
+                                                         const char *device_address,
+                                                         const char *device_name)
 {
     audio_devices_t tmp = AUDIO_DEVICE_NONE;;
     ALOGE("setDeviceConnectionState %08x %x %s", device, state,
@@ -112,7 +111,7 @@
     status_t ret = 0;
     if (device != AUDIO_DEVICE_IN_REMOTE_SUBMIX) {
       ret = AudioPolicyManager::setDeviceConnectionState(
-                    device, state, device_address);
+                    device, state, device_address, device_name);
     }
 
     if (audio_is_output_device(device)) {
@@ -154,6 +153,9 @@
           // REMOTE_SUBMIX should always be avaible, let's make sure it's being forced at the moment
           ALOGV("Virtual remote available");
           device = AUDIO_DEVICE_IN_REMOTE_SUBMIX;
+      } else if (availableDeviceTypes & AUDIO_DEVICE_IN_USB_DEVICE) {
+          ALOGV("Use USB audio input");
+          device = AUDIO_DEVICE_IN_USB_DEVICE;
       }
     }
 
diff --git a/libaudio/ATVAudioPolicyManager.h b/libaudio/ATVAudioPolicyManager.h
index 04fd3d6..07efa86 100644
--- a/libaudio/ATVAudioPolicyManager.h
+++ b/libaudio/ATVAudioPolicyManager.h
@@ -20,7 +20,7 @@
 #include <utils/Timers.h>
 #include <utils/Errors.h>
 #include <utils/KeyedVector.h>
-#include <AudioPolicyManager.h>
+#include <managerdefault/AudioPolicyManager.h>
 
 #ifndef ANDROID_ATV_AUDIO_POLICY_MANAGER_H
 #define ANDROID_ATV_AUDIO_POLICY_MANAGER_H
@@ -35,14 +35,14 @@
 
     virtual status_t setDeviceConnectionState(audio_devices_t device,
                                               audio_policy_dev_state_t state,
-                                              const char *device_address);
+                                              const char *device_address,
+                                              const char *device_name);
 
     virtual audio_devices_t getDeviceForInputSource(audio_source_t inputSource);
 
 protected:
     virtual float computeVolume(audio_stream_type_t stream,
                                 int index,
-                                audio_io_handle_t output,
                                 audio_devices_t device);
 
 private:
diff --git a/libaudio/Android.mk b/libaudio/Android.mk
index 5136f23..4f3ca78 100644
--- a/libaudio/Android.mk
+++ b/libaudio/Android.mk
@@ -109,7 +109,10 @@
 
 LOCAL_C_INCLUDES := \
     external/tinyalsa/include \
-    $(TOPDIR)frameworks/av/services/audiopolicy
+    $(TOPDIR)frameworks/av/services/audiopolicy \
+    $(TOPDIR)frameworks/av/services/audiopolicy/common/include \
+    $(TOPDIR)frameworks/av/services/audiopolicy/common/managerdefinitions/include \
+    $(TOPDIR)frameworks/av/services/audiopolicy/engine/interface
 
 ifeq ($(TARGET_PRODUCT),fugu)
 LOCAL_C_INCLUDES += \
diff --git a/libaudio/AudioStreamOut.cpp b/libaudio/AudioStreamOut.cpp
index 9da4049..860c79b 100644
--- a/libaudio/AudioStreamOut.cpp
+++ b/libaudio/AudioStreamOut.cpp
@@ -47,7 +47,7 @@
     , mIsMCOutput(mcOut)
     , mIsEncoded(false)
     , mInStandby(false)
-    , mSPDIFEncoder(this)
+    , mSPDIFEncoder(NULL)
 {
     assert(mLocalClock.initCheck());
 
@@ -74,6 +74,7 @@
 AudioStreamOut::~AudioStreamOut()
 {
     releaseAllOutputs();
+    delete mSPDIFEncoder;
 }
 
 status_t AudioStreamOut::set(
@@ -111,6 +112,11 @@
             return BAD_VALUE;
     }
 
+    delete mSPDIFEncoder;
+    if (mIsEncoded) {
+        mSPDIFEncoder = new MySPDIFEncoder(this, lFormat);
+    }
+
     mInputFormat = lFormat;
     mInputChanMask = lChannels;
     mInputSampleRate = lRate;
@@ -352,7 +358,7 @@
 
 uint32_t AudioStreamOut::getRateMultiplier() const
 {
-    return (mIsEncoded) ? mSPDIFEncoder.getRateMultiplier() : 1;
+    return (mIsEncoded) ? mSPDIFEncoder->getRateMultiplier() : 1;
 }
 
 uint32_t AudioStreamOut::outputSampleRate() const
@@ -362,7 +368,7 @@
 
 int AudioStreamOut::getBytesPerOutputFrame()
 {
-    return (mIsEncoded) ? mSPDIFEncoder.getBytesPerOutputFrame()
+    return (mIsEncoded) ? mSPDIFEncoder->getBytesPerOutputFrame()
         : (mInputChanCount * sizeof(int16_t));
 }
 
@@ -564,17 +570,17 @@
 ssize_t AudioStreamOut::write(const void* buffer, size_t bytes)
 {
     uint8_t *data = (uint8_t *)buffer;
-    ALOGVV("AudioStreamOut::write(%u)   0x%02X, 0x%02X, 0x%02X, 0x%02X,"
-          " 0x%02X, 0x%02X, 0x%02X, 0x%02X,"
-          " 0x%02X, 0x%02X, 0x%02X, 0x%02X,"
-          " 0x%02X, 0x%02X, 0x%02X, 0x%02X ====",
-        bytes, data[0], data[1], data[2], data[3],
-        data[4], data[5], data[6], data[7],
-        data[8], data[9], data[10], data[11],
-        data[12], data[13], data[14], data[15]
-        );
     if (mIsEncoded) {
-        return mSPDIFEncoder.write(buffer, bytes);
+        ALOGVV("AudioStreamOut::write(%u)   0x%02X, 0x%02X, 0x%02X, 0x%02X,"
+              " 0x%02X, 0x%02X, 0x%02X, 0x%02X,"
+              " 0x%02X, 0x%02X, 0x%02X, 0x%02X,"
+              " 0x%02X, 0x%02X, 0x%02X, 0x%02X ====",
+            bytes, data[0], data[1], data[2], data[3],
+            data[4], data[5], data[6], data[7],
+            data[8], data[9], data[10], data[11],
+            data[12], data[13], data[14], data[15]
+            );
+        return mSPDIFEncoder->write(buffer, bytes);
     } else {
         return writeInternal(buffer, bytes);
     }
diff --git a/libaudio/AudioStreamOut.h b/libaudio/AudioStreamOut.h
index b4f0ea0..9ec3bc2 100644
--- a/libaudio/AudioStreamOut.h
+++ b/libaudio/AudioStreamOut.h
@@ -72,8 +72,9 @@
     class MySPDIFEncoder : public SPDIFEncoder
     {
     public:
-        MySPDIFEncoder(AudioStreamOut *streamOut)
-          : mStreamOut(streamOut)
+        MySPDIFEncoder(AudioStreamOut *streamOut, audio_format_t format)
+          : SPDIFEncoder(format)
+          , mStreamOut(streamOut)
         {};
 
         virtual ssize_t writeOutput(const void* buffer, size_t bytes)
@@ -133,7 +134,7 @@
     // Is the stream on standby?
     bool            mInStandby;
 
-    MySPDIFEncoder  mSPDIFEncoder;
+    MySPDIFEncoder *mSPDIFEncoder;
 
     void            releaseAllOutputs();
     void            updateTargetOutputs();
diff --git a/libaudio/alsa_utils.cpp b/libaudio/alsa_utils.cpp
index 9a7f1b6..1fe7012 100644
--- a/libaudio/alsa_utils.cpp
+++ b/libaudio/alsa_utils.cpp
@@ -180,6 +180,7 @@
                 goto bailout;
             m.bps_bitmask = static_cast<uint32_t>(tmp);
         } else if ((m.fmt >= kFmtAC3) && (m.fmt <= kFmtATRAC)) { // FIXME ATRAC is not last format!?
+            // FIXME SHould we extend the range up to kFmtDTSHD or kFmtMPGSUR?
             if ((tmp = mixer_ctl_get_value(ctrls[kMaxCompBRNdx], 0)) < 0)
                 goto bailout;
             m.comp_bitrate = static_cast<uint32_t>(tmp);
@@ -268,6 +269,12 @@
             case kFmtEAC3:
                 fmts.append("|AUDIO_FORMAT_E_AC3");
                 break;
+            case kFmtDTS:
+                fmts.append("|AUDIO_FORMAT_DTS");
+                break;
+            case kFmtDTSHD:
+                fmts.append("|AUDIO_FORMAT_DTS_HD");
+                break;
             default:
                 break;
         }
@@ -360,7 +367,9 @@
     switch (format & AUDIO_FORMAT_MAIN_MASK) {
         case AUDIO_FORMAT_PCM: alsaFormat = kFmtLPCM; break;
         case AUDIO_FORMAT_AC3: alsaFormat = kFmtAC3; break;
-        case AUDIO_FORMAT_E_AC3: alsaFormat = kFmtAC3; break;
+        case AUDIO_FORMAT_E_AC3: alsaFormat = kFmtAC3; break; // FIXME should this be kFmtEAC3?
+        case AUDIO_FORMAT_DTS: alsaFormat = kFmtDTS; break;
+        case AUDIO_FORMAT_DTS_HD: alsaFormat = kFmtDTSHD; break;
         default: return false;
     }
 
diff --git a/media_codecs.xml b/media_codecs.xml
index 3afb137..c503fe3 100755
--- a/media_codecs.xml
+++ b/media_codecs.xml
@@ -123,6 +123,14 @@
             <Limit name="bitrate" range="1-50000000" />
             <Feature name="adaptive-playback" />
         </MediaCodec>
+        <MediaCodec name="OMX.Intel.VideoDecoder.MPEG2" type="video/mpeg2">
+            <Limit name="size" min="96x32" max="1920x1088" />
+            <Limit name="alignment" value="2x2" />
+            <Limit name="block-size" value="16x16" />
+            <Limit name="blocks-per-second" range="12-489600" />
+            <Limit name="bitrate" range="1-80000000" />
+            <Feature name="adaptive-playback" />
+        </MediaCodec>
         <MediaCodec name="OMX.Intel.VideoDecoder.VP9.hybrid" type="video/x-vnd.on2.vp9">
             <Limit name="size" min="16x16" max="1920x1088" />
             <Limit name="alignment" value="2x2" />
@@ -131,7 +139,6 @@
             <Limit name="bitrate" range="1-8000000" />
             <Feature name="adaptive-playback" />
         </MediaCodec>
-        <!--
         <MediaCodec name="OMX.Intel.VideoDecoder.VP9.hwr" type="video/x-vnd.on2.vp9">
             <Limit name="size" min="16x16" max="1920x1088" />
             <Limit name="alignment" value="2x2" />
@@ -140,7 +147,6 @@
             <Limit name="bitrate" range="1-8000000" />
             <Feature name="adaptive-playback" />
         </MediaCodec>
-        -->
         <MediaCodec name="OMX.Intel.sw_vd.h265" type="video/hevc">
             <Limit name="size" min="16x16" max="1920x1088" />
             <Limit name="alignment" value="2x2" />
diff --git a/overlay/packages/apps/Bluetooth/res/values/config.xml b/overlay/packages/apps/Bluetooth/res/values/config.xml
index 5440375..072acd7 100644
--- a/overlay/packages/apps/Bluetooth/res/values/config.xml
+++ b/overlay/packages/apps/Bluetooth/res/values/config.xml
@@ -13,6 +13,7 @@
    limitations under the License.
 -->
 <resources>
+    <bool name="profile_supported_a2dp">false</bool>
     <bool name="profile_supported_pbap">false</bool>
     <bool name="profile_supported_map">false</bool>
     <bool name="profile_supported_opp">false</bool>
diff --git a/proprietary-blobs.txt b/proprietary-blobs.txt
index ae81ada..587e01e 100644
--- a/proprietary-blobs.txt
+++ b/proprietary-blobs.txt
@@ -103,6 +103,7 @@
 /system/lib/arm/libOpenMAXAL.so
 /system/lib/arm/libOpenSLES.so
 /system/lib/arm/libopus.so
+/system/lib/arm/libpcre.so
 /system/lib/arm/libpdfium.so
 /system/lib/arm/libpixelflinger.so
 /system/lib/arm/libpng.so
@@ -131,6 +132,7 @@
 /system/lib/arm/libstlport.so
 /system/lib/arm/libsurfaceflinger.so
 /system/lib/arm/libsync.so
+/system/lib/arm/libsysutils.so
 /system/lib/arm/libui.so
 /system/lib/arm/libunwind-ptrace.so
 /system/lib/arm/libunwind.so
@@ -141,7 +143,43 @@
 /system/lib/arm/libwilhelm.so
 /system/lib/arm/libz.so
 /system/lib/arm/linker
+/system/lib/arm/nb/libandroid_runtime.so
+/system/lib/arm/nb/libandroid.so
+/system/lib/arm/nb/libart.so
+/system/lib/arm/nb/libaudioflinger.so
+/system/lib/arm/nb/libbinder.so
+/system/lib/arm/nb/libcamera_client.so
+/system/lib/arm/nb/libc.so
+/system/lib/arm/nb/libcutils.so
+/system/lib/arm/nb/libdl.so
+/system/lib/arm/nb/libEGL.so
+/system/lib/arm/nb/libft2.so
+/system/lib/arm/nb/libGLESv1_CM.so
+/system/lib/arm/nb/libGLESv2.so
+/system/lib/arm/nb/libGLESv3.so
+/system/lib/arm/nb/libgui.so
+/system/lib/arm/nb/libhardware_legacy.so
+/system/lib/arm/nb/libhwui.so
+/system/lib/arm/nb/libicui18n.so
+/system/lib/arm/nb/libicuuc.so
+/system/lib/arm/nb/libjnigraphics.so
+/system/lib/arm/nb/libmediandk.so
+/system/lib/arm/nb/libmedia.so
+/system/lib/arm/nb/libm.so
+/system/lib/arm/nb/libnativehelper.so
+/system/lib/arm/nb/libOpenMAXAL.so
+/system/lib/arm/nb/libOpenSLES.so
+/system/lib/arm/nb/libpcre.so
+/system/lib/arm/nb/libpixelflinger.so
+/system/lib/arm/nb/libskia.so
+/system/lib/arm/nb/libsqlite.so
+/system/lib/arm/nb/libstagefright.so
+/system/lib/arm/nb/libsurfaceflinger.so
+/system/lib/arm/nb/libui.so
+/system/lib/arm/nb/libutils.so
+/system/lib/arm/nb/libz.so
 /system/lib/hw/hdmi_cec.fugu.so
+/system/lib/hw/keystore.moorefield.so
 /system/lib/libDecoderVP9Hybrid.so
 /system/lib/libdx_cc7.so
 /system/lib/libgabi++-mfx.so
@@ -174,6 +212,10 @@
 /system/vendor/bin/pvrtld
 /system/vendor/firmware/BCM4350C0.hcd
 /system/vendor/firmware/BCM4350C0_SR2.hcd
+/system/vendor/firmware/game_controller.hex
+/system/vendor/firmware/nexus_tv_gamepad.hex
+/system/vendor/firmware/nexus_tv_remote.hex
+/system/vendor/firmware/PR-ModelCert
 /system/vendor/lib/drm/libdrmwvmplugin.so
 /system/vendor/lib/egl/libEGL_POWERVR_ROGUE.so
 /system/vendor/lib/egl/libGLESv1_CM_POWERVR_ROGUE.so
@@ -181,12 +223,12 @@
 /system/vendor/lib/hw/gralloc.moorefield.so
 /system/vendor/lib/libbcc.moorefield.so
 /system/vendor/lib/libbcinfo.moorefield.so
+/system/vendor/lib/libcptcompiler.so
 /system/vendor/lib/libcreatesurface.so
 /system/vendor/lib/libdrmdecrypt.so
 /system/vendor/lib/libglslcompiler.so
 /system/vendor/lib/libIMGegl.so
 /system/vendor/lib/libLLVM.moorefield.so
-/system/vendor/lib/libcptcompiler.so
 /system/vendor/lib/liboemcrypto.so
 /system/vendor/lib/libpvr2d.so
 /system/vendor/lib/libpvrANDROID_WSEGL.so
@@ -206,4 +248,5 @@
 /system/vendor/lib/libWVStreamControlAPI_L1.so
 /system/vendor/lib/mediadrm/libplayreadydrmplugin.so
 /system/vendor/lib/mediadrm/libwvdrmengine.so
+/system/xbin/iperf3
 /system/xbin/wlutil
diff --git a/self-extractors/extract-lists.txt b/self-extractors/extract-lists.txt
index e9f8da2..2227087 100644
--- a/self-extractors/extract-lists.txt
+++ b/self-extractors/extract-lists.txt
@@ -107,6 +107,7 @@
             system/lib/arm/libOpenMAXAL.so \
             system/lib/arm/libOpenSLES.so \
             system/lib/arm/libopus.so \
+            system/lib/arm/libpcre.so \
             system/lib/arm/libpdfium.so \
             system/lib/arm/libpixelflinger.so \
             system/lib/arm/libpng.so \
@@ -135,6 +136,7 @@
             system/lib/arm/libstlport.so \
             system/lib/arm/libsurfaceflinger.so \
             system/lib/arm/libsync.so \
+            system/lib/arm/libsysutils.so \
             system/lib/arm/libui.so \
             system/lib/arm/libunwind-ptrace.so \
             system/lib/arm/libunwind.so \
@@ -145,6 +147,42 @@
             system/lib/arm/libwilhelm.so \
             system/lib/arm/libz.so \
             system/lib/arm/linker \
+            system/lib/arm/nb/libandroid_runtime.so \
+            system/lib/arm/nb/libandroid.so \
+            system/lib/arm/nb/libart.so \
+            system/lib/arm/nb/libaudioflinger.so \
+            system/lib/arm/nb/libbinder.so \
+            system/lib/arm/nb/libcamera_client.so \
+            system/lib/arm/nb/libc.so \
+            system/lib/arm/nb/libcutils.so \
+            system/lib/arm/nb/libdl.so \
+            system/lib/arm/nb/libEGL.so \
+            system/lib/arm/nb/libft2.so \
+            system/lib/arm/nb/libGLESv1_CM.so \
+            system/lib/arm/nb/libGLESv2.so \
+            system/lib/arm/nb/libGLESv3.so \
+            system/lib/arm/nb/libgui.so \
+            system/lib/arm/nb/libhardware_legacy.so \
+            system/lib/arm/nb/libhwui.so \
+            system/lib/arm/nb/libicui18n.so \
+            system/lib/arm/nb/libicuuc.so \
+            system/lib/arm/nb/libjnigraphics.so \
+            system/lib/arm/nb/libmediandk.so \
+            system/lib/arm/nb/libmedia.so \
+            system/lib/arm/nb/libm.so \
+            system/lib/arm/nb/libnativehelper.so \
+            system/lib/arm/nb/libOpenMAXAL.so \
+            system/lib/arm/nb/libOpenSLES.so \
+            system/lib/arm/nb/libpcre.so \
+            system/lib/arm/nb/libpixelflinger.so \
+            system/lib/arm/nb/libskia.so \
+            system/lib/arm/nb/libsqlite.so \
+            system/lib/arm/nb/libstagefright.so \
+            system/lib/arm/nb/libsurfaceflinger.so \
+            system/lib/arm/nb/libui.so \
+            system/lib/arm/nb/libutils.so \
+            system/lib/arm/nb/libz.so \
+            system/lib/hw/keystore.moorefield.so \
             system/lib/libDecoderVP9Hybrid.so \
             system/lib/libdx_cc7.so \
             system/lib/libgabi++-mfx.so \
@@ -171,6 +209,10 @@
             system/vendor/bin/pvrhwperf \
             system/vendor/bin/pvrsrvctl \
             system/vendor/bin/pvrtld \
+            system/vendor/firmware/game_controller.hex \
+            system/vendor/firmware/nexus_tv_gamepad.hex \
+            system/vendor/firmware/nexus_tv_remote.hex \
+            system/vendor/firmware/PR-ModelCert \
             system/vendor/lib/egl/libEGL_POWERVR_ROGUE.so \
             system/vendor/lib/egl/libGLESv1_CM_POWERVR_ROGUE.so \
             system/vendor/lib/egl/libGLESv2_POWERVR_ROGUE.so \
@@ -195,6 +237,7 @@
             system/vendor/lib/libsrv_um.so \
             system/vendor/lib/libufwriter.so \
             system/vendor/lib/libusc.so \
+            system/xbin/iperf3 \
             "
     ;;
   widevine)
diff --git a/self-extractors/files-by-owner.sh b/self-extractors/files-by-owner.sh
index 0fe172a..dbfdb02 100755
--- a/self-extractors/files-by-owner.sh
+++ b/self-extractors/files-by-owner.sh
@@ -94,6 +94,9 @@
   if [[ $file == */lib64/* ]]
   then
     echo "    vendor/$target_owner/fugu/proprietary/lib64/$(basename $file):$file:$target_owner \\" >> $target_owner/staging/device-partial.mk
+  elif [[ $file == */arm/nb/* ]]
+  then
+    echo "    vendor/$target_owner/fugu/proprietary/armnb/$(basename $file):$file:$target_owner \\" >> $target_owner/staging/device-partial.mk
   else
     echo "    vendor/$target_owner/fugu/proprietary/$(basename $file):$file:$target_owner \\" >> $target_owner/staging/device-partial.mk
   fi
diff --git a/self-extractors/intel/staging/device-partial.mk b/self-extractors/intel/staging/device-partial.mk
index a4a8417..e1241bc 100644
--- a/self-extractors/intel/staging/device-partial.mk
+++ b/self-extractors/intel/staging/device-partial.mk
@@ -96,6 +96,7 @@
     vendor/intel/fugu/proprietary/libOpenMAXAL.so:system/lib/arm/libOpenMAXAL.so:intel \
     vendor/intel/fugu/proprietary/libOpenSLES.so:system/lib/arm/libOpenSLES.so:intel \
     vendor/intel/fugu/proprietary/libopus.so:system/lib/arm/libopus.so:intel \
+    vendor/intel/fugu/proprietary/libpcre.so:system/lib/arm/libpcre.so:intel \
     vendor/intel/fugu/proprietary/libpdfium.so:system/lib/arm/libpdfium.so:intel \
     vendor/intel/fugu/proprietary/libpixelflinger.so:system/lib/arm/libpixelflinger.so:intel \
     vendor/intel/fugu/proprietary/libpng.so:system/lib/arm/libpng.so:intel \
@@ -124,6 +125,7 @@
     vendor/intel/fugu/proprietary/libstlport.so:system/lib/arm/libstlport.so:intel \
     vendor/intel/fugu/proprietary/libsurfaceflinger.so:system/lib/arm/libsurfaceflinger.so:intel \
     vendor/intel/fugu/proprietary/libsync.so:system/lib/arm/libsync.so:intel \
+    vendor/intel/fugu/proprietary/libsysutils.so:system/lib/arm/libsysutils.so:intel \
     vendor/intel/fugu/proprietary/libui.so:system/lib/arm/libui.so:intel \
     vendor/intel/fugu/proprietary/libunwind-ptrace.so:system/lib/arm/libunwind-ptrace.so:intel \
     vendor/intel/fugu/proprietary/libunwind.so:system/lib/arm/libunwind.so:intel \
@@ -134,6 +136,42 @@
     vendor/intel/fugu/proprietary/libwilhelm.so:system/lib/arm/libwilhelm.so:intel \
     vendor/intel/fugu/proprietary/libz.so:system/lib/arm/libz.so:intel \
     vendor/intel/fugu/proprietary/linker:system/lib/arm/linker:intel \
+    vendor/intel/fugu/proprietary/armnb/libandroid_runtime.so:system/lib/arm/nb/libandroid_runtime.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libandroid.so:system/lib/arm/nb/libandroid.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libart.so:system/lib/arm/nb/libart.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libaudioflinger.so:system/lib/arm/nb/libaudioflinger.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libbinder.so:system/lib/arm/nb/libbinder.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libcamera_client.so:system/lib/arm/nb/libcamera_client.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libc.so:system/lib/arm/nb/libc.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libcutils.so:system/lib/arm/nb/libcutils.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libdl.so:system/lib/arm/nb/libdl.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libEGL.so:system/lib/arm/nb/libEGL.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libft2.so:system/lib/arm/nb/libft2.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libGLESv1_CM.so:system/lib/arm/nb/libGLESv1_CM.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libGLESv2.so:system/lib/arm/nb/libGLESv2.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libGLESv3.so:system/lib/arm/nb/libGLESv3.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libgui.so:system/lib/arm/nb/libgui.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libhardware_legacy.so:system/lib/arm/nb/libhardware_legacy.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libhwui.so:system/lib/arm/nb/libhwui.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libicui18n.so:system/lib/arm/nb/libicui18n.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libicuuc.so:system/lib/arm/nb/libicuuc.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libjnigraphics.so:system/lib/arm/nb/libjnigraphics.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libmediandk.so:system/lib/arm/nb/libmediandk.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libmedia.so:system/lib/arm/nb/libmedia.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libm.so:system/lib/arm/nb/libm.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libnativehelper.so:system/lib/arm/nb/libnativehelper.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libOpenMAXAL.so:system/lib/arm/nb/libOpenMAXAL.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libOpenSLES.so:system/lib/arm/nb/libOpenSLES.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libpcre.so:system/lib/arm/nb/libpcre.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libpixelflinger.so:system/lib/arm/nb/libpixelflinger.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libskia.so:system/lib/arm/nb/libskia.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libsqlite.so:system/lib/arm/nb/libsqlite.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libstagefright.so:system/lib/arm/nb/libstagefright.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libsurfaceflinger.so:system/lib/arm/nb/libsurfaceflinger.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libui.so:system/lib/arm/nb/libui.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libutils.so:system/lib/arm/nb/libutils.so:intel \
+    vendor/intel/fugu/proprietary/armnb/libz.so:system/lib/arm/nb/libz.so:intel \
+    vendor/intel/fugu/proprietary/keystore.moorefield.so:system/lib/hw/keystore.moorefield.so:intel \
     vendor/intel/fugu/proprietary/libDecoderVP9Hybrid.so:system/lib/libDecoderVP9Hybrid.so:intel \
     vendor/intel/fugu/proprietary/libdx_cc7.so:system/lib/libdx_cc7.so:intel \
     vendor/intel/fugu/proprietary/libgabi++-mfx.so:system/lib/libgabi++-mfx.so:intel \
@@ -160,6 +198,10 @@
     vendor/intel/fugu/proprietary/pvrhwperf:system/vendor/bin/pvrhwperf:intel \
     vendor/intel/fugu/proprietary/pvrsrvctl:system/vendor/bin/pvrsrvctl:intel \
     vendor/intel/fugu/proprietary/pvrtld:system/vendor/bin/pvrtld:intel \
+    vendor/intel/fugu/proprietary/game_controller.hex:system/vendor/firmware/game_controller.hex:intel \
+    vendor/intel/fugu/proprietary/nexus_tv_gamepad.hex:system/vendor/firmware/nexus_tv_gamepad.hex:intel \
+    vendor/intel/fugu/proprietary/nexus_tv_remote.hex:system/vendor/firmware/nexus_tv_remote.hex:intel \
+    vendor/intel/fugu/proprietary/PR-ModelCert:system/vendor/firmware/PR-ModelCert:intel \
     vendor/intel/fugu/proprietary/libEGL_POWERVR_ROGUE.so:system/vendor/lib/egl/libEGL_POWERVR_ROGUE.so:intel \
     vendor/intel/fugu/proprietary/libGLESv1_CM_POWERVR_ROGUE.so:system/vendor/lib/egl/libGLESv1_CM_POWERVR_ROGUE.so:intel \
     vendor/intel/fugu/proprietary/libGLESv2_POWERVR_ROGUE.so:system/vendor/lib/egl/libGLESv2_POWERVR_ROGUE.so:intel \
@@ -184,4 +226,5 @@
     vendor/intel/fugu/proprietary/libsrv_um.so:system/vendor/lib/libsrv_um.so:intel \
     vendor/intel/fugu/proprietary/libufwriter.so:system/vendor/lib/libufwriter.so:intel \
     vendor/intel/fugu/proprietary/libusc.so:system/vendor/lib/libusc.so:intel \
+    vendor/intel/fugu/proprietary/iperf3:system/xbin/iperf3:intel \
 
diff --git a/vendor_owner_info.txt b/vendor_owner_info.txt
index 95ee40d..8c671c1 100644
--- a/vendor_owner_info.txt
+++ b/vendor_owner_info.txt
@@ -87,6 +87,7 @@
 system/lib/arm/libOpenMAXAL.so:intel
 system/lib/arm/libOpenSLES.so:intel
 system/lib/arm/libopus.so:intel
+system/lib/arm/libpcre.so:intel
 system/lib/arm/libpdfium.so:intel
 system/lib/arm/libpixelflinger.so:intel
 system/lib/arm/libpng.so:intel
@@ -115,6 +116,7 @@
 system/lib/arm/libstlport.so:intel
 system/lib/arm/libsurfaceflinger.so:intel
 system/lib/arm/libsync.so:intel
+system/lib/arm/libsysutils.so:intel
 system/lib/arm/libui.so:intel
 system/lib/arm/libunwind-ptrace.so:intel
 system/lib/arm/libunwind.so:intel
@@ -125,7 +127,43 @@
 system/lib/arm/libwilhelm.so:intel
 system/lib/arm/libz.so:intel
 system/lib/arm/linker:intel
+system/lib/arm/nb/libandroid_runtime.so:intel
+system/lib/arm/nb/libandroid.so:intel
+system/lib/arm/nb/libart.so:intel
+system/lib/arm/nb/libaudioflinger.so:intel
+system/lib/arm/nb/libbinder.so:intel
+system/lib/arm/nb/libcamera_client.so:intel
+system/lib/arm/nb/libc.so:intel
+system/lib/arm/nb/libcutils.so:intel
+system/lib/arm/nb/libdl.so:intel
+system/lib/arm/nb/libEGL.so:intel
+system/lib/arm/nb/libft2.so:intel
+system/lib/arm/nb/libGLESv1_CM.so:intel
+system/lib/arm/nb/libGLESv2.so:intel
+system/lib/arm/nb/libGLESv3.so:intel
+system/lib/arm/nb/libgui.so:intel
+system/lib/arm/nb/libhardware_legacy.so:intel
+system/lib/arm/nb/libhwui.so:intel
+system/lib/arm/nb/libicui18n.so:intel
+system/lib/arm/nb/libicuuc.so:intel
+system/lib/arm/nb/libjnigraphics.so:intel
+system/lib/arm/nb/libmediandk.so:intel
+system/lib/arm/nb/libmedia.so:intel
+system/lib/arm/nb/libm.so:intel
+system/lib/arm/nb/libnativehelper.so:intel
+system/lib/arm/nb/libOpenMAXAL.so:intel
+system/lib/arm/nb/libOpenSLES.so:intel
+system/lib/arm/nb/libpcre.so:intel
+system/lib/arm/nb/libpixelflinger.so:intel
+system/lib/arm/nb/libskia.so:intel
+system/lib/arm/nb/libsqlite.so:intel
+system/lib/arm/nb/libstagefright.so:intel
+system/lib/arm/nb/libsurfaceflinger.so:intel
+system/lib/arm/nb/libui.so:intel
+system/lib/arm/nb/libutils.so:intel
+system/lib/arm/nb/libz.so:intel
 system/lib/hw/hdmi_cec.fugu.so:asus
+system/lib/hw/keystore.moorefield.so:intel
 system/lib/libDecoderVP9Hybrid.so:intel
 system/lib/libdx_cc7.so:intel
 system/lib/libgabi++-mfx.so:intel
@@ -158,6 +196,10 @@
 system/vendor/bin/pvrtld:intel
 system/vendor/firmware/BCM4350C0.hcd:broadcom
 system/vendor/firmware/BCM4350C0_SR2.hcd:broadcom
+system/vendor/firmware/game_controller.hex:intel
+system/vendor/firmware/nexus_tv_gamepad.hex:intel
+system/vendor/firmware/nexus_tv_remote.hex:intel
+system/vendor/firmware/PR-ModelCert:intel
 system/vendor/lib/drm/libdrmwvmplugin.so:widevine
 system/vendor/lib/egl/libEGL_POWERVR_ROGUE.so:intel
 system/vendor/lib/egl/libGLESv1_CM_POWERVR_ROGUE.so:intel
@@ -165,12 +207,12 @@
 system/vendor/lib/hw/gralloc.moorefield.so:intel
 system/vendor/lib/libbcc.moorefield.so:intel
 system/vendor/lib/libbcinfo.moorefield.so:intel
+system/vendor/lib/libcptcompiler.so:intel
 system/vendor/lib/libcreatesurface.so:intel
 system/vendor/lib/libdrmdecrypt.so:widevine
 system/vendor/lib/libglslcompiler.so:intel
 system/vendor/lib/libIMGegl.so:intel
 system/vendor/lib/libLLVM.moorefield.so:intel
-system/vendor/lib/libcptcompiler.so:intel
 system/vendor/lib/liboemcrypto.so:widevine
 system/vendor/lib/libpvr2d.so:intel
 system/vendor/lib/libpvrANDROID_WSEGL.so:intel
@@ -190,4 +232,5 @@
 system/vendor/lib/libWVStreamControlAPI_L1.so:widevine
 system/vendor/lib/mediadrm/libplayreadydrmplugin.so:asus
 system/vendor/lib/mediadrm/libwvdrmengine.so:widevine
+system/xbin/iperf3:intel
 system/xbin/wlutil:broadcom
diff --git a/wrs_omxil_components.list b/wrs_omxil_components.list
index 500208d..2b85fda 100644
--- a/wrs_omxil_components.list
+++ b/wrs_omxil_components.list
@@ -3,6 +3,7 @@
 libOMXVideoDecoderWMV.so
 libOMXVideoDecoderMPEG4.so
 libOMXVideoDecoderVP8.so
+libOMXVideoDecoderMPEG2.so
 libOMXVideoDecoderVP9HWR.so
 libOMXVideoDecoderVP9Hybrid.so
 libOMXVideoDecoderAVCSecure.so