├── .github └── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md ├── .gitignore ├── Android ├── .gitignore ├── .idea │ ├── codeStyles │ │ └── Project.xml │ ├── gradle.xml │ ├── misc.xml │ ├── runConfigurations.xml │ └── vcs.xml ├── README.md ├── README.zh.md ├── build-template │ └── build-android.yml ├── build.gradle ├── ci.env.py ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── lib-component │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── io │ │ │ └── agora │ │ │ └── advancedaudio │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── io │ │ │ │ └── agora │ │ │ │ └── advancedaudio │ │ │ │ ├── AgoraApplication.java │ │ │ │ ├── Constants.java │ │ │ │ └── component │ │ │ │ ├── activities │ │ │ │ ├── BaseActivity.java │ │ │ │ └── MainActivity.java │ │ │ │ ├── annotations │ │ │ │ └── DisplayActivity.java │ │ │ │ ├── rtc │ │ │ │ ├── AgoraEventHandler.java │ │ │ │ └── EventHandler.java │ │ │ │ └── utils │ │ │ │ ├── FileUtil.java │ │ │ │ └── WindowUtil.java │ │ └── res │ │ │ ├── color │ │ │ └── start_broadcast_text_color.xml │ │ │ ├── drawable-xxhdpi │ │ │ ├── live_room_bg_logo.png │ │ │ └── main_logo.png │ │ │ ├── drawable │ │ │ ├── ic_launcher_background.xml │ │ │ ├── main_background.xml │ │ │ ├── start_broadcast_bg.xml │ │ │ ├── start_broadcast_bg_clicked.xml │ │ │ └── start_broadcast_bg_normal.xml │ │ │ ├── layout │ │ │ └── activity_main.xml │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── values-zh │ │ │ └── strings.xml │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── dimens.xml │ │ │ ├── strings.xml │ │ │ ├── strings_config.xml │ │ │ └── styles.xml │ │ └── test │ │ └── java │ │ └── io │ │ └── agora │ │ └── advancedaudio │ │ └── ExampleUnitTest.java ├── sample-custom-recorder │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── io │ │ │ └── agora │ │ │ └── advancedaudio │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── io │ │ │ │ └── agora │ │ │ │ └── advancedaudio │ │ │ │ └── customrecorder │ │ │ │ ├── CustomRecorder.java │ │ │ │ ├── CustomRecorderActivity.java │ │ │ │ ├── CustomRecorderConfig.java │ │ │ │ └── CustomRecorderService.java │ │ └── res │ │ │ ├── drawable-xxhdpi │ │ │ ├── btn_audio_disabled.png │ │ │ ├── btn_audio_enabled.png │ │ │ ├── btn_leave.png │ │ │ └── live_room_bg_logo.png │ │ │ ├── drawable │ │ │ ├── btn_mute_audio.xml │ │ │ ├── ic_launcher_background.xml │ │ │ ├── live_room_bg.xml │ │ │ ├── rounded_bg_full_transparent.xml │ │ │ └── rounded_bg_half_transparent.xml │ │ │ ├── layout │ │ │ └── activity_audio_room.xml │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── values-zh │ │ │ └── strings.xml │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── dimens.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ └── test │ │ └── java │ │ └── io │ │ └── agora │ │ └── advancedaudio │ │ └── ExampleUnitTest.java └── settings.gradle ├── README.md ├── README.zh.md ├── Web └── AgoraAudioIO-Web-Webpack │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── README.zh.md │ ├── index.html │ ├── package.json │ ├── public │ ├── .keeps │ └── assets │ │ ├── biggie.mp3 │ │ ├── effectA.wav │ │ ├── effectB.wav │ │ ├── garden.mp3 │ │ └── music_1.m4a │ ├── scripts │ ├── .keeps │ ├── index.js │ ├── loaders.js │ └── plugins.js │ └── src │ ├── .keeps │ ├── assets │ ├── .keeps │ └── style.css │ ├── common.js │ ├── index.js │ └── rtc-client.js ├── Windows ├── .gitignore ├── AgoraAudioIO-Windows-dx-2010 │ ├── AgoraExternalCapture.sln │ ├── AgoraExternalCapture │ │ ├── AGAudioCapture.cpp │ │ ├── AGAudioCapture.h │ │ ├── AGButton.cpp │ │ ├── AGButton.h │ │ ├── AGComboBox.cpp │ │ ├── AGComboBox.h │ │ ├── AGConfig.cpp │ │ ├── AGConfig.h │ │ ├── AGDShowAudioCapture.cpp │ │ ├── AGDShowAudioCapture.h │ │ ├── AGDShowVideoCapture.cpp │ │ ├── AGDShowVideoCapture.h │ │ ├── AGDesktopCaptureDlg.cpp │ │ ├── AGDesktopCaptureDlg.h │ │ ├── AGEdit.cpp │ │ ├── AGEdit.h │ │ ├── AGEngineEventHandler.cpp │ │ ├── AGEngineEventHandler.h │ │ ├── AGEventDef.h │ │ ├── AGHyperLink.cpp │ │ ├── AGHyperLink.h │ │ ├── AGLinkCtrl.cpp │ │ ├── AGLinkCtrl.h │ │ ├── AGMessage.h │ │ ├── AGResourceVisitor.cpp │ │ ├── AGResourceVisitor.h │ │ ├── AGScreenCaptureDlg.cpp │ │ ├── AGScreenCaptureDlg.h │ │ ├── AGSliderCtrl.cpp │ │ ├── AGSliderCtrl.h │ │ ├── AGVideoCapture.cpp │ │ ├── AGVideoCapture.h │ │ ├── AGVideoTestWnd.cpp │ │ ├── AGVideoTestWnd.h │ │ ├── AGVideoWnd.cpp │ │ ├── AGVideoWnd.h │ │ ├── AgoraAudInputManager.cpp │ │ ├── AgoraAudInputManager.h │ │ ├── AgoraCameraManager.cpp │ │ ├── AgoraCameraManager.h │ │ ├── AgoraExternalCapture.cpp │ │ ├── AgoraExternalCapture.h │ │ ├── AgoraExternalCapture.rc │ │ ├── AgoraExternalCapture.sln │ │ ├── AgoraExternalCapture.vcxproj │ │ ├── AgoraExternalCapture.vcxproj.filters │ │ ├── AgoraExternalCaptureDlg.cpp │ │ ├── AgoraExternalCaptureDlg.h │ │ ├── AgoraObject.cpp │ │ ├── AgoraObject.h │ │ ├── AgoraPlayoutManager.cpp │ │ ├── AgoraPlayoutManager.h │ │ ├── AudioCapturePackageQueue.cpp │ │ ├── AudioCapturePackageQueue.h │ │ ├── AudioPlayPackageQueue.cpp │ │ ├── AudioPlayPackageQueue.h │ │ ├── BufferQueue.cpp │ │ ├── BufferQueue.h │ │ ├── ChatDlg.cpp │ │ ├── ChatDlg.h │ │ ├── DShow │ │ │ ├── d3drm.h │ │ │ ├── d3drmdef.h │ │ │ ├── d3drmobj.h │ │ │ ├── dxtrans.h │ │ │ └── qedit.h │ │ ├── DShowPinHelper.cpp │ │ ├── DShowPinHelper.h │ │ ├── DeviceDlg.cpp │ │ ├── DeviceDlg.h │ │ ├── DskcapsetDlg.cpp │ │ ├── DskcapsetDlg.h │ │ ├── EnterChannelDlg.cpp │ │ ├── EnterChannelDlg.h │ │ ├── ExtCaptureDlg.cpp │ │ ├── ExtCaptureDlg.h │ │ ├── ExtendAudioFrameObserver.cpp │ │ ├── ExtendAudioFrameObserver.h │ │ ├── ExtendVideoFrameObserver.cpp │ │ ├── ExtendVideoFrameObserver.h │ │ ├── IAGDShowDevice.h │ │ ├── LanguageSet.cpp │ │ ├── LanguageSet.h │ │ ├── LogoDlg.cpp │ │ ├── LogoDlg.h │ │ ├── SetupDlg.cpp │ │ ├── SetupDlg.h │ │ ├── StreamingVoiceContext.h │ │ ├── VideoDlg.cpp │ │ ├── VideoDlg.h │ │ ├── VideoPackageQueue.cpp │ │ ├── VideoPackageQueue.h │ │ ├── XAudioPlayout.cpp │ │ ├── XAudioPlayout.h │ │ ├── YUVTrans.cpp │ │ ├── YUVTrans.h │ │ ├── libYUV │ │ │ ├── libyuv.h │ │ │ └── libyuv │ │ │ │ ├── basic_types.h │ │ │ │ ├── compare.h │ │ │ │ ├── convert.h │ │ │ │ ├── convert_argb.h │ │ │ │ ├── convert_from.h │ │ │ │ ├── convert_from_argb.h │ │ │ │ ├── cpu_id.h │ │ │ │ ├── mjpeg_decoder.h │ │ │ │ ├── planar_functions.h │ │ │ │ ├── rotate.h │ │ │ │ ├── rotate_argb.h │ │ │ │ ├── row.h │ │ │ │ ├── scale.h │ │ │ │ ├── scale_argb.h │ │ │ │ ├── scale_row.h │ │ │ │ ├── version.h │ │ │ │ └── video_common.h │ │ ├── res │ │ │ ├── AgoraExternalCapture.ico │ │ │ ├── AgoraExternalCapture.rc2 │ │ │ ├── IDB_BACKGROUND_VIDEO.bmp │ │ │ ├── IDB_BTNAUDIO_VIDEO.bmp │ │ │ ├── IDB_BTNCLOSE.bmp │ │ │ ├── IDB_BTNENDCALL_VIDEO.bmp │ │ │ ├── IDB_BTNFULLSCR_VIDEO.bmp │ │ │ ├── IDB_BTNMAUDIO_VIDEO.bmp │ │ │ ├── IDB_BTNMAX.bmp │ │ │ ├── IDB_BTNMIN.bmp │ │ │ ├── IDB_BTNMORE_VIDEO.bmp │ │ │ ├── IDB_BTNMSG_VIDEO.bmp │ │ │ ├── IDB_BTNNORSCR_VIDEO.bmp │ │ │ ├── IDB_BTNRESTORE.bmp │ │ │ ├── IDB_BTNSCRCAP_VIDEO.bmp │ │ │ ├── IDB_BTNSETUP_VIDEO.bmp │ │ │ ├── IDB_BTNTIP_VIDEO.bmp │ │ │ ├── IDB_BTNVIDEO_VIDEO.bmp │ │ │ ├── IDB_CMBBTN.bmp │ │ │ ├── IDB_CMBSEL.bmp │ │ │ ├── IDB_DESKTOPSHARE_VIDEO.bmp │ │ │ ├── IDB_DLG_LOGO.bmp │ │ │ ├── IDB_DLG_MAIN.bmp │ │ │ ├── IDB_LOGO.bmp │ │ │ ├── IDB_MENU_DEVICE.bmp │ │ │ ├── IDB_MENU_FILTER.bmp │ │ │ ├── IDB_MENU_INFO.bmp │ │ │ ├── IDB_MENU_MORE.bmp │ │ │ ├── IDB_NETWORK_QUALITY.bmp │ │ │ ├── IDB_SLD_HOVER.bmp │ │ │ ├── IDB_SLD_NORMAL.bmp │ │ │ └── ID_TEST_AUDIO.wav │ │ ├── resource.h │ │ ├── stdafx.cpp │ │ ├── stdafx.h │ │ ├── targetver.h │ │ ├── video_preprocessing_plugin.cpp │ │ └── video_preprocessing_plugin.h │ ├── Language │ │ ├── ChineseSimplified │ │ │ ├── ChineseSimplified.cpp │ │ │ ├── ChineseSimplified.h │ │ │ ├── ChineseSimplified.vcxproj │ │ │ ├── ChineseSimplified.vcxproj.filters │ │ │ ├── Source.def │ │ │ ├── dllmain.cpp │ │ │ ├── stdafx.cpp │ │ │ ├── stdafx.h │ │ │ └── targetver.h │ │ └── English │ │ │ ├── English.cpp │ │ │ ├── English.h │ │ │ ├── English.vcxproj │ │ │ ├── English.vcxproj.filters │ │ │ ├── ReadMe.txt │ │ │ ├── Source.def │ │ │ ├── dllmain.cpp │ │ │ ├── stdafx.cpp │ │ │ ├── stdafx.h │ │ │ └── targetver.h │ ├── README.zh.md │ ├── Readme.md │ └── SDK │ │ └── PLACEHOLDER ├── AgoraAudioIO-Windows │ ├── .gitignore │ ├── AgoraExternalCapture.sln │ ├── AgoraExternalCapture │ │ ├── AGButton.cpp │ │ ├── AGButton.h │ │ ├── AGComboBox.cpp │ │ ├── AGComboBox.h │ │ ├── AGConfig.cpp │ │ ├── AGConfig.h │ │ ├── AGDShowAudioCapture.cpp │ │ ├── AGDShowAudioCapture.h │ │ ├── AGDesktopCaptureDlg.cpp │ │ ├── AGDesktopCaptureDlg.h │ │ ├── AGEdit.cpp │ │ ├── AGEdit.h │ │ ├── AGEngineEventHandler.cpp │ │ ├── AGEngineEventHandler.h │ │ ├── AGEventDef.h │ │ ├── AGHyperLink.cpp │ │ ├── AGHyperLink.h │ │ ├── AGLinkCtrl.cpp │ │ ├── AGLinkCtrl.h │ │ ├── AGMessage.h │ │ ├── AGResourceVisitor.cpp │ │ ├── AGResourceVisitor.h │ │ ├── AGScreenCaptureDlg.cpp │ │ ├── AGScreenCaptureDlg.h │ │ ├── AGSliderCtrl.cpp │ │ ├── AGSliderCtrl.h │ │ ├── AGVideoTestWnd.cpp │ │ ├── AGVideoTestWnd.h │ │ ├── AGVideoWnd.cpp │ │ ├── AGVideoWnd.h │ │ ├── AgoraAudInputManager.cpp │ │ ├── AgoraAudInputManager.h │ │ ├── AgoraCameraManager.cpp │ │ ├── AgoraCameraManager.h │ │ ├── AgoraExternalCapture.aps │ │ ├── AgoraExternalCapture.cpp │ │ ├── AgoraExternalCapture.h │ │ ├── AgoraExternalCapture.rc │ │ ├── AgoraExternalCapture.sln │ │ ├── AgoraExternalCapture.vcxproj │ │ ├── AgoraExternalCapture.vcxproj.filters │ │ ├── AgoraExternalCaptureDlg.cpp │ │ ├── AgoraExternalCaptureDlg.h │ │ ├── AgoraObject.cpp │ │ ├── AgoraObject.h │ │ ├── AgoraPlayoutManager.cpp │ │ ├── AgoraPlayoutManager.h │ │ ├── ChatDlg.cpp │ │ ├── ChatDlg.h │ │ ├── CircleBuffer.cpp │ │ ├── CircleBuffer.hpp │ │ ├── DShowHelper.cpp │ │ ├── DShowHelper.h │ │ ├── DeviceDlg.cpp │ │ ├── DeviceDlg.h │ │ ├── DskcapsetDlg.cpp │ │ ├── DskcapsetDlg.h │ │ ├── EnterChannelDlg.cpp │ │ ├── EnterChannelDlg.h │ │ ├── ExtCaptureDlg.cpp │ │ ├── ExtCaptureDlg.h │ │ ├── ExtendAudioFrameObserver.cpp │ │ ├── ExtendAudioFrameObserver.h │ │ ├── IAGDShowDevice.h │ │ ├── LanguageSet.cpp │ │ ├── LanguageSet.h │ │ ├── LogoDlg.cpp │ │ ├── LogoDlg.h │ │ ├── SetupDlg.cpp │ │ ├── SetupDlg.h │ │ ├── StreamingVoiceContext.h │ │ ├── VideoDlg.cpp │ │ ├── VideoDlg.h │ │ ├── XAudioPlayout.cpp │ │ ├── XAudioPlayout.h │ │ ├── capture-filter.cpp │ │ ├── capture-filter.hpp │ │ ├── res │ │ │ ├── AgoraExternalCapture.ico │ │ │ ├── AgoraExternalCapture.rc2 │ │ │ ├── IDB_BACKGROUND_VIDEO.bmp │ │ │ ├── IDB_BTNAUDIO_VIDEO.bmp │ │ │ ├── IDB_BTNCLOSE.bmp │ │ │ ├── IDB_BTNENDCALL_VIDEO.bmp │ │ │ ├── IDB_BTNFULLSCR_VIDEO.bmp │ │ │ ├── IDB_BTNMAUDIO_VIDEO.bmp │ │ │ ├── IDB_BTNMAX.bmp │ │ │ ├── IDB_BTNMIN.bmp │ │ │ ├── IDB_BTNMORE_VIDEO.bmp │ │ │ ├── IDB_BTNMSG_VIDEO.bmp │ │ │ ├── IDB_BTNNORSCR_VIDEO.bmp │ │ │ ├── IDB_BTNRESTORE.bmp │ │ │ ├── IDB_BTNSCRCAP_VIDEO.bmp │ │ │ ├── IDB_BTNSETUP_VIDEO.bmp │ │ │ ├── IDB_BTNTIP_VIDEO.bmp │ │ │ ├── IDB_BTNVIDEO_VIDEO.bmp │ │ │ ├── IDB_CMBBTN.bmp │ │ │ ├── IDB_CMBSEL.bmp │ │ │ ├── IDB_DESKTOPSHARE_VIDEO.bmp │ │ │ ├── IDB_DLG_LOGO.bmp │ │ │ ├── IDB_DLG_MAIN.bmp │ │ │ ├── IDB_LOGO.bmp │ │ │ ├── IDB_MENU_DEVICE.bmp │ │ │ ├── IDB_MENU_FILTER.bmp │ │ │ ├── IDB_MENU_INFO.bmp │ │ │ ├── IDB_MENU_MORE.bmp │ │ │ ├── IDB_NETWORK_QUALITY.bmp │ │ │ ├── IDB_SLD_HOVER.bmp │ │ │ ├── IDB_SLD_NORMAL.bmp │ │ │ └── ID_TEST_AUDIO.wav │ │ ├── resource.h │ │ ├── stdafx.cpp │ │ ├── stdafx.h │ │ ├── targetver.h │ │ ├── video_preprocessing_plugin.cpp │ │ └── video_preprocessing_plugin.h │ ├── Language │ │ ├── ChineseSimplified │ │ │ ├── ChineseSimplified.cpp │ │ │ ├── ChineseSimplified.h │ │ │ ├── ChineseSimplified.vcxproj │ │ │ ├── ChineseSimplified.vcxproj.filters │ │ │ ├── Source.def │ │ │ ├── dllmain.cpp │ │ │ ├── stdafx.cpp │ │ │ ├── stdafx.h │ │ │ └── targetver.h │ │ └── English │ │ │ ├── English.cpp │ │ │ ├── English.h │ │ │ ├── English.vcxproj │ │ │ ├── English.vcxproj.filters │ │ │ ├── ReadMe.txt │ │ │ ├── Source.def │ │ │ ├── dllmain.cpp │ │ │ ├── stdafx.cpp │ │ │ ├── stdafx.h │ │ │ └── targetver.h │ ├── README.zh.md │ ├── Readme.md │ └── prebuild.bat └── cicd │ ├── script │ └── downloadsdk1.ps1 │ └── templates │ └── build-Windows-dshow.yml ├── azure-pipelines.yml └── iOS&macOS ├── .gitignore ├── Agora-RTC-With-ASMR ├── Agora-RTC-With-ASMR.xcodeproj │ ├── .xcodesamplecode.plist │ └── project.pbxproj ├── Agora-RTC-With-ASMR │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Assets.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ ├── call.imageset │ │ │ ├── Contents.json │ │ │ ├── calling@2x.png │ │ │ └── calling@3x.png │ │ ├── earphone.imageset │ │ │ ├── Contents.json │ │ │ ├── earphone@2x.png │ │ │ └── earphone@3x.png │ │ ├── hungup.imageset │ │ │ ├── Contents.json │ │ │ ├── hungup@2x.png │ │ │ └── hungup@3x.png │ │ ├── mute.imageset │ │ │ ├── Contents.json │ │ │ ├── mute@2x.png │ │ │ └── mute@3x.png │ │ ├── speaker.imageset │ │ │ ├── Contents.json │ │ │ ├── speaker@2x.png │ │ │ └── speaker@3x.png │ │ └── un-mute.imageset │ │ │ ├── Contents.json │ │ │ ├── un-mute@2x.png │ │ │ └── un-mute@3x.png │ ├── AudioController.h │ ├── AudioController.m │ ├── AudioSource.pch │ ├── AudioWriteToFile.h │ ├── AudioWriteToFile.m │ ├── Base.lproj │ │ └── LaunchScreen.storyboard │ ├── ChannelNameCheck.h │ ├── ChannelNameCheck.m │ ├── ChatButton.h │ ├── ChatButton.m │ ├── ChooseButton.h │ ├── ChooseButton.m │ ├── Define.h │ ├── Info.plist │ ├── InfoCell.h │ ├── InfoCell.m │ ├── InfoModel.h │ ├── InfoModel.m │ ├── InfoTableView.h │ ├── InfoTableView.m │ ├── LogAudioSessionStatus.h │ ├── LogAudioSessionStatus.m │ ├── Main.storyboard │ ├── MainViewController.h │ ├── MainViewController.m │ ├── RoomPage │ │ └── AppID.m │ ├── RoomViewController.h │ ├── RoomViewController.mm │ └── main.m ├── LICENSE.md ├── README.md ├── README.zh.md ├── build.sh ├── clear.sh └── exportPlist.plist ├── Agora-RTC-With-Voice-Changer-iOS ├── Agora-RTC-With-Voice-Changer-iOS.xcodeproj │ ├── .xcodesamplecode.plist │ └── project.pbxproj ├── Agora-RTC-With-Voice-Changer-iOS │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ ├── Contents.json │ │ ├── btn_audio_effect.imageset │ │ │ ├── Contents.json │ │ │ └── btn_audio_effect.pdf │ │ ├── btn_endcall.imageset │ │ │ ├── Contents.json │ │ │ └── btn_endcall.pdf │ │ ├── btn_join.imageset │ │ │ ├── Contents.json │ │ │ └── btn_join.pdf │ │ ├── btn_join_blue.imageset │ │ │ ├── Contents.json │ │ │ └── btn_join_blue.pdf │ │ ├── btn_mute.imageset │ │ │ ├── Contents.json │ │ │ └── btn_mute.pdf │ │ ├── btn_mute_blue.imageset │ │ │ ├── Contents.json │ │ │ └── btn_mute_blue.pdf │ │ ├── btn_speaker.imageset │ │ │ ├── Contents.json │ │ │ └── btn_speaker.pdf │ │ └── btn_speaker_blue.imageset │ │ │ ├── Contents.json │ │ │ └── btn_speaker_blue.pdf │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── EffectCell.swift │ ├── EffectType.swift │ ├── EffectViewController.swift │ ├── Info.plist │ ├── LogCell.swift │ ├── MainViewController.swift │ └── RoomViewController.swift ├── LICENSE ├── README.md ├── README.zh.md ├── build.sh ├── clear.sh └── exportPlist.plist ├── AgoraAudioIO-Objective-C ├── AgoraAudioIO-iOS │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Assets.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ ├── audience.imageset │ │ │ ├── Contents.json │ │ │ ├── audience@2x.png │ │ │ └── audience@3x.png │ │ ├── call.imageset │ │ │ ├── Contents.json │ │ │ ├── calling@2x.png │ │ │ └── calling@3x.png │ │ ├── earphone.imageset │ │ │ ├── Contents.json │ │ │ ├── earphone@2x.png │ │ │ └── earphone@3x.png │ │ ├── host.imageset │ │ │ ├── Contents.json │ │ │ ├── host@2x.png │ │ │ └── host@3x.png │ │ ├── hungup.imageset │ │ │ ├── Contents.json │ │ │ ├── hungup@2x.png │ │ │ └── hungup@3x.png │ │ ├── mute.imageset │ │ │ ├── Contents.json │ │ │ ├── mute@2x.png │ │ │ └── mute@3x.png │ │ ├── speaker.imageset │ │ │ ├── Contents.json │ │ │ ├── speaker@2x.png │ │ │ └── speaker@3x.png │ │ ├── un-mute.imageset │ │ │ ├── Contents.json │ │ │ ├── un-mute@2x.png │ │ │ └── un-mute@3x.png │ │ └── unmutemac.imageset │ │ │ ├── Contents.json │ │ │ └── unmute.png │ ├── Base.lproj │ │ └── LaunchScreen.storyboard │ ├── ChannelNameCheck.h │ ├── ChannelNameCheck.m │ ├── ChatButton.h │ ├── ChatButton.m │ ├── ChooseButton.h │ ├── ChooseButton.m │ ├── Info.plist │ ├── InfoCell.h │ ├── InfoCell.m │ ├── InfoModel.h │ ├── InfoModel.m │ ├── InfoTableView.h │ ├── InfoTableView.m │ ├── LogAudioSessionStatus.h │ ├── LogAudioSessionStatus.m │ ├── Main.storyboard │ ├── MainViewController.h │ ├── MainViewController.m │ ├── RoomViewController.h │ ├── RoomViewController.m │ ├── UIColor+CSRGB.h │ ├── UIColor+CSRGB.m │ ├── UIView+CSshortFrame.h │ ├── UIView+CSshortFrame.m │ └── main.m ├── AgoraAudioIO-macOS │ ├── AgoraAudioIOmac.entitlements │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Info.plist │ ├── Main.storyboard │ ├── MainViewControllerMac.h │ ├── MainViewControllerMac.m │ ├── ReplacementSegue.h │ ├── ReplacementSegue.m │ ├── RoomViewControllerMac.h │ ├── RoomViewControllerMac.m │ └── main.m ├── AgoraAudioIO.xcodeproj │ ├── .xcodesamplecode.plist │ └── project.pbxproj ├── LICENSE.md ├── README.md ├── README.zh.md ├── SharedObjects │ ├── AudioOptions.h │ ├── DefaultChannelName.h │ ├── DefaultChannelName.m │ └── ExternalAudio │ │ ├── AudioController.h │ │ ├── AudioController.m │ │ ├── AudioWriteToFile.h │ │ ├── AudioWriteToFile.m │ │ ├── ExternalAudio.h │ │ └── ExternalAudio.mm ├── build.sh ├── build_macOS.sh ├── clear.sh ├── exportPlist.plist └── exportPlist_macOS.plist ├── Pronunciation-Assess-iOS ├── Pronunciation-Assess.xcodeproj │ ├── .xcodesamplecode.plist │ └── project.pbxproj ├── Pronunciation-Assess │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ └── Contents.json │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── CHIVOX │ │ └── CHIVOXLIB │ ├── CXEngine.h │ ├── CXEngine.m │ ├── CXKeys.swift │ ├── Info.plist │ ├── Pronunciation-Assess-Bridging-Header.h │ ├── ViewController.swift │ └── raw-data-api-oc │ │ ├── AgoraMediaDataPlugin.h │ │ ├── AgoraMediaDataPlugin.mm │ │ ├── AgoraMediaRawData.h │ │ └── AgoraMediaRawData.m ├── README.md ├── README.zh.md ├── build.sh ├── clear.sh └── exportPlist.plist ├── README.md ├── README.zh.md ├── SpeechRecognizer-iOS ├── README.md ├── README.zh.md ├── SpeechRecognizer-iOS.xcodeproj │ ├── .xcodesamplecode.plist │ └── project.pbxproj ├── SpeechRecognizer-iOS │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ └── Contents.json │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── ChannelViewController.swift │ ├── Info.plist │ ├── MediaWorker.h │ ├── MediaWorker.mm │ ├── SpeechRecognizer-iOS-Bridging-Header.h │ └── ViewController.swift ├── build.sh ├── clear.sh └── exportPlist.plist ├── build-template ├── build-ios.yml ├── build-mac.yml └── github-release.yml ├── libs ├── iOS │ └── .gitkeep └── macOS │ └── .gitkeep ├── scripts ├── ci_ios_env.py ├── ci_macos_env.py └── sdkdownload.sh └── shared ├── Objective-C ├── KeyCenter.h └── KeyCenter.m └── Swift └── KeyCenter.swift /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Desktop (please complete the following information):** 27 | - OS: [e.g. iOS] 28 | - Browser [e.g. chrome, safari] 29 | - Version [e.g. 22] 30 | 31 | **Smartphone (please complete the following information):** 32 | - Device: [e.g. iPhone6] 33 | - OS: [e.g. iOS8.1] 34 | - Browser [e.g. stock browser, safari] 35 | - Version [e.g. 22] 36 | 37 | **Additional context** 38 | Add any other context about the problem here. 39 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: enhancement 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | xcuserdata 3 | *.framework 4 | *.a 5 | aiengine.h 6 | aiengine.provision 7 | .idea 8 | -------------------------------------------------------------------------------- /Android/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/caches 5 | /.idea/libraries 6 | /.idea/modules.xml 7 | /.idea/workspace.xml 8 | /.idea/navEditor.xml 9 | /.idea/assetWizardSettings.xml 10 | .DS_Store 11 | /build 12 | /captures 13 | .externalNativeBuild 14 | .cxx 15 | -------------------------------------------------------------------------------- /Android/.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 15 | 16 | -------------------------------------------------------------------------------- /Android/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | -------------------------------------------------------------------------------- /Android/.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /Android/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Android/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | google() 6 | jcenter() 7 | 8 | } 9 | dependencies { 10 | classpath 'com.android.tools.build:gradle:3.5.3' 11 | 12 | // NOTE: Do not place your application dependencies here; they belong 13 | // in the individual module build.gradle files 14 | } 15 | } 16 | 17 | allprojects { 18 | repositories { 19 | google() 20 | jcenter() 21 | 22 | } 23 | } 24 | 25 | task clean(type: Delete) { 26 | delete rootProject.buildDir 27 | } 28 | -------------------------------------------------------------------------------- /Android/ci.env.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # -*- coding: UTF-8 -*- 3 | import re 4 | import os 5 | 6 | def main(): 7 | appId = "" 8 | if "AGORA_APP_ID" in os.environ: 9 | appId = os.environ["AGORA_APP_ID"] 10 | token = "" 11 | 12 | f = open("./lib-component/src/main/res/values/strings_config.xml", 'r+') 13 | content = f.read() 14 | contentNew = re.sub(r'<#YOUR APP ID#>', appId, content) 15 | contentNew = re.sub(r'<#YOUR ACCESS TOKEN#>', token, contentNew) 16 | f.seek(0) 17 | f.write(contentNew) 18 | f.truncate() 19 | 20 | 21 | if __name__ == "__main__": 22 | main() -------------------------------------------------------------------------------- /Android/gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | # IDE (e.g. Android Studio) users: 3 | # Gradle settings configured through the IDE *will override* 4 | # any settings specified in this file. 5 | # For more details on how to configure your build environment visit 6 | # http://www.gradle.org/docs/current/userguide/build_environment.html 7 | # Specifies the JVM arguments used for the daemon process. 8 | # The setting is particularly useful for tweaking memory settings. 9 | org.gradle.jvmargs=-Xmx1536m 10 | # When configured, Gradle will run in incubating parallel mode. 11 | # This option should only be used with decoupled projects. More details, visit 12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 13 | # org.gradle.parallel=true 14 | # AndroidX package structure to make it clearer which packages are bundled with the 15 | # Android operating system, and which are packaged with your app's APK 16 | # https://developer.android.com/topic/libraries/support-library/androidx-rn 17 | android.useAndroidX=true 18 | # Automatically convert third-party libraries to use AndroidX 19 | android.enableJetifier=true 20 | 21 | -------------------------------------------------------------------------------- /Android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /Android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Dec 13 15:32:56 CST 2019 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip 7 | -------------------------------------------------------------------------------- /Android/lib-component/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion 29 5 | buildToolsVersion "29.0.2" 6 | defaultConfig { 7 | minSdkVersion 16 8 | targetSdkVersion 29 9 | versionCode 1 10 | versionName "1.0" 11 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 12 | } 13 | buildTypes { 14 | release { 15 | minifyEnabled false 16 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 17 | } 18 | } 19 | } 20 | 21 | dependencies { 22 | implementation fileTree(dir: 'libs', include: ['*.jar']) 23 | implementation 'androidx.appcompat:appcompat:1.1.0' 24 | api 'io.agora.rtc:voice-sdk:3.1.0' 25 | testImplementation 'junit:junit:4.12' 26 | androidTestImplementation 'androidx.test.ext:junit:1.1.0' 27 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' 28 | } 29 | -------------------------------------------------------------------------------- /Android/lib-component/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /Android/lib-component/src/androidTest/java/io/agora/advancedaudio/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package io.agora.advancedaudio; 2 | 3 | import android.content.Context; 4 | 5 | import androidx.test.platform.app.InstrumentationRegistry; 6 | import androidx.test.ext.junit.runners.AndroidJUnit4; 7 | 8 | import org.junit.Test; 9 | import org.junit.runner.RunWith; 10 | 11 | import static org.junit.Assert.*; 12 | 13 | /** 14 | * Instrumented test, which will execute on an Android device. 15 | * 16 | * @see Testing documentation 17 | */ 18 | @RunWith(AndroidJUnit4.class) 19 | public class ExampleInstrumentedTest { 20 | @Test 21 | public void useAppContext() { 22 | // Context of the app under test. 23 | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); 24 | 25 | assertEquals("io.agora.advancedaudio", appContext.getPackageName()); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Android/lib-component/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /Android/lib-component/src/main/java/io/agora/advancedaudio/Constants.java: -------------------------------------------------------------------------------- 1 | package io.agora.advancedaudio; 2 | 3 | public class Constants { 4 | public static final String KEY_CHANNEL_NAME = "channel-name"; 5 | } 6 | -------------------------------------------------------------------------------- /Android/lib-component/src/main/java/io/agora/advancedaudio/component/annotations/DisplayActivity.java: -------------------------------------------------------------------------------- 1 | package io.agora.advancedaudio.component.annotations; 2 | 3 | import java.lang.annotation.Retention; 4 | import java.lang.annotation.RetentionPolicy; 5 | 6 | @Retention(RetentionPolicy.RUNTIME) 7 | public @interface DisplayActivity { 8 | String[] SubClasses(); 9 | } 10 | -------------------------------------------------------------------------------- /Android/lib-component/src/main/java/io/agora/advancedaudio/component/rtc/EventHandler.java: -------------------------------------------------------------------------------- 1 | package io.agora.advancedaudio.component.rtc; 2 | 3 | import io.agora.rtc.IRtcEngineEventHandler; 4 | 5 | public interface EventHandler { 6 | void onLeaveChannel(IRtcEngineEventHandler.RtcStats stats); 7 | 8 | void onJoinChannelSuccess(String channel, int uid, int elapsed); 9 | 10 | void onUserOffline(int uid, int reason); 11 | 12 | void onUserJoined(int uid, int elapsed); 13 | 14 | void onLastmileQuality(int quality); 15 | 16 | void onLastmileProbeResult(IRtcEngineEventHandler.LastmileProbeResult result); 17 | 18 | void onRtcStats(IRtcEngineEventHandler.RtcStats stats); 19 | 20 | void onNetworkQuality(int uid, int txQuality, int rxQuality); 21 | 22 | void onRemoteAudioStats(IRtcEngineEventHandler.RemoteAudioStats stats); 23 | } 24 | -------------------------------------------------------------------------------- /Android/lib-component/src/main/res/color/start_broadcast_text_color.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Android/lib-component/src/main/res/drawable-xxhdpi/live_room_bg_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Android/lib-component/src/main/res/drawable-xxhdpi/live_room_bg_logo.png -------------------------------------------------------------------------------- /Android/lib-component/src/main/res/drawable-xxhdpi/main_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Android/lib-component/src/main/res/drawable-xxhdpi/main_logo.png -------------------------------------------------------------------------------- /Android/lib-component/src/main/res/drawable/main_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | -------------------------------------------------------------------------------- /Android/lib-component/src/main/res/drawable/start_broadcast_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Android/lib-component/src/main/res/drawable/start_broadcast_bg_clicked.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Android/lib-component/src/main/res/drawable/start_broadcast_bg_normal.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Android/lib-component/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Android/lib-component/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /Android/lib-component/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Android/lib-component/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /Android/lib-component/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Android/lib-component/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /Android/lib-component/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Android/lib-component/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /Android/lib-component/src/main/res/values-zh/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Advanced-Audio-Android 3 | 4 | 5 | 开始直播 6 | 输入一个话题 7 | Powered by agora.io 8 | 缺少必要权限 9 | 10 | -------------------------------------------------------------------------------- /Android/lib-component/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | #DEDEDE 8 | #CCCCCC 9 | #989898 10 | #666666 11 | #333333 12 | 13 | #007AFF 14 | #44A2FC 15 | #0ECFFF 16 | #9CD9FF 17 | 18 | #CC262626 19 | #66000000 20 | #22000000 21 | 22 | -------------------------------------------------------------------------------- /Android/lib-component/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Advanced-Audio-Android 3 | 4 | 5 | Start Live Broadcast 6 | Pick a topic to chat 7 | Powered by agora.io 8 | Necessary permissions acquired 9 | 10 | 11 |  abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!#$%&()+,-:;<=.>?@[]^_`{|}~ 12 | 13 | -------------------------------------------------------------------------------- /Android/lib-component/src/main/res/values/strings_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | <#YOUR APP ID#> 6 | 7 | 8 | 9 | <#YOUR ACCESS TOKEN#> 10 | 11 | -------------------------------------------------------------------------------- /Android/lib-component/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Android/lib-component/src/test/java/io/agora/advancedaudio/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package io.agora.advancedaudio; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /Android/sample-custom-recorder/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /Android/sample-custom-recorder/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 29 5 | buildToolsVersion "29.0.2" 6 | 7 | 8 | defaultConfig { 9 | applicationId "io.agora.advancedaudio.customrecorder" 10 | minSdkVersion 16 11 | targetSdkVersion 29 12 | versionCode 1 13 | versionName "1.0" 14 | 15 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 16 | } 17 | 18 | buildTypes { 19 | release { 20 | minifyEnabled false 21 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 22 | } 23 | } 24 | 25 | } 26 | 27 | dependencies { 28 | implementation fileTree(dir: 'libs', include: ['*.jar']) 29 | 30 | implementation 'androidx.appcompat:appcompat:1.1.0' 31 | testImplementation 'junit:junit:4.12' 32 | androidTestImplementation 'androidx.test.ext:junit:1.1.1' 33 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' 34 | implementation project(path: ':lib-component') 35 | } 36 | -------------------------------------------------------------------------------- /Android/sample-custom-recorder/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /Android/sample-custom-recorder/src/androidTest/java/io/agora/advancedaudio/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package io.agora.advancedaudio; 2 | 3 | import android.content.Context; 4 | 5 | import androidx.test.platform.app.InstrumentationRegistry; 6 | import androidx.test.ext.junit.runners.AndroidJUnit4; 7 | 8 | import org.junit.Test; 9 | import org.junit.runner.RunWith; 10 | 11 | import static org.junit.Assert.*; 12 | 13 | /** 14 | * Instrumented test, which will execute on an Android device. 15 | * 16 | * @see Testing documentation 17 | */ 18 | @RunWith(AndroidJUnit4.class) 19 | public class ExampleInstrumentedTest { 20 | @Test 21 | public void useAppContext() { 22 | // Context of the app under test. 23 | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); 24 | 25 | assertEquals("io.agora.advancedaudio", appContext.getPackageName()); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Android/sample-custom-recorder/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 14 | 16 | 17 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /Android/sample-custom-recorder/src/main/res/drawable-xxhdpi/btn_audio_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Android/sample-custom-recorder/src/main/res/drawable-xxhdpi/btn_audio_disabled.png -------------------------------------------------------------------------------- /Android/sample-custom-recorder/src/main/res/drawable-xxhdpi/btn_audio_enabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Android/sample-custom-recorder/src/main/res/drawable-xxhdpi/btn_audio_enabled.png -------------------------------------------------------------------------------- /Android/sample-custom-recorder/src/main/res/drawable-xxhdpi/btn_leave.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Android/sample-custom-recorder/src/main/res/drawable-xxhdpi/btn_leave.png -------------------------------------------------------------------------------- /Android/sample-custom-recorder/src/main/res/drawable-xxhdpi/live_room_bg_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Android/sample-custom-recorder/src/main/res/drawable-xxhdpi/live_room_bg_logo.png -------------------------------------------------------------------------------- /Android/sample-custom-recorder/src/main/res/drawable/btn_mute_audio.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Android/sample-custom-recorder/src/main/res/drawable/live_room_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Android/sample-custom-recorder/src/main/res/drawable/rounded_bg_full_transparent.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Android/sample-custom-recorder/src/main/res/drawable/rounded_bg_half_transparent.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Android/sample-custom-recorder/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Android/sample-custom-recorder/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /Android/sample-custom-recorder/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Android/sample-custom-recorder/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /Android/sample-custom-recorder/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Android/sample-custom-recorder/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /Android/sample-custom-recorder/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Android/sample-custom-recorder/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /Android/sample-custom-recorder/src/main/res/values-zh/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Custom-Device 3 | 4 | -------------------------------------------------------------------------------- /Android/sample-custom-recorder/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /Android/sample-custom-recorder/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 自定义音频源 3 | 4 | -------------------------------------------------------------------------------- /Android/sample-custom-recorder/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Android/sample-custom-recorder/src/test/java/io/agora/advancedaudio/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package io.agora.advancedaudio; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /Android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':lib-component', ':sample-custom-recorder' 2 | rootProject.name='Advanced-Audio-Android' 3 | -------------------------------------------------------------------------------- /Web/AgoraAudioIO-Web-Webpack/.eslintignore: -------------------------------------------------------------------------------- 1 | /scripts -------------------------------------------------------------------------------- /Web/AgoraAudioIO-Web-Webpack/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 'env': { 3 | 'browser': true, 4 | 'es6': true, 5 | 'node': true, 6 | 'jquery': true, 7 | }, 8 | 'extends': 'eslint:recommended', 9 | 'globals': { 10 | 'Atomics': 'readonly', 11 | 'SharedArrayBuffer': 'readonly' 12 | }, 13 | 'parserOptions': { 14 | 'ecmaVersion': 2018, 15 | 'sourceType': 'module' 16 | }, 17 | 'rules': { 18 | 'indent': [ 19 | 'warn', 20 | 2 21 | ], 22 | 'linebreak-style': [ 23 | 'warn', 24 | 'unix' 25 | ], 26 | 'quotes': [ 27 | 'warn', 28 | 'single' 29 | ], 30 | 'semi': [ 31 | 'warn', 32 | 'never' 33 | ], 34 | 'no-unused-vars': 0, 35 | } 36 | } -------------------------------------------------------------------------------- /Web/AgoraAudioIO-Web-Webpack/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | **/*.~ 3 | **/*.*~ 4 | .DS_Store 5 | .*~package-lock.json 6 | package-lock.json 7 | -------------------------------------------------------------------------------- /Web/AgoraAudioIO-Web-Webpack/public/.keeps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Web/AgoraAudioIO-Web-Webpack/public/.keeps -------------------------------------------------------------------------------- /Web/AgoraAudioIO-Web-Webpack/public/assets/biggie.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Web/AgoraAudioIO-Web-Webpack/public/assets/biggie.mp3 -------------------------------------------------------------------------------- /Web/AgoraAudioIO-Web-Webpack/public/assets/effectA.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Web/AgoraAudioIO-Web-Webpack/public/assets/effectA.wav -------------------------------------------------------------------------------- /Web/AgoraAudioIO-Web-Webpack/public/assets/effectB.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Web/AgoraAudioIO-Web-Webpack/public/assets/effectB.wav -------------------------------------------------------------------------------- /Web/AgoraAudioIO-Web-Webpack/public/assets/garden.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Web/AgoraAudioIO-Web-Webpack/public/assets/garden.mp3 -------------------------------------------------------------------------------- /Web/AgoraAudioIO-Web-Webpack/public/assets/music_1.m4a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Web/AgoraAudioIO-Web-Webpack/public/assets/music_1.m4a -------------------------------------------------------------------------------- /Web/AgoraAudioIO-Web-Webpack/scripts/.keeps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Web/AgoraAudioIO-Web-Webpack/scripts/.keeps -------------------------------------------------------------------------------- /Web/AgoraAudioIO-Web-Webpack/scripts/index.js: -------------------------------------------------------------------------------- 1 | const path = require("path"); 2 | const loaders = require("./loaders"); 3 | const plugins = require("./plugins"); 4 | 5 | const NODE_ENV = process.env.NODE_ENV 6 | 7 | const distPath = NODE_ENV == 'development' ? '../dist' : '../build' 8 | 9 | module.exports = { 10 | entry: { 11 | index: "./src/index.js", 12 | }, 13 | devtool: "inline-source-map", 14 | module: loaders, 15 | plugins, 16 | resolve: { 17 | extensions: [ ".js" ], 18 | }, 19 | output: { 20 | filename: "[name].[hash].js", 21 | path: path.resolve(__dirname, distPath), 22 | }, 23 | optimization: { 24 | minimize: false, 25 | }, 26 | devServer: { 27 | overlay: { 28 | warnings: true, 29 | errors: true, 30 | }, 31 | hot: true, 32 | contentBase: path.join(__dirname, "./"), 33 | compress: true, 34 | progress: true, 35 | open: true 36 | }, 37 | }; 38 | -------------------------------------------------------------------------------- /Web/AgoraAudioIO-Web-Webpack/scripts/loaders.js: -------------------------------------------------------------------------------- 1 | const path = require("path"); 2 | 3 | const env = process.env; 4 | const MiniCssExtractPlugin = require("mini-css-extract-plugin"); 5 | 6 | const styleLoader = env.NODE_ENV !== 'production' ? "style-loader" : MiniCssExtractPlugin.loader; 7 | 8 | const babelLoader = { 9 | test: /\.m?js$/, 10 | exclude: /(node_modules)/, 11 | use: { 12 | loader: 'babel-loader', 13 | options: { 14 | presets: ['@babel/preset-env'] 15 | } 16 | } 17 | }; 18 | 19 | const cssLoader = { 20 | test: /\.css$/, 21 | use: [ 22 | styleLoader, 23 | "css-loader", 24 | ], 25 | }; 26 | 27 | const fileLoader = { 28 | test: /\.(png|svg|jpg|gif|m4a|mp3)$/, 29 | use: "file-loader", 30 | }; 31 | 32 | const fontLoader = { 33 | test: /\.(woff|woff2|eot|ttf|otf)$/, 34 | use: "file-loader", 35 | }; 36 | 37 | const eslintLoader = { 38 | test: /\.js$/, 39 | include: /src/, 40 | use: { 41 | loader: "eslint-loader" 42 | } 43 | }; 44 | 45 | module.exports = { 46 | rules: [ 47 | cssLoader, 48 | fileLoader, 49 | fontLoader, 50 | babelLoader, 51 | eslintLoader, 52 | ], 53 | }; 54 | -------------------------------------------------------------------------------- /Web/AgoraAudioIO-Web-Webpack/src/.keeps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Web/AgoraAudioIO-Web-Webpack/src/.keeps -------------------------------------------------------------------------------- /Web/AgoraAudioIO-Web-Webpack/src/assets/.keeps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Web/AgoraAudioIO-Web-Webpack/src/assets/.keeps -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AGAudioCapture.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "DShow/qedit.h" 3 | 4 | class CAGAudioCapture : 5 | public ISampleGrabberCB 6 | { 7 | public: 8 | CAGAudioCapture(); 9 | ~CAGAudioCapture(); 10 | 11 | STDMETHODIMP_(ULONG) AddRef(); 12 | STDMETHODIMP_(ULONG) Release(); 13 | STDMETHODIMP QueryInterface(REFIID riid, void** ppv); 14 | STDMETHODIMP SampleCB(double SampleTime, IMediaSample* pSample); 15 | STDMETHODIMP BufferCB(double dblSampleTime, BYTE* pBuffer, long lBufferSize); 16 | 17 | private: 18 | UINT m_nTimeStamp; 19 | 20 | ULONG m_nRef; 21 | }; 22 | 23 | -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AGButton.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AGButton.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AGComboBox.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AGComboBox.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AGConfig.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | class CAGConfig 3 | { 4 | public: 5 | CAGConfig(); 6 | ~CAGConfig(); 7 | 8 | int GetCodec(); 9 | BOOL SetCodec(int nCodec); 10 | 11 | /* int GetResolution(); 12 | BOOL SetResolution(int nResolution); 13 | 14 | int GetFPS(); 15 | BOOL SetFPS(int nPFS); 16 | 17 | int GetMaxRate(); 18 | BOOL SetMaxRate(int nMaxRate); 19 | */ 20 | BOOL EnableAutoSave(BOOL bEnable); 21 | BOOL IsAutoSaveEnabled(); 22 | 23 | BOOL SetSolution(int nIndex); 24 | int GetSolution(); 25 | 26 | private: 27 | TCHAR m_szConfigFile[MAX_PATH]; 28 | }; 29 | 30 | -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AGDesktopCaptureDlg.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AGDesktopCaptureDlg.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AGDesktopCaptureDlg.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AGDesktopCaptureDlg.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AGEdit.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AGEdit.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AGHyperLink.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AGHyperLink.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AGLinkCtrl.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AGLinkCtrl.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AGLinkCtrl.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | // CAGLinkCtrl 5 | 6 | class CAGLinkCtrl : public CStatic 7 | { 8 | DECLARE_DYNAMIC(CAGLinkCtrl) 9 | 10 | public: 11 | CAGLinkCtrl(); 12 | virtual ~CAGLinkCtrl(); 13 | 14 | void SetTextColor(COLORREF crText, COLORREF crHover); 15 | void SetBackColor(COLORREF crBack); 16 | COLORREF GetTextColor() const; 17 | COLORREF GetHoverColor() const; 18 | 19 | protected: 20 | virtual void PreSubclassWindow(); 21 | 22 | afx_msg void OnPaint(); 23 | afx_msg void OnMouseMove(UINT nFlags, CPoint point); 24 | afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message); 25 | afx_msg void OnMouseLeave(); 26 | 27 | DECLARE_MESSAGE_MAP() 28 | 29 | private: 30 | COLORREF m_crText; 31 | COLORREF m_crHover; // Hover colour 32 | COLORREF m_crBack; 33 | BOOL m_bOverControl; 34 | BOOL m_bTrackMouseEvent; 35 | }; -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AGMessage.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define WM_GOBACK WM_USER+100 4 | #define WM_GONEXT WM_USER+101 5 | #define WM_JOINCHANNEL WM_USER+200 6 | #define WM_LEAVECHANNEL WM_USER+201 7 | 8 | 9 | #define WM_AGSLD_TMBPOSCHANGED WM_USER+200 -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AGResourceVisitor.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AGResourceVisitor.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AGScreenCaptureDlg.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AGScreenCaptureDlg.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AGScreenCaptureDlg.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "afxcoll.h" 3 | 4 | #define WM_WINDOWSHARE WM_USER+303 5 | // CAGScreenCaptureWnd 6 | 7 | class CAGScreenCaptureDlg : public CDialogEx 8 | { 9 | DECLARE_DYNAMIC(CAGScreenCaptureDlg) 10 | 11 | public: 12 | CAGScreenCaptureDlg(CWnd* pParent = NULL); 13 | virtual ~CAGScreenCaptureDlg(); 14 | 15 | enum { IDD = IDD_SCRCAP_DIALOG }; 16 | 17 | int RefreashWndInfo(); 18 | BOOL SaveScreen(LPCRECT lpRect); 19 | 20 | protected: 21 | afx_msg void OnMouseMove(UINT nFlags, CPoint point); 22 | afx_msg void OnPaint(); 23 | 24 | afx_msg BOOL OnEraseBkgnd(CDC* pDC); 25 | afx_msg void OnShowWindow(BOOL bShow, UINT nStatus); 26 | 27 | DECLARE_MESSAGE_MAP() 28 | 29 | static BOOL CALLBACK WndEnumProc(HWND hWnd, LPARAM lParam); 30 | 31 | private: 32 | CBitmap m_bmpDesktop; 33 | 34 | CList m_listWnd; 35 | HWND m_hMarkWnd; 36 | 37 | public: 38 | 39 | afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point); 40 | afx_msg void OnRButtonDown(UINT nFlags, CPoint point); 41 | }; 42 | 43 | 44 | -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AGSliderCtrl.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AGSliderCtrl.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AGVideoCapture.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | #include "DShow/qedit.h" 5 | 6 | class CAGVideoCapture : 7 | public ISampleGrabberCB 8 | { 9 | public: 10 | CAGVideoCapture(); 11 | ~CAGVideoCapture(); 12 | 13 | STDMETHODIMP_(ULONG) AddRef(); 14 | STDMETHODIMP_(ULONG) Release(); 15 | STDMETHODIMP QueryInterface(REFIID riid, void** ppv); 16 | STDMETHODIMP SampleCB(double SampleTime, IMediaSample* pSample); 17 | STDMETHODIMP BufferCB(double dblSampleTime, BYTE* pBuffer, long lBufferSize); 18 | 19 | // BOOL SetVideoInfo(const VIDEOINFOHEADER *lpVideoInfo); 20 | 21 | private: 22 | UINT m_nTimeStamp; 23 | UINT m_nFPS; 24 | 25 | ULONG m_nRef; 26 | 27 | LPBYTE m_lpYUVBuffer; 28 | LPBYTE m_lpY; 29 | LPBYTE m_lpU; 30 | LPBYTE m_lpV; 31 | 32 | }; 33 | 34 | -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AGVideoTestWnd.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AGVideoTestWnd.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AGVideoTestWnd.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AGVideoTestWnd.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AGVideoWnd.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AGVideoWnd.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AgoraAudInputManager.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | class CAgoraAudInputManager 3 | { 4 | public: 5 | CAgoraAudInputManager(); 6 | ~CAgoraAudInputManager(); 7 | 8 | BOOL Create(IRtcEngine *lpRtcEngine); 9 | void Close(); 10 | 11 | UINT GetVolume(); 12 | BOOL SetVolume(UINT nVol); 13 | UINT GetDeviceCount(); 14 | 15 | CString GetCurDeviceID(); 16 | BOOL SetCurDevice(LPCTSTR lpDeviceID); 17 | 18 | BOOL GetDevice(UINT nIndex, CString &rDeviceName, CString &rDeviceID); 19 | 20 | void TestAudInputDevice(HWND hMsgWnd, BOOL bTestOn); 21 | 22 | BOOL IsTesting() { return m_bTestingOn; }; 23 | private: 24 | BOOL m_bTestingOn; 25 | HWND m_hOldMsgWnd; 26 | AAudioDeviceManager *m_ptrDeviceManager; 27 | IAudioDeviceCollection *m_lpCollection; 28 | }; 29 | 30 | -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AgoraCameraManager.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | class CAgoraCameraManager 3 | { 4 | public: 5 | CAgoraCameraManager(); 6 | ~CAgoraCameraManager(); 7 | 8 | BOOL Create(IRtcEngine *lpRtcEngine); 9 | void Close(); 10 | 11 | UINT GetDeviceCount(); 12 | 13 | CString GetCurDeviceID(); 14 | BOOL SetCurDevice(LPCTSTR lpDeviceID); 15 | 16 | BOOL GetDevice(UINT nIndex, CString &rDeviceName, CString &rDeviceID); 17 | void TestCameraDevice(HWND hVideoWnd, BOOL bTestOn = TRUE); 18 | 19 | BOOL IsTesting() { return m_bTestingOn; }; 20 | 21 | private: 22 | AVideoDeviceManager *m_ptrDeviceManager; 23 | IVideoDeviceCollection *m_lpCollection; 24 | BOOL m_bTestingOn; 25 | }; 26 | 27 | -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AgoraExternalCapture.h: -------------------------------------------------------------------------------- 1 | 2 | // OpenVideoCall.h : main header file for the PROJECT_NAME application 3 | // 4 | 5 | #pragma once 6 | 7 | #ifndef __AFXWIN_H__ 8 | #error "include 'stdafx.h' before including this file for PCH" 9 | #endif 10 | 11 | #include "resource.h" // main symbols 12 | 13 | 14 | // CAgoraVideoCallApp: 15 | // See AgoraVideoCall.cpp for the implementation of this class 16 | // 17 | 18 | class CAgoraExternalCaptureApp : public CWinApp 19 | { 20 | public: 21 | CAgoraExternalCaptureApp(); 22 | 23 | // Overrides 24 | public: 25 | virtual BOOL InitInstance(); 26 | 27 | // Implementation 28 | 29 | DECLARE_MESSAGE_MAP() 30 | }; 31 | 32 | extern CAgoraExternalCaptureApp theApp; -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AgoraExternalCapture.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AgoraExternalCapture.rc -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AgoraExternalCaptureDlg.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AgoraExternalCaptureDlg.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AgoraObject.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AgoraObject.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AgoraObject.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AgoraObject.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AgoraPlayoutManager.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | class CAgoraPlayoutManager 3 | { 4 | public: 5 | CAgoraPlayoutManager(); 6 | ~CAgoraPlayoutManager(); 7 | 8 | BOOL Create(IRtcEngine *lpRtcEngine); 9 | void Close(); 10 | 11 | UINT GetVolume(); 12 | BOOL SetVolume(UINT nVol); 13 | UINT GetDeviceCount(); 14 | 15 | CString GetCurDeviceID(); 16 | BOOL SetCurDevice(LPCTSTR lpDeviceID); 17 | 18 | BOOL GetDevice(UINT nIndex, CString &rDeviceName, CString &rDeviceID); 19 | void TestPlaybackDevice(UINT nWavID, BOOL bTestOn = TRUE); 20 | 21 | BOOL IsTesting() { return m_bTestingOn; }; 22 | private: 23 | AAudioDeviceManager *m_ptrDeviceManager; 24 | IAudioDeviceCollection *m_lpCollection; 25 | 26 | private: 27 | BOOL m_bTestingOn; 28 | }; 29 | 30 | -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AudioCapturePackageQueue.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | #include "BufferQueue.h" 5 | 6 | 7 | class CAudioCapturePackageQueue 8 | { 9 | protected: 10 | CAudioCapturePackageQueue(); 11 | ~CAudioCapturePackageQueue(); 12 | 13 | public: 14 | static CAudioCapturePackageQueue *GetInstance(); 15 | static void CloseInstance(); 16 | 17 | void SetAudioPackageSize(SIZE_T nPackageSize); 18 | SIZE_T GetAudioPackageSize() const { return m_nPackageSize; }; 19 | 20 | void SetAudioFormat(const WAVEFORMATEX *lpWaveInfo); 21 | void GetAudioFormat(WAVEFORMATEX *lpWaveInfo); 22 | 23 | BOOL PushAudioPackage(LPCVOID lpAudioPackage, SIZE_T nPackageSize); 24 | BOOL PopAudioPackage(LPVOID lpAudioPackage, SIZE_T *nPackageSize); 25 | 26 | private: 27 | CBufferQueue m_bufQueue; 28 | WAVEFORMATEX m_waveFormat; 29 | SIZE_T m_nPackageSize; 30 | 31 | static CAudioCapturePackageQueue *m_lpAudioPackageQueue; 32 | }; 33 | 34 | -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/AudioPlayPackageQueue.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | #include "BufferQueue.h" 5 | 6 | 7 | class CAudioPlayPackageQueue 8 | { 9 | protected: 10 | CAudioPlayPackageQueue(); 11 | ~CAudioPlayPackageQueue(); 12 | 13 | public: 14 | static CAudioPlayPackageQueue *GetInstance(); 15 | static void CloseInstance(); 16 | 17 | void SetAudioPackageSize(SIZE_T nPackageSize); 18 | SIZE_T GetAudioPackageSize() const { return m_nPackageSize; }; 19 | 20 | void SetAudioFormat(const WAVEFORMATEX *lpWaveInfo); 21 | void GetAudioFormat(WAVEFORMATEX *lpWaveInfo); 22 | 23 | BOOL PushAudioPackage(LPCVOID lpAudioPackage, SIZE_T nPackageSize); 24 | BOOL PopAudioPackage(LPVOID lpAudioPackage, SIZE_T *nPackageSize); 25 | 26 | private: 27 | CBufferQueue m_bufQueue; 28 | WAVEFORMATEX m_waveFormat; 29 | SIZE_T m_nPackageSize; 30 | 31 | static CAudioPlayPackageQueue *m_lpAudioPackageQueue; 32 | }; 33 | 34 | -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/BufferQueue.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/BufferQueue.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/BufferQueue.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/BufferQueue.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/ChatDlg.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/ChatDlg.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/ChatDlg.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/ChatDlg.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/DShowPinHelper.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | 5 | #include 6 | 7 | class CDShowPinHelper 8 | { 9 | public: 10 | CDShowPinHelper(); 11 | ~CDShowPinHelper(); 12 | 13 | BOOL Open(IBaseFilter* ptrFilter); 14 | void Close(); 15 | 16 | int GetPinCount(); 17 | 18 | BOOL GetPinDirection(int nIndex, PIN_DIRECTION *pDirection); 19 | BOOL GetPin(int nIndex, IPin **pptrPin); 20 | BOOL FindUnconnectedPin(PIN_DIRECTION PinDir, IPin **pptrPin); 21 | 22 | static BOOL IsPinConnected(IPin *pPin, BOOL *pIsConnected); 23 | static BOOL MatchPin(IPin *pPin, PIN_DIRECTION direction, BOOL bIsConnected, BOOL *pMatch); 24 | static BOOL IsPinDirection(IPin *pPin, PIN_DIRECTION dir, BOOL *pMatch); 25 | private: 26 | CComPtr m_ptrFilter; 27 | }; 28 | -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/DeviceDlg.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/DeviceDlg.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/DeviceDlg.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/DeviceDlg.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/DskcapsetDlg.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/DskcapsetDlg.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/DskcapsetDlg.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/DskcapsetDlg.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/EnterChannelDlg.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/EnterChannelDlg.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/EnterChannelDlg.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/EnterChannelDlg.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/ExtCaptureDlg.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/ExtCaptureDlg.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/ExtCaptureDlg.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/ExtCaptureDlg.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/ExtendAudioFrameObserver.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "ExtendAudioFrameObserver.h" 3 | 4 | 5 | CExtendAudioFrameObserver::CExtendAudioFrameObserver() 6 | { 7 | } 8 | 9 | 10 | CExtendAudioFrameObserver::~CExtendAudioFrameObserver() 11 | { 12 | } 13 | 14 | bool CExtendAudioFrameObserver::onRecordAudioFrame(AudioFrame& audioFrame) 15 | { 16 | SIZE_T nSize = audioFrame.channels*audioFrame.samples * 2; 17 | CAudioCapturePackageQueue::GetInstance()->PopAudioPackage(audioFrame.buffer, &nSize); 18 | 19 | return true; 20 | } 21 | 22 | bool CExtendAudioFrameObserver::onPlaybackAudioFrame(AudioFrame& audioFrame) 23 | { 24 | SIZE_T nSize = audioFrame.channels*audioFrame.samples * 2; 25 | CAudioPlayPackageQueue::GetInstance()->PushAudioPackage(audioFrame.buffer, nSize); 26 | 27 | return true; 28 | } 29 | 30 | bool CExtendAudioFrameObserver::onMixedAudioFrame(AudioFrame& audioFrame) 31 | { 32 | return true; 33 | } 34 | 35 | bool CExtendAudioFrameObserver::onPlaybackAudioFrameBeforeMixing(unsigned int uid, AudioFrame& audioFrame) 36 | { 37 | return true; 38 | } 39 | -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/ExtendAudioFrameObserver.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "../SDK/include/IAgoraMediaEngine.h" 3 | 4 | #include "AudioCapturePackageQueue.h" 5 | #include "AudioPlayPackageQueue.h" 6 | #include "XAudioPlayout.h" 7 | 8 | class CExtendAudioFrameObserver : 9 | public agora::media::IAudioFrameObserver 10 | { 11 | public: 12 | CExtendAudioFrameObserver(); 13 | ~CExtendAudioFrameObserver(); 14 | 15 | virtual bool onRecordAudioFrame(AudioFrame& audioFrame); 16 | virtual bool onPlaybackAudioFrame(AudioFrame& audioFrame); 17 | virtual bool onMixedAudioFrame(AudioFrame& audioFrame); 18 | virtual bool onPlaybackAudioFrameBeforeMixing(unsigned int uid, AudioFrame& audioFrame); 19 | }; 20 | 21 | -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/ExtendVideoFrameObserver.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "../SDK/include/IAgoraMediaEngine.h" 3 | #include "VideoPackageQueue.h" 4 | 5 | class CExtendVideoFrameObserver : 6 | public agora::media::IVideoFrameObserver 7 | { 8 | public: 9 | CExtendVideoFrameObserver(); 10 | ~CExtendVideoFrameObserver(); 11 | 12 | virtual bool onCaptureVideoFrame(VideoFrame& videoFrame); 13 | virtual bool onRenderVideoFrame(unsigned int uid, VideoFrame& videoFrame); 14 | 15 | private: 16 | LPBYTE m_lpImageBuffer; 17 | LPBYTE m_lpY; 18 | LPBYTE m_lpU; 19 | LPBYTE m_lpV; 20 | }; 21 | 22 | -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/LanguageSet.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | //#define LANGUAGE_SET_MSG _T("SNOWWALKER_LANGSET_MSG") 4 | 5 | #define LANG_STR(lpStringID) (CLanguageSet::GetInstance()->GetString(lpStringID)) 6 | 7 | class CLanguageSet 8 | { 9 | protected: 10 | CLanguageSet(); 11 | ~CLanguageSet(); 12 | 13 | public: 14 | static CLanguageSet *GetInstance(); 15 | static void CloseInstance(); 16 | 17 | CString GetCurrentLanguage(); 18 | BOOL SetCurrentLanguage(LPCTSTR lpLanguageName); 19 | LPCTSTR GetString(LPCSTR lpStringID); 20 | 21 | BOOL LoadLanguageModule(LPCTSTR lpLanguageName = NULL); 22 | void UnloadLanguageModule(); 23 | 24 | private: 25 | HMODULE m_hLanguageModule; 26 | static CLanguageSet *m_lpLanguageSet; 27 | static TCHAR m_szSelfPath[MAX_PATH]; 28 | }; 29 | 30 | -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/LogoDlg.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/LogoDlg.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/LogoDlg.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/LogoDlg.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/SetupDlg.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/SetupDlg.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/SetupDlg.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/SetupDlg.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/StreamingVoiceContext.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "xaudio2.h" 4 | 5 | struct StreamingVoiceContext : public IXAudio2VoiceCallback 6 | { 7 | STDMETHOD_(void, OnVoiceProcessingPassStart)(UINT32) 8 | { 9 | } 10 | STDMETHOD_(void, OnVoiceProcessingPassEnd)() 11 | { 12 | } 13 | STDMETHOD_(void, OnStreamEnd)() 14 | { 15 | } 16 | STDMETHOD_(void, OnBufferStart)(void*) 17 | { 18 | } 19 | STDMETHOD_(void, OnBufferEnd)(void*) 20 | { 21 | SetEvent(hBufferEndEvent); 22 | } 23 | STDMETHOD_(void, OnLoopEnd)(void*) 24 | { 25 | } 26 | STDMETHOD_(void, OnVoiceError)(void*, HRESULT) 27 | { 28 | } 29 | 30 | HANDLE hBufferEndEvent; 31 | 32 | StreamingVoiceContext() : hBufferEndEvent(CreateEvent(NULL, FALSE, FALSE, NULL)) 33 | { 34 | } 35 | virtual ~StreamingVoiceContext() 36 | { 37 | CloseHandle(hBufferEndEvent); 38 | } 39 | }; -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/VideoDlg.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/VideoDlg.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/VideoDlg.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/VideoDlg.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/VideoPackageQueue.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "BufferQueue.h" 4 | 5 | class CVideoPackageQueue 6 | { 7 | protected: 8 | CVideoPackageQueue(); 9 | ~CVideoPackageQueue(); 10 | 11 | public: 12 | static CVideoPackageQueue *GetInstance(); 13 | static void CloseInstance(); 14 | 15 | void SetVideoFormat(const BITMAPINFOHEADER *lpInfoHeader); 16 | void GetVideoFormat(BITMAPINFOHEADER *lpInfoHeader); 17 | 18 | BOOL PushVideoPackage(LPCVOID lpAudioPackage, SIZE_T nPackageLen); 19 | BOOL PopVideoPackage(LPVOID lpVideoPackage, SIZE_T *nPackageSize); 20 | 21 | SIZE_T GetVideoPackageSize() const { return m_nPackageSize; }; 22 | SIZE_T GetBufferSize() const { return m_nBufferSize; }; 23 | 24 | private: 25 | CBufferQueue m_bufQueue; 26 | BITMAPINFOHEADER m_bmiHeader; 27 | SIZE_T m_nPackageSize; 28 | SIZE_T m_nBufferSize; 29 | 30 | static CVideoPackageQueue *m_lpVideoPackageQueue; 31 | }; 32 | 33 | 34 | -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/YUVTrans.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/YUVTrans.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/libYUV/libyuv/version.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2012 The LibYuv Project Authors. All rights reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #ifndef INCLUDE_LIBYUV_VERSION_H_ // NOLINT 12 | #define INCLUDE_LIBYUV_VERSION_H_ 13 | 14 | #define LIBYUV_VERSION 1419 15 | 16 | #endif // INCLUDE_LIBYUV_VERSION_H_ NOLINT 17 | -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/AgoraExternalCapture.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/AgoraExternalCapture.ico -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/AgoraExternalCapture.rc2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/AgoraExternalCapture.rc2 -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_BACKGROUND_VIDEO.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_BACKGROUND_VIDEO.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_BTNAUDIO_VIDEO.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_BTNAUDIO_VIDEO.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_BTNCLOSE.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_BTNCLOSE.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_BTNENDCALL_VIDEO.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_BTNENDCALL_VIDEO.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_BTNFULLSCR_VIDEO.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_BTNFULLSCR_VIDEO.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_BTNMAUDIO_VIDEO.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_BTNMAUDIO_VIDEO.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_BTNMAX.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_BTNMAX.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_BTNMIN.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_BTNMIN.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_BTNMORE_VIDEO.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_BTNMORE_VIDEO.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_BTNMSG_VIDEO.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_BTNMSG_VIDEO.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_BTNNORSCR_VIDEO.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_BTNNORSCR_VIDEO.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_BTNRESTORE.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_BTNRESTORE.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_BTNSCRCAP_VIDEO.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_BTNSCRCAP_VIDEO.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_BTNSETUP_VIDEO.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_BTNSETUP_VIDEO.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_BTNTIP_VIDEO.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_BTNTIP_VIDEO.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_BTNVIDEO_VIDEO.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_BTNVIDEO_VIDEO.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_CMBBTN.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_CMBBTN.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_CMBSEL.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_CMBSEL.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_DESKTOPSHARE_VIDEO.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_DESKTOPSHARE_VIDEO.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_DLG_LOGO.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_DLG_LOGO.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_DLG_MAIN.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_DLG_MAIN.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_LOGO.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_LOGO.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_MENU_DEVICE.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_MENU_DEVICE.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_MENU_FILTER.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_MENU_FILTER.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_MENU_INFO.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_MENU_INFO.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_MENU_MORE.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_MENU_MORE.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_NETWORK_QUALITY.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_NETWORK_QUALITY.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_SLD_HOVER.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_SLD_HOVER.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_SLD_NORMAL.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/IDB_SLD_NORMAL.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/ID_TEST_AUDIO.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/res/ID_TEST_AUDIO.wav -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/resource.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/resource.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/stdafx.cpp: -------------------------------------------------------------------------------- 1 | 2 | // stdafx.cpp : source file that includes just the standard includes 3 | // AgoraVideoCall.pch will be the pre-compiled header 4 | // stdafx.obj will contain the pre-compiled type information 5 | 6 | #include "stdafx.h" 7 | 8 | 9 | -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/targetver.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | // Including SDKDDKVer.h defines the highest available Windows platform. 4 | 5 | // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and 6 | // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/AgoraExternalCapture/video_preprocessing_plugin.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef _VIDEO_PREPROCESSING_PLUGIN_H_ 3 | #define _VIDEO_PREPROCESSING_PLUGIN_H_ 4 | 5 | #include "../SDK/include/IAgoraRtcEngine.h" 6 | 7 | int load_preprocessing_plugin(agora::rtc::IRtcEngine* engine); 8 | int unload_preprocessing_plugin(agora::rtc::IRtcEngine* engine); 9 | 10 | #endif //_VIDEO_PREPROCESSING_PLUGIN_H_ 11 | -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/Language/ChineseSimplified/ChineseSimplified.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/Language/ChineseSimplified/ChineseSimplified.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/Language/ChineseSimplified/ChineseSimplified.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/Language/ChineseSimplified/ChineseSimplified.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/Language/ChineseSimplified/dllmain.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/Language/ChineseSimplified/dllmain.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/Language/ChineseSimplified/stdafx.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/Language/ChineseSimplified/stdafx.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/Language/ChineseSimplified/stdafx.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/Language/ChineseSimplified/stdafx.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/Language/ChineseSimplified/targetver.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/Language/ChineseSimplified/targetver.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/Language/English/English.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/Language/English/English.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/Language/English/English.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/Language/English/English.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/Language/English/ReadMe.txt: -------------------------------------------------------------------------------- 1 | ======================================================================== 2 | 动态链接库:English 项目概述 3 | ======================================================================== 4 | 5 | 应用程序向导已为您创建了此 English DLL。 6 | 7 | 本文件概要介绍组成 English 应用程序的每个文件的内容。 8 | 9 | 10 | English.vcxproj 11 | 这是使用应用程序向导生成的 VC++ 项目的主项目文件,其中包含生成该文件的 Visual C++ 的版本信息,以及有关使用应用程序向导选择的平台、配置和项目功能的信息。 12 | 13 | English.vcxproj.filters 14 | 这是使用“应用程序向导”生成的 VC++ 项目筛选器文件。它包含有关项目文件与筛选器之间的关联信息。在 IDE 中,通过这种关联,在特定节点下以分组形式显示具有相似扩展名的文件。例如,“.cpp”文件与“源文件”筛选器关联。 15 | 16 | English.cpp 17 | 这是主 DLL 源文件。 18 | 19 | ///////////////////////////////////////////////////////////////////////////// 20 | 其他标准文件: 21 | 22 | StdAfx.h, StdAfx.cpp 23 | 这些文件用于生成名为 English.pch 的预编译头 (PCH) 文件和名为 StdAfx.obj 的预编译类型文件。 24 | 25 | ///////////////////////////////////////////////////////////////////////////// 26 | 其他注释: 27 | 28 | 应用程序向导使用“TODO:”注释来指示应添加或自定义的源代码部分。 29 | 30 | ///////////////////////////////////////////////////////////////////////////// 31 | -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/Language/English/dllmain.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/Language/English/dllmain.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/Language/English/stdafx.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/Language/English/stdafx.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/Language/English/stdafx.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/Language/English/stdafx.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/Language/English/targetver.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/Language/English/targetver.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows-dx-2010/SDK/PLACEHOLDER: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows-dx-2010/SDK/PLACEHOLDER -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AGButton.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AGButton.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AGComboBox.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AGComboBox.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AGConfig.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | class CAGConfig 3 | { 4 | public: 5 | CAGConfig(); 6 | ~CAGConfig(); 7 | 8 | int GetCodec(); 9 | BOOL SetCodec(int nCodec); 10 | 11 | /* int GetResolution(); 12 | BOOL SetResolution(int nResolution); 13 | 14 | int GetFPS(); 15 | BOOL SetFPS(int nPFS); 16 | 17 | int GetMaxRate(); 18 | BOOL SetMaxRate(int nMaxRate); 19 | */ 20 | BOOL EnableAutoSave(BOOL bEnable); 21 | BOOL IsAutoSaveEnabled(); 22 | 23 | BOOL SetSolution(int nIndex); 24 | int GetSolution(); 25 | CString GetAppid(); 26 | void SetAppid(CString appid); 27 | 28 | CString GetFilePath() { return m_szConfigFile; } 29 | private: 30 | TCHAR m_szConfigFile[MAX_PATH]; 31 | }; 32 | 33 | -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AGDesktopCaptureDlg.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AGDesktopCaptureDlg.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AGDesktopCaptureDlg.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AGDesktopCaptureDlg.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AGEdit.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AGEdit.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AGHyperLink.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AGHyperLink.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AGLinkCtrl.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AGLinkCtrl.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AGLinkCtrl.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | // CAGLinkCtrl 5 | 6 | class CAGLinkCtrl : public CStatic 7 | { 8 | DECLARE_DYNAMIC(CAGLinkCtrl) 9 | 10 | public: 11 | CAGLinkCtrl(); 12 | virtual ~CAGLinkCtrl(); 13 | 14 | void SetTextColor(COLORREF crText, COLORREF crHover); 15 | void SetBackColor(COLORREF crBack); 16 | COLORREF GetTextColor() const; 17 | COLORREF GetHoverColor() const; 18 | 19 | protected: 20 | virtual void PreSubclassWindow(); 21 | 22 | afx_msg void OnPaint(); 23 | afx_msg void OnMouseMove(UINT nFlags, CPoint point); 24 | afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message); 25 | afx_msg void OnMouseLeave(); 26 | 27 | DECLARE_MESSAGE_MAP() 28 | 29 | private: 30 | COLORREF m_crText; 31 | COLORREF m_crHover; // Hover colour 32 | COLORREF m_crBack; 33 | BOOL m_bOverControl; 34 | BOOL m_bTrackMouseEvent; 35 | }; -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AGMessage.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define WM_GOBACK WM_USER+100 4 | #define WM_GONEXT WM_USER+101 5 | #define WM_JOINCHANNEL WM_USER+200 6 | #define WM_LEAVECHANNEL WM_USER+201 7 | 8 | 9 | #define WM_AGSLD_TMBPOSCHANGED WM_USER+200 -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AGResourceVisitor.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AGResourceVisitor.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AGScreenCaptureDlg.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AGScreenCaptureDlg.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AGScreenCaptureDlg.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "afxcoll.h" 3 | 4 | #define WM_WINDOWSHARE WM_USER+303 5 | // CAGScreenCaptureWnd 6 | 7 | class CAGScreenCaptureDlg : public CDialogEx 8 | { 9 | DECLARE_DYNAMIC(CAGScreenCaptureDlg) 10 | 11 | public: 12 | CAGScreenCaptureDlg(CWnd* pParent = NULL); 13 | virtual ~CAGScreenCaptureDlg(); 14 | 15 | enum { IDD = IDD_SCRCAP_DIALOG }; 16 | 17 | int RefreashWndInfo(); 18 | BOOL SaveScreen(LPCRECT lpRect); 19 | 20 | protected: 21 | afx_msg void OnMouseMove(UINT nFlags, CPoint point); 22 | afx_msg void OnPaint(); 23 | 24 | afx_msg BOOL OnEraseBkgnd(CDC* pDC); 25 | afx_msg void OnShowWindow(BOOL bShow, UINT nStatus); 26 | 27 | DECLARE_MESSAGE_MAP() 28 | 29 | static BOOL CALLBACK WndEnumProc(HWND hWnd, LPARAM lParam); 30 | 31 | private: 32 | CBitmap m_bmpDesktop; 33 | 34 | CList m_listWnd; 35 | HWND m_hMarkWnd; 36 | 37 | public: 38 | 39 | afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point); 40 | afx_msg void OnRButtonDown(UINT nFlags, CPoint point); 41 | }; 42 | 43 | 44 | -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AGSliderCtrl.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AGSliderCtrl.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AGVideoTestWnd.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AGVideoTestWnd.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AGVideoTestWnd.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AGVideoTestWnd.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AGVideoWnd.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AGVideoWnd.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AgoraAudInputManager.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | class CAgoraAudInputManager 3 | { 4 | public: 5 | CAgoraAudInputManager(); 6 | ~CAgoraAudInputManager(); 7 | 8 | BOOL Create(IRtcEngine *lpRtcEngine); 9 | void Close(); 10 | 11 | UINT GetVolume(); 12 | BOOL SetVolume(UINT nVol); 13 | UINT GetDeviceCount(); 14 | 15 | CString GetCurDeviceID(); 16 | BOOL SetCurDevice(LPCTSTR lpDeviceID); 17 | 18 | BOOL GetDevice(UINT nIndex, CString &rDeviceName, CString &rDeviceID); 19 | 20 | void TestAudInputDevice(HWND hMsgWnd, BOOL bTestOn); 21 | 22 | BOOL IsTesting() { return m_bTestingOn; }; 23 | private: 24 | BOOL m_bTestingOn; 25 | HWND m_hOldMsgWnd; 26 | AAudioDeviceManager *m_ptrDeviceManager; 27 | IAudioDeviceCollection *m_lpCollection; 28 | }; 29 | 30 | -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AgoraCameraManager.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | class CAgoraCameraManager 3 | { 4 | public: 5 | CAgoraCameraManager(); 6 | ~CAgoraCameraManager(); 7 | 8 | BOOL Create(IRtcEngine *lpRtcEngine); 9 | void Close(); 10 | 11 | UINT GetDeviceCount(); 12 | 13 | CString GetCurDeviceID(); 14 | BOOL SetCurDevice(LPCTSTR lpDeviceID); 15 | 16 | BOOL GetDevice(UINT nIndex, CString &rDeviceName, CString &rDeviceID); 17 | void TestCameraDevice(HWND hVideoWnd, BOOL bTestOn = TRUE); 18 | 19 | BOOL IsTesting() { return m_bTestingOn; }; 20 | 21 | private: 22 | AVideoDeviceManager *m_ptrDeviceManager; 23 | IVideoDeviceCollection *m_lpCollection; 24 | BOOL m_bTestingOn; 25 | }; 26 | 27 | -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AgoraExternalCapture.aps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AgoraExternalCapture.aps -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AgoraExternalCapture.h: -------------------------------------------------------------------------------- 1 | 2 | // OpenVideoCall.h : main header file for the PROJECT_NAME application 3 | // 4 | 5 | #pragma once 6 | 7 | #ifndef __AFXWIN_H__ 8 | #error "include 'stdafx.h' before including this file for PCH" 9 | #endif 10 | 11 | #include "resource.h" // main symbols 12 | 13 | // CAgoraVideoCallApp: 14 | // See AgoraVideoCall.cpp for the implementation of this class 15 | // 16 | class CAgoraExternalCaptureDlg; 17 | class CAgoraExternalCaptureApp : public CWinApp 18 | { 19 | public: 20 | CAgoraExternalCaptureApp(); 21 | ~CAgoraExternalCaptureApp(); 22 | // Overrides 23 | public: 24 | virtual BOOL InitInstance(); 25 | virtual int ExitInstance(); 26 | // Implementation 27 | 28 | DECLARE_MESSAGE_MAP() 29 | private: 30 | CAgoraExternalCaptureDlg* avcDlg; 31 | }; 32 | 33 | extern CAgoraExternalCaptureApp theApp; -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AgoraExternalCapture.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AgoraExternalCapture.rc -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AgoraExternalCaptureDlg.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AgoraExternalCaptureDlg.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AgoraObject.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AgoraObject.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AgoraObject.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AgoraObject.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/AgoraPlayoutManager.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | class CAgoraPlayoutManager 3 | { 4 | public: 5 | CAgoraPlayoutManager(); 6 | ~CAgoraPlayoutManager(); 7 | 8 | BOOL Create(IRtcEngine *lpRtcEngine); 9 | void Close(); 10 | 11 | UINT GetVolume(); 12 | BOOL SetVolume(UINT nVol); 13 | UINT GetDeviceCount(); 14 | 15 | CString GetCurDeviceID(); 16 | BOOL SetCurDevice(LPCTSTR lpDeviceID); 17 | 18 | BOOL GetDevice(UINT nIndex, CString &rDeviceName, CString &rDeviceID); 19 | void TestPlaybackDevice(UINT nWavID, BOOL bTestOn = TRUE); 20 | 21 | BOOL IsTesting() { return m_bTestingOn; }; 22 | private: 23 | AAudioDeviceManager *m_ptrDeviceManager; 24 | IAudioDeviceCollection *m_lpCollection; 25 | 26 | private: 27 | BOOL m_bTestingOn; 28 | }; 29 | 30 | -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/ChatDlg.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/ChatDlg.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/ChatDlg.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/ChatDlg.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/DeviceDlg.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/DeviceDlg.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/DeviceDlg.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/DeviceDlg.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/DskcapsetDlg.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/DskcapsetDlg.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/DskcapsetDlg.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/DskcapsetDlg.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/EnterChannelDlg.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/EnterChannelDlg.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/EnterChannelDlg.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/EnterChannelDlg.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/ExtCaptureDlg.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/ExtCaptureDlg.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/ExtCaptureDlg.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/ExtCaptureDlg.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/ExtendAudioFrameObserver.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "IAgoraMediaEngine.h" 3 | #include "CirCleBuffer.hpp" 4 | //#include "XAudioPlayout.h" 5 | 6 | class CExtendAudioFrameObserver : 7 | public agora::media::IAudioFrameObserver 8 | { 9 | public: 10 | CExtendAudioFrameObserver(); 11 | ~CExtendAudioFrameObserver(); 12 | 13 | virtual bool onRecordAudioFrame(AudioFrame& audioFrame); 14 | virtual bool onPlaybackAudioFrame(AudioFrame& audioFrame); 15 | virtual bool onMixedAudioFrame(AudioFrame& audioFrame); 16 | virtual bool onPlaybackAudioFrameBeforeMixing(unsigned int uid, AudioFrame& audioFrame); 17 | }; 18 | 19 | -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/LanguageSet.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | //#define LANGUAGE_SET_MSG _T("SNOWWALKER_LANGSET_MSG") 4 | 5 | #define LANG_STR(lpStringID) (CLanguageSet::GetInstance()->GetString(lpStringID)) 6 | 7 | class CLanguageSet 8 | { 9 | protected: 10 | CLanguageSet(); 11 | ~CLanguageSet(); 12 | 13 | public: 14 | static CLanguageSet *GetInstance(); 15 | static void CloseInstance(); 16 | 17 | CString GetCurrentLanguage(); 18 | BOOL SetCurrentLanguage(LPCTSTR lpLanguageName); 19 | LPCTSTR GetString(LPCSTR lpStringID); 20 | 21 | BOOL LoadLanguageModule(LPCTSTR lpLanguageName = NULL); 22 | void UnloadLanguageModule(); 23 | 24 | private: 25 | HMODULE m_hLanguageModule; 26 | static CLanguageSet *m_lpLanguageSet; 27 | static TCHAR m_szSelfPath[MAX_PATH]; 28 | }; 29 | 30 | -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/LogoDlg.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/LogoDlg.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/LogoDlg.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/LogoDlg.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/SetupDlg.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/SetupDlg.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/SetupDlg.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/SetupDlg.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/StreamingVoiceContext.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "xaudio2.h" 4 | 5 | struct StreamingVoiceContext : public IXAudio2VoiceCallback 6 | { 7 | STDMETHOD_(void, OnVoiceProcessingPassStart)(UINT32) 8 | { 9 | } 10 | STDMETHOD_(void, OnVoiceProcessingPassEnd)() 11 | { 12 | } 13 | STDMETHOD_(void, OnStreamEnd)() 14 | { 15 | } 16 | STDMETHOD_(void, OnBufferStart)(void*) 17 | { 18 | } 19 | STDMETHOD_(void, OnBufferEnd)(void*) 20 | { 21 | SetEvent(hBufferEndEvent); 22 | } 23 | STDMETHOD_(void, OnLoopEnd)(void*) 24 | { 25 | } 26 | STDMETHOD_(void, OnVoiceError)(void*, HRESULT) 27 | { 28 | } 29 | 30 | HANDLE hBufferEndEvent; 31 | 32 | StreamingVoiceContext() : hBufferEndEvent(CreateEvent(NULL, FALSE, FALSE, NULL)) 33 | { 34 | } 35 | virtual ~StreamingVoiceContext() 36 | { 37 | CloseHandle(hBufferEndEvent); 38 | } 39 | }; -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/VideoDlg.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/VideoDlg.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/VideoDlg.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/VideoDlg.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/AgoraExternalCapture.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/AgoraExternalCapture.ico -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/AgoraExternalCapture.rc2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/AgoraExternalCapture.rc2 -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_BACKGROUND_VIDEO.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_BACKGROUND_VIDEO.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_BTNAUDIO_VIDEO.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_BTNAUDIO_VIDEO.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_BTNCLOSE.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_BTNCLOSE.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_BTNENDCALL_VIDEO.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_BTNENDCALL_VIDEO.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_BTNFULLSCR_VIDEO.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_BTNFULLSCR_VIDEO.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_BTNMAUDIO_VIDEO.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_BTNMAUDIO_VIDEO.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_BTNMAX.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_BTNMAX.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_BTNMIN.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_BTNMIN.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_BTNMORE_VIDEO.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_BTNMORE_VIDEO.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_BTNMSG_VIDEO.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_BTNMSG_VIDEO.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_BTNNORSCR_VIDEO.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_BTNNORSCR_VIDEO.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_BTNRESTORE.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_BTNRESTORE.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_BTNSCRCAP_VIDEO.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_BTNSCRCAP_VIDEO.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_BTNSETUP_VIDEO.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_BTNSETUP_VIDEO.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_BTNTIP_VIDEO.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_BTNTIP_VIDEO.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_BTNVIDEO_VIDEO.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_BTNVIDEO_VIDEO.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_CMBBTN.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_CMBBTN.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_CMBSEL.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_CMBSEL.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_DESKTOPSHARE_VIDEO.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_DESKTOPSHARE_VIDEO.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_DLG_LOGO.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_DLG_LOGO.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_DLG_MAIN.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_DLG_MAIN.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_LOGO.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_LOGO.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_MENU_DEVICE.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_MENU_DEVICE.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_MENU_FILTER.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_MENU_FILTER.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_MENU_INFO.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_MENU_INFO.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_MENU_MORE.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_MENU_MORE.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_NETWORK_QUALITY.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_NETWORK_QUALITY.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_SLD_HOVER.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_SLD_HOVER.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_SLD_NORMAL.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/IDB_SLD_NORMAL.bmp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/ID_TEST_AUDIO.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/res/ID_TEST_AUDIO.wav -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/resource.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/AgoraExternalCapture/resource.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/stdafx.cpp: -------------------------------------------------------------------------------- 1 | 2 | // stdafx.cpp : source file that includes just the standard includes 3 | // AgoraVideoCall.pch will be the pre-compiled header 4 | // stdafx.obj will contain the pre-compiled type information 5 | 6 | #include "stdafx.h" 7 | 8 | 9 | -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/targetver.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | // Including SDKDDKVer.h defines the highest available Windows platform. 4 | 5 | // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and 6 | // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/AgoraExternalCapture/video_preprocessing_plugin.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef _VIDEO_PREPROCESSING_PLUGIN_H_ 3 | #define _VIDEO_PREPROCESSING_PLUGIN_H_ 4 | 5 | #include "../SDK/include/IAgoraRtcEngine.h" 6 | 7 | int load_preprocessing_plugin(agora::rtc::IRtcEngine* engine); 8 | int unload_preprocessing_plugin(agora::rtc::IRtcEngine* engine); 9 | 10 | #endif //_VIDEO_PREPROCESSING_PLUGIN_H_ 11 | -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/Language/ChineseSimplified/ChineseSimplified.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/Language/ChineseSimplified/ChineseSimplified.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/Language/ChineseSimplified/ChineseSimplified.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/Language/ChineseSimplified/ChineseSimplified.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/Language/ChineseSimplified/dllmain.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/Language/ChineseSimplified/dllmain.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/Language/ChineseSimplified/stdafx.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/Language/ChineseSimplified/stdafx.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/Language/ChineseSimplified/stdafx.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/Language/ChineseSimplified/stdafx.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/Language/ChineseSimplified/targetver.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/Language/ChineseSimplified/targetver.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/Language/English/English.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/Language/English/English.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/Language/English/English.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/Language/English/English.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/Language/English/ReadMe.txt: -------------------------------------------------------------------------------- 1 | ======================================================================== 2 | 动态链接库:English 项目概述 3 | ======================================================================== 4 | 5 | 应用程序向导已为您创建了此 English DLL。 6 | 7 | 本文件概要介绍组成 English 应用程序的每个文件的内容。 8 | 9 | 10 | English.vcxproj 11 | 这是使用应用程序向导生成的 VC++ 项目的主项目文件,其中包含生成该文件的 Visual C++ 的版本信息,以及有关使用应用程序向导选择的平台、配置和项目功能的信息。 12 | 13 | English.vcxproj.filters 14 | 这是使用“应用程序向导”生成的 VC++ 项目筛选器文件。它包含有关项目文件与筛选器之间的关联信息。在 IDE 中,通过这种关联,在特定节点下以分组形式显示具有相似扩展名的文件。例如,“.cpp”文件与“源文件”筛选器关联。 15 | 16 | English.cpp 17 | 这是主 DLL 源文件。 18 | 19 | ///////////////////////////////////////////////////////////////////////////// 20 | 其他标准文件: 21 | 22 | StdAfx.h, StdAfx.cpp 23 | 这些文件用于生成名为 English.pch 的预编译头 (PCH) 文件和名为 StdAfx.obj 的预编译类型文件。 24 | 25 | ///////////////////////////////////////////////////////////////////////////// 26 | 其他注释: 27 | 28 | 应用程序向导使用“TODO:”注释来指示应添加或自定义的源代码部分。 29 | 30 | ///////////////////////////////////////////////////////////////////////////// 31 | -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/Language/English/dllmain.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/Language/English/dllmain.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/Language/English/stdafx.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/Language/English/stdafx.cpp -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/Language/English/stdafx.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/Language/English/stdafx.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/Language/English/targetver.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/Windows/AgoraAudioIO-Windows/Language/English/targetver.h -------------------------------------------------------------------------------- /Windows/AgoraAudioIO-Windows/prebuild.bat: -------------------------------------------------------------------------------- 1 | set sdkversion=small 2 | 3 | set Machine=%~1 4 | set absolute_path=%~2 5 | cd %absolute_path% 6 | 7 | if %sdkversion% == origin ( exit ) 8 | 9 | 10 | if %sdkversion% == small ( 11 | set sdkinclude=libs\include 12 | set sdkdll=libs\x86 13 | set sdklib=libs\x86 14 | if %Machine% == x64 ( 15 | set sdkdll=libs\x86_64 16 | set sdklib=libs\x86_64 17 | ) 18 | ) 19 | 20 | if not exist sdk ( 21 | mkdir sdk 22 | ) 23 | 24 | if exist sdk ( 25 | pushd sdk 26 | if not exist dll ( 27 | mkdir dll 28 | ) 29 | 30 | if not exist lib ( 31 | mkdir lib 32 | ) 33 | if not exist include ( 34 | mkdir include 35 | ) 36 | popd 37 | ) 38 | 39 | if %sdkversion% == small ( 40 | if exist %sdkinclude% ( 41 | copy %sdkinclude%\*.h sdk\include 42 | ) 43 | 44 | if exist %sdklib% ( 45 | copy %sdklib%\*.lib sdk\lib /y 46 | ) 47 | if exist %sdkdll% ( 48 | copy %sdkdll%\*.dll sdk\dll /y 49 | ) 50 | ) 51 | pause -------------------------------------------------------------------------------- /Windows/cicd/script/downloadsdk1.ps1: -------------------------------------------------------------------------------- 1 | param($SDKURL, $LocalFileName) 2 | Invoke-WebRequest -Uri "$SDKURL" -OutFile "$LocalFileName" -TimeoutSec 10; -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR.xcodeproj/.xcodesamplecode.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // Agora-RTC-With-ASMR 4 | // 5 | // Created by CavanSu on 11/01/2018. 6 | // Copyright © 2018 Agora. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/Assets.xcassets/call.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "calling@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "calling@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/Assets.xcassets/call.imageset/calling@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/Assets.xcassets/call.imageset/calling@2x.png -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/Assets.xcassets/call.imageset/calling@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/Assets.xcassets/call.imageset/calling@3x.png -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/Assets.xcassets/earphone.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "earphone@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "earphone@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/Assets.xcassets/earphone.imageset/earphone@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/Assets.xcassets/earphone.imageset/earphone@2x.png -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/Assets.xcassets/earphone.imageset/earphone@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/Assets.xcassets/earphone.imageset/earphone@3x.png -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/Assets.xcassets/hungup.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "hungup@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "hungup@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/Assets.xcassets/hungup.imageset/hungup@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/Assets.xcassets/hungup.imageset/hungup@2x.png -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/Assets.xcassets/hungup.imageset/hungup@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/Assets.xcassets/hungup.imageset/hungup@3x.png -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/Assets.xcassets/mute.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "mute@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "mute@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/Assets.xcassets/mute.imageset/mute@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/Assets.xcassets/mute.imageset/mute@2x.png -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/Assets.xcassets/mute.imageset/mute@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/Assets.xcassets/mute.imageset/mute@3x.png -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/Assets.xcassets/speaker.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "speaker@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "speaker@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/Assets.xcassets/speaker.imageset/speaker@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/Assets.xcassets/speaker.imageset/speaker@2x.png -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/Assets.xcassets/speaker.imageset/speaker@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/Assets.xcassets/speaker.imageset/speaker@3x.png -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/Assets.xcassets/un-mute.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "un-mute@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "un-mute@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/Assets.xcassets/un-mute.imageset/un-mute@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/Assets.xcassets/un-mute.imageset/un-mute@2x.png -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/Assets.xcassets/un-mute.imageset/un-mute@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/Assets.xcassets/un-mute.imageset/un-mute@3x.png -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/AudioSource.pch: -------------------------------------------------------------------------------- 1 | // 2 | // AudioSource.pch 3 | // Audio Source 4 | // 5 | // Created by CavanSu on 2017/9/19. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #ifndef AudioSource_pch 10 | #define AudioSource_pch 11 | 12 | #import "Define.h" 13 | 14 | #endif /* AudioSource_pch */ 15 | -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/AudioWriteToFile.h: -------------------------------------------------------------------------------- 1 | // 2 | // AudioWriteToFile.h 3 | // Agora-RTC-With-ASMR 4 | // 5 | // Created by CavanSu on 08/11/2017. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AudioWriteToFile : NSObject 12 | + (void)writeToFileWithData:(void *)data length:(int)bytes; 13 | @end 14 | -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/ChannelNameCheck.h: -------------------------------------------------------------------------------- 1 | // 2 | // ChannelNameCheck.h 3 | // Agora-RTC-With-ASMR 4 | // 5 | // Created by CavanSu on 2017/9/18. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ChannelNameCheck : NSObject 12 | + (NSString *)channelNameCheckLegal:(NSString *)channelName; 13 | @end 14 | -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/ChannelNameCheck.m: -------------------------------------------------------------------------------- 1 | // 2 | // ChannelNameCheck.m 3 | // Agora-RTC-With-ASMR 4 | // 5 | // Created by CavanSu on 2017/9/18. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import "ChannelNameCheck.h" 10 | 11 | @implementation ChannelNameCheck 12 | + (NSString *)channelNameCheckLegal:(NSString *)channelName { 13 | NSString *includerChars = @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!#$%&()+,-:;<=.>?@[]^_`{|}~"; 14 | NSCharacterSet *invertedSet = [[NSCharacterSet characterSetWithCharactersInString:includerChars] invertedSet]; 15 | NSArray *separatedArray = [channelName componentsSeparatedByCharactersInSet:invertedSet]; 16 | NSString *fixedChannelName = [separatedArray componentsJoinedByString:@""]; 17 | 18 | return fixedChannelName; 19 | } 20 | @end 21 | -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/ChatButton.h: -------------------------------------------------------------------------------- 1 | // 2 | // ChatButton.h 3 | // Agora-RTC-With-ASMR 4 | // 5 | // Created by CavanSu on 2017/9/12. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ChatButton : UIButton 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/ChatButton.m: -------------------------------------------------------------------------------- 1 | // 2 | // ChatButton.m 3 | // Agora-RTC-With-ASMR 4 | // 5 | // Created by CavanSu on 2017/9/12. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import "ChatButton.h" 10 | 11 | @implementation ChatButton 12 | - (void)layoutSubviews { 13 | [super layoutSubviews]; 14 | 15 | CGFloat imageViewWH = 44; 16 | CGFloat imageViewY = (self.frame.size.width - imageViewWH) * 0.5; 17 | CGFloat labelWH = 20; 18 | 19 | self.imageView.frame = CGRectMake(imageViewY, 0, imageViewWH, imageViewWH); 20 | self.titleLabel.frame = CGRectMake(0, imageViewWH, self.frame.size.width, labelWH); 21 | self.titleLabel.textAlignment = NSTextAlignmentCenter; 22 | self.titleLabel.font = [UIFont systemFontOfSize:14]; 23 | } 24 | 25 | - (void)sendAction:(SEL)action to:(nullable id)target forEvent:(nullable UIEvent *)event { 26 | self.selected = !self.selected; 27 | [super sendAction:action to:target forEvent:event]; 28 | } 29 | @end 30 | -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/ChooseButton.h: -------------------------------------------------------------------------------- 1 | // 2 | // ChooseButton.h 3 | // Agora-RTC-With-ASMR 4 | // 5 | // Created by CavanSu on 10/11/2017. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ChooseButton : UIButton 12 | - (void)cancelSelected; 13 | @end 14 | -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/Define.h: -------------------------------------------------------------------------------- 1 | // 2 | // Define.h 3 | // OpenVodieCall 4 | // 5 | // Created by CavanSu on 2017/9/5. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #ifndef Define_h 10 | #define Define_h 11 | 12 | #import 13 | 14 | typedef NS_ENUM(int, AudioIOMode) { 15 | AudioIOModeExterCaptureSDKPlay = 1, 16 | AudioIOModeSDKCaptureExterPlay = 2, 17 | AudioIOModeSDKCaptureSDKPlay = 3, 18 | AudioIOModeExterCaptureExterPlay = 4 19 | }; 20 | 21 | #define ThemeColor [UIColor colorWithRed:122.0 / 255.0 green:203.0 / 255.0 blue:253.0 / 255.0 alpha:1] 22 | 23 | #endif /* Define_h */ 24 | -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/InfoCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // InfoCell.h 3 | // Agora-RTC-With-ASMR 4 | // 5 | // Created by CavanSu on 2017/9/18. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "InfoModel.h" 11 | 12 | @interface InfoCell : UITableViewCell 13 | @property (weak, nonatomic) IBOutlet UILabel *infoLabel; 14 | @property (nonatomic, weak) InfoModel *model; 15 | @end 16 | -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/InfoCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // InfoCell.m 3 | // Agora-RTC-With-ASMR 4 | // 5 | // Created by CavanSu on 2017/9/18. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import "InfoCell.h" 10 | 11 | @implementation InfoCell 12 | - (void)awakeFromNib { 13 | [super awakeFromNib]; 14 | 15 | self.infoLabel.textColor = [UIColor whiteColor]; 16 | self.contentView.backgroundColor = [UIColor clearColor]; 17 | self.backgroundColor = [UIColor clearColor]; 18 | self.infoLabel.preferredMaxLayoutWidth = [UIScreen mainScreen].bounds.size.width - 20; 19 | } 20 | 21 | - (void)setModel:(InfoModel *)model { 22 | self.infoLabel.text = model.infoStr; 23 | [self layoutIfNeeded]; 24 | 25 | if (!model.height ) { 26 | model.height = CGRectGetMaxY(self.infoLabel.frame); 27 | } 28 | } 29 | @end 30 | -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/InfoModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // InfoModel.h 3 | // Agora-RTC-With-ASMR 4 | // 5 | // Created by CavanSu on 2017/9/18. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface InfoModel : NSObject 12 | @property (nonatomic, copy) NSString *infoStr; 13 | @property (nonatomic, assign) float height; 14 | + (instancetype)modelWithInfoStr:(NSString *)infoStr; 15 | @end 16 | -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/InfoModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // InfoModel.m 3 | // Agora-RTC-With-ASMR 4 | // 5 | // Created by CavanSu on 2017/9/18. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import "InfoModel.h" 10 | 11 | @implementation InfoModel 12 | + (instancetype)modelWithInfoStr:(NSString *)infoStr { 13 | InfoModel *model = [[InfoModel alloc] init]; 14 | model.infoStr = [[NSString alloc] initWithString:infoStr]; 15 | 16 | return model; 17 | } 18 | @end 19 | -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/InfoTableView.h: -------------------------------------------------------------------------------- 1 | // 2 | // InfoTableView.h 3 | // Agora-RTC-With-ASMR 4 | // 5 | // Created by CavanSu on 2017/10/12. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface InfoTableView : UITableView 12 | - (void)appendInfoToTableViewWithInfo:(NSString *)infoStr; 13 | @end 14 | -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/LogAudioSessionStatus.h: -------------------------------------------------------------------------------- 1 | // 2 | // LogAudioSessionStatus.h 3 | // Agora-RTC-With-ASMR 4 | // 5 | // Created by CavanSu on 14/12/2017. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LogAudioSessionStatus : NSObject 12 | + (NSString *)logAudioSessionStatusWithCallPosition:(NSString *)position; 13 | @end 14 | -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/MainViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MainViewController.h 3 | // Agora-RTC-With-ASMR 4 | // 5 | // Created by CavanSu on 2017/9/16. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MainViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/RoomPage/AppID.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppID.m 3 | // Agora-RTC-With-ASMR 4 | // 5 | // Created by CavanSu on 2017/9/12. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import "AppID.h" 10 | 11 | @implementation AppID 12 | 13 | + (NSString *)appID { 14 | return <#YOUR APPID#>; 15 | } 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/RoomViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // RoomViewController.h 3 | // Agora-RTC-With-ASMR 4 | // 5 | // Created by CavanSu on 2017/9/18. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface RoomViewController : UIViewController 12 | @property (nonatomic, copy) NSString *channelName; 13 | @property (nonatomic, assign) AudioIOMode audioMode; 14 | @property (nonatomic, assign) int sampleRate; 15 | @property (nonatomic, assign) int channels; 16 | @end 17 | -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/Agora-RTC-With-ASMR/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Agora-RTC-With-ASMR 4 | // 5 | // Created by CavanSu on 11/01/2018. 6 | // Copyright © 2018 CavanSu. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/build.sh: -------------------------------------------------------------------------------- 1 | rm -f *.ipa 2 | rm -rf *.app 3 | rm -f *.zip 4 | rm -rf dSYMs 5 | rm -rf *.dSYM 6 | rm -f *dSYMs.zip 7 | rm -rf *.xcarchive 8 | 9 | BUILD_DATE=`date +%Y-%m-%d-%H.%M.%S` 10 | APP_TARGET=Agora-RTC-With-ASMR 11 | ArchivePath=${APP_TARGET}-${BUILD_DATE}.xcarchive 12 | 13 | xcodebuild clean -project "${APP_TARGET}.xcodeproj" -scheme "${APP_TARGET}" -configuration Release 14 | xcodebuild -project "${APP_TARGET}.xcodeproj" -scheme "${APP_TARGET}" -archivePath ${ArchivePath} archive 15 | xcodebuild -exportArchive -exportOptionsPlist exportPlist.plist -archivePath ${ArchivePath} -exportPath . -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/clear.sh: -------------------------------------------------------------------------------- 1 | rm -rf *.xcarchive 2 | rm -f *.ipa 3 | rm -rf *.app 4 | rm -f DistributionSummary.plist 5 | rm -f ExportOptions.plist 6 | rm -f Packaging.log -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-ASMR/exportPlist.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | method 6 | development 7 | compileBitcode 8 | 9 | provisioningProfiles 10 | 11 | io.agora.Agora-RTC-With-ASMR 12 | App 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-Voice-Changer-iOS/Agora-RTC-With-Voice-Changer-iOS.xcodeproj/.xcodesamplecode.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-Voice-Changer-iOS/Agora-RTC-With-Voice-Changer-iOS/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-Voice-Changer-iOS/Agora-RTC-With-Voice-Changer-iOS/Assets.xcassets/btn_audio_effect.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "btn_audio_effect.pdf" 6 | } 7 | ], 8 | "info" : { 9 | "version" : 1, 10 | "author" : "xcode" 11 | } 12 | } -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-Voice-Changer-iOS/Agora-RTC-With-Voice-Changer-iOS/Assets.xcassets/btn_audio_effect.imageset/btn_audio_effect.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/Agora-RTC-With-Voice-Changer-iOS/Agora-RTC-With-Voice-Changer-iOS/Assets.xcassets/btn_audio_effect.imageset/btn_audio_effect.pdf -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-Voice-Changer-iOS/Agora-RTC-With-Voice-Changer-iOS/Assets.xcassets/btn_endcall.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "btn_endcall.pdf" 6 | } 7 | ], 8 | "info" : { 9 | "version" : 1, 10 | "author" : "xcode" 11 | } 12 | } -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-Voice-Changer-iOS/Agora-RTC-With-Voice-Changer-iOS/Assets.xcassets/btn_endcall.imageset/btn_endcall.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/Agora-RTC-With-Voice-Changer-iOS/Agora-RTC-With-Voice-Changer-iOS/Assets.xcassets/btn_endcall.imageset/btn_endcall.pdf -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-Voice-Changer-iOS/Agora-RTC-With-Voice-Changer-iOS/Assets.xcassets/btn_join.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "btn_join.pdf" 6 | } 7 | ], 8 | "info" : { 9 | "version" : 1, 10 | "author" : "xcode" 11 | } 12 | } -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-Voice-Changer-iOS/Agora-RTC-With-Voice-Changer-iOS/Assets.xcassets/btn_join.imageset/btn_join.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/Agora-RTC-With-Voice-Changer-iOS/Agora-RTC-With-Voice-Changer-iOS/Assets.xcassets/btn_join.imageset/btn_join.pdf -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-Voice-Changer-iOS/Agora-RTC-With-Voice-Changer-iOS/Assets.xcassets/btn_join_blue.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "btn_join_blue.pdf" 6 | } 7 | ], 8 | "info" : { 9 | "version" : 1, 10 | "author" : "xcode" 11 | } 12 | } -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-Voice-Changer-iOS/Agora-RTC-With-Voice-Changer-iOS/Assets.xcassets/btn_join_blue.imageset/btn_join_blue.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/Agora-RTC-With-Voice-Changer-iOS/Agora-RTC-With-Voice-Changer-iOS/Assets.xcassets/btn_join_blue.imageset/btn_join_blue.pdf -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-Voice-Changer-iOS/Agora-RTC-With-Voice-Changer-iOS/Assets.xcassets/btn_mute.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "btn_mute.pdf" 6 | } 7 | ], 8 | "info" : { 9 | "version" : 1, 10 | "author" : "xcode" 11 | } 12 | } -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-Voice-Changer-iOS/Agora-RTC-With-Voice-Changer-iOS/Assets.xcassets/btn_mute.imageset/btn_mute.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/Agora-RTC-With-Voice-Changer-iOS/Agora-RTC-With-Voice-Changer-iOS/Assets.xcassets/btn_mute.imageset/btn_mute.pdf -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-Voice-Changer-iOS/Agora-RTC-With-Voice-Changer-iOS/Assets.xcassets/btn_mute_blue.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "btn_mute_blue.pdf" 6 | } 7 | ], 8 | "info" : { 9 | "version" : 1, 10 | "author" : "xcode" 11 | } 12 | } -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-Voice-Changer-iOS/Agora-RTC-With-Voice-Changer-iOS/Assets.xcassets/btn_mute_blue.imageset/btn_mute_blue.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/Agora-RTC-With-Voice-Changer-iOS/Agora-RTC-With-Voice-Changer-iOS/Assets.xcassets/btn_mute_blue.imageset/btn_mute_blue.pdf -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-Voice-Changer-iOS/Agora-RTC-With-Voice-Changer-iOS/Assets.xcassets/btn_speaker.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "btn_speaker.pdf" 6 | } 7 | ], 8 | "info" : { 9 | "version" : 1, 10 | "author" : "xcode" 11 | } 12 | } -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-Voice-Changer-iOS/Agora-RTC-With-Voice-Changer-iOS/Assets.xcassets/btn_speaker.imageset/btn_speaker.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/Agora-RTC-With-Voice-Changer-iOS/Agora-RTC-With-Voice-Changer-iOS/Assets.xcassets/btn_speaker.imageset/btn_speaker.pdf -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-Voice-Changer-iOS/Agora-RTC-With-Voice-Changer-iOS/Assets.xcassets/btn_speaker_blue.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "btn_speaker_blue.pdf" 6 | } 7 | ], 8 | "info" : { 9 | "version" : 1, 10 | "author" : "xcode" 11 | } 12 | } -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-Voice-Changer-iOS/Agora-RTC-With-Voice-Changer-iOS/Assets.xcassets/btn_speaker_blue.imageset/btn_speaker_blue.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/Agora-RTC-With-Voice-Changer-iOS/Agora-RTC-With-Voice-Changer-iOS/Assets.xcassets/btn_speaker_blue.imageset/btn_speaker_blue.pdf -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-Voice-Changer-iOS/Agora-RTC-With-Voice-Changer-iOS/LogCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LogCell.swift 3 | // Agora-RTC-With-Voice-Changer-iOS 4 | // 5 | // Created by GongYuhua on 2017/4/7. 6 | // Copyright © 2017年 Agora. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class LogCell: UITableViewCell { 12 | 13 | @IBOutlet weak var logLabel: UILabel! 14 | 15 | func set(log: String) { 16 | logLabel.text = log 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-Voice-Changer-iOS/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | Copyright (c) 2017 Agora Lab, Inc (http://www.agora.io/) 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 5 | 6 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 7 | 8 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 9 | 10 | -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-Voice-Changer-iOS/build.sh: -------------------------------------------------------------------------------- 1 | rm -f *.ipa 2 | rm -rf *.app 3 | rm -f *.zip 4 | rm -rf dSYMs 5 | rm -rf *.dSYM 6 | rm -f *dSYMs.zip 7 | rm -rf *.xcarchive 8 | 9 | BUILD_DATE=`date +%Y-%m-%d-%H.%M.%S` 10 | APP_TARGET=Agora-RTC-With-Voice-Changer-iOS 11 | ArchivePath=${APP_TARGET}-${BUILD_DATE}.xcarchive 12 | 13 | xcodebuild clean -project "${APP_TARGET}.xcodeproj" -scheme "${APP_TARGET}" -configuration Release 14 | xcodebuild -project "${APP_TARGET}.xcodeproj" -scheme "${APP_TARGET}" -archivePath ${ArchivePath} archive 15 | xcodebuild -exportArchive -exportOptionsPlist exportPlist.plist -archivePath ${ArchivePath} -exportPath . -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-Voice-Changer-iOS/clear.sh: -------------------------------------------------------------------------------- 1 | rm -rf *.xcarchive 2 | rm -f *.ipa 3 | rm -rf *.app 4 | rm -f DistributionSummary.plist 5 | rm -f ExportOptions.plist 6 | rm -f Packaging.log -------------------------------------------------------------------------------- /iOS&macOS/Agora-RTC-With-Voice-Changer-iOS/exportPlist.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | method 6 | development 7 | compileBitcode 8 | 9 | provisioningProfiles 10 | 11 | io.agora.Agora-RTC-With-Voice-Changer-iOS 12 | App 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // AgoraAudioIO 4 | // 5 | // Created by CavanSu on 14/11/2017. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/audience.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "audience@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "audience@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/audience.imageset/audience@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/audience.imageset/audience@2x.png -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/audience.imageset/audience@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/audience.imageset/audience@3x.png -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/call.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "calling@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "calling@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/call.imageset/calling@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/call.imageset/calling@2x.png -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/call.imageset/calling@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/call.imageset/calling@3x.png -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/earphone.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "earphone@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "earphone@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/earphone.imageset/earphone@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/earphone.imageset/earphone@2x.png -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/earphone.imageset/earphone@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/earphone.imageset/earphone@3x.png -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/host.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "host@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "host@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/host.imageset/host@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/host.imageset/host@2x.png -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/host.imageset/host@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/host.imageset/host@3x.png -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/hungup.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "hungup@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "hungup@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/hungup.imageset/hungup@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/hungup.imageset/hungup@2x.png -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/hungup.imageset/hungup@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/hungup.imageset/hungup@3x.png -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/mute.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "mute@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "mute@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/mute.imageset/mute@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/mute.imageset/mute@2x.png -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/mute.imageset/mute@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/mute.imageset/mute@3x.png -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/speaker.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "speaker@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "speaker@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/speaker.imageset/speaker@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/speaker.imageset/speaker@2x.png -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/speaker.imageset/speaker@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/speaker.imageset/speaker@3x.png -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/un-mute.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "un-mute@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "un-mute@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/un-mute.imageset/un-mute@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/un-mute.imageset/un-mute@2x.png -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/un-mute.imageset/un-mute@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/un-mute.imageset/un-mute@3x.png -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/unmutemac.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "unmute.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/unmutemac.imageset/unmute.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/Assets.xcassets/unmutemac.imageset/unmute.png -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/ChannelNameCheck.h: -------------------------------------------------------------------------------- 1 | // 2 | // ChannelNameCheck.h 3 | // AgoraAudioIO 4 | // 5 | // Created by CavanSu on 2017/9/18. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ChannelNameCheck : NSObject 12 | + (NSString *)channelNameCheckLegal:(NSString *)channelName; 13 | @end 14 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/ChannelNameCheck.m: -------------------------------------------------------------------------------- 1 | // 2 | // ChannelNameCheck.m 3 | // AgoraAudioIO 4 | // 5 | // Created by CavanSu on 2017/9/18. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import "ChannelNameCheck.h" 10 | 11 | @implementation ChannelNameCheck 12 | + (NSString *)channelNameCheckLegal:(NSString *)channelName { 13 | NSString *includerChars = @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!#$%&()+,-:;<=.>?@[]^_`{|}~"; 14 | NSCharacterSet *invertedSet = [[NSCharacterSet characterSetWithCharactersInString:includerChars] invertedSet]; 15 | NSArray *separatedArray = [channelName componentsSeparatedByCharactersInSet:invertedSet]; 16 | NSString *fixedChannelName = [separatedArray componentsJoinedByString:@""]; 17 | return fixedChannelName; 18 | } 19 | @end 20 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/ChatButton.h: -------------------------------------------------------------------------------- 1 | // 2 | // ChatButton.h 3 | // Agora-iOS-Voice-Tutorial-OC-1to1 4 | // 5 | // Created by CavanSu on 2017/9/12. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ChatButton : UIButton 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/ChatButton.m: -------------------------------------------------------------------------------- 1 | // 2 | // ChatButton.m 3 | // Agora-iOS-Voice-Tutorial-OC-1to1 4 | // 5 | // Created by CavanSu on 2017/9/12. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import "ChatButton.h" 10 | 11 | @implementation ChatButton 12 | - (void)layoutSubviews { 13 | [super layoutSubviews]; 14 | 15 | CGFloat imageViewWH = 44; 16 | CGFloat imageViewY = (self.frame.size.width - imageViewWH) * 0.5; 17 | CGFloat labelWH = 20; 18 | 19 | self.imageView.frame = CGRectMake(imageViewY, 0, imageViewWH, imageViewWH); 20 | self.titleLabel.frame = CGRectMake(0, imageViewWH, self.frame.size.width, labelWH); 21 | self.titleLabel.textAlignment = NSTextAlignmentCenter; 22 | self.titleLabel.font = [UIFont systemFontOfSize:14]; 23 | } 24 | 25 | - (void)sendAction:(SEL)action to:(nullable id)target forEvent:(nullable UIEvent *)event { 26 | self.selected = !self.selected; 27 | [super sendAction:action to:target forEvent:event]; 28 | } 29 | @end 30 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/ChooseButton.h: -------------------------------------------------------------------------------- 1 | // 2 | // ChooseButton.h 3 | // Audio-Source 4 | // 5 | // Created by CavanSu on 10/11/2017. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ChooseButton : UIButton 12 | - (void)cancelSelected; 13 | @end 14 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/InfoCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // InfoCell.h 3 | // AgoraAudioIO 4 | // 5 | // Created by CavanSu on 2017/9/18. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "InfoModel.h" 11 | 12 | @interface InfoCell : UITableViewCell 13 | @property (weak, nonatomic) IBOutlet UILabel *infoLabel; 14 | @property (nonatomic, weak) InfoModel *model; 15 | @end 16 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/InfoCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // InfoCell.m 3 | // AgoraAudioIO 4 | // 5 | // Created by CavanSu on 2017/9/18. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import "InfoCell.h" 10 | 11 | @implementation InfoCell 12 | - (void)awakeFromNib { 13 | [super awakeFromNib]; 14 | self.infoLabel.textColor = [UIColor whiteColor]; 15 | self.contentView.backgroundColor = [UIColor clearColor]; 16 | self.backgroundColor = [UIColor clearColor]; 17 | self.infoLabel.preferredMaxLayoutWidth = [UIScreen mainScreen].bounds.size.width - 20; 18 | } 19 | 20 | - (void)setModel:(InfoModel *)model { 21 | self.infoLabel.text = model.infoStr; 22 | 23 | [self layoutIfNeeded]; 24 | 25 | if (!model.height ) { 26 | model.height = CGRectGetMaxY(self.infoLabel.frame); 27 | } 28 | } 29 | @end 30 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/InfoModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // InfoModel.h 3 | // AgoraAudioIO 4 | // 5 | // Created by CavanSu on 2017/9/18. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface InfoModel : NSObject 12 | @property (nonatomic, copy) NSString *infoStr; 13 | @property (nonatomic, assign) float height; 14 | + (instancetype)modelWithInfoStr:(NSString *)infoStr; 15 | @end 16 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/InfoModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // InfoModel.m 3 | // AgoraAudioIO 4 | // 5 | // Created by CavanSu on 2017/9/18. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import "InfoModel.h" 10 | 11 | @implementation InfoModel 12 | + (instancetype)modelWithInfoStr:(NSString *)infoStr { 13 | InfoModel *model = [[InfoModel alloc] init]; 14 | model.infoStr = [[NSString alloc] initWithString:infoStr]; 15 | 16 | return model; 17 | } 18 | @end 19 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/InfoTableView.h: -------------------------------------------------------------------------------- 1 | // 2 | // InfoTableView.h 3 | // Agora-client-side-AV-capturing-for-streaming-iOS-OC 4 | // 5 | // Created by CavanSu on 2017/10/12. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface InfoTableView : UITableView 12 | - (void)appendInfoToTableViewWithInfo:(NSString *)infoStr; 13 | @end 14 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/LogAudioSessionStatus.h: -------------------------------------------------------------------------------- 1 | // 2 | // LogAudioSessionStatus.h 3 | // AgoraAudioIO 4 | // 5 | // Created by CavanSu on 14/12/2017. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LogAudioSessionStatus : NSObject 12 | + (void)logAudioSessionStatusWithCallPosition:(NSString *)position; 13 | @end 14 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/MainViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // HomeViewController.h 3 | // AgoraAudioIO 4 | // 5 | // Created by CavanSu on 2017/9/16. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MainViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/RoomViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // RoomViewController.h 3 | // AgoraAudioIO 4 | // 5 | // Created by CavanSu on 2017/9/18. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AudioOptions.h" 11 | @interface RoomViewController : UIViewController 12 | @property (nonatomic, assign) AudioCRMode audioMode; 13 | @property (nonatomic, assign) ChannelMode channelMode; 14 | @property (nonatomic, assign) ClientRole clientRole; 15 | @property (nonatomic, assign) int sampleRate; 16 | @property (nonatomic, copy) NSString *channelName; 17 | @end 18 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/UIColor+CSRGB.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIColor+CSRGB.h 3 | // 4 | // Created by CavanSu on 17/3/3. 5 | // Copyright © 2017 CavanSu. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface UIColor (CSRGB) 11 | + (UIColor*)Red:(CGFloat)red Green:(CGFloat)green Blue:(CGFloat)blue; 12 | @end 13 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/UIColor+CSRGB.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIColor+CSRGB.m 3 | // 4 | // Created by CavanSu on 17/3/3. 5 | // Copyright © 2017 CavanSu. All rights reserved. 6 | // 7 | 8 | #import "UIColor+CSRGB.h" 9 | 10 | @implementation UIColor (CSRGB) 11 | + (UIColor*)Red:(CGFloat)red Green:(CGFloat)green Blue:(CGFloat)blue { 12 | UIColor *color = [UIColor colorWithRed:red / 255 green:green / 255 blue:blue / 255 alpha: 1]; 13 | return color; 14 | } 15 | @end 16 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/UIView+CSshortFrame.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+CSshortFrame.h 3 | // 4 | // Created by CavanSu on 23/02/2017. 5 | // Copyright © 2017 CavanSu. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface UIView (CSshortFrame) 11 | @property (assign, nonatomic) CGFloat x_CS; 12 | @property (assign, nonatomic) CGFloat y_CS; 13 | @property (assign, nonatomic) CGFloat width_CS; 14 | @property (assign, nonatomic) CGFloat height_CS; 15 | @property (assign, nonatomic) CGSize size_CS; 16 | @property (assign, nonatomic) CGPoint origin_CS; 17 | @property (assign, nonatomic) CGFloat centerX_CS; 18 | @property (assign, nonatomic) CGFloat centerY_CS; 19 | @end 20 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-iOS/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // AgoraAudioIO 4 | // 5 | // Created by 苏若晞 on 14/11/2017. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-macOS/AgoraAudioIOmac.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.device.microphone 8 | 9 | com.apple.security.network.client 10 | 11 | com.apple.security.network.server 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-macOS/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // AgoraAudioIO 4 | // 5 | // Created by suleyu on 2017/12/15. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : NSObject 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-macOS/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // AgoraAudioIO 4 | // 5 | // Created by suleyu on 2017/12/15. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | 11 | @interface AppDelegate () 12 | 13 | @end 14 | 15 | @implementation AppDelegate 16 | 17 | - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 18 | // Insert code here to initialize your application 19 | } 20 | 21 | - (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender { 22 | return YES; 23 | } 24 | 25 | - (void)applicationWillTerminate:(NSNotification *)aNotification { 26 | // Insert code here to tear down your application 27 | } 28 | 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-macOS/MainViewControllerMac.h: -------------------------------------------------------------------------------- 1 | // 2 | // MainViewController.h 3 | // AgoraAudioIO 4 | // 5 | // Created by suleyu on 2017/12/15. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MainViewControllerMac : NSViewController 12 | 13 | @end 14 | 15 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-macOS/ReplacementSegue.h: -------------------------------------------------------------------------------- 1 | // 2 | // ReplacementSegue.h 3 | // AgoraAudioIO 4 | // 5 | // Created by suleyu on 2017/12/15. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ReplacementSegue : NSStoryboardSegue 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-macOS/ReplacementSegue.m: -------------------------------------------------------------------------------- 1 | // 2 | // ReplacementSegue.m 3 | // AgoraAudioIO 4 | // 5 | // Created by suleyu on 2017/12/15. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import "ReplacementSegue.h" 10 | 11 | @implementation ReplacementSegue 12 | 13 | - (void)perform { 14 | NSViewController *sourceVC = self.sourceController; 15 | sourceVC.view.window.contentViewController = self.destinationController; 16 | } 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-macOS/RoomViewControllerMac.h: -------------------------------------------------------------------------------- 1 | // 2 | // RoomViewController.h 3 | // AgoraAudioIO 4 | // 5 | // Created by suleyu on 2017/12/15. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AudioOptions.h" 11 | 12 | @class RoomViewControllerMac; 13 | @protocol RoomVCMacDelegate 14 | - (void)roomVCNeedClose:(RoomViewControllerMac *)roomVC; 15 | @end 16 | 17 | @interface RoomViewControllerMac : NSViewController 18 | @property (nonatomic, assign) int sampleRate; 19 | @property (nonatomic, assign) AudioCRMode audioMode; 20 | @property (nonatomic, assign) ChannelMode channelMode; 21 | @property (nonatomic, assign) ClientRole role; 22 | @property (nonatomic, strong) id delegate; 23 | @property (nonatomic, copy) NSString *channelName; 24 | @end 25 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO-macOS/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // AgoraAudioIOmac 4 | // 5 | // Created by CavanSu on 08/03/2018. 6 | // Copyright © 2018 CavanSu. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, const char * argv[]) { 12 | return NSApplicationMain(argc, argv); 13 | } 14 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/AgoraAudioIO.xcodeproj/.xcodesamplecode.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/SharedObjects/AudioOptions.h: -------------------------------------------------------------------------------- 1 | // 2 | // AudioOptions.h 3 | // AgoraAudioIO 4 | // 5 | // Created by CavanSu on 12/03/2018. 6 | // Copyright © 2018 CavanSu. All rights reserved. 7 | // 8 | 9 | #ifndef AudioOptions_h 10 | #define AudioOptions_h 11 | 12 | typedef NS_ENUM(int, AudioCRMode) { 13 | AudioCRModeExterCaptureSDKRender = 1, 14 | AudioCRModeSDKCaptureExterRender = 2, 15 | AudioCRModeSDKCaptureSDKRender = 3, 16 | AudioCRModeExterCaptureExterRender = 4 17 | }; 18 | 19 | typedef NS_ENUM(int, IOUnitType) { 20 | IOUnitTypeVPIO, 21 | IOUnitTypeRemoteIO 22 | }; 23 | 24 | typedef NS_ENUM(int, ChannelMode) { 25 | ChannelModeCommunication = 0, 26 | ChannelModeLiveBroadcast = 1 27 | }; 28 | 29 | typedef NS_ENUM(int, ClientRole) { 30 | ClientRoleAudience = 0, 31 | ClientRoleBroadcast = 1 32 | }; 33 | 34 | #if TARGET_OS_IPHONE 35 | #import "UIColor+CSRGB.h" 36 | #import "UIView+CSshortFrame.h" 37 | #define ThemeColor [UIColor Red: 122 Green: 203 Blue: 253] 38 | #endif 39 | 40 | #endif /* AudioOptions_h */ 41 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/SharedObjects/DefaultChannelName.h: -------------------------------------------------------------------------------- 1 | // 2 | // DefaultChannelName.h 3 | // AgoraAudioIO 4 | // 5 | // Created by CavanSu on 15/03/2018. 6 | // Copyright © 2018 CavanSu. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface DefaultChannelName : NSObject 12 | + (void)setDefaultChannelName:(NSString *)channelName; 13 | + (NSString *)getDefaultChannelName; 14 | @end 15 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/SharedObjects/DefaultChannelName.m: -------------------------------------------------------------------------------- 1 | // 2 | // DefaultChannelName.m 3 | // AgoraAudioIO 4 | // 5 | // Created by CavanSu on 15/03/2018. 6 | // Copyright © 2018 CavanSu. All rights reserved. 7 | // 8 | 9 | #import "DefaultChannelName.h" 10 | 11 | @implementation DefaultChannelName 12 | 13 | + (void)setDefaultChannelName:(NSString *)channelName { 14 | [[NSUserDefaults standardUserDefaults] setObject:channelName forKey:@"ChannelName"]; 15 | } 16 | 17 | + (NSString *)getDefaultChannelName { 18 | NSString *channelName = [[NSUserDefaults standardUserDefaults] objectForKey:@"ChannelName"]; 19 | return channelName; 20 | } 21 | @end 22 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/SharedObjects/ExternalAudio/AudioWriteToFile.h: -------------------------------------------------------------------------------- 1 | // 2 | // AudioWriteToFile.h 3 | // AudioCapture 4 | // 5 | // Created by CavanSu on 08/11/2017. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AudioWriteToFile : NSObject 12 | + (void)writeToFileWithData:(void *)data length:(int)bytes; 13 | @end 14 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/SharedObjects/ExternalAudio/ExternalAudio.h: -------------------------------------------------------------------------------- 1 | // 2 | // ExternalAudio.h 3 | // AgoraAudioIO 4 | // 5 | // Created by CavanSu on 22/01/2018. 6 | // Copyright © 2018 CavanSu. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AudioOptions.h" 11 | 12 | @class AgoraRtcEngineKit; 13 | @class ExternalAudio; 14 | @protocol ExternalAudioDelegate 15 | @optional 16 | - (void)externalAudio:(ExternalAudio *)externalAudio errorInfo:(NSString *)errorInfo; 17 | @end 18 | 19 | @interface ExternalAudio : NSObject 20 | @property (nonatomic, weak) id delegate; 21 | 22 | + (instancetype)sharedExternalAudio; 23 | - (void)setupExternalAudioWithAgoraKit:(AgoraRtcEngineKit *)agoraKit sampleRate:(int)sampleRate channels:(int)channels audioCRMode:(AudioCRMode)audioCRMode IOType:(IOUnitType)ioType; 24 | - (void)startWork; 25 | - (void)stopWork; 26 | @end 27 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/build.sh: -------------------------------------------------------------------------------- 1 | rm -f *.ipa 2 | rm -f *.zip 3 | rm -rf dSYMs 4 | rm -rf *.dSYM 5 | rm -f *dSYMs.zip 6 | rm -rf *.xcarchive 7 | 8 | BUILD_DATE=`date +%Y-%m-%d-%H.%M.%S` 9 | APP_PROJECT=AgoraAudioIO 10 | APP_TARGET=AgoraAudioIO-iOS 11 | ArchivePath=${APP_TARGET}-${BUILD_DATE}.xcarchive 12 | 13 | xcodebuild clean -project "${APP_PROJECT}.xcodeproj" -scheme "${APP_TARGET}" -configuration Release 14 | xcodebuild -project "${APP_PROJECT}.xcodeproj" -scheme "${APP_TARGET}" -archivePath ${ArchivePath} archive 15 | xcodebuild -exportArchive -exportOptionsPlist exportPlist.plist -archivePath ${ArchivePath} -exportPath . -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/build_macOS.sh: -------------------------------------------------------------------------------- 1 | rm -rf *.app 2 | rm -f *.zip 3 | rm -rf dSYMs 4 | rm -rf *.dSYM 5 | rm -f *dSYMs.zip 6 | rm -rf *.xcarchive 7 | 8 | BUILD_DATE=`date +%Y-%m-%d-%H.%M.%S` 9 | APP_PROJECT=AgoraAudioIO 10 | APP_TARGET=AgoraAudioIO-macOS 11 | ArchivePath=${APP_TARGET}-${BUILD_DATE}.xcarchive 12 | 13 | xcodebuild clean -project "${APP_PROJECT}.xcodeproj" -scheme "${APP_TARGET}" -configuration Release 14 | xcodebuild CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO -project "${APP_PROJECT}.xcodeproj" -scheme "${APP_TARGET}" -archivePath ${ArchivePath} archive 15 | xcodebuild CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO -exportArchive -exportOptionsPlist exportPlist_macOS.plist -archivePath ${ArchivePath} -exportPath . -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/clear.sh: -------------------------------------------------------------------------------- 1 | rm -rf *.xcarchive 2 | rm -f *.ipa 3 | rm -rf *.app 4 | rm -f DistributionSummary.plist 5 | rm -f ExportOptions.plist 6 | rm -f Packaging.log -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/exportPlist.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | method 6 | development 7 | compileBitcode 8 | 9 | provisioningProfiles 10 | 11 | io.agora.AgoraAudioIO-iOS 12 | App 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /iOS&macOS/AgoraAudioIO-Objective-C/exportPlist_macOS.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | method 6 | mac-application 7 | compileBitcode 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /iOS&macOS/Pronunciation-Assess-iOS/Pronunciation-Assess.xcodeproj/.xcodesamplecode.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /iOS&macOS/Pronunciation-Assess-iOS/Pronunciation-Assess/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /iOS&macOS/Pronunciation-Assess-iOS/Pronunciation-Assess/CHIVOX/CHIVOXLIB: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/Pronunciation-Assess-iOS/Pronunciation-Assess/CHIVOX/CHIVOXLIB -------------------------------------------------------------------------------- /iOS&macOS/Pronunciation-Assess-iOS/Pronunciation-Assess/CXEngine.h: -------------------------------------------------------------------------------- 1 | // 2 | // CXEngine.h 3 | // Pronunciation-Assess 4 | // 5 | // Created by CavanSu on 2019/11/1. 6 | // Copyright © 2019 CavanSu. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AgoraMediaRawData.h" 11 | 12 | @class CXEngine; 13 | @protocol CXEngineDelegate 14 | - (void)cxEngine:(CXEngine * _Nonnull)engine pronunciateResult:(NSInteger)result; 15 | @end 16 | 17 | @interface CXEngine : NSObject 18 | @property (atomic, assign, readonly) BOOL isNeedAudioData; 19 | @property (nonatomic, weak) id _Nullable delegate; 20 | 21 | - (void)prepareWithAppKey:(NSString * _Nonnull)appKey secrectKey:(NSString * _Nonnull)secretKey; 22 | - (void)request:(NSString * _Nonnull)key; 23 | - (void)sendAudioData:(AgoraAudioRawData * _Nonnull)data; 24 | - (void)stopSend; 25 | @end 26 | -------------------------------------------------------------------------------- /iOS&macOS/Pronunciation-Assess-iOS/Pronunciation-Assess/CXKeys.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CXKeys.swift 3 | // Pronunciation-Assess 4 | // 5 | // Created by CavanSu on 2019/11/4. 6 | // Copyright © 2019 CavanSu. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | let CXAppKey = "" 12 | let CXSecretKey = "" 13 | 14 | -------------------------------------------------------------------------------- /iOS&macOS/Pronunciation-Assess-iOS/Pronunciation-Assess/Pronunciation-Assess-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | // 2 | // Use this file to import your target's public headers that you would like to expose to Swift. 3 | // 4 | 5 | #import "CXEngine.h" 6 | #import "AgoraMediaDataPlugin.h" 7 | -------------------------------------------------------------------------------- /iOS&macOS/Pronunciation-Assess-iOS/Pronunciation-Assess/raw-data-api-oc/AgoraMediaRawData.m: -------------------------------------------------------------------------------- 1 | // 2 | // AgoraVideoRawData.m 3 | // OpenVideoCall 4 | // 5 | // Created by CavanSu on 26/02/2018. 6 | // Copyright © 2018 Agora. All rights reserved. 7 | // 8 | 9 | #import "AgoraMediaRawData.h" 10 | 11 | @implementation AgoraVideoRawDataFormatter 12 | - (instancetype)init { 13 | if (self = [super init]) { 14 | self.mirrorApplied = false; 15 | self.rotationApplied = false; 16 | self.type = 0; 17 | } 18 | return self; 19 | } 20 | @end 21 | 22 | @implementation AgoraVideoRawData 23 | 24 | @end 25 | 26 | @implementation AgoraAudioRawData 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /iOS&macOS/Pronunciation-Assess-iOS/build.sh: -------------------------------------------------------------------------------- 1 | rm -f *.ipa 2 | rm -rf *.app 3 | rm -f *.zip 4 | rm -rf dSYMs 5 | rm -rf *.dSYM 6 | rm -f *dSYMs.zip 7 | rm -rf *.xcarchive 8 | 9 | BUILD_DATE=`date +%Y-%m-%d-%H.%M.%S` 10 | APP_TARGET=Pronunciation-Assess 11 | ArchivePath=${APP_TARGET}-${BUILD_DATE}.xcarchive 12 | 13 | xcodebuild clean -project "${APP_TARGET}.xcodeproj" -scheme "${APP_TARGET}" -configuration Release 14 | xcodebuild -project "${APP_TARGET}.xcodeproj" -scheme "${APP_TARGET}" -archivePath ${ArchivePath} archive 15 | xcodebuild -exportArchive -exportOptionsPlist exportPlist.plist -archivePath ${ArchivePath} -exportPath . -------------------------------------------------------------------------------- /iOS&macOS/Pronunciation-Assess-iOS/clear.sh: -------------------------------------------------------------------------------- 1 | rm -rf *.xcarchive 2 | rm -f *.ipa 3 | rm -rf *.app 4 | rm -f DistributionSummary.plist 5 | rm -f ExportOptions.plist 6 | rm -f Packaging.log -------------------------------------------------------------------------------- /iOS&macOS/Pronunciation-Assess-iOS/exportPlist.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | method 6 | development 7 | compileBitcode 8 | 9 | provisioningProfiles 10 | 11 | io.agora.Pronunciation-Assess 12 | App 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /iOS&macOS/SpeechRecognizer-iOS/SpeechRecognizer-iOS.xcodeproj/.xcodesamplecode.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /iOS&macOS/SpeechRecognizer-iOS/SpeechRecognizer-iOS/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // SpeechRecognizer-iOS 4 | // 5 | // Created by GongYuhua on 2019/7/8. 6 | // Copyright © 2019 Agora. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @UIApplicationMain 12 | class AppDelegate: UIResponder, UIApplicationDelegate { 13 | 14 | var window: UIWindow? 15 | 16 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 17 | return true 18 | } 19 | } 20 | 21 | -------------------------------------------------------------------------------- /iOS&macOS/SpeechRecognizer-iOS/SpeechRecognizer-iOS/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /iOS&macOS/SpeechRecognizer-iOS/SpeechRecognizer-iOS/MediaWorker.h: -------------------------------------------------------------------------------- 1 | // 2 | // MediaWorker.h 3 | // SpeechRecognizer-iOS 4 | // 5 | // Created by GongYuhua on 2019/7/5. 6 | // Copyright © 2019 Apple. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @class AgoraRtcEngineKit; 13 | 14 | @protocol MediaWorkerDelegate 15 | - (void)mediaWorkerDidReceiveRemotePCM:(AVAudioPCMBuffer * _Nonnull)buffer; 16 | @end 17 | 18 | @interface MediaWorker: NSObject 19 | + (void)setDelegate:(id _Nullable)delegate; 20 | + (void)setRemoteUid:(NSUInteger)uid; 21 | + (void)registerAudioBufferInEngine:(AgoraRtcEngineKit * _Nonnull)kit; 22 | + (void)deregisterAudioBufferInEngine:(AgoraRtcEngineKit * _Nonnull)kit; 23 | @end 24 | 25 | -------------------------------------------------------------------------------- /iOS&macOS/SpeechRecognizer-iOS/SpeechRecognizer-iOS/SpeechRecognizer-iOS-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | // 2 | // Use this file to import your target's public headers that you would like to expose to Swift. 3 | // 4 | 5 | #import "MediaWorker.h" 6 | -------------------------------------------------------------------------------- /iOS&macOS/SpeechRecognizer-iOS/build.sh: -------------------------------------------------------------------------------- 1 | rm -f *.ipa 2 | rm -rf *.app 3 | rm -f *.zip 4 | rm -rf dSYMs 5 | rm -rf *.dSYM 6 | rm -f *dSYMs.zip 7 | rm -rf *.xcarchive 8 | 9 | BUILD_DATE=`date +%Y-%m-%d-%H.%M.%S` 10 | APP_TARGET=SpeechRecognizer-iOS 11 | ArchivePath=${APP_TARGET}-${BUILD_DATE}.xcarchive 12 | 13 | xcodebuild clean -project "${APP_TARGET}.xcodeproj" -scheme "${APP_TARGET}" -configuration Release 14 | xcodebuild -project "${APP_TARGET}.xcodeproj" -scheme "${APP_TARGET}" -archivePath ${ArchivePath} archive 15 | xcodebuild -exportArchive -exportOptionsPlist exportPlist.plist -archivePath ${ArchivePath} -exportPath . -------------------------------------------------------------------------------- /iOS&macOS/SpeechRecognizer-iOS/clear.sh: -------------------------------------------------------------------------------- 1 | rm -rf *.xcarchive 2 | rm -f *.ipa 3 | rm -rf *.app 4 | rm -f DistributionSummary.plist 5 | rm -f ExportOptions.plist 6 | rm -f Packaging.log -------------------------------------------------------------------------------- /iOS&macOS/SpeechRecognizer-iOS/exportPlist.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | method 6 | development 7 | compileBitcode 8 | 9 | provisioningProfiles 10 | 11 | io.agora.SpeechRecognizer-iOS 12 | App 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /iOS&macOS/build-template/github-release.yml: -------------------------------------------------------------------------------- 1 | parameters: 2 | displayName: '' 3 | -------------------------------------------------------------------------------- /iOS&macOS/libs/iOS/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/libs/iOS/.gitkeep -------------------------------------------------------------------------------- /iOS&macOS/libs/macOS/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO/Advanced-Audio/0b6232ac89c61dd9c2077f0a0ced42181176e942/iOS&macOS/libs/macOS/.gitkeep -------------------------------------------------------------------------------- /iOS&macOS/scripts/ci_ios_env.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # -*- coding: UTF-8 -*- 3 | import re 4 | import os 5 | 6 | def main(): 7 | 8 | appId = "" 9 | if "AGORA_APP_ID" in os.environ: 10 | appId = os.environ["AGORA_APP_ID"] 11 | token = "" 12 | 13 | # KeyCenter.swift 14 | f = open("../shared/Swift/KeyCenter.swift", 'r+') 15 | content = f.read() 16 | appString = "\"" + appId + "\"" 17 | tokenString = "\"" + token + "\"" 18 | contentNew = re.sub(r'<#Your App Id#>', appString, content) 19 | contentNew = re.sub(r'<#Temp Access Token#>', tokenString, contentNew) 20 | f.seek(0) 21 | f.write(contentNew) 22 | f.truncate() 23 | 24 | # KeyCenter.m 25 | f = open("../shared/Objective-C/KeyCenter.m", 'r+') 26 | content = f.read() 27 | appString = "@\"" + appId + "\"" 28 | tokenString = "@\"" + token + "\"" 29 | contentNew = re.sub(r'<#Your App Id#>', appString, content) 30 | contentNew = re.sub(r'<#Temp Access Token#>', tokenString, contentNew) 31 | f.seek(0) 32 | f.write(contentNew) 33 | f.truncate() 34 | 35 | if __name__ == "__main__": 36 | main() 37 | -------------------------------------------------------------------------------- /iOS&macOS/scripts/ci_macos_env.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # -*- coding: UTF-8 -*- 3 | import re 4 | import os 5 | 6 | def main(): 7 | 8 | appId = "" 9 | if "AGORA_APP_ID" in os.environ: 10 | appId = os.environ["AGORA_APP_ID"] 11 | token = "" 12 | 13 | # KeyCenter.swift 14 | f = open("../shared/Swift/KeyCenter.swift", 'r+') 15 | content = f.read() 16 | appString = "\"" + appId + "\"" 17 | tokenString = "\"" + token + "\"" 18 | contentNew = re.sub(r'<#Your App Id#>', appString, content) 19 | contentNew = re.sub(r'<#Temp Access Token#>', tokenString, contentNew) 20 | f.seek(0) 21 | f.write(contentNew) 22 | f.truncate() 23 | 24 | # KeyCenter.m 25 | f = open("../shared/Objective-C/KeyCenter.m", 'r+') 26 | content = f.read() 27 | appString = "@\"" + appId + "\"" 28 | tokenString = "@\"" + token + "\"" 29 | contentNew = re.sub(r'<#Your App Id#>', appString, content) 30 | contentNew = re.sub(r'<#Temp Access Token#>', tokenString, contentNew) 31 | f.seek(0) 32 | f.write(contentNew) 33 | f.truncate() 34 | 35 | if __name__ == "__main__": 36 | main() 37 | -------------------------------------------------------------------------------- /iOS&macOS/scripts/sdkdownload.sh: -------------------------------------------------------------------------------- 1 | TARGET_LIBS_ZIP="agora_sdk.zip" 2 | TARGET_INTERNAL_FOLDER="agora_sdk" 3 | 4 | FILE_PATH=`pwd` 5 | 6 | echo ${FILE_PATH} 7 | 8 | SDK_URL=$1 9 | COPY_TO=$2 10 | 11 | echo "url" ${SDK_URL} 12 | 13 | #download 14 | wget -q ${SDK_URL} -O ${TARGET_LIBS_ZIP} 15 | 16 | #unzip 17 | unzip -q ${TARGET_LIBS_ZIP} -d ${TARGET_INTERNAL_FOLDER} 18 | 19 | cd ${TARGET_INTERNAL_FOLDER} 20 | 21 | FIRST_FOLDER="" 22 | 23 | for i in `ls` 24 | do 25 | FIRST_FOLDER=$i 26 | echo $i 27 | done 28 | 29 | #copy 30 | DESTINATION=${FILE_PATH}/../${COPY_TO} 31 | 32 | echo DESTINATION ${DESTINATION} 33 | 34 | cp -af ${FIRST_FOLDER}/libs/* ${DESTINATION} 35 | 36 | echo pwd `pwd` 37 | -------------------------------------------------------------------------------- /iOS&macOS/shared/Objective-C/KeyCenter.h: -------------------------------------------------------------------------------- 1 | // 2 | // KeyCenter.h 3 | // OpenVideoCall 4 | // 5 | // Created by GongYuhua on 2016/9/12. 6 | // Copyright © 2016年 Agora. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface KeyCenter : NSObject 12 | + (NSString *)AppId; 13 | + (NSString *)Token; 14 | @end 15 | -------------------------------------------------------------------------------- /iOS&macOS/shared/Objective-C/KeyCenter.m: -------------------------------------------------------------------------------- 1 | // 2 | // KeyCenter.m 3 | // OpenVideoCall 4 | // 5 | // Created by GongYuhua on 2016/9/12. 6 | // Copyright © 2016年 Agora. All rights reserved. 7 | // 8 | 9 | #import "KeyCenter.h" 10 | 11 | @implementation KeyCenter 12 | + (NSString *)AppId { 13 | return <#Your App Id#>; 14 | } 15 | 16 | // assign token to nil if you have not enabled app certificate 17 | + (NSString *)Token { 18 | return <#Temp Access Token#>; 19 | } 20 | @end 21 | -------------------------------------------------------------------------------- /iOS&macOS/shared/Swift/KeyCenter.swift: -------------------------------------------------------------------------------- 1 | // 2 | // KeyCenter.swift 3 | // LargeGroupVideoChat 4 | // 5 | // Created by ZhangJi on 30/09/2017. 6 | // Copyright © 2017 Agora. All rights reserved. 7 | // 8 | 9 | struct KeyCenter { 10 | static let AppId: String = <#Your App Id#> 11 | 12 | // assign token to nil if you have not enabled app certificate 13 | static var Token: String? = <#Temp Access Token#> 14 | } 15 | --------------------------------------------------------------------------------