1 /*
2  * Copyright (c) 2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 /*
17  * @addtogroup HdiA2dp
18  * @{
19  *
20  * @brief Provides unified APIs for the A2DP service.
21  *
22  * The Host can use the interface provided by the module to create an audio session,
23  * and exchange data with the audio subsystem.
24  *
25  * @since 4.0
26  */
27 
28 /**
29  * @file IBluetoothAudioCallback.idl
30  *
31  * @brief Defines the callback function, including the start, suspend, stop operations from audio.
32  *
33  * @since 4.0
34  * @version 2.0
35  */
36 
37 package ohos.hdi.bluetooth.a2dp.v2_0;
38 
39 import ohos.hdi.bluetooth.a2dp.v2_0.BluetoothAudioTypes;
40 
41 /**
42  * @brief Defines the callback function to start, suspend, stop audio render, change current codec.
43  *
44  * @since 4.0
45  * @version 2.0
46  */
47 [callback] interface IBluetoothAudioCallback {
48     /**
49      * @brief Start audio render callback function.
50      *
51      * @return Returns <b>0</b> if the result is returned successfully; returns a negative value otherwise.
52      *
53      * @since 4.0
54      * @version 2.0
55      */
56     StartRender();
57 
58     /**
59      * @brief Suspend audio render callback function.
60      *
61      * @return Returns <b>0</b> if the result is returned successfully; returns a negative value otherwise.
62      *
63      * @since 4.0
64      * @version 2.0
65      */
66     SuspendRender();
67 
68     /**
69      * @brief Stop audio render callback function.
70      *
71      * @return Returns <b>0</b> if the result is returned successfully; returns a negative value otherwise.
72      *
73      * @since 4.0
74      * @version 2.0
75      */
76     StopRender();
77 
78     /**
79      * @brief Change the audio encoder callback function.
80      *
81      * @return Returns <b>0</b> if the result is returned successfully; returns a negative value otherwise.
82      *
83      * @since 5.0
84      * @version 2.0
85      */
86      ChangeCodec([in] struct CodecParam codecParam);
87 
88     /**
89      * @brief Obtains the last number of output audio frames.
90      *
91      * @param latencyNs Indicates the pointer to the latency.
92      * @param frames Indicates the pointer to the last number of output audio frames.
93      * @param time Indicates the pointer to the timestamp associated with the frame.
94      * @return Returns <b>0</b> if the last number is obtained; returns a negative value otherwise.
95      *
96      * @since 5.0
97      * @version 1.0
98      */
99      GetRenderPosition([out] unsigned long latencyNs, [out] unsigned long frames, [out] struct BluetoothTimeStamp time);
100 }
101