1d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk/* 2d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * Copyright (C) 2017 The Android Open Source Project 3d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * 4d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * Licensed under the Apache License, Version 2.0 (the "License"); 5d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * you may not use this file except in compliance with the License. 6d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * You may obtain a copy of the License at 7d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * 8d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * http://www.apache.org/licenses/LICENSE-2.0 9d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * 10d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * Unless required by applicable law or agreed to in writing, software 11d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * distributed under the License is distributed on an "AS IS" BASIS, 12d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * See the License for the specific language governing permissions and 14d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * limitations under the License. 15d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk */ 16d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk 17d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk/** 18d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * This is test support for AAudio. 19d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk */ 20d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk#ifndef AAUDIO_AAUDIO_TESTING_H 21d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk#define AAUDIO_AAUDIO_TESTING_H 22d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk 23d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk#include <aaudio/AAudio.h> 24d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk 25d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk#ifdef __cplusplus 26d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burkextern "C" { 27d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk#endif 28d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk 29d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk/************************************************************************************ 30d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * The definitions below are only for testing. Do not use them in an application. 31d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * They may change or be removed at any time. 32d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk ************************************************************************************/ 33d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk 34d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burkenum { 35d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk /** 36d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * Related feature is disabled and never used. 37d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk */ 38d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk AAUDIO_POLICY_NEVER = 1, 39d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk 40d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk /** 41d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * If related feature works then use it. Otherwise fall back to something else. 42d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk */ 43d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk AAUDIO_POLICY_AUTO, 44d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk 45d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk /** 46d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * Related feature must be used. If not available then fail. 47d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk */ 48d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk AAUDIO_POLICY_ALWAYS 49d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk}; 50d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burktypedef int32_t aaudio_policy_t; 51d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk 52d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk/** 53d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * Control whether AAudioStreamBuilder_openStream() will use the new MMAP data path 54d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * or the older "Legacy" data path. 55d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * 56d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * This will only affect the current process. 57d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * 58d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * If unspecified then the policy will be based on system properties or configuration. 59d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * 60d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * @note This is only for testing. Do not use this in an application. 61d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * It may change or be removed at any time. 62d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * 63d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * @param policy AAUDIO_UNSPECIFIED, AAUDIO_POLICY_NEVER, AAUDIO_POLICY_AUTO, or AAUDIO_POLICY_ALWAYS 64d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * @return AAUDIO_OK or a negative error 65d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk */ 66d04aeea00bdaa999821e1a15c437ea648bd07195Phil BurkAAUDIO_API aaudio_result_t AAudio_setMMapPolicy(aaudio_policy_t policy); 67d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk 68d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk/** 69d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * Get the current MMAP policy set by AAudio_setMMapPolicy(). 70d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * 71d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * @note This is only for testing. Do not use this in an application. 72d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * It may change or be removed at any time. 73d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * 74d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * @return current policy 75d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk */ 76d04aeea00bdaa999821e1a15c437ea648bd07195Phil BurkAAUDIO_API aaudio_policy_t AAudio_getMMapPolicy(); 77d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk 78d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk/** 79d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * Return true if the stream uses the MMAP data path versus the legacy path. 80d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * 81d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * @note This is only for testing. Do not use this in an application. 82d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * It may change or be removed at any time. 83d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * 84d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk * @return true if the stream uses ther MMAP data path 85d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk */ 86d04aeea00bdaa999821e1a15c437ea648bd07195Phil BurkAAUDIO_API bool AAudioStream_isMMapUsed(AAudioStream* stream); 87d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk 88d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk#ifdef __cplusplus 89d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk} 90d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk#endif 91d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk 92d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk#endif //AAUDIO_AAUDIO_TESTING_H 93d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk 94d04aeea00bdaa999821e1a15c437ea648bd07195Phil Burk/** @} */ 95