1# IAudioCapture 2 3 4## 概述 5 6提供音频录音支持的驱动能力,包括音频控制、音频属性、音频场景、音频音量、录制音频帧数据等。 7 8**起始版本:** 4.1 9 10**相关模块:**[HdiAudio](_hdi_audio_v20.md) 11 12 13## 汇总 14 15 16### Public 成员函数 17 18| 名称 | 描述 | 19| -------- | -------- | 20| [CaptureFrame](#captureframe) ([out] byte[] frame, [out] unsigned long replyBytes) | 从音频驱动中录制一帧输入数据(录音,音频上行数据)。 | 21| [GetCapturePosition](#getcaptureposition) ([out] unsigned long frames, [out] struct [AudioTimeStamp](_audio_time_stamp_v20.md) time) | 获取最后一个输入音频帧数。 | 22| [CheckSceneCapability](#checkscenecapability) ([in] struct [AudioSceneDescriptor](_audio_scene_descriptor_v20.md) scene, [out] boolean supported) | 判断某个音频场景能力是否支持。 | 23| [SelectScene](#selectscene) ([in] struct [AudioSceneDescriptor](_audio_scene_descriptor_v20.md) scene) | 选择音频场景。 | 24| [SetMute](#setmute) ([in] boolean mute) | 设置音频的静音状态。 | 25| [GetMute](#getmute) ([out] boolean mute) | 获取音频的静音状态。 | 26| [SetVolume](#setvolume) ([in] float volume) | 设置一个音频流的音量。 | 27| [GetVolume](#getvolume) ([out] float volume) | 获取一个音频流的音量。 | 28| [GetGainThreshold](#getgainthreshold) ([out] float min, [out] float max) | 获取音频流增益的阈值。 | 29| [GetGain](#getgain) ([out] float gain) | 获取音频流的增益。 | 30| [SetGain](#setgain) ([in] float gain) | 设置音频流的增益。 | 31| [GetFrameSize](#getframesize) ([out] unsigned long size) | 获取一帧音频数据的长度(字节数)大小。 | 32| [GetFrameCount](#getframecount) ([out] unsigned long count) | 获取音频buffer中的音频帧数。 | 33| [SetSampleAttributes](#setsampleattributes) ([in] struct [AudioSampleAttributes](_audio_sample_attributes_v20.md) attrs) | 设置音频采样的属性参数。 | 34| [GetSampleAttributes](#getsampleattributes) ([out] struct [AudioSampleAttributes](_audio_sample_attributes_v20.md) attrs) | 获取音频采样的属性参数。 | 35| [GetCurrentChannelId](#getcurrentchannelid) ([out] unsigned int channelId) | 获取音频的数据通道ID。 | 36| [SetExtraParams](#setextraparams) ([in] String keyValueList) | 设置音频拓展参数。 | 37| [GetExtraParams](#getextraparams) ([out] String keyValueList) | 获取音频拓展参数。 | 38| [ReqMmapBuffer](#reqmmapbuffer) ([in] int reqSize, [out] struct AudioMmapBufferDescriptor desc) | 请求mmap缓冲区。 | 39| [GetMmapPosition](#getmmapposition) ([out] unsigned long frames, [out] struct [AudioTimeStamp](_audio_time_stamp_v20.md) time) | 获取当前mmap的读/写位置。 | 40| [AddAudioEffect](#addaudioeffect) ([in] unsigned long effectid) | 添加音频效果。 | 41| [RemoveAudioEffect](#removeaudioeffect) ([in] unsigned long effectid) | 移除音频效果。 | 42| [GetFrameBufferSize](#getframebuffersize) ([out] unsigned long bufferSize) | 获取缓冲区大小。 | 43| [Start](#start) () | 启动一个音频播放或录音处理。 | 44| [Stop](#stop) () | 停止一个音频播放或录音处理。 | 45| [Pause](#pause) () | 暂停一个音频播放或录音处理。 | 46| [Resume](#resume) () | 恢复一个音频播放或录音处理。 | 47| [Flush](#flush) () | 刷新音频缓冲区buffer中的数据。 | 48| [TurnStandbyMode](#turnstandbymode) () | 设置或去设置设备的待机模式。 | 49| [AudioDevDump](#audiodevdump) ([in] int range, [in] int fd) | 保存音频设备信息。 | 50| [IsSupportsPauseAndResume](#issupportspauseandresume) ([out] boolean supportPause, [out] boolean supportResume) | 判断声卡是否支持音频录制的暂停和恢复功能。 | 51 52 53## 成员函数说明 54 55 56### AddAudioEffect() 57 58``` 59IAudioCapture::AddAudioEffect ([in] unsigned long effectid) 60``` 61 62**描述** 63 64添加音频效果。 65 66**起始版本:** 4.1 67 68**参数:** 69 70| 名称 | 描述 | 71| -------- | -------- | 72| effectid | 添加的音频效果实例标识符。 | 73 74**返回:** 75 76成功返回值0,失败返回负值。 77 78 79### AudioDevDump() 80 81``` 82IAudioCapture::AudioDevDump ([in] int range, [in] int fd ) 83``` 84 85**描述** 86 87保存音频设备信息。 88 89**起始版本:** 4.1 90 91**参数:** 92 93| 名称 | 描述 | 94| -------- | -------- | 95| range | 需要保存的信息范围(3 ~ 5),分为简要信息(3)、一般信息(4)、全量信息(5)。 | 96| fd | 保存到指定的目标文件。 | 97 98**返回:** 99 100成功返回值0,失败返回负值。 101 102 103### CaptureFrame() 104 105``` 106IAudioCapture::CaptureFrame ([out] byte[] frame, [out] unsigned long replyBytes ) 107``` 108 109**描述** 110 111从音频驱动中录制一帧输入数据(录音,音频上行数据)。 112 113**起始版本:** 4.1 114 115**参数:** 116 117| 名称 | 描述 | 118| -------- | -------- | 119| capture | 调用当前函数的IAudioCapture指针对象,该参数在编译为C接口后产生。 | 120| frame | 待存放输入数据的音频frame。 | 121| requestBytes | 待存放输入数据的音频frame大小(字节数),该参数在编译为C接口后产生。 | 122| replyBytes | 指向要读取的音频数据的实际长度(以字节为单位)的指针。 | 123 124**返回:** 125 126成功返回值0,失败返回负值。 127 128 129### CheckSceneCapability() 130 131``` 132IAudioCapture::CheckSceneCapability ([in] struct AudioSceneDescriptor scene, [out] boolean supported ) 133``` 134 135**描述** 136 137判断某个音频场景能力是否支持。 138 139**起始版本:** 4.1 140 141**参数:** 142 143| 名称 | 描述 | 144| -------- | -------- | 145| scene | 待判断的音频场景描述符,详请参考[AudioSceneDescriptor](_audio_scene_descriptor_v20.md)。 | 146| supported | 是否支持的状态保存到supported中,true表示支持,false表示不支持。 | 147 148**返回:** 149 150成功返回值0,失败返回负值。 151 152**参见:** 153 154[SelectScene](#selectscene) 155 156 157### Flush() 158 159``` 160IAudioCapture::Flush () 161``` 162 163**描述** 164 165刷新音频缓冲区buffer中的数据。 166 167**起始版本:** 4.1 168 169**返回:** 170 171成功返回值0,失败返回负值。 172 173 174### GetCapturePosition() 175 176``` 177IAudioCapture::GetCapturePosition ([out] unsigned long frames, [out] struct AudioTimeStamp time ) 178``` 179 180**描述** 181 182获取最后一个输入音频帧数。 183 184**起始版本:** 4.1 185 186**参数:** 187 188| 名称 | 描述 | 189| -------- | -------- | 190| capture | 调用当前函数的IAudioCapture指针对象,该参数在编译为C接口后产生。 | 191| frames | 获取的音频帧数保存到frames中。 | 192| time | 获取的关联时间戳保存到time中,详请参考[AudioTimeStamp](_audio_time_stamp_v20.md)。 | 193 194**返回:** 195 196成功返回值0,失败返回负值。 197 198**参见:** 199 200[CaptureFrame](#captureframe) 201 202 203### GetCurrentChannelId() 204 205``` 206IAudioCapture::GetCurrentChannelId ([out] unsigned int channelId) 207``` 208 209**描述** 210 211获取音频的数据通道ID。 212 213**起始版本:** 4.1 214 215**参数:** 216 217| 名称 | 描述 | 218| -------- | -------- | 219| channelId | 获取的通道ID保存到channelId中。 | 220 221**返回:** 222 223成功返回值0,失败返回负值。 224 225 226### GetExtraParams() 227 228``` 229IAudioCapture::GetExtraParams ([out] String keyValueList) 230``` 231 232**描述** 233 234获取音频拓展参数。 235 236**起始版本:** 4.1 237 238**参数:** 239 240| 名称 | 描述 | 241| -------- | -------- | 242| keyValueList | 拓展参数键值对字符串列表,格式为key=value,多个键值对通过分号分割。 | 243 244**返回:** 245 246成功返回值0,失败返回负值。 247 248 249### GetFrameBufferSize() 250 251``` 252IAudioCapture::GetFrameBufferSize ([out] unsigned long bufferSize) 253``` 254 255**描述** 256 257获取缓冲区大小。 258 259**起始版本:** 4.1 260 261**参数:** 262 263| 名称 | 描述 | 264| -------- | -------- | 265| bufferSize | 获取的缓冲区大小保存在bufferSize中,单位为字节。 | 266 267**返回:** 268 269成功返回值0,失败返回负值。 270 271 272### GetFrameCount() 273 274``` 275IAudioCapture::GetFrameCount ([out] unsigned long count) 276``` 277 278**描述** 279 280获取音频buffer中的音频帧数。 281 282**起始版本:** 4.1 283 284**参数:** 285 286| 名称 | 描述 | 287| -------- | -------- | 288| count | 一个音频buffer中包含的音频帧数,获取后保存到count中。 | 289 290**返回:** 291 292成功返回值0,失败返回负值。 293 294 295### GetFrameSize() 296 297``` 298IAudioCapture::GetFrameSize ([out] unsigned long size) 299``` 300 301**描述** 302 303获取一帧音频数据的长度(字节数)大小。 304 305**起始版本:** 4.1 306 307**参数:** 308 309| 名称 | 描述 | 310| -------- | -------- | 311| size | 获取的音频帧大小(字节数)保存到size中。 | 312 313**返回:** 314 315成功返回值0,失败返回负值。 316 317 318### GetGain() 319 320``` 321IAudioCapture::GetGain ([out] float gain) 322``` 323 324**描述** 325 326获取音频流的增益。 327 328**起始版本:** 4.1 329 330**参数:** 331 332| 名称 | 描述 | 333| -------- | -------- | 334| gain | 保存当前获取到的增益到gain中。 | 335 336**返回:** 337 338成功返回值0,失败返回负值。 339 340**参见:** 341 342[GetGainThreshold](#getgainthreshold) 343 344[SetGain](#setgain) 345 346 347### GetGainThreshold() 348 349``` 350IAudioCapture::GetGainThreshold ([out] float min, [out] float max ) 351``` 352 353**描述** 354 355获取音频流增益的阈值。 356 357在具体的功能实现中,可以根据芯片平台的实际情况来进行处理: 358 359- 可以使用实际的增益值,例如增益的范围为-50db ~ 6db。 360 361- 也可以将增益范围设定为0.0~1.0,如果增益的范围为-50db ~ 6db, 则增益的映射关系为0.0表示静音(-50db),1.0表示最大增益(6db)。 362 363**起始版本:** 4.1 364 365**参数:** 366 367| 名称 | 描述 | 368| -------- | -------- | 369| min | 获取的音频增益的阈值下限保存到min中。 | 370| max | 获取的音频增益的阈值上限保存到max中。 | 371 372**返回:** 373 374成功返回值0,失败返回负值。 375 376**参见:** 377 378[GetGain](#getgain) 379 380[SetGain](#setgain) 381 382 383### GetMmapPosition() 384 385``` 386IAudioCapture::GetMmapPosition ([out] unsigned long frames, [out] struct AudioTimeStamp time ) 387``` 388 389**描述** 390 391获取当前mmap的读/写位置。 392 393**起始版本:** 4.1 394 395**参数:** 396 397| 名称 | 描述 | 398| -------- | -------- | 399| frames | 获取的音频帧计数保存到frames中。 | 400| time | 获取的关联时间戳保存到time中,详请参考[AudioTimeStamp](_audio_time_stamp_v20.md)。 | 401 402**返回:** 403 404成功返回值0,失败返回负值。 405 406 407### GetMute() 408 409``` 410IAudioCapture::GetMute ([out] boolean mute) 411``` 412 413**描述** 414 415获取音频的静音状态。 416 417**起始版本:** 4.1 418 419**参数:** 420 421| 名称 | 描述 | 422| -------- | -------- | 423| mute | 获取的静音状态保存到mute中,true表示静音操作、false表示取消静音操作。 | 424 425**返回:** 426 427成功返回值0,失败返回负值。 428 429**参见:** 430 431[SetMute](#setmute) 432 433 434### GetSampleAttributes() 435 436``` 437IAudioCapture::GetSampleAttributes ([out] struct AudioSampleAttributes attrs) 438``` 439 440**描述** 441 442获取音频采样的属性参数。 443 444**起始版本:** 4.1 445 446**参数:** 447 448| 名称 | 描述 | 449| -------- | -------- | 450| attrs | 获取的音频采样属性(例如采样频率、采样精度、通道)保存到attrs中,详请参考[AudioSampleAttributes](_audio_sample_attributes_v20.md)。 | 451 452**返回:** 453 454成功返回值0,失败返回负值。 455 456**参见:** 457 458[SetSampleAttributes](#setsampleattributes) 459 460 461### GetVolume() 462 463``` 464IAudioCapture::GetVolume ([out] float volume) 465``` 466 467**描述** 468 469获取一个音频流的音量。 470 471**起始版本:** 4.1 472 473**参数:** 474 475| 名称 | 描述 | 476| -------- | -------- | 477| volume | 获取的音量保存到volume中,范围0.0~1.0。 | 478 479**返回:** 480 481成功返回值0,失败返回负值。 482 483**参见:** 484 485[SetVolume](#setvolume) 486 487 488### IsSupportsPauseAndResume() 489 490``` 491IAudioCapture::IsSupportsPauseAndResume ([out] boolean supportPause, [out] boolean supportResume ) 492``` 493 494**描述** 495 496判断声卡是否支持音频录制的暂停和恢复功能。 497 498**起始版本:** 4.1 499 500**参数:** 501 502| 名称 | 描述 | 503| -------- | -------- | 504| supportPause | 是否支持暂停功能的状态保存到supportPause中,true表示支持,false表示不支持。 | 505| supportResume | 是否支持恢复功能的状态保存到supportResume中,true表示支持,false表示不支持。 | 506 507**返回:** 508 509成功返回值0,失败返回负值。 510 511 512### Pause() 513 514``` 515IAudioCapture::Pause () 516``` 517 518**描述** 519 520暂停一个音频播放或录音处理。 521 522**起始版本:** 4.1 523 524**返回:** 525 526成功返回值0,失败返回负值。 527 528**参见:** 529 530[Resume](#resume) 531 532 533### RemoveAudioEffect() 534 535``` 536IAudioCapture::RemoveAudioEffect ([in] unsigned long effectid) 537``` 538 539**描述** 540 541移除音频效果。 542 543**起始版本:** 4.1 544 545**参数:** 546 547| 名称 | 描述 | 548| -------- | -------- | 549| effectid | 移除的音频效果实例标识符。 | 550 551**返回:** 552 553成功返回值0,失败返回负值。 554 555 556### ReqMmapBuffer() 557 558``` 559IAudioCapture::ReqMmapBuffer ([in] int reqSize, [out] struct AudioMmapBufferDescriptor desc ) 560``` 561 562**描述** 563 564请求mmap缓冲区。 565 566**起始版本:** 4.1 567 568**参数:** 569 570| 名称 | 描述 | 571| -------- | -------- | 572| reqSize | 请求缓冲区的大小,单位:字节。 | 573| desc | 缓冲区描述符,详请参考[AudioMmapBufferDescripter](_audio_mmap_buffer_descripter_v20.md)。 | 574 575**返回:** 576 577成功返回值0,失败返回负值。 578 579 580### Resume() 581 582``` 583IAudioCapture::Resume () 584``` 585 586**描述** 587 588恢复一个音频播放或录音处理。 589 590**起始版本:** 4.1 591 592**返回:** 593 594成功返回值0,失败返回负值。 595 596**参见:** 597 598[Pause](#pause) 599 600 601### SelectScene() 602 603``` 604IAudioCapture::SelectScene ([in] struct AudioSceneDescriptor scene) 605``` 606 607**描述** 608 609选择音频场景。 610 611- 选择一个非常具体的音频场景(应用场景和输出设备的组合),例如同样是使用手机中的喇叭作为输出设备。 612 - 在媒体播放场景中,scene为media_speaker。 613 - 在语音通话免提场景中,scene为voice_speaker。 614 615- 只是选择一个音频场景,例如使用场景为媒体播放(media)、电影播放(movie)、游戏播放(game)。 616 617- 只是选择一个音频输出设备,例如输出设备为听筒(receiver)、喇叭(speaker)、有线耳机(headset)。 618 619**起始版本:** 4.1 620 621**参数:** 622 623| 名称 | 描述 | 624| -------- | -------- | 625| scene | 待设置的音频场景描述符,详请参考[AudioSceneDescriptor](_audio_scene_descriptor_v20.md)。 | 626 627**返回:** 628 629成功返回值0,失败返回负值。 630 631**参见:** 632 633[CheckSceneCapability](#checkscenecapability) 634 635 636### SetExtraParams() 637 638``` 639IAudioCapture::SetExtraParams ([in] String keyValueList) 640``` 641 642**描述** 643 644设置音频拓展参数。 645 646**起始版本:** 4.1 647 648**参数:** 649 650| 名称 | 描述 | 651| -------- | -------- | 652| keyValueList | 拓展参数键值对字符串列表,格式为key=value,多个键值对通过分号分割。 | 653 654**返回:** 655 656成功返回值0,失败返回负值。 657 658 659### SetGain() 660 661``` 662IAudioCapture::SetGain ([in] float gain) 663``` 664 665**描述** 666 667设置音频流的增益。 668 669**起始版本:** 4.1 670 671**参数:** 672 673| 名称 | 描述 | 674| -------- | -------- | 675| gain | 待设置的增益,最小为0.0,最大为1.0。 | 676 677**返回:** 678 679成功返回值0,失败返回负值。 680 681**参见:** 682 683[GetGainThreshold](#getgainthreshold) 684 685[GetGain](#getgain) 686 687 688### SetMute() 689 690``` 691IAudioCapture::SetMute ([in] boolean mute) 692``` 693 694**描述** 695 696设置音频的静音状态。 697 698**起始版本:** 4.1 699 700**参数:** 701 702| 名称 | 描述 | 703| -------- | -------- | 704| mute | 待设置的静音状态,true表示静音操作、false表示取消静音操作。 | 705 706**返回:** 707 708成功返回值0,失败返回负值。 709 710**参见:** 711 712[GetMute](#getmute) 713 714 715### SetSampleAttributes() 716 717``` 718IAudioCapture::SetSampleAttributes ([in] struct AudioSampleAttributes attrs) 719``` 720 721**描述** 722 723设置音频采样的属性参数。 724 725**起始版本:** 4.1 726 727**参数:** 728 729| 名称 | 描述 | 730| -------- | -------- | 731| attrs | 待设置的音频采样属性,例如采样频率、采样精度、通道,详请参考[AudioSampleAttributes](_audio_sample_attributes_v20.md)。 | 732 733**返回:** 734 735成功返回值0,失败返回负值。 736 737**参见:** 738 739[GetSampleAttributes](#getsampleattributes) 740 741 742### SetVolume() 743 744``` 745IAudioCapture::SetVolume ([in] float volume) 746``` 747 748**描述** 749 750设置一个音频流的音量。 751 752音量的取值范围是0.0~1.0,如果音频服务中的音量等级范围是0 ~ 15, 则音量的映射关系为0.0(或0)表示静音,1.0(或15)表示最大音量等级。 753 754**起始版本:** 4.1 755 756**参数:** 757 758| 名称 | 描述 | 759| -------- | -------- | 760| volume | 待设置的音量,范围0.0~1.0。 | 761 762**返回:** 763 764成功返回值0,失败返回负值。 765 766 767### Start() 768 769``` 770IAudioCapture::Start () 771``` 772 773**描述** 774 775启动一个音频播放或录音处理。 776 777**起始版本:** 4.1 778 779**返回:** 780 781成功返回值0,失败返回负值。 782 783**参见:** 784 785[Stop](#stop) 786 787 788### Stop() 789 790``` 791IAudioCapture::Stop () 792``` 793 794**描述** 795 796停止一个音频播放或录音处理。 797 798**起始版本:** 4.1 799 800**返回:** 801 802成功返回值0,失败返回负值。 803 804**参见:** 805 806[Start](#start) 807 808 809### TurnStandbyMode() 810 811``` 812IAudioCapture::TurnStandbyMode () 813``` 814 815**描述** 816 817设置或去设置设备的待机模式。 818 819**起始版本:** 4.1 820 821**返回:** 822 823设置设备待机模式成功返回值0,再次执行后去设置待机模式成功返回正值,失败返回负值。 824