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