Revert "Revert "Initial AOSP push""

This reverts commit 489b0eaf2966181709acc2a11aac1317dcb0a0fc.

Change-Id: I7b90efb10275289ba9234279757b21dce5ab2535
diff --git a/libOpenMAXAL/stubs_arm64.cc b/libOpenMAXAL/stubs_arm64.cc
new file mode 100644
index 0000000..042a697
--- /dev/null
+++ b/libOpenMAXAL/stubs_arm64.cc
@@ -0,0 +1,111 @@
+//
+// Copyright (C) 2020 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.
+//
+
+// clang-format off
+#include "native_bridge_support/vdso/interceptable_functions.h"
+
+DEFINE_INTERCEPTABLE_STUB_FUNCTION(xaCreateEngine);
+DEFINE_INTERCEPTABLE_STUB_FUNCTION(xaQueryNumSupportedEngineInterfaces);
+DEFINE_INTERCEPTABLE_STUB_FUNCTION(xaQuerySupportedEngineInterfaces);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_ANDROIDBUFFERQUEUESOURCE);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_AUDIODECODERCAPABILITIES);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_AUDIOENCODER);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_AUDIOENCODERCAPABILITIES);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_AUDIOIODEVICECAPABILITIES);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_CAMERA);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_CAMERACAPABILITIES);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_CONFIGEXTENSION);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_DEVICEVOLUME);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_DYNAMICINTERFACEMANAGEMENT);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_DYNAMICSOURCE);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_ENGINE);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_EQUALIZER);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_IMAGECONTROLS);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_IMAGEDECODERCAPABILITIES);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_IMAGEEFFECTS);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_IMAGEENCODER);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_IMAGEENCODERCAPABILITIES);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_LED);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_METADATAEXTRACTION);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_METADATAINSERTION);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_METADATATRAVERSAL);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_NULL);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_OBJECT);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_OUTPUTMIX);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_PLAY);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_PLAYBACKRATE);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_PREFETCHSTATUS);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_RADIO);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_RDS);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_RECORD);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_SEEK);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_SNAPSHOT);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_STREAMINFORMATION);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_THREADSYNC);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_VIBRA);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_VIDEODECODERCAPABILITIES);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_VIDEOENCODER);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_VIDEOENCODERCAPABILITIES);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_VIDEOPOSTPROCESSING);
+DEFINE_INTERCEPTABLE_STUB_VARIABLE(XA_IID_VOLUME);
+
+static void __attribute__((constructor(0))) init_stub_library() {
+  INIT_INTERCEPTABLE_STUB_FUNCTION("libOpenMAXAL.so", xaCreateEngine);
+  INIT_INTERCEPTABLE_STUB_FUNCTION("libOpenMAXAL.so", xaQueryNumSupportedEngineInterfaces);
+  INIT_INTERCEPTABLE_STUB_FUNCTION("libOpenMAXAL.so", xaQuerySupportedEngineInterfaces);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_ANDROIDBUFFERQUEUESOURCE);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_AUDIODECODERCAPABILITIES);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_AUDIOENCODER);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_AUDIOENCODERCAPABILITIES);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_AUDIOIODEVICECAPABILITIES);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_CAMERA);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_CAMERACAPABILITIES);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_CONFIGEXTENSION);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_DEVICEVOLUME);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_DYNAMICINTERFACEMANAGEMENT);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_DYNAMICSOURCE);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_ENGINE);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_EQUALIZER);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_IMAGECONTROLS);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_IMAGEDECODERCAPABILITIES);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_IMAGEEFFECTS);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_IMAGEENCODER);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_IMAGEENCODERCAPABILITIES);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_LED);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_METADATAEXTRACTION);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_METADATAINSERTION);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_METADATATRAVERSAL);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_NULL);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_OBJECT);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_OUTPUTMIX);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_PLAY);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_PLAYBACKRATE);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_PREFETCHSTATUS);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_RADIO);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_RDS);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_RECORD);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_SEEK);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_SNAPSHOT);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_STREAMINFORMATION);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_THREADSYNC);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_VIBRA);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_VIDEODECODERCAPABILITIES);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_VIDEOENCODER);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_VIDEOENCODERCAPABILITIES);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_VIDEOPOSTPROCESSING);
+  INIT_INTERCEPTABLE_STUB_VARIABLE("libOpenMAXAL.so", XA_IID_VOLUME);
+}
+// clang-format on