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