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