• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023 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 OHAudio
18  * @{
19  *
20  * @brief Provide the definition of the C interface for the audio module.
21  *
22  * @syscap SystemCapability.Multimedia.Audio.Core
23  *
24  * @since 10
25  * @version 1.0
26  */
27 
28 /**
29  * @file native_audiorenderer.h
30  *
31  * @brief Declare audio stream related interfaces for output type.
32  *
33  * @syscap SystemCapability.Multimedia.Audio.Core
34  * @since 10
35  * @version 1.0
36  */
37 
38 #ifndef NATIVE_AUDIORENDERER_H
39 #define NATIVE_AUDIORENDERER_H
40 
41 #include <time.h>
42 #include "native_audiostream_base.h"
43 #ifdef __cplusplus
44 extern "C" {
45 #endif
46 /*
47  * Request to release the renderer stream.
48  *
49  * @since 10
50  *
51  * @param renderer Reference created by OH_AudioStreamBuilder_GenerateRenderer()
52  * @return {@link #AUDIOSTREAM_SUCCESS} or an undesired error.
53  */
54 OH_AudioStream_Result OH_AudioRenderer_Release(OH_AudioRenderer* renderer);
55 
56 /*
57  * Request to start the renderer stream.
58  *
59  * @since 10
60  *
61  * @param renderer reference created by OH_AudioStreamBuilder
62  * @return {@link #AUDIOSTREAM_SUCCESS} or an undesired error.
63  */
64 OH_AudioStream_Result OH_AudioRenderer_Start(OH_AudioRenderer* renderer);
65 
66 /*
67  * Request to pause the renderer stream.
68  *
69  * @since 10
70  *
71  * @param renderer Reference created by OH_AudioStreamBuilder_GenerateRenderer()
72  * @return {@link #AUDIOSTREAM_SUCCESS} or an undesired error.
73  */
74 OH_AudioStream_Result OH_AudioRenderer_Pause(OH_AudioRenderer* renderer);
75 
76 /*
77  * Request to stop renderer stream.
78  *
79  * @since 10
80  *
81  * @param renderer Reference created by OH_AudioStreamBuilder_GenerateRenderer()
82  * @return {@link #AUDIOSTREAM_SUCCESS} or an undesired error.
83  */
84 OH_AudioStream_Result OH_AudioRenderer_Stop(OH_AudioRenderer* renderer);
85 
86 /*
87  * Request to flush the renderer stream.
88  *
89  * @since 10
90  *
91  * @param renderer Reference created by OH_AudioStreamBuilder_GenerateRenderer()
92  * @return {@link #AUDIOSTREAM_SUCCESS} or an undesired error.
93  */
94 OH_AudioStream_Result OH_AudioRenderer_Flush(OH_AudioRenderer* renderer);
95 
96 /*
97  * Query the current state of the renderer client.
98  *
99  * This function will return the renderer state without updating the state.
100  *
101  * @since 10
102  *
103  * @param renderer Reference created by OH_AudioStreamBuilder_GenerateRenderer()
104  * @param state Pointer to a variable that will be set for the state value.
105  * @return {@link #AUDIOSTREAM_SUCCESS} or an undesired error.
106  */
107 OH_AudioStream_Result OH_AudioRenderer_GetCurrentState(OH_AudioRenderer* renderer,
108     OH_AudioStream_State* state);
109 
110 /*
111  * Query the sample rate value of the renderer client
112  *
113  * This function will return the renderer sample rate value without updating the state.
114  *
115  * @since 10
116  *
117  * @param renderer Reference created by OH_AudioStreamBuilder_GenerateRenderer()
118  * @param rate The state value to be updated
119  * @return {@link #AUDIOSTREAM_SUCCESS} or an undesired error.
120  */
121 OH_AudioStream_Result OH_AudioRenderer_GetSamplingRate(OH_AudioRenderer* renderer, int32_t* rate);
122 
123 /*
124  * Query the stream id of the renderer client.
125  *
126  * @since 10
127  *
128  * @param renderer Reference created by OH_AudioStreamBuilder_GenerateRenderer()
129  * @param stramId Pointer to a variable that will be set for the stream id.
130  * @return {@link #AUDIOSTREAM_SUCCESS} or an undesired error.
131  */
132 OH_AudioStream_Result OH_AudioRenderer_GetStreamId(OH_AudioRenderer* renderer, uint32_t* streamId);
133 
134 /*
135  * Query the channel count of the renderer client.
136  *
137  * @since 10
138  *
139  * @param renderer Reference created by OH_AudioStreamBuilder_GenerateRenderer()
140  * @param channelCount Pointer to a variable that will be set for the channel count.
141  * @return {@link #AUDIOSTREAM_SUCCESS} or an undesired error.
142  */
143 OH_AudioStream_Result OH_AudioRenderer_GetChannelCount(OH_AudioRenderer* renderer, int32_t* channelCount);
144 
145 /*
146  * Query the sample format of the renderer client.
147  *
148  * @since 10
149  *
150  * @param renderer Reference created by OH_AudioStreamBuilder_GenerateRenderer()
151  * @param sampleFormat Pointer to a variable that will be set for the sample format.
152  * @return {@link #AUDIOSTREAM_SUCCESS} or an undesired error.
153  */
154 OH_AudioStream_Result OH_AudioRenderer_GetSampleFormat(OH_AudioRenderer* renderer,
155     OH_AudioStream_SampleFormat* sampleFormat);
156 
157 /*
158  * Query the latency mode of the renderer client.
159  *
160  * @since 10
161  *
162  * @param renderer Reference created by OH_AudioStreamBuilder_GenerateRenderer()
163  * @param latencyMode Pointer to a variable that will be set for the latency mode.
164  * @return {@link #AUDIOSTREAM_SUCCESS} or an undesired error.
165  */
166 OH_AudioStream_Result OH_AudioRenderer_GetLatencyMode(OH_AudioRenderer* renderer,
167     OH_AudioStream_LatencyMode* latencyMode);
168 /*
169  * Query the renderer info of the renderer client.
170  *
171  * The rendere info includes {@link OH_AudioStream_Usage} value.
172  *
173  * @since 10
174  *
175  * @param renderer Reference created by OH_AudioStreamBuilder_GenerateRenderer()
176  * @param usage Pointer to a variable that will be set for the stream usage.
177  * @return {@link #AUDIOSTREAM_SUCCESS} or an undesired error.
178  */
179 OH_AudioStream_Result OH_AudioRenderer_GetRendererInfo(OH_AudioRenderer* renderer,
180     OH_AudioStream_Usage* usage);
181 
182 /*
183  * Query the encoding type of the renderer client.
184  *
185  * @since 10
186  *
187  * @param renderer Reference created by OH_AudioStreamBuilder_GenerateRenderer()
188  * @param encodingType Pointer to a variable that will be set for the encoding type.
189  * @return {@link #AUDIOSTREAM_SUCCESS} or an undesired error.
190  */
191 OH_AudioStream_Result OH_AudioRenderer_GetEncodingType(OH_AudioRenderer* renderer,
192     OH_AudioStream_EncodingType* encodingType);
193 
194 /*
195  * Query the the number of frames that have been written since the stream was created.
196  *
197  * @since 10
198  *
199  * @param renderer Reference created by OH_AudioStreamBuilder_GenerateRenderer()
200  * @param frames Pointer to a variable that will be set for the frame count number.
201  * @return {@link #AUDIOSTREAM_SUCCESS} or an undesired error.
202  */
203 OH_AudioStream_Result OH_AudioRenderer_GetFramesWritten(OH_AudioRenderer* renderer, int64_t* frames);
204 
205 /*
206  * Query the the time at which a particular frame was presented.
207  *
208  * @since 10
209  *
210  * @param renderer Reference created by OH_AudioStreamBuilder_GenerateRenderer()
211  * @param clockId {@link #CLOCK_MONOTONIC}
212  * @param framePosition Pointer to a variable to receive the position
213  * @param timestamp Pointer to a variable to receive the timestamp
214  * @return {@link #AUDIOSTREAM_SUCCESS} or an undesired error.
215  */
216 OH_AudioStream_Result OH_AudioRenderer_GetTimestamp(OH_AudioRenderer* renderer,
217     clockid_t clockId, int64_t* framePosition, int64_t* timestamp);
218 
219 /*
220  * Query the frame size in callback, it is a fixed length that the stream want to be filled for each callback.
221  *
222  * @since 10
223  *
224  * @param renderer Reference created by OH_AudioStreamBuilder_GenerateRenderer()
225  * @param frameSize Pointer to a variable that will be set for the frame size.
226  * @return {@link #AUDIOSTREAM_SUCCESS} or an undesired error.
227  */
228 OH_AudioStream_Result OH_AudioRenderer_GetFrameSizeInCallback(OH_AudioRenderer* renderer, int32_t* frameSize);
229 #ifdef __cplusplus
230 }
231 #endif
232 #endif // NATIVE_AUDIORENDERER_H
233