#Copyright (c) 2019-2020, The Linux Foundation. All rights reserved.

#Redistribution and use in source and binary forms, with or without
#modification, are permitted provided that the following conditions are
#met:
#    * Redistributions of source code must retain the above copyright
#      notice, this list of conditions and the following disclaimer.
#    * Redistributions in binary form must reproduce the above
#      copyright notice, this list of conditions and the following
#      disclaimer in the documentation and/or other materials provided
#      with the distribution.
#    * Neither the name of The Linux Foundation nor the names of its
#      contributors may be used to endorse or promote products derived
#      from this software without specific prior written permission.

#THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
#WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
#MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
#ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
#BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
#CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
#SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
#BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
#WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
#OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
#IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

# Postproc HIDL interface
8e82153c316275c570e7e803be447308745dfd84a8ef19c26e4f66e38612b27b vendor.qti.hardware.camera.postproc@1.0::types
1f128a60e07e9750d93ba106e74cd2ab38268994ca8c53816659ae2abce31176 vendor.qti.hardware.camera.postproc@1.0::IPostProcService
129c97e20ef36e8ac4ec9b2b8a2083849bc5932a62e434af2eb977f1ab8594db vendor.qti.hardware.camera.postproc@1.0::IPostProcServiceCallBacks
df8ddeff86819bb9775c2d1ee4c6d3adb55f1c9c9964d730f99d37136b0a2f5d vendor.qti.hardware.camera.postproc@1.0::IPostProcSession

# AON HIDL interface
6a1d895a7a30c53a5b52f9588538966d4f9a5127efd54479675ba36a0fd4bae4 vendor.qti.hardware.camera.aon@1.0::types
162887982638bfa8a39e1dd56317afc6923d72e27e8b8d40fc0bc95728162ab0 vendor.qti.hardware.camera.aon@1.0::IAONService
7afc58617fa3cd6ec9baa139c197e975fae827a9c5dd4919ee53395d40f3a03a vendor.qti.hardware.camera.aon@1.0::IAONServiceCallBack

44dae52420281fec0dcb2c9da359482daf3963a0e1c0c68ac27cbcec6ff8517b vendor.qti.hardware.camera.aon@1.1::types
d82c958291563902a0190b1f7da58b3808fbb3a018fbf80e06570c6a954dccf7 vendor.qti.hardware.camera.aon@1.1::IAONService
4f2d1dcc47f3d462088ba445319a09b8f9b2f13a2e57a1b34ea06ce3aa309207 vendor.qti.hardware.camera.aon@1.1::IAONServiceCallBack

afa7eb61656ef6806a373aaae88b664425e08e3f57bc9bae04f7b63acfa48c8d vendor.qti.hardware.camera.aon@1.2::types
87c4b087b037f9a3dd6d50513c45ee54450a7a2ca8cc3af2a6d2c939d6d9dda5 vendor.qti.hardware.camera.aon@1.2::IAONService
3ff06912b21fd0b0f0efc5621eab1e3af03c1219716ceada54ae01650b04d78c vendor.qti.hardware.camera.aon@1.2::IAONServiceCallBack

54dd29871acf91ca52acdd3d95e92b4a9ec90a5d9af4ddea83f589d2613982c0 vendor.qti.hardware.camera.aon@1.3::types
614adcae054e8f6486e0c1fbe9fc6502d210bdba646e3079f5b61ea130eeec1f vendor.qti.hardware.camera.aon@1.3::IAONService
e07e6264400f6cfd226c7a95287c56a23f1deaaf07b51b8c4b605982760906ff vendor.qti.hardware.camera.aon@1.3::IAONServiceCallBack

e0837fce33d8d9f3f4ba56f103bef9b72e82d65d008b0001a4f6f45ef760f461 vendor.qti.hardware.camera.aon@1.4::types
0453e7525f949a3438caa19390b33def5034a559041c8cabe5b5915d869b8351 vendor.qti.hardware.camera.aon@1.4::IAONService
4a45fc2603820d0e2e31f1554f1b1ac2d204c48ce7ee2ee0717a7b7f347e853b vendor.qti.hardware.camera.aon@1.4::IAONServiceCallBack