├── .editorconfig
├── .git-blame-ignore-revs
├── .github
├── CODEOWNERS
├── ISSUE_TEMPLATE
│ ├── android_task.md
│ ├── bug_report.md
│ └── config.yml
├── actions
│ └── setup-node
│ │ └── action.yml
├── pull_request_template.md
├── release.yaml
└── workflows
│ ├── android.yml
│ ├── app-distribute.yml
│ ├── e2e-build.yml
│ ├── e2e-test-cron.yml
│ ├── e2e-test.yml
│ ├── internal-app-distribute.yml
│ ├── no-response.yml
│ ├── publish-new-version.yml
│ ├── publish-snapshot.yml
│ ├── release-docs.yaml
│ ├── sdk-size-checks.yml
│ └── sdk-size-updates.yml
├── .gitignore
├── .readme-assets
└── Github-Graphic-Android.jpg
├── .repackage-assets
└── maven_local.png
├── .sign
└── debug.keystore.jks
├── .styles
├── Google
│ ├── AMPM.yml
│ ├── Acronyms.yml
│ ├── Colons.yml
│ ├── Contractions.yml
│ ├── DateFormat.yml
│ ├── Ellipses.yml
│ ├── EmDash.yml
│ ├── EnDash.yml
│ ├── Exclamation.yml
│ ├── FirstPerson.yml
│ ├── Gender.yml
│ ├── GenderBias.yml
│ ├── HeadingPunctuation.yml
│ ├── Headings.yml
│ ├── Latin.yml
│ ├── LyHyphens.yml
│ ├── OptionalPlurals.yml
│ ├── Ordinal.yml
│ ├── OxfordComma.yml
│ ├── Parens.yml
│ ├── Passive.yml
│ ├── Periods.yml
│ ├── Quotes.yml
│ ├── Ranges.yml
│ ├── Semicolons.yml
│ ├── Slang.yml
│ ├── Spacing.yml
│ ├── Spelling.yml
│ ├── Units.yml
│ ├── We.yml
│ ├── Will.yml
│ ├── WordList.yml
│ ├── meta.json
│ └── vocab.txt
└── Vocab
│ └── Base
│ ├── accept.txt
│ └── reject.txt
├── .vale.ini
├── AppKey
├── CHANGELOG.md
├── DEPRECATIONS.md
├── Gemfile
├── Gemfile.lock
├── LICENSE
├── README.md
├── SECURITY.md
├── benchmark
├── .gitignore
├── build.gradle.kts
└── src
│ └── main
│ ├── AndroidManifest.xml
│ └── kotlin
│ └── io
│ └── getstream
│ └── video
│ └── android
│ └── benchmark
│ ├── BaselineProfileGenerator.kt
│ ├── DogfoodingScenarios.kt
│ ├── StartupBenchmarks.kt
│ └── Utils.kt
├── build-logic
├── convention
│ ├── build.gradle.kts
│ └── src
│ │ └── main
│ │ └── kotlin
│ │ ├── AndroidApplicationComposeConventionPlugin.kt
│ │ ├── AndroidApplicationConventionPlugin.kt
│ │ ├── AndroidLibraryComposeConventionPlugin.kt
│ │ ├── AndroidLibraryConventionPlugin.kt
│ │ ├── SpotlessConventionPlugin.kt
│ │ └── io
│ │ └── getstream
│ │ └── video
│ │ ├── AndroidCompose.kt
│ │ ├── DemoFlavor.kt
│ │ └── KotlinAndroid.kt
├── gradle.properties
└── settings.gradle.kts
├── build.gradle.kts
├── buildSrc
├── build.gradle.kts
└── src
│ └── main
│ └── kotlin
│ └── io
│ └── getstream
│ └── video
│ └── android
│ ├── Configuration.kt
│ └── commands
│ ├── rpc
│ ├── plugin
│ │ ├── GenerateRPCServiceExtension.kt
│ │ └── GenerateRPCServicePlugin.kt
│ └── task
│ │ └── GenerateRPCServiceTask.kt
│ └── utils
│ └── Tasks.kt
├── compose_compiler_config.conf
├── demo-app
├── .gitignore
├── README.md
├── benchmark-rules.pro
├── build.gradle.kts
├── google-services.json
├── libs
│ └── renderscript-toolkit.aar
├── lint-baseline.xml
├── proguard-rules.pro
└── src
│ ├── androidTestE2etestingDebug
│ ├── kotlin
│ │ └── io
│ │ │ └── getstream
│ │ │ └── video
│ │ │ └── android
│ │ │ ├── pages
│ │ │ ├── CallDetailsPage.kt
│ │ │ ├── CallPage.kt
│ │ │ ├── DirectCallPage.kt
│ │ │ ├── LobbyPage.kt
│ │ │ ├── LoginPage.kt
│ │ │ └── RingPage.kt
│ │ │ ├── robots
│ │ │ ├── ParticipantRobot.kt
│ │ │ ├── UserRobot.kt
│ │ │ ├── UserRobotCallAsserts.kt
│ │ │ └── UserRobotLobbyAsserts.kt
│ │ │ ├── rules
│ │ │ └── RetryRule.kt
│ │ │ ├── tests
│ │ │ ├── CallLifecycleTests.kt
│ │ │ ├── LayoutTests.kt
│ │ │ ├── LobbyTests.kt
│ │ │ ├── ParticipantActionsTests.kt
│ │ │ ├── ReconnectionTests.kt
│ │ │ ├── StreamTestCase.kt
│ │ │ └── UserActionsTests.kt
│ │ │ └── uiautomator
│ │ │ ├── Actions.kt
│ │ │ ├── Base.kt
│ │ │ ├── Element.kt
│ │ │ ├── FindBy.kt
│ │ │ ├── Math.kt
│ │ │ ├── Permissions.kt
│ │ │ └── Wait.kt
│ └── resources
│ │ └── allure.properties
│ ├── development
│ └── res
│ │ ├── drawable
│ │ └── ic_launcher_background.xml
│ │ ├── mipmap-hdpi
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-mdpi
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xhdpi
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxhdpi
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxxhdpi
│ │ └── ic_launcher_round.png
│ │ └── values
│ │ └── strings.xml
│ ├── e2etesting
│ └── res
│ │ ├── drawable
│ │ └── ic_launcher_background.xml
│ │ ├── mipmap-hdpi
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-mdpi
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xhdpi
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxhdpi
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxxhdpi
│ │ └── ic_launcher_round.png
│ │ └── values
│ │ └── strings.xml
│ ├── main
│ ├── AndroidManifest.xml
│ ├── generated
│ │ └── baselineProfiles
│ │ │ ├── baseline-prof.txt
│ │ │ └── startup-prof.txt
│ ├── ic_launcher-playstore.png
│ ├── kotlin
│ │ └── io
│ │ │ └── getstream
│ │ │ └── video
│ │ │ └── android
│ │ │ ├── App.kt
│ │ │ ├── CallActivity.kt
│ │ │ ├── DeeplinkingActivity.kt
│ │ │ ├── MainActivity.kt
│ │ │ ├── analytics
│ │ │ └── FirebaseEvents.kt
│ │ │ ├── data
│ │ │ ├── repositories
│ │ │ │ └── GoogleAccountRepository.kt
│ │ │ └── services
│ │ │ │ ├── google
│ │ │ │ └── ListDirectoryPeopleResponse.kt
│ │ │ │ └── stream
│ │ │ │ ├── GetAuthDataResponse.kt
│ │ │ │ └── StreamService.kt
│ │ │ ├── di
│ │ │ └── AppModule.kt
│ │ │ ├── models
│ │ │ ├── GoogleAccount.kt
│ │ │ └── Users.kt
│ │ │ ├── tooling
│ │ │ ├── extensions
│ │ │ │ ├── ContextExtensions.kt
│ │ │ │ └── Utils.kt
│ │ │ ├── ui
│ │ │ │ ├── ExceptionTraceActivity.kt
│ │ │ │ └── ExceptionTraceScreen.kt
│ │ │ └── util
│ │ │ │ └── StreamFlavors.kt
│ │ │ ├── ui
│ │ │ ├── DogfoodingNavHost.kt
│ │ │ ├── call
│ │ │ │ ├── AvailableDeviceMenu.kt
│ │ │ │ ├── CallScreen.kt
│ │ │ │ ├── CallStats.kt
│ │ │ │ ├── ChatDialog.kt
│ │ │ │ ├── ChatOverly.kt
│ │ │ │ ├── CustomReactionContent.kt
│ │ │ │ ├── FeedbackDialog.kt
│ │ │ │ ├── LandscapeControls.kt
│ │ │ │ ├── LayoutChooser.kt
│ │ │ │ ├── ParticipantsDialog.kt
│ │ │ │ ├── QRCode.kt
│ │ │ │ ├── ReactionsMenu.kt
│ │ │ │ └── ShareCall.kt
│ │ │ ├── closedcaptions
│ │ │ │ ├── ClosedCaptionUi.kt
│ │ │ │ ├── ClosedCaptionUiState.kt
│ │ │ │ └── ClosedCaptionsTheme.kt
│ │ │ ├── join
│ │ │ │ ├── CallJoinScreen.kt
│ │ │ │ ├── CallJoinViewModel.kt
│ │ │ │ └── barcode
│ │ │ │ │ └── BardcodeScanner.kt
│ │ │ ├── lobby
│ │ │ │ ├── CallLobbyScreen.kt
│ │ │ │ └── CallLobbyViewModel.kt
│ │ │ ├── login
│ │ │ │ ├── GoogleSignIn.kt
│ │ │ │ ├── GoogleSignInLauncher.kt
│ │ │ │ ├── LoginScreen.kt
│ │ │ │ └── LoginViewModel.kt
│ │ │ ├── menu
│ │ │ │ ├── AudioDeviceUiState.kt
│ │ │ │ ├── MenuDefinitions.kt
│ │ │ │ ├── SettingsMenu.kt
│ │ │ │ ├── TranscriptionUiState.kt
│ │ │ │ ├── VideoFiltersMenu.kt
│ │ │ │ ├── base
│ │ │ │ │ ├── DynamicMenu.kt
│ │ │ │ │ └── MenuTypes.kt
│ │ │ │ └── transcriptions
│ │ │ │ │ └── TranscriptionUiStateManager.kt
│ │ │ └── outgoing
│ │ │ │ ├── DirectCallJoinScreen.kt
│ │ │ │ └── DirectCallJoinViewModel.kt
│ │ │ └── util
│ │ │ ├── FeedbackSender.kt
│ │ │ ├── InAppUpdateHelper.kt
│ │ │ ├── InstallReferrer.kt
│ │ │ ├── LockOrientation.kt
│ │ │ ├── NetworkMonitor.kt
│ │ │ ├── ProgressBar.kt
│ │ │ ├── PushNotifications.kt
│ │ │ ├── StreamVideoInitHelper.kt
│ │ │ ├── UserHelper.kt
│ │ │ ├── config
│ │ │ ├── AppConfig.kt
│ │ │ └── types
│ │ │ │ └── StreamEnvironment.kt
│ │ │ └── filters
│ │ │ ├── SampleAudioFilter.kt
│ │ │ └── SampleVideoFilter.kt
│ └── res
│ │ ├── drawable
│ │ ├── amsterdam1.webp
│ │ ├── amsterdam2.webp
│ │ ├── boulder1.webp
│ │ ├── boulder2.webp
│ │ ├── feedback_artwork.png
│ │ ├── google_button_logo.xml
│ │ ├── gradient1.webp
│ │ ├── ic_blur_off.xml
│ │ ├── ic_blur_on.xml
│ │ ├── ic_default_avatar.xml
│ │ ├── ic_launcher_background.xml
│ │ ├── ic_launcher_foreground.xml
│ │ ├── ic_layout_grid.xml
│ │ ├── ic_layout_spotlight.xml
│ │ ├── ic_mic.xml
│ │ ├── ic_scan_qr.xml
│ │ ├── ic_stream_video_meeting_logo.xml
│ │ └── stream_calls_logo.png
│ │ ├── layout
│ │ └── activity_main.xml
│ │ ├── mipmap-anydpi-v26
│ │ ├── ic_launcher.xml
│ │ └── ic_launcher_round.xml
│ │ ├── mipmap-hdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-mdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── values
│ │ ├── colors.xml
│ │ ├── strings.xml
│ │ └── themes.xml
│ │ └── xml
│ │ └── network_security_config.xml
│ ├── production
│ └── res
│ │ └── values
│ │ └── strings.xml
│ └── staging
│ └── res
│ └── values
│ └── strings.xml
├── development.md
├── env.properties.sample
├── fastlane
├── .env
├── .rubocop.yml
├── Allurefile
├── Fastfile
└── Pluginfile
├── generate-openapi.sh
├── generate_openapi_v2.sh
├── gradle.properties
├── gradle
├── libs.versions.toml
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── integrate_webrtc.py
├── metrics
├── size.json
└── stream-video-android-metrics
│ ├── build.gradle.kts
│ └── src
│ └── main
│ ├── AndroidManifest.xml
│ └── kotlin
│ └── io
│ └── getstream
│ └── video
│ └── android
│ └── metrics
│ └── MainActivity.kt
├── repackage.md
├── repackage.sh
├── scripts
├── coverage.gradle
├── git-hooks
│ └── pre-push
├── open-api-code-gen.gradle.kts
├── publish-module.gradle
├── publish-root.gradle
├── release
│ └── local-release
├── repackage
│ ├── repackage.py
│ └── utils
│ │ ├── __init__.py
│ │ ├── gradle_publish.py
│ │ ├── gradle_settings.py
│ │ ├── maven.py
│ │ ├── project_configuration.py
│ │ ├── repackage_video_sdk.py
│ │ ├── repackage_webrtc_android.py
│ │ └── string_replacement.py
├── show-last-snapshot-update.sh
└── sonar.gradle
├── settings.gradle.kts
├── spotless
├── copyright.kt
├── copyright.kts
└── copyright.xml
├── stream-video-android-bom
└── build.gradle.kts
├── stream-video-android-core
├── .gitignore
├── api
│ └── stream-video-android-core.api
├── build.gradle.kts
├── consumer-proguard-rules.pro
├── proguard-rules.pro
├── src
│ ├── androidTest
│ │ ├── AndroidManifest.xml
│ │ └── kotlin
│ │ │ └── io
│ │ │ └── getstream
│ │ │ └── video
│ │ │ └── android
│ │ │ └── core
│ │ │ ├── AndroidDeviceTest.kt
│ │ │ ├── DispatcherRule.kt
│ │ │ ├── IntegrationTestBase.kt
│ │ │ ├── LivestreamTest.kt
│ │ │ ├── MediaManagerTest.kt
│ │ │ ├── ReconnectTest.kt
│ │ │ ├── RingTest.kt
│ │ │ └── SupportTest.kt
│ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── baseline-prof.txt
│ │ ├── kotlin
│ │ │ └── io
│ │ │ │ └── getstream
│ │ │ │ ├── android
│ │ │ │ └── video
│ │ │ │ │ └── generated
│ │ │ │ │ ├── apis
│ │ │ │ │ └── ProductvideoApi.kt
│ │ │ │ │ ├── infrastructure
│ │ │ │ │ ├── BigDecimalAdapter.kt
│ │ │ │ │ ├── BigIntegerAdapter.kt
│ │ │ │ │ ├── ByteArrayAdapter.kt
│ │ │ │ │ ├── LocalDateAdapter.kt
│ │ │ │ │ ├── LocalDateTimeAdapter.kt
│ │ │ │ │ ├── OffsetDateTimeAdapter.kt
│ │ │ │ │ ├── Serializer.kt
│ │ │ │ │ ├── URIAdapter.kt
│ │ │ │ │ └── UUIDAdapter.kt
│ │ │ │ │ └── models
│ │ │ │ │ ├── APIError.kt
│ │ │ │ │ ├── AcceptCallResponse.kt
│ │ │ │ │ ├── AggregatedStats.kt
│ │ │ │ │ ├── AudioSettingsRequest.kt
│ │ │ │ │ ├── AudioSettingsResponse.kt
│ │ │ │ │ ├── BackstageSettingsRequest.kt
│ │ │ │ │ ├── BackstageSettingsResponse.kt
│ │ │ │ │ ├── BlockUserRequest.kt
│ │ │ │ │ ├── BlockUserResponse.kt
│ │ │ │ │ ├── BlockedUserEvent.kt
│ │ │ │ │ ├── Bound.kt
│ │ │ │ │ ├── BroadcastSettingsRequest.kt
│ │ │ │ │ ├── BroadcastSettingsResponse.kt
│ │ │ │ │ ├── CallAcceptedEvent.kt
│ │ │ │ │ ├── CallClosedCaption.kt
│ │ │ │ │ ├── CallClosedCaptionsFailedEvent.kt
│ │ │ │ │ ├── CallClosedCaptionsStartedEvent.kt
│ │ │ │ │ ├── CallClosedCaptionsStoppedEvent.kt
│ │ │ │ │ ├── CallCreatedEvent.kt
│ │ │ │ │ ├── CallDeletedEvent.kt
│ │ │ │ │ ├── CallDurationReport.kt
│ │ │ │ │ ├── CallDurationReportResponse.kt
│ │ │ │ │ ├── CallEndedEvent.kt
│ │ │ │ │ ├── CallEvent.kt
│ │ │ │ │ ├── CallHLSBroadcastingFailedEvent.kt
│ │ │ │ │ ├── CallHLSBroadcastingStartedEvent.kt
│ │ │ │ │ ├── CallHLSBroadcastingStoppedEvent.kt
│ │ │ │ │ ├── CallIngressResponse.kt
│ │ │ │ │ ├── CallLiveStartedEvent.kt
│ │ │ │ │ ├── CallMemberAddedEvent.kt
│ │ │ │ │ ├── CallMemberRemovedEvent.kt
│ │ │ │ │ ├── CallMemberUpdatedEvent.kt
│ │ │ │ │ ├── CallMemberUpdatedPermissionEvent.kt
│ │ │ │ │ ├── CallMissedEvent.kt
│ │ │ │ │ ├── CallNotificationEvent.kt
│ │ │ │ │ ├── CallParticipantCountReport.kt
│ │ │ │ │ ├── CallParticipantCountReportResponse.kt
│ │ │ │ │ ├── CallParticipantResponse.kt
│ │ │ │ │ ├── CallReactionEvent.kt
│ │ │ │ │ ├── CallRecording.kt
│ │ │ │ │ ├── CallRecordingFailedEvent.kt
│ │ │ │ │ ├── CallRecordingReadyEvent.kt
│ │ │ │ │ ├── CallRecordingStartedEvent.kt
│ │ │ │ │ ├── CallRecordingStoppedEvent.kt
│ │ │ │ │ ├── CallRejectedEvent.kt
│ │ │ │ │ ├── CallRequest.kt
│ │ │ │ │ ├── CallResponse.kt
│ │ │ │ │ ├── CallRingEvent.kt
│ │ │ │ │ ├── CallRtmpBroadcastFailedEvent.kt
│ │ │ │ │ ├── CallRtmpBroadcastStartedEvent.kt
│ │ │ │ │ ├── CallRtmpBroadcastStoppedEvent.kt
│ │ │ │ │ ├── CallSessionEndedEvent.kt
│ │ │ │ │ ├── CallSessionParticipantCountsUpdatedEvent.kt
│ │ │ │ │ ├── CallSessionParticipantJoinedEvent.kt
│ │ │ │ │ ├── CallSessionParticipantLeftEvent.kt
│ │ │ │ │ ├── CallSessionResponse.kt
│ │ │ │ │ ├── CallSessionStartedEvent.kt
│ │ │ │ │ ├── CallSettingsRequest.kt
│ │ │ │ │ ├── CallSettingsResponse.kt
│ │ │ │ │ ├── CallStateResponseFields.kt
│ │ │ │ │ ├── CallStatsReportSummaryResponse.kt
│ │ │ │ │ ├── CallTimeline.kt
│ │ │ │ │ ├── CallTranscription.kt
│ │ │ │ │ ├── CallTranscriptionFailedEvent.kt
│ │ │ │ │ ├── CallTranscriptionReadyEvent.kt
│ │ │ │ │ ├── CallTranscriptionStartedEvent.kt
│ │ │ │ │ ├── CallTranscriptionStoppedEvent.kt
│ │ │ │ │ ├── CallUpdatedEvent.kt
│ │ │ │ │ ├── CallUserMutedEvent.kt
│ │ │ │ │ ├── CallsPerDayReport.kt
│ │ │ │ │ ├── CallsPerDayReportResponse.kt
│ │ │ │ │ ├── ClosedCaptionEvent.kt
│ │ │ │ │ ├── CollectUserFeedbackRequest.kt
│ │ │ │ │ ├── CollectUserFeedbackResponse.kt
│ │ │ │ │ ├── ConnectUserDetailsRequest.kt
│ │ │ │ │ ├── ConnectedEvent.kt
│ │ │ │ │ ├── ConnectionErrorEvent.kt
│ │ │ │ │ ├── Coordinates.kt
│ │ │ │ │ ├── Count.kt
│ │ │ │ │ ├── CreateDeviceRequest.kt
│ │ │ │ │ ├── CreateGuestRequest.kt
│ │ │ │ │ ├── CreateGuestResponse.kt
│ │ │ │ │ ├── Credentials.kt
│ │ │ │ │ ├── CustomVideoEvent.kt
│ │ │ │ │ ├── DailyAggregateCallDurationReportResponse.kt
│ │ │ │ │ ├── DailyAggregateCallParticipantCountReportResponse.kt
│ │ │ │ │ ├── DailyAggregateCallsPerDayReportResponse.kt
│ │ │ │ │ ├── DailyAggregateQualityScoreReportResponse.kt
│ │ │ │ │ ├── DailyAggregateSDKUsageReportResponse.kt
│ │ │ │ │ ├── DailyAggregateUserFeedbackReportResponse.kt
│ │ │ │ │ ├── DeleteCallRequest.kt
│ │ │ │ │ ├── DeleteCallResponse.kt
│ │ │ │ │ ├── DeleteRecordingResponse.kt
│ │ │ │ │ ├── DeleteTranscriptionResponse.kt
│ │ │ │ │ ├── DeviceResponse.kt
│ │ │ │ │ ├── EdgeResponse.kt
│ │ │ │ │ ├── EgressHLSResponse.kt
│ │ │ │ │ ├── EgressRTMPResponse.kt
│ │ │ │ │ ├── EgressResponse.kt
│ │ │ │ │ ├── EndCallResponse.kt
│ │ │ │ │ ├── GeofenceSettingsRequest.kt
│ │ │ │ │ ├── GeofenceSettingsResponse.kt
│ │ │ │ │ ├── GeolocationResult.kt
│ │ │ │ │ ├── GetCallResponse.kt
│ │ │ │ │ ├── GetCallStatsResponse.kt
│ │ │ │ │ ├── GetEdgesResponse.kt
│ │ │ │ │ ├── GetOrCreateCallRequest.kt
│ │ │ │ │ ├── GetOrCreateCallResponse.kt
│ │ │ │ │ ├── GoLiveRequest.kt
│ │ │ │ │ ├── GoLiveResponse.kt
│ │ │ │ │ ├── HLSSettingsRequest.kt
│ │ │ │ │ ├── HLSSettingsResponse.kt
│ │ │ │ │ ├── HealthCheckEvent.kt
│ │ │ │ │ ├── ICEServer.kt
│ │ │ │ │ ├── JoinCallRequest.kt
│ │ │ │ │ ├── JoinCallResponse.kt
│ │ │ │ │ ├── LayoutSettingsRequest.kt
│ │ │ │ │ ├── LimitsSettingsRequest.kt
│ │ │ │ │ ├── LimitsSettingsResponse.kt
│ │ │ │ │ ├── ListDevicesResponse.kt
│ │ │ │ │ ├── ListRecordingsResponse.kt
│ │ │ │ │ ├── ListTranscriptionsResponse.kt
│ │ │ │ │ ├── Location.kt
│ │ │ │ │ ├── MediaPubSubHint.kt
│ │ │ │ │ ├── MemberRequest.kt
│ │ │ │ │ ├── MemberResponse.kt
│ │ │ │ │ ├── MuteUsersRequest.kt
│ │ │ │ │ ├── MuteUsersResponse.kt
│ │ │ │ │ ├── NetworkMetricsReportResponse.kt
│ │ │ │ │ ├── NoiseCancellationSettings.kt
│ │ │ │ │ ├── OwnCapability.kt
│ │ │ │ │ ├── OwnUserResponse.kt
│ │ │ │ │ ├── PerSDKUsageReport.kt
│ │ │ │ │ ├── PermissionRequestEvent.kt
│ │ │ │ │ ├── PinRequest.kt
│ │ │ │ │ ├── PinResponse.kt
│ │ │ │ │ ├── PublishedTrackInfo.kt
│ │ │ │ │ ├── PublisherAggregateStats.kt
│ │ │ │ │ ├── PushPreferences.kt
│ │ │ │ │ ├── QualityScoreReport.kt
│ │ │ │ │ ├── QualityScoreReportResponse.kt
│ │ │ │ │ ├── QueryAggregateCallStatsRequest.kt
│ │ │ │ │ ├── QueryAggregateCallStatsResponse.kt
│ │ │ │ │ ├── QueryCallMembersRequest.kt
│ │ │ │ │ ├── QueryCallMembersResponse.kt
│ │ │ │ │ ├── QueryCallStatsRequest.kt
│ │ │ │ │ ├── QueryCallStatsResponse.kt
│ │ │ │ │ ├── QueryCallsRequest.kt
│ │ │ │ │ ├── QueryCallsResponse.kt
│ │ │ │ │ ├── RTMPBroadcastRequest.kt
│ │ │ │ │ ├── RTMPIngress.kt
│ │ │ │ │ ├── RTMPSettingsRequest.kt
│ │ │ │ │ ├── RTMPSettingsResponse.kt
│ │ │ │ │ ├── ReactionResponse.kt
│ │ │ │ │ ├── RecordSettingsRequest.kt
│ │ │ │ │ ├── RecordSettingsResponse.kt
│ │ │ │ │ ├── RejectCallRequest.kt
│ │ │ │ │ ├── RejectCallResponse.kt
│ │ │ │ │ ├── ReportByHistogramBucket.kt
│ │ │ │ │ ├── RequestPermissionRequest.kt
│ │ │ │ │ ├── RequestPermissionResponse.kt
│ │ │ │ │ ├── Response.kt
│ │ │ │ │ ├── RingSettingsRequest.kt
│ │ │ │ │ ├── RingSettingsResponse.kt
│ │ │ │ │ ├── SDKUsageReport.kt
│ │ │ │ │ ├── SDKUsageReportResponse.kt
│ │ │ │ │ ├── SFULocationResponse.kt
│ │ │ │ │ ├── SFUResponse.kt
│ │ │ │ │ ├── ScreensharingSettingsRequest.kt
│ │ │ │ │ ├── ScreensharingSettingsResponse.kt
│ │ │ │ │ ├── SendCallEventRequest.kt
│ │ │ │ │ ├── SendCallEventResponse.kt
│ │ │ │ │ ├── SendReactionRequest.kt
│ │ │ │ │ ├── SendReactionResponse.kt
│ │ │ │ │ ├── SessionSettingsRequest.kt
│ │ │ │ │ ├── SessionSettingsResponse.kt
│ │ │ │ │ ├── SortParamRequest.kt
│ │ │ │ │ ├── StartClosedCaptionsRequest.kt
│ │ │ │ │ ├── StartClosedCaptionsResponse.kt
│ │ │ │ │ ├── StartHLSBroadcastingResponse.kt
│ │ │ │ │ ├── StartRTMPBroadcastsRequest.kt
│ │ │ │ │ ├── StartRTMPBroadcastsResponse.kt
│ │ │ │ │ ├── StartRecordingRequest.kt
│ │ │ │ │ ├── StartRecordingResponse.kt
│ │ │ │ │ ├── StartTranscriptionRequest.kt
│ │ │ │ │ ├── StartTranscriptionResponse.kt
│ │ │ │ │ ├── StatsOptions.kt
│ │ │ │ │ ├── StopAllRTMPBroadcastsResponse.kt
│ │ │ │ │ ├── StopClosedCaptionsRequest.kt
│ │ │ │ │ ├── StopClosedCaptionsResponse.kt
│ │ │ │ │ ├── StopHLSBroadcastingResponse.kt
│ │ │ │ │ ├── StopLiveRequest.kt
│ │ │ │ │ ├── StopLiveResponse.kt
│ │ │ │ │ ├── StopRTMPBroadcastsResponse.kt
│ │ │ │ │ ├── StopRecordingResponse.kt
│ │ │ │ │ ├── StopTranscriptionRequest.kt
│ │ │ │ │ ├── StopTranscriptionResponse.kt
│ │ │ │ │ ├── Subsession.kt
│ │ │ │ │ ├── TURNAggregatedStats.kt
│ │ │ │ │ ├── TargetResolution.kt
│ │ │ │ │ ├── ThumbnailResponse.kt
│ │ │ │ │ ├── ThumbnailsSettingsRequest.kt
│ │ │ │ │ ├── ThumbnailsSettingsResponse.kt
│ │ │ │ │ ├── TimeStats.kt
│ │ │ │ │ ├── TranscriptionSettingsRequest.kt
│ │ │ │ │ ├── TranscriptionSettingsResponse.kt
│ │ │ │ │ ├── UnblockUserRequest.kt
│ │ │ │ │ ├── UnblockUserResponse.kt
│ │ │ │ │ ├── UnblockedUserEvent.kt
│ │ │ │ │ ├── UnpinRequest.kt
│ │ │ │ │ ├── UnpinResponse.kt
│ │ │ │ │ ├── UpdateCallMembersRequest.kt
│ │ │ │ │ ├── UpdateCallMembersResponse.kt
│ │ │ │ │ ├── UpdateCallRequest.kt
│ │ │ │ │ ├── UpdateCallResponse.kt
│ │ │ │ │ ├── UpdateUserPermissionsRequest.kt
│ │ │ │ │ ├── UpdateUserPermissionsResponse.kt
│ │ │ │ │ ├── UpdatedCallPermissionsEvent.kt
│ │ │ │ │ ├── UserFeedbackReport.kt
│ │ │ │ │ ├── UserFeedbackReportResponse.kt
│ │ │ │ │ ├── UserInfoResponse.kt
│ │ │ │ │ ├── UserRequest.kt
│ │ │ │ │ ├── UserResponse.kt
│ │ │ │ │ ├── UserResponsePrivacyFields.kt
│ │ │ │ │ ├── UserSessionStats.kt
│ │ │ │ │ ├── UserStats.kt
│ │ │ │ │ ├── UserUpdatedEvent.kt
│ │ │ │ │ ├── VideoDimension.kt
│ │ │ │ │ ├── VideoEvent.kt
│ │ │ │ │ ├── VideoQuality.kt
│ │ │ │ │ ├── VideoSettingsRequest.kt
│ │ │ │ │ ├── VideoSettingsResponse.kt
│ │ │ │ │ ├── WSAuthMessage.kt
│ │ │ │ │ ├── WSAuthMessageRequest.kt
│ │ │ │ │ ├── WSCallEvent.kt
│ │ │ │ │ └── WSClientEvent.kt
│ │ │ │ └── video
│ │ │ │ └── android
│ │ │ │ ├── core
│ │ │ │ ├── Call.kt
│ │ │ │ ├── CallHealthMonitor.kt
│ │ │ │ ├── CallState.kt
│ │ │ │ ├── CallStats.kt
│ │ │ │ ├── CallStatsReport.kt
│ │ │ │ ├── ClientState.kt
│ │ │ │ ├── EventSubscription.kt
│ │ │ │ ├── MediaManager.kt
│ │ │ │ ├── MemberState.kt
│ │ │ │ ├── ParticipantState.kt
│ │ │ │ ├── StreamVideo.kt
│ │ │ │ ├── StreamVideoBuilder.kt
│ │ │ │ ├── StreamVideoClient.kt
│ │ │ │ ├── StreamVideoConfig.kt
│ │ │ │ ├── audio
│ │ │ │ │ ├── AudioHandler.kt
│ │ │ │ │ └── StreamAudioDevice.kt
│ │ │ │ ├── call
│ │ │ │ │ ├── CallType.kt
│ │ │ │ │ ├── RtcSession.kt
│ │ │ │ │ ├── audio
│ │ │ │ │ │ └── InputAudioFilter.kt
│ │ │ │ │ ├── connection
│ │ │ │ │ │ ├── Publisher.kt
│ │ │ │ │ │ ├── StreamPeerConnection.kt
│ │ │ │ │ │ ├── StreamPeerConnectionFactory.kt
│ │ │ │ │ │ ├── coding
│ │ │ │ │ │ │ ├── SelectiveVideoDecoderFactory.kt
│ │ │ │ │ │ │ └── SelectiveVideoEncoderFactory.kt
│ │ │ │ │ │ ├── transceivers
│ │ │ │ │ │ │ └── TransceiverCache.kt
│ │ │ │ │ │ └── utils
│ │ │ │ │ │ │ └── VideoLayers.kt
│ │ │ │ │ ├── signal
│ │ │ │ │ │ └── socket
│ │ │ │ │ │ │ └── RTCEventMapper.kt
│ │ │ │ │ ├── state
│ │ │ │ │ │ └── CallAction.kt
│ │ │ │ │ ├── stats
│ │ │ │ │ │ ├── RtcMapper.kt
│ │ │ │ │ │ └── model
│ │ │ │ │ │ │ ├── RtcAudioSourceStats.kt
│ │ │ │ │ │ │ ├── RtcCodecStats.kt
│ │ │ │ │ │ │ ├── RtcIceCandidatePairStats.kt
│ │ │ │ │ │ │ ├── RtcIceCandidateStats.kt
│ │ │ │ │ │ │ ├── RtcInboundRtpAudioStreamStats.kt
│ │ │ │ │ │ │ ├── RtcInboundRtpStreamStats.kt
│ │ │ │ │ │ │ ├── RtcInboundRtpVideoStreamStats.kt
│ │ │ │ │ │ │ ├── RtcMediaSourceStats.kt
│ │ │ │ │ │ │ ├── RtcMediaStreamAudioTrackReceiverStats.kt
│ │ │ │ │ │ │ ├── RtcMediaStreamAudioTrackSenderStats.kt
│ │ │ │ │ │ │ ├── RtcMediaStreamAudioTrackStats.kt
│ │ │ │ │ │ │ ├── RtcMediaStreamTrackReceiverStats.kt
│ │ │ │ │ │ │ ├── RtcMediaStreamTrackSenderStats.kt
│ │ │ │ │ │ │ ├── RtcMediaStreamTrackStats.kt
│ │ │ │ │ │ │ ├── RtcMediaStreamVideoTrackReceiverStats.kt
│ │ │ │ │ │ │ ├── RtcMediaStreamVideoTrackSenderStats.kt
│ │ │ │ │ │ │ ├── RtcMediaStreamVideoTrackStats.kt
│ │ │ │ │ │ │ ├── RtcOutboundRtpAudioStreamStats.kt
│ │ │ │ │ │ │ ├── RtcOutboundRtpStreamStats.kt
│ │ │ │ │ │ │ ├── RtcOutboundRtpVideoStreamStats.kt
│ │ │ │ │ │ │ ├── RtcReceivedRtpStreamStats.kt
│ │ │ │ │ │ │ ├── RtcRemoteInboundRtpAudioStreamStats.kt
│ │ │ │ │ │ │ ├── RtcRemoteInboundRtpStreamStats.kt
│ │ │ │ │ │ │ ├── RtcRemoteInboundRtpVideoStreamStats.kt
│ │ │ │ │ │ │ ├── RtcRemoteOutboundRtpAudioStreamStats.kt
│ │ │ │ │ │ │ ├── RtcRemoteOutboundRtpStreamStats.kt
│ │ │ │ │ │ │ ├── RtcRemoteOutboundRtpVideoStreamStats.kt
│ │ │ │ │ │ │ ├── RtcRtpStreamStats.kt
│ │ │ │ │ │ │ ├── RtcSentRtpStreamStats.kt
│ │ │ │ │ │ │ ├── RtcStats.kt
│ │ │ │ │ │ │ ├── RtcStatsReport.kt
│ │ │ │ │ │ │ ├── RtcVideoSourceStats.kt
│ │ │ │ │ │ │ └── discriminator
│ │ │ │ │ │ │ ├── RtcMediaKind.kt
│ │ │ │ │ │ │ ├── RtcQualityLimitationReason.kt
│ │ │ │ │ │ │ └── RtcReportType.kt
│ │ │ │ │ ├── utils
│ │ │ │ │ │ ├── AudioValuePercentageNormaliser.kt
│ │ │ │ │ │ ├── PeerConnection.kt
│ │ │ │ │ │ ├── SDPUtils.kt
│ │ │ │ │ │ ├── SoundInputProcessor.kt
│ │ │ │ │ │ ├── Stringify.kt
│ │ │ │ │ │ └── TrackOverridesHandler.kt
│ │ │ │ │ └── video
│ │ │ │ │ │ ├── FilterVideoProcessor.kt
│ │ │ │ │ │ ├── VideoFilter.kt
│ │ │ │ │ │ └── YuvFrame.kt
│ │ │ │ ├── closedcaptions
│ │ │ │ │ ├── ClosedCaptionManager.kt
│ │ │ │ │ ├── ClosedCaptionsConfig.kt
│ │ │ │ │ └── ClosedCaptionsSettings.kt
│ │ │ │ ├── dispatchers
│ │ │ │ │ └── DispatcherProvider.kt
│ │ │ │ ├── errors
│ │ │ │ │ ├── DisconnectCause.kt
│ │ │ │ │ ├── Errors.kt
│ │ │ │ │ └── VideoErrorCode.kt
│ │ │ │ ├── events
│ │ │ │ │ ├── SfuDataEvent.kt
│ │ │ │ │ └── VideoEventListener.kt
│ │ │ │ ├── filter
│ │ │ │ │ ├── FilterObject.kt
│ │ │ │ │ ├── FilterObjectToMap.kt
│ │ │ │ │ └── Filters.kt
│ │ │ │ ├── header
│ │ │ │ │ ├── HeadersUtil.kt
│ │ │ │ │ └── VersionPrefixHeader.kt
│ │ │ │ ├── internal
│ │ │ │ │ ├── InternalStreamVideoApi.kt
│ │ │ │ │ ├── module
│ │ │ │ │ │ ├── ConnectionModuleDeclaration.kt
│ │ │ │ │ │ ├── CoordinatorAuthInterceptor.kt
│ │ │ │ │ │ ├── CoordinatorConnectionModule.kt
│ │ │ │ │ │ ├── HeadersInterceptor.kt
│ │ │ │ │ │ └── SfuConnectionModule.kt
│ │ │ │ │ └── network
│ │ │ │ │ │ └── NetworkStateProvider.kt
│ │ │ │ ├── lifecycle
│ │ │ │ │ ├── LifecycleHandler.kt
│ │ │ │ │ └── StreamLifecycleObserver.kt
│ │ │ │ ├── logging
│ │ │ │ │ ├── HttpLoggingLevel.kt
│ │ │ │ │ └── LoggingLevel.kt
│ │ │ │ ├── mapper
│ │ │ │ │ └── ReactionMapper.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── CallData.kt
│ │ │ │ │ ├── CallEventType.kt
│ │ │ │ │ ├── CallRecordingData.kt
│ │ │ │ │ ├── CallStatus.kt
│ │ │ │ │ ├── EdgeData.kt
│ │ │ │ │ ├── IceCandidate.kt
│ │ │ │ │ ├── IceServer.kt
│ │ │ │ │ ├── Ingress.kt
│ │ │ │ │ ├── MediaTrack.kt
│ │ │ │ │ ├── Member.kt
│ │ │ │ │ ├── MuteUsersData.kt
│ │ │ │ │ ├── NetworkQuality.kt
│ │ │ │ │ ├── PreferredVideoPublishOptions.kt
│ │ │ │ │ ├── PreferredVideoResolution.kt
│ │ │ │ │ ├── QueriedCalls.kt
│ │ │ │ │ ├── QueriedMembers.kt
│ │ │ │ │ ├── Reaction.kt
│ │ │ │ │ ├── ReactionData.kt
│ │ │ │ │ ├── RejectReason.kt
│ │ │ │ │ ├── ScreenSharingSession.kt
│ │ │ │ │ ├── SortData.kt
│ │ │ │ │ ├── StreamPeerType.kt
│ │ │ │ │ ├── UpdateUserPermissionsData.kt
│ │ │ │ │ ├── VideoModel.kt
│ │ │ │ │ └── VisibilityOnScreenState.kt
│ │ │ │ ├── notifications
│ │ │ │ │ ├── DefaultNotificationHandler.kt
│ │ │ │ │ ├── DefaultStreamIntentResolver.kt
│ │ │ │ │ ├── NotificationConfig.kt
│ │ │ │ │ ├── NotificationHandler.kt
│ │ │ │ │ ├── internal
│ │ │ │ │ │ ├── DismissNotificationActivity.kt
│ │ │ │ │ │ ├── NoOpNotificationHandler.kt
│ │ │ │ │ │ ├── StreamNotificationManager.kt
│ │ │ │ │ │ ├── VideoPushDelegate.kt
│ │ │ │ │ │ ├── receivers
│ │ │ │ │ │ │ ├── GenericCallActionBroadcastReceiver.kt
│ │ │ │ │ │ │ ├── LeaveCallBroadcastReceiver.kt
│ │ │ │ │ │ │ ├── RejectCallBroadcastReceiver.kt
│ │ │ │ │ │ │ ├── StopScreenshareBroadcastReceiver.kt
│ │ │ │ │ │ │ └── ToggleCameraBroadcastReceiver.kt
│ │ │ │ │ │ ├── service
│ │ │ │ │ │ │ ├── AudioCallService.kt
│ │ │ │ │ │ │ ├── CallService.kt
│ │ │ │ │ │ │ ├── CallServiceConfig.kt
│ │ │ │ │ │ │ ├── CallServiceConfigBuilder.kt
│ │ │ │ │ │ │ ├── CallServiceConfigRegistry.kt
│ │ │ │ │ │ │ ├── DefaultCallConfigurations.kt
│ │ │ │ │ │ │ └── LivestreamCallService.kt
│ │ │ │ │ │ └── storage
│ │ │ │ │ │ │ ├── DevicePreferences.kt
│ │ │ │ │ │ │ ├── DevicePreferencesSerializer.kt
│ │ │ │ │ │ │ └── DeviceTokenStorage.kt
│ │ │ │ │ └── medianotifications
│ │ │ │ │ │ ├── Data.kt
│ │ │ │ │ │ └── MediaNotificationHandler.kt
│ │ │ │ ├── permission
│ │ │ │ │ ├── PermissionRequest.kt
│ │ │ │ │ └── android
│ │ │ │ │ │ ├── DefaultStreamPermissionCheck.kt
│ │ │ │ │ │ ├── PermissionUtilities.kt
│ │ │ │ │ │ └── StreamPermissionCheck.kt
│ │ │ │ ├── pinning
│ │ │ │ │ └── PinUpdates.kt
│ │ │ │ ├── screenshare
│ │ │ │ │ └── StreamScreenShareService.kt
│ │ │ │ ├── socket
│ │ │ │ │ ├── ErrorResponse.kt
│ │ │ │ │ ├── common
│ │ │ │ │ │ ├── ConnectionConf.kt
│ │ │ │ │ │ ├── ErrorDetail.kt
│ │ │ │ │ │ ├── ErrorResponse.kt
│ │ │ │ │ │ ├── HealthMonitor.kt
│ │ │ │ │ │ ├── SocketActions.kt
│ │ │ │ │ │ ├── SocketConnectionPolicy.kt
│ │ │ │ │ │ ├── SocketErrorMessage.kt
│ │ │ │ │ │ ├── SocketFactory.kt
│ │ │ │ │ │ ├── SocketListener.kt
│ │ │ │ │ │ ├── StreamWebSocket.kt
│ │ │ │ │ │ ├── StreamWebSocketEvent.kt
│ │ │ │ │ │ ├── VideoErrorDetail.kt
│ │ │ │ │ │ ├── VideoParser.kt
│ │ │ │ │ │ ├── fsm
│ │ │ │ │ │ │ ├── FiniteStateMachine.kt
│ │ │ │ │ │ │ └── builder
│ │ │ │ │ │ │ │ ├── FSMBuilder.kt
│ │ │ │ │ │ │ │ ├── FSMBuilderMarker.kt
│ │ │ │ │ │ │ │ └── StateHandlerBuilder.kt
│ │ │ │ │ │ ├── parser2
│ │ │ │ │ │ │ ├── MoshiErrorLogging.kt
│ │ │ │ │ │ │ ├── MoshiVideoParser.kt
│ │ │ │ │ │ │ ├── ThreadLocalDelegate.kt
│ │ │ │ │ │ │ └── adapters
│ │ │ │ │ │ │ │ ├── CustomObjectDtoAdapter.kt
│ │ │ │ │ │ │ │ ├── DateAdapter.kt
│ │ │ │ │ │ │ │ └── internal
│ │ │ │ │ │ │ │ └── StreamDateFormatter.kt
│ │ │ │ │ │ ├── scope
│ │ │ │ │ │ │ ├── ClientScope.kt
│ │ │ │ │ │ │ ├── UserScope.kt
│ │ │ │ │ │ │ └── user
│ │ │ │ │ │ │ │ ├── UserId.kt
│ │ │ │ │ │ │ │ ├── UserIdentifier.kt
│ │ │ │ │ │ │ │ └── UserJob.kt
│ │ │ │ │ │ └── token
│ │ │ │ │ │ │ ├── CacheableTokenProvider.kt
│ │ │ │ │ │ │ ├── ConstantTokenProvider.kt
│ │ │ │ │ │ │ ├── TokenManager.kt
│ │ │ │ │ │ │ ├── TokenManagerImpl.kt
│ │ │ │ │ │ │ └── TokenProvider.kt
│ │ │ │ │ ├── coordinator
│ │ │ │ │ │ ├── CoordinatorSocket.kt
│ │ │ │ │ │ ├── CoordinatorSocketConnection.kt
│ │ │ │ │ │ ├── CoordinatorSocketStateService.kt
│ │ │ │ │ │ └── state
│ │ │ │ │ │ │ ├── RestartReason.kt
│ │ │ │ │ │ │ ├── VideoSocketConnectionType.kt
│ │ │ │ │ │ │ ├── VideoSocketState.kt
│ │ │ │ │ │ │ └── VideoSocketStateEvent.kt
│ │ │ │ │ ├── internal
│ │ │ │ │ │ ├── EventType.kt
│ │ │ │ │ │ └── HealthMonitor.kt
│ │ │ │ │ └── sfu
│ │ │ │ │ │ ├── SfuSocket.kt
│ │ │ │ │ │ ├── SfuSocketConnection.kt
│ │ │ │ │ │ ├── SfuSocketStateService.kt
│ │ │ │ │ │ └── state
│ │ │ │ │ │ ├── RestartReason.kt
│ │ │ │ │ │ ├── SfuSocketState.kt
│ │ │ │ │ │ └── SfuSocketStateEvent.kt
│ │ │ │ ├── sorting
│ │ │ │ │ ├── DefaultSortOrder.kt
│ │ │ │ │ └── SortedParticipantsState.kt
│ │ │ │ ├── sounds
│ │ │ │ │ ├── CallSoundPlayer.kt
│ │ │ │ │ └── RingingConfig.kt
│ │ │ │ └── utils
│ │ │ │ │ ├── AndroidUtils.kt
│ │ │ │ │ ├── AtomicUnitCall.kt
│ │ │ │ │ ├── CallClientUtils.kt
│ │ │ │ │ ├── DomainUtils.kt
│ │ │ │ │ ├── LatencyResult.kt
│ │ │ │ │ ├── ListUtils.kt
│ │ │ │ │ ├── NoiseCancellationUtils.kt
│ │ │ │ │ ├── RampValueUpAndDownHelper.kt
│ │ │ │ │ ├── SdpVersion.kt
│ │ │ │ │ ├── StateFlow.kt
│ │ │ │ │ ├── StringUtils.kt
│ │ │ │ │ ├── TokenUtils.kt
│ │ │ │ │ └── UserUtils.kt
│ │ │ │ ├── datastore
│ │ │ │ ├── delegate
│ │ │ │ │ └── StreamUserDataStore.kt
│ │ │ │ ├── model
│ │ │ │ │ └── StreamUserPreferences.kt
│ │ │ │ └── serializer
│ │ │ │ │ ├── EncryptedSerializer.kt
│ │ │ │ │ └── UserSerializer.kt
│ │ │ │ └── model
│ │ │ │ ├── Credentials.kt
│ │ │ │ ├── Device.kt
│ │ │ │ ├── StreamCallId.kt
│ │ │ │ ├── User.kt
│ │ │ │ ├── UserAudioLevel.kt
│ │ │ │ ├── UserDevices.kt
│ │ │ │ └── mapper
│ │ │ │ └── StreamCallCidMapper.kt
│ │ ├── proto
│ │ │ └── video
│ │ │ │ └── sfu
│ │ │ │ ├── event
│ │ │ │ ├── events.pb.go
│ │ │ │ ├── events.proto
│ │ │ │ └── events_vtproto.pb.go
│ │ │ │ ├── models
│ │ │ │ ├── models.pb.go
│ │ │ │ ├── models.pb.validate.go
│ │ │ │ ├── models.proto
│ │ │ │ └── models_vtproto.pb.go
│ │ │ │ └── signal_rpc
│ │ │ │ ├── signal.pb.go
│ │ │ │ ├── signal.proto
│ │ │ │ ├── signal.twirp.go
│ │ │ │ └── signal_vtproto.pb.go
│ │ └── res
│ │ │ ├── drawable
│ │ │ ├── stream_video_ic_call.xml
│ │ │ ├── stream_video_ic_cancel_screenshare.xml
│ │ │ ├── stream_video_ic_screenshare.xml
│ │ │ ├── stream_video_ic_user.xml
│ │ │ └── stream_video_ic_user_group.xml
│ │ │ ├── raw
│ │ │ ├── call_incoming_sound.mp3
│ │ │ └── call_outgoing_sound.mp3
│ │ │ └── values
│ │ │ ├── ids.xml
│ │ │ └── strings.xml
│ └── test
│ │ └── kotlin
│ │ └── io
│ │ └── getstream
│ │ └── video
│ │ └── android
│ │ └── core
│ │ ├── CallCrudTest.kt
│ │ ├── CallStateTest.kt
│ │ ├── CameraManagerTest.kt
│ │ ├── ClientAndAuthTest.kt
│ │ ├── MicrophoneManagerTest.kt
│ │ ├── SdpTest.kt
│ │ ├── SfuSocketStateEventTest.kt
│ │ ├── SpeakerManagerTest.kt
│ │ ├── StreamVideoBuilderTest.kt
│ │ ├── base
│ │ ├── DispatcherRule.kt
│ │ ├── IntegrationTestBase.kt
│ │ ├── IntegrationTestHelper.kt
│ │ ├── SocketTestBase.kt
│ │ ├── StreamTestLogger.kt
│ │ ├── TestBase.kt
│ │ └── auth
│ │ │ ├── GetAuthDataResponse.kt
│ │ │ └── StreamService.kt
│ │ ├── call
│ │ └── connection
│ │ │ ├── PublisherTest.kt
│ │ │ ├── StreamPeerConnectionFactoryTest.kt
│ │ │ ├── StreamPeerConnectionTest.kt
│ │ │ ├── transceivers
│ │ │ └── TransceiverCacheTest.kt
│ │ │ └── utils
│ │ │ └── VideoLayersTest.kt
│ │ ├── lifecycle
│ │ └── ConnectionPolicyLifecycleHandlerTest.kt
│ │ ├── notifications
│ │ └── internal
│ │ │ └── service
│ │ │ └── CallServiceConfigTest.kt
│ │ ├── permission
│ │ └── android
│ │ │ └── PermissionUtilitiesKtTest.kt
│ │ ├── reconnect
│ │ ├── ReconnectAttemptsCountTest.kt
│ │ └── ReconnectSessionIdTest.kt
│ │ ├── rtc
│ │ ├── JoinCallTest.kt
│ │ ├── RtcSessionTest.kt
│ │ └── RtcSessionTest2.kt
│ │ ├── socket
│ │ └── common
│ │ │ └── SocketConnectionPolicyTest.kt
│ │ ├── stories
│ │ ├── AudioRoomTest.kt
│ │ ├── ModerationTest.kt
│ │ └── RingTest.kt
│ │ ├── token
│ │ ├── CacheableTokenProviderTest.kt
│ │ ├── FakeTokenManager.kt
│ │ └── FakeTokenProvider.kt
│ │ └── utils
│ │ ├── AtomicUnitCallTest.kt
│ │ ├── RampValueUpAndDownHelperTest.kt
│ │ ├── TestUtils.kt
│ │ └── TokenUtilsTest.kt
└── todo.md
├── stream-video-android-filters-video
├── .gitignore
├── api
│ └── stream-video-android-filters-video.api
├── build.gradle.kts
├── consumer-rules.pro
├── libs
│ └── renderscript-toolkit.aar
├── proguard-rules.pro
└── src
│ └── main
│ ├── AndroidManifest.xml
│ └── kotlin
│ └── io
│ └── getstream
│ └── video
│ └── android
│ └── filters
│ └── video
│ ├── BlurredBackgroundVideoFilter.kt
│ ├── FilterUtils.kt
│ └── VirtualBackgroundVideoFilter.kt
├── stream-video-android-previewdata
├── .gitignore
├── api
│ └── stream-video-android-previewdata.api
├── build.gradle.kts
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── baseline-prof.txt
│ ├── generated
│ └── baselineProfiles
│ │ └── baseline-prof.txt
│ └── kotlin
│ └── io
│ └── getstream
│ └── video
│ └── android
│ └── mock
│ └── StreamPreviewDataUtils.kt
├── stream-video-android-ui-compose
├── .gitignore
├── api
│ └── stream-video-android-ui-compose.api
├── build.gradle.kts
├── datastore
│ └── proto_stream_video_user.pb
├── libs
│ └── renderscript-toolkit.aar
└── src
│ ├── main
│ ├── AndroidManifest.xml
│ ├── baseline-prof.txt
│ ├── generated
│ │ └── baselineProfiles
│ │ │ └── baseline-prof.txt
│ ├── kotlin
│ │ └── io
│ │ │ └── getstream
│ │ │ └── video
│ │ │ └── android
│ │ │ └── compose
│ │ │ ├── lifecycle
│ │ │ └── MediaPiPLifecycle.kt
│ │ │ ├── permission
│ │ │ ├── CallPermissions.kt
│ │ │ ├── LaunchPermissionRequest.kt
│ │ │ ├── SinglePermission.kt
│ │ │ └── VideoPermissionsState.kt
│ │ │ ├── pip
│ │ │ └── PictureInPicture.kt
│ │ │ ├── state
│ │ │ └── ui
│ │ │ │ ├── internal
│ │ │ │ ├── CallParticipantInfoMode.kt
│ │ │ │ └── CallParticipantsInfoOption.kt
│ │ │ │ └── participants
│ │ │ │ └── ParticipantInfoAction.kt
│ │ │ ├── theme
│ │ │ ├── StreamColors.kt
│ │ │ ├── StreamDimens.kt
│ │ │ ├── StreamRippleConfiguration.kt
│ │ │ ├── StreamShapes.kt
│ │ │ ├── StreamTypography.kt
│ │ │ └── VideoTheme.kt
│ │ │ ├── ui
│ │ │ ├── ComposeStreamCallActivity.kt
│ │ │ ├── StreamCallActivityComposeDelegate.kt
│ │ │ ├── StreamCallActivityComposeUi.kt
│ │ │ ├── components
│ │ │ │ ├── audio
│ │ │ │ │ ├── AudioAppBar.kt
│ │ │ │ │ ├── AudioControlActions.kt
│ │ │ │ │ ├── AudioParticipantsGrid.kt
│ │ │ │ │ ├── AudioRendererStyle.kt
│ │ │ │ │ ├── AudioRoomContent.kt
│ │ │ │ │ └── ParticipantAudio.kt
│ │ │ │ ├── avatar
│ │ │ │ │ ├── Avatar.kt
│ │ │ │ │ ├── InitialsAvatar.kt
│ │ │ │ │ ├── LocalAvatarPreviewProvider.kt
│ │ │ │ │ ├── OnlineIndicator.kt
│ │ │ │ │ ├── OnlineIndicatorAlignment.kt
│ │ │ │ │ ├── UserAvatar.kt
│ │ │ │ │ └── UserAvatarBackground.kt
│ │ │ │ ├── background
│ │ │ │ │ └── CallBackground.kt
│ │ │ │ ├── base
│ │ │ │ │ ├── Badge.kt
│ │ │ │ │ ├── Container.kt
│ │ │ │ │ ├── Dialogs.kt
│ │ │ │ │ ├── InputFields.kt
│ │ │ │ │ ├── StreamButton.kt
│ │ │ │ │ └── styling
│ │ │ │ │ │ ├── Badge.kt
│ │ │ │ │ │ ├── CompositeStyleProvider.kt
│ │ │ │ │ │ ├── DialogStyle.kt
│ │ │ │ │ │ ├── StreamButtonDrawableStyle.kt
│ │ │ │ │ │ ├── StreamButtonStyle.kt
│ │ │ │ │ │ ├── StreamIconStyle.kt
│ │ │ │ │ │ ├── StreamStyle.kt
│ │ │ │ │ │ ├── StreamTextFieldStyle.kt
│ │ │ │ │ │ ├── TextStyles.kt
│ │ │ │ │ │ └── Utils.kt
│ │ │ │ ├── call
│ │ │ │ │ ├── CallAppBar.kt
│ │ │ │ │ ├── activecall
│ │ │ │ │ │ ├── AudioCallContent.kt
│ │ │ │ │ │ ├── CallContent.kt
│ │ │ │ │ │ └── internal
│ │ │ │ │ │ │ ├── DefaultPermissionHandler.kt
│ │ │ │ │ │ │ └── InviteUsersDialog.kt
│ │ │ │ │ ├── controls
│ │ │ │ │ │ ├── ControlActions.kt
│ │ │ │ │ │ └── actions
│ │ │ │ │ │ │ ├── AcceptCallAction.kt
│ │ │ │ │ │ │ ├── CancelCallAction.kt
│ │ │ │ │ │ │ ├── ChatDialogAction.kt
│ │ │ │ │ │ │ ├── ClosedCaptionsToggleAction.kt
│ │ │ │ │ │ │ ├── ControlActionsBuilder.kt
│ │ │ │ │ │ │ ├── DeclineCallAction.kt
│ │ │ │ │ │ │ ├── FlipCameraAction.kt
│ │ │ │ │ │ │ ├── GenericActions.kt
│ │ │ │ │ │ │ ├── LeaveCallAction.kt
│ │ │ │ │ │ │ ├── ScreenShareToggleAction.kt
│ │ │ │ │ │ │ ├── SettingsAction.kt
│ │ │ │ │ │ │ ├── ToggleCameraAction.kt
│ │ │ │ │ │ │ ├── ToggleMicrophoneAction.kt
│ │ │ │ │ │ │ └── ToggleSpeakerphoneAction.kt
│ │ │ │ │ ├── diagnostics
│ │ │ │ │ │ └── CallDiagnosticsContent.kt
│ │ │ │ │ ├── lobby
│ │ │ │ │ │ ├── CallLobby.kt
│ │ │ │ │ │ └── LobbyControlsActions.kt
│ │ │ │ │ ├── pinning
│ │ │ │ │ │ └── ParticipantActions.kt
│ │ │ │ │ ├── renderer
│ │ │ │ │ │ ├── FloatingParticipantVideo.kt
│ │ │ │ │ │ ├── ParticipantVideo.kt
│ │ │ │ │ │ ├── ParticipantsLayout.kt
│ │ │ │ │ │ ├── ParticipantsRegularGrid.kt
│ │ │ │ │ │ ├── ParticipantsScreenSharing.kt
│ │ │ │ │ │ ├── ParticipantsSpotlight.kt
│ │ │ │ │ │ ├── VideoRendererStyle.kt
│ │ │ │ │ │ └── internal
│ │ │ │ │ │ │ ├── Common.kt
│ │ │ │ │ │ │ ├── InternalLocalComposite.kt
│ │ │ │ │ │ │ ├── LandscapeScreenSharingVideoRenderer.kt
│ │ │ │ │ │ │ ├── LandscapeVideoRenderer.kt
│ │ │ │ │ │ │ ├── LazyColumnVideoRenderer.kt
│ │ │ │ │ │ │ ├── LazyRowVideoRenderer.kt
│ │ │ │ │ │ │ ├── OrientationVideoRenderer.kt
│ │ │ │ │ │ │ ├── PortraitScreenSharingVideoRenderer.kt
│ │ │ │ │ │ │ ├── PortraitVideoRenderer.kt
│ │ │ │ │ │ │ ├── ScreenShareTooltip.kt
│ │ │ │ │ │ │ ├── ScreenShareVideoRenderer.kt
│ │ │ │ │ │ │ └── SpotlightVideorenderer.kt
│ │ │ │ │ └── ringing
│ │ │ │ │ │ ├── RingingCallContent.kt
│ │ │ │ │ │ ├── incomingcall
│ │ │ │ │ │ ├── IncomingCallContent.kt
│ │ │ │ │ │ ├── IncomingCallControls.kt
│ │ │ │ │ │ └── IncomingCallDetails.kt
│ │ │ │ │ │ └── outgoingcall
│ │ │ │ │ │ ├── OutgoingCallContent.kt
│ │ │ │ │ │ ├── OutgoingCallControls.kt
│ │ │ │ │ │ └── OutgoingCallDetails.kt
│ │ │ │ ├── indicator
│ │ │ │ │ ├── AudioVolumeIndicator.kt
│ │ │ │ │ ├── GenericIndicator.kt
│ │ │ │ │ ├── MicrophoneIndicator.kt
│ │ │ │ │ ├── NetworkQualityIndicator.kt
│ │ │ │ │ └── SoundIndicator.kt
│ │ │ │ ├── livestream
│ │ │ │ │ ├── LivestreamBackStage.kt
│ │ │ │ │ ├── LivestreamPlayer.kt
│ │ │ │ │ ├── LivestreamPlayerOverlay.kt
│ │ │ │ │ └── LivestreamRenderer.kt
│ │ │ │ ├── participants
│ │ │ │ │ ├── CallParticipantsInfoMenu.kt
│ │ │ │ │ ├── ParticipantAvatars.kt
│ │ │ │ │ └── internal
│ │ │ │ │ │ ├── CallParticipantListAppBar.kt
│ │ │ │ │ │ ├── CallParticipantsInfoActions.kt
│ │ │ │ │ │ ├── CallParticipantsList.kt
│ │ │ │ │ │ ├── InviteUserList.kt
│ │ │ │ │ │ └── ParticipantInformation.kt
│ │ │ │ ├── plugins
│ │ │ │ │ ├── BlurTransformationPlugin.kt
│ │ │ │ │ ├── RememberBlurPainter.kt
│ │ │ │ │ └── TransformationPainter.kt
│ │ │ │ └── video
│ │ │ │ │ ├── VideoRenderer.kt
│ │ │ │ │ ├── VideoRendererView.kt
│ │ │ │ │ ├── VideoScalingType.kt
│ │ │ │ │ └── config
│ │ │ │ │ └── VideoRendererConfig.kt
│ │ │ └── extensions
│ │ │ │ └── ModifierExtensions.kt
│ │ │ └── utils
│ │ │ ├── ImageUtils.kt
│ │ │ └── Resources.kt
│ └── res
│ │ ├── drawable
│ │ └── example.webp
│ │ └── values
│ │ └── strings.xml
│ └── test
│ ├── kotlin
│ └── io
│ │ └── getstream
│ │ └── video
│ │ └── android
│ │ └── compose
│ │ ├── AudioCallContentTest.kt
│ │ ├── AudioRoomTest.kt
│ │ ├── AvatarTest.kt
│ │ ├── BaseComponentsTest.kt
│ │ ├── CallComponentsPortraitTest.kt
│ │ ├── CallContentTest.kt
│ │ ├── CallControlsTest.kt
│ │ ├── CallLobbyTest.kt
│ │ ├── IndicatorsTest.kt
│ │ ├── LivestreamTest.kt
│ │ ├── ParticipantLandscapeTest.kt
│ │ ├── ParticipantsPortraitTest.kt
│ │ └── base
│ │ └── BaseComposeTest.kt
│ └── snapshots
│ └── images
│ ├── io.getstream.video.android.compose_AudioCallContentTest_snapshot AudioCallContent in default state.png
│ ├── io.getstream.video.android.compose_AudioCallContentTest_snapshot AudioCallContent without header.png
│ ├── io.getstream.video.android.compose_AudioCallContentTest_snapshot AudioOnlyCallContent in default state.png
│ ├── io.getstream.video.android.compose_AudioCallContentTest_snapshot AudioOnlyCallContent without header.png
│ ├── io.getstream.video.android.compose_AudioRoomTest_snapshot AudioAppBar composable.png
│ ├── io.getstream.video.android.compose_AudioRoomTest_snapshot AudioControlActions composable.png
│ ├── io.getstream.video.android.compose_AudioRoomTest_snapshot AudioParticipantsGrid composable.png
│ ├── io.getstream.video.android.compose_AudioRoomTest_snapshot AudioRoom DarkMode composable.png
│ ├── io.getstream.video.android.compose_AudioRoomTest_snapshot AudioRoom composable.png
│ ├── io.getstream.video.android.compose_AvatarTest_snapshot AvatarInitial composable.png
│ ├── io.getstream.video.android.compose_AvatarTest_snapshot UserAvatar composable.png
│ ├── io.getstream.video.android.compose_CallBackgroundTest_snapshot CallBackground composable.png
│ ├── io.getstream.video.android.compose_CallComponentsLandscapeTest_snapshot LandscapeCallControls composable.png
│ ├── io.getstream.video.android.compose_CallComponentsPortraitTest_snapshot CallAppBar composable.png
│ ├── io.getstream.video.android.compose_CallComponentsPortraitTest_snapshot CallControls composable.png
│ ├── io.getstream.video.android.compose_CallComponentsPortraitTest_snapshot ParticipantIndicatorIcon composable.png
│ ├── io.getstream.video.android.compose_CallComponentsPortraitTest_snapshot RegularCallControls composable.png
│ ├── io.getstream.video.android.compose_CallContainerLandscapeTest_snapshot CallContent with multiple participants composable.png
│ ├── io.getstream.video.android.compose_CallContainerPortraitTest_snapshot CallContent with multiple participants composable.png
│ ├── io.getstream.video.android.compose_CallContentTest_snapshot CallContent with multiple participants composable.png
│ ├── io.getstream.video.android.compose_CallContentTest_snapshot IncomingCallContent Video type with multiple participants composable.png
│ ├── io.getstream.video.android.compose_CallContentTest_snapshot IncomingCallContent with minimum parameters.png
│ ├── io.getstream.video.android.compose_CallContentTest_snapshot IncomingCallContent with one participant composable.png
│ ├── io.getstream.video.android.compose_CallContentTest_snapshot IncomingCallContentDetails Audio composable.png
│ ├── io.getstream.video.android.compose_CallContentTest_snapshot IncomingCallContentDetails Video composable.png
│ ├── io.getstream.video.android.compose_CallContentTest_snapshot IncomingCallOptions composable.png
│ ├── io.getstream.video.android.compose_CallContentTest_snapshot OutgoingCallContent with minimum parameters and audio type.png
│ ├── io.getstream.video.android.compose_CallContentTest_snapshot OutgoingCallContent with minimum parameters and video type.png
│ ├── io.getstream.video.android.compose_CallContentTest_snapshot OutgoingCallContent with multiple participants composable.png
│ ├── io.getstream.video.android.compose_CallContentTest_snapshot OutgoingCallContent with one participant composable.png
│ ├── io.getstream.video.android.compose_CallContentTest_snapshot OutgoingCallDetails Audio composable.png
│ ├── io.getstream.video.android.compose_CallContentTest_snapshot OutgoingCallDetails Video composable.png
│ ├── io.getstream.video.android.compose_CallContentTest_snapshot OutgoingCallOptions composable.png
│ ├── io.getstream.video.android.compose_CallControlsTest_snapshot CallControls Actions composable.png
│ ├── io.getstream.video.android.compose_CallControlsTest_snapshot CallControls composable.png
│ ├── io.getstream.video.android.compose_CallLobbyTest_snapshot CallLobby composable.png
│ ├── io.getstream.video.android.compose_IndicatorsTest_snapshot ActiveSoundLevels composable.png
│ ├── io.getstream.video.android.compose_IndicatorsTest_snapshot Connection ConnectionQualityIndicator composable.png
│ ├── io.getstream.video.android.compose_IndicatorsTest_snapshot Connection ParticipantLabel composable.png
│ ├── io.getstream.video.android.compose_IndicatorsTest_snapshot SoundIndicator composable.png
│ ├── io.getstream.video.android.compose_LivestreamTest_snapshot Livestream Player Overlay composable.png
│ ├── io.getstream.video.android.compose_LivestreamTest_snapshot Livestream Player composable.png
│ ├── io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot LandscapeParticipants1 composable.png
│ ├── io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot LandscapeParticipants2 composable.png
│ ├── io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot LandscapeParticipants3 composable.png
│ ├── io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot LandscapeParticipants4 composable.png
│ ├── io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot LandscapeParticipants5 composable.png
│ ├── io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot LandscapeParticipants6 composable.png
│ ├── io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot LandscapeScreenSharingContent for myself composable.png
│ ├── io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot LandscapeScreenSharingContent for other participant composable.png
│ ├── io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot ParticipantsRow composable.png
│ ├── io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot CallParticipant a local call composable.png
│ ├── io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot CallParticipant a remote call composable.png
│ ├── io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot CallParticipantsInfoAppBar composable.png
│ ├── io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot CallParticipantsInfoOptions composable.png
│ ├── io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot CallParticipantsList composable.png
│ ├── io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot InviteUserList composable.png
│ ├── io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot LocalVideoContent composable.png
│ ├── io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot ParticipantAvatars composable.png
│ ├── io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot ParticipantInformation composable.png
│ ├── io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot ParticipantVideo composable.png
│ ├── io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot ParticipantsColumn composable.png
│ ├── io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot PortraitParticipants1 composable.png
│ ├── io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot PortraitParticipants2 composable.png
│ ├── io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot PortraitParticipants3 composable.png
│ ├── io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot PortraitParticipants4 composable.png
│ ├── io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot PortraitParticipants5 composable.png
│ ├── io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot PortraitParticipants6 composable.png
│ ├── io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot PortraitScreenSharingContent for myself composable.png
│ └── io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot PortraitScreenSharingContent for other participant composable.png
├── stream-video-android-ui-core
├── api
│ └── stream-video-android-ui-core.api
├── build.gradle.kts
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── baseline-prof.txt
│ ├── generated
│ └── baselineProfiles
│ │ └── baseline-prof.txt
│ ├── kotlin
│ └── io
│ │ └── getstream
│ │ └── video
│ │ └── android
│ │ └── ui
│ │ └── common
│ │ ├── AbstractCallActivity.kt
│ │ ├── StreamActivityUiDelegate.kt
│ │ ├── StreamCallActivity.kt
│ │ ├── StreamCallActivityConfiguration.kt
│ │ ├── notification
│ │ └── AbstractNotificationActivity.kt
│ │ ├── permission
│ │ ├── PermissionManager.kt
│ │ └── PermissionManagerProvider.kt
│ │ ├── renderer
│ │ └── StreamVideoTextureViewRenderer.kt
│ │ ├── util
│ │ ├── ColorUtils.kt
│ │ ├── ParticipantsText.kt
│ │ ├── Resources.kt
│ │ ├── StateFlow.kt
│ │ └── StreamCallActivityDelicateApi.kt
│ │ └── view
│ │ ├── ParticipantContentView.kt
│ │ └── ParticipantItemView.kt
│ └── res
│ ├── drawable
│ ├── stream_video_call_sample.webp
│ ├── stream_video_ic_arrow_back.xml
│ ├── stream_video_ic_call.xml
│ ├── stream_video_ic_call_end.xml
│ ├── stream_video_ic_camera_flip.xml
│ ├── stream_video_ic_close.xml
│ ├── stream_video_ic_fullscreen.xml
│ ├── stream_video_ic_fullscreen_exit.xml
│ ├── stream_video_ic_join_call.xml
│ ├── stream_video_ic_landscape_mode.xml
│ ├── stream_video_ic_leave.xml
│ ├── stream_video_ic_live.xml
│ ├── stream_video_ic_message.xml
│ ├── stream_video_ic_mic_off.xml
│ ├── stream_video_ic_mic_on.xml
│ ├── stream_video_ic_options.xml
│ ├── stream_video_ic_participants.xml
│ ├── stream_video_ic_play.xml
│ ├── stream_video_ic_portrait_mode.xml
│ ├── stream_video_ic_preview_avatar.xml
│ ├── stream_video_ic_reaction.xml
│ ├── stream_video_ic_screensharing.xml
│ ├── stream_video_ic_selected.xml
│ ├── stream_video_ic_speaker_off.xml
│ ├── stream_video_ic_speaker_on.xml
│ ├── stream_video_ic_videocam_off.xml
│ └── stream_video_ic_videocam_on.xml
│ ├── layout
│ └── stream_video_content_participant.xml
│ ├── values-night
│ └── colors.xml
│ └── values
│ ├── colors-legacy.xml
│ ├── colors.xml
│ ├── dimens-legacy.xml
│ ├── dimens.xml
│ └── strings.xml
├── stream-video-android-ui-xml
├── api
│ └── stream-video-android-ui-xml.api
├── build.gradle.kts
├── lint-baseline.xml
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── baseline-prof.txt
│ ├── generated
│ └── baselineProfiles
│ │ └── baseline-prof.txt
│ ├── kotlin
│ └── io
│ │ └── getstream
│ │ └── video
│ │ └── android
│ │ └── xml
│ │ ├── VideoUI.kt
│ │ ├── binding
│ │ ├── CallAppBarBinding.kt
│ │ ├── CallContainterViewBinding.kt
│ │ ├── CallControlsViewBinding.kt
│ │ ├── CallParticipantGridViewBinding.kt
│ │ ├── CallParticipantListViewBinding.kt
│ │ ├── CallParticipantViewBinding.kt
│ │ ├── CallViewBinding.kt
│ │ ├── FloatingParticipantViewBinding.kt
│ │ ├── IncomingCallViewBinding.kt
│ │ ├── OutgoingCallViewBinding.kt
│ │ ├── PictureInPictureViewBinding.kt
│ │ └── ScreenShareViewBinding.kt
│ │ ├── font
│ │ ├── TextStyle.kt
│ │ ├── VideoFonts.kt
│ │ ├── VideoFontsImpl.kt
│ │ └── VideoStyle.kt
│ │ ├── imageloading
│ │ ├── CoilDisposable.kt
│ │ ├── CoilStreamImageLoader.kt
│ │ ├── DefaultStreamCoilImageLoader.kt
│ │ ├── ImageHeadersProvider.kt
│ │ ├── RoundedCornersTransformation.kt
│ │ ├── StreamCoil.kt
│ │ ├── StreamImageLoader.kt
│ │ └── StreamImageLoaderFactory.kt
│ │ ├── initializer
│ │ └── VideoUIInitializer.kt
│ │ ├── state
│ │ └── CallDeviceState.kt
│ │ ├── utils
│ │ ├── Disposable.kt
│ │ ├── LazyVarDelegate.kt
│ │ ├── OrientationChangeListener.kt
│ │ └── extensions
│ │ │ ├── ConstraintLayout.kt
│ │ │ ├── Context.kt
│ │ │ ├── ImageUtils.kt
│ │ │ ├── Int.kt
│ │ │ ├── TypedArray.kt
│ │ │ ├── View.kt
│ │ │ └── ViewGroup.kt
│ │ ├── viewmodel
│ │ ├── CallViewModel.kt
│ │ ├── CallViewModelFactory.kt
│ │ └── CallViewModelFactoryProvider.kt
│ │ └── widget
│ │ ├── appbar
│ │ ├── CallAppBarContent.kt
│ │ ├── CallAppBarStyle.kt
│ │ ├── CallAppBarView.kt
│ │ └── internal
│ │ │ ├── DefaultCallAppBarCenterContent.kt
│ │ │ ├── DefaultCallAppBarLeadingContent.kt
│ │ │ └── DefaultCallAppBarTrailingContent.kt
│ │ ├── avatar
│ │ ├── AvatarShape.kt
│ │ ├── AvatarStyle.kt
│ │ ├── AvatarView.kt
│ │ └── internal
│ │ │ └── AvatarPlaceholderDrawable.kt
│ │ ├── call
│ │ ├── CallView.kt
│ │ └── CallViewStyle.kt
│ │ ├── callcontainer
│ │ ├── CallContainerStyle.kt
│ │ └── CallContainerView.kt
│ │ ├── calldetails
│ │ ├── CallBackgroundView.kt
│ │ ├── CallDetailsStyle.kt
│ │ └── CallDetailsView.kt
│ │ ├── control
│ │ ├── CallControlItem.kt
│ │ ├── CallControlsStyle.kt
│ │ ├── CallControlsView.kt
│ │ ├── ControlButtonStyle.kt
│ │ └── ControlButtonView.kt
│ │ ├── incoming
│ │ ├── IncomingCallStyle.kt
│ │ └── IncomingCallView.kt
│ │ ├── outgoing
│ │ ├── OutgoingCallStyle.kt
│ │ └── OutgoingCallView.kt
│ │ ├── participant
│ │ ├── CallParticipantLabelAlignment.kt
│ │ ├── CallParticipantStyle.kt
│ │ ├── CallParticipantView.kt
│ │ ├── FloatingParticipantView.kt
│ │ ├── PictureInPictureStyle.kt
│ │ ├── PictureInPictureView.kt
│ │ ├── RendererInitializer.kt
│ │ └── internal
│ │ │ ├── CallParticipantsGridView.kt
│ │ │ └── CallParticipantsListView.kt
│ │ ├── renderer
│ │ └── VideoRenderer.kt
│ │ ├── screenshare
│ │ ├── ScreenShareStyle.kt
│ │ └── ScreenShareView.kt
│ │ ├── transformer
│ │ └── TransformStyle.kt
│ │ └── view
│ │ ├── CallCardView.kt
│ │ ├── CallConstraintLayout.kt
│ │ └── JobHolder.kt
│ ├── res
│ ├── drawable
│ │ ├── stream_video_bg_active_call_participant.xml
│ │ ├── stream_video_bg_call.jpg
│ │ ├── stream_video_bg_call_control_option.xml
│ │ ├── stream_video_bg_call_option.xml
│ │ ├── stream_video_bg_call_participant_name.xml
│ │ ├── stream_video_rect_active_speaker.xml
│ │ ├── stream_video_rect_controls.xml
│ │ └── stream_video_rect_controls_landscape.xml
│ ├── layout
│ │ ├── stream_video_activity_call.xml
│ │ ├── stream_video_item_participant.xml
│ │ ├── stream_video_view_call_app_bar.xml
│ │ ├── stream_video_view_call_details.xml
│ │ ├── stream_video_view_call_participant.xml
│ │ ├── stream_video_view_control_button.xml
│ │ ├── stream_video_view_floating_participant.xml
│ │ ├── stream_video_view_incoming_call.xml
│ │ ├── stream_video_view_outgoing_call.xml
│ │ └── stream_video_view_screen_share.xml
│ ├── menu
│ │ └── stream_video_call_menu.xml
│ └── values
│ │ ├── stream_video_attrs.xml
│ │ ├── stream_video_attrs_avatar_view.xml
│ │ ├── stream_video_attrs_call_app_bar.xml
│ │ ├── stream_video_attrs_call_container_view.xml
│ │ ├── stream_video_attrs_call_content_view.xml
│ │ ├── stream_video_attrs_call_controls_view.xml
│ │ ├── stream_video_attrs_call_details_view.xml
│ │ ├── stream_video_attrs_call_participant_view.xml
│ │ ├── stream_video_attrs_control_button.xml
│ │ ├── stream_video_attrs_incoming_call_view.xml
│ │ ├── stream_video_attrs_outgoing_call_view.xml
│ │ ├── stream_video_attrs_picture_in_picture_view.xml
│ │ ├── stream_video_attrs_screen_share.xml
│ │ ├── stream_video_colors.xml
│ │ └── styles.xml
│ └── startup-prof.txt
└── tutorials
├── tutorial-audio
├── .gitignore
├── .idea
│ ├── .gitignore
│ ├── gradle.xml
│ └── misc.xml
├── build.gradle.kts
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── kotlin
│ └── io
│ │ └── getstream
│ │ └── video
│ │ └── android
│ │ └── tutorial
│ │ └── audio
│ │ └── MainActivity.kt
│ └── res
│ ├── drawable
│ ├── ic_launcher_background.xml
│ └── ic_launcher_foreground.xml
│ ├── mipmap-anydpi-v26
│ ├── ic_launcher.xml
│ └── ic_launcher_round.xml
│ ├── mipmap-hdpi
│ ├── ic_launcher.webp
│ └── ic_launcher_round.webp
│ ├── mipmap-mdpi
│ ├── ic_launcher.webp
│ └── ic_launcher_round.webp
│ ├── mipmap-xhdpi
│ ├── ic_launcher.webp
│ └── ic_launcher_round.webp
│ ├── mipmap-xxhdpi
│ ├── ic_launcher.webp
│ └── ic_launcher_round.webp
│ ├── mipmap-xxxhdpi
│ ├── ic_launcher.webp
│ └── ic_launcher_round.webp
│ ├── values
│ ├── colors.xml
│ ├── strings.xml
│ └── themes.xml
│ └── xml
│ ├── backup_rules.xml
│ └── data_extraction_rules.xml
├── tutorial-livestream
├── .gitignore
├── .idea
│ ├── .gitignore
│ ├── gradle.xml
│ ├── misc.xml
│ └── workspace.xml
├── build.gradle.kts
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── kotlin
│ └── io
│ │ └── getstream
│ │ └── video
│ │ └── android
│ │ └── tutorial
│ │ └── livestream
│ │ ├── LiveGuest.kt
│ │ ├── LiveHost.kt
│ │ ├── LiveMain.kt
│ │ ├── LiveNavHost.kt
│ │ ├── LiveStreamNotificationHandler.kt
│ │ ├── MainActivity.kt
│ │ └── ui
│ │ ├── LiveButton.kt
│ │ ├── LiveLabel.kt
│ │ └── TimeLabel.kt
│ └── res
│ ├── drawable-hdpi
│ └── getstream_mountain.png
│ ├── drawable
│ ├── ic_launcher_background.xml
│ └── ic_launcher_foreground.xml
│ ├── mipmap-anydpi-v26
│ ├── ic_launcher.xml
│ └── ic_launcher_round.xml
│ ├── mipmap-hdpi
│ ├── ic_launcher.webp
│ └── ic_launcher_round.webp
│ ├── mipmap-mdpi
│ ├── ic_launcher.webp
│ └── ic_launcher_round.webp
│ ├── mipmap-xhdpi
│ ├── ic_launcher.webp
│ └── ic_launcher_round.webp
│ ├── mipmap-xxhdpi
│ ├── ic_launcher.webp
│ └── ic_launcher_round.webp
│ ├── mipmap-xxxhdpi
│ ├── ic_launcher.webp
│ └── ic_launcher_round.webp
│ ├── values
│ ├── colors.xml
│ ├── strings.xml
│ └── themes.xml
│ └── xml
│ ├── backup_rules.xml
│ └── data_extraction_rules.xml
├── tutorial-ringing
├── .gitignore
├── build.gradle.kts
├── google-services.json
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── kotlin
│ └── io
│ │ └── getstream
│ │ └── video
│ │ └── android
│ │ └── tutorial
│ │ └── ringing
│ │ ├── BusyCallActivity.kt
│ │ ├── CustomCallActivity.kt
│ │ ├── CustomNotificationHandler.kt
│ │ ├── MainActivity.kt
│ │ ├── RingingApp.kt
│ │ └── VideoCallActivity.kt
│ └── res
│ ├── drawable
│ ├── ic_launcher_background.xml
│ ├── ic_launcher_foreground.xml
│ └── round_call_missed_24.xml
│ ├── mipmap-anydpi-v26
│ ├── ic_launcher.xml
│ └── ic_launcher_round.xml
│ ├── mipmap-hdpi
│ ├── ic_launcher.webp
│ └── ic_launcher_round.webp
│ ├── mipmap-mdpi
│ ├── ic_launcher.webp
│ └── ic_launcher_round.webp
│ ├── mipmap-xhdpi
│ ├── ic_launcher.webp
│ └── ic_launcher_round.webp
│ ├── mipmap-xxhdpi
│ ├── ic_launcher.webp
│ └── ic_launcher_round.webp
│ ├── mipmap-xxxhdpi
│ ├── ic_launcher.webp
│ └── ic_launcher_round.webp
│ ├── values
│ ├── colors.xml
│ ├── strings.xml
│ └── themes.xml
│ └── xml
│ ├── backup_rules.xml
│ ├── data_extraction_rules.xml
│ └── network_security_config.xml
└── tutorial-video
├── .gitignore
├── build.gradle.kts
└── src
└── main
├── AndroidManifest.xml
├── kotlin
└── io
│ └── getstream
│ └── video
│ └── android
│ └── tutorial
│ └── video
│ ├── MainActivity.kt
│ ├── MainActivity2.kt
│ └── MainActivity3.kt
└── res
├── drawable
├── ic_launcher_background.xml
└── ic_launcher_foreground.xml
├── mipmap-anydpi-v26
├── ic_launcher.xml
└── ic_launcher_round.xml
├── mipmap-hdpi
├── ic_launcher.webp
└── ic_launcher_round.webp
├── mipmap-mdpi
├── ic_launcher.webp
└── ic_launcher_round.webp
├── mipmap-xhdpi
├── ic_launcher.webp
└── ic_launcher_round.webp
├── mipmap-xxhdpi
├── ic_launcher.webp
└── ic_launcher_round.webp
├── mipmap-xxxhdpi
├── ic_launcher.webp
└── ic_launcher_round.webp
├── values
├── colors.xml
├── strings.xml
└── themes.xml
└── xml
├── backup_rules.xml
└── data_extraction_rules.xml
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 | [*]
3 | # Most of the standard properties are supported
4 | max_line_length=100
5 |
6 | # don't use wildcard for Java/Kotlin imports
7 | [*.{java,kt}]
8 | wildcard_import_limit = 999
9 | ij_kotlin_name_count_to_use_star_import = 999
10 | ij_kotlin_name_count_to_use_star_import_for_members = 999
--------------------------------------------------------------------------------
/.git-blame-ignore-revs:
--------------------------------------------------------------------------------
1 | # Bump spotless to 6.20.0
2 | ddb1428bb7dda236be6033504c69a8ead3a677ea
3 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/android_task.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Android Video SDK task
3 | about: Create a new task for the Android Video SDK.
4 | title: ''
5 | labels: core, xml, compose, starter-kit, sample-app
6 | assignees: ''
7 | ---
8 |
9 | ```
10 | Note: For labels, choose the area of our SDK to which this task applies to. Once you've chosen the area, add the corresponding labels.
11 |
12 | After that, remove the rest of the labels, as well as this comment!
13 | ```
14 |
15 | ### Context & proposal
16 |
17 | TODO - Describe what this task is about and why we need to support it.
18 |
19 | ### Acceptance criteria
20 |
21 | To accept this task we need to complete the following items:
22 |
23 | - [ ] TODO - Add items to complete within this task.
--------------------------------------------------------------------------------
/.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 | **SDK version**
14 | - x.x.x
15 |
16 | **To Reproduce**
17 | Steps to reproduce the behavior:
18 | 1. Go to '...'
19 | 2. Click on '....'
20 | 3. Scroll down to '....'
21 | 4. See error
22 |
23 | **Expected behavior**
24 | A clear and concise description of what you expected to happen.
25 |
26 | **Device:**
27 | - Vendor and model: [e.g. Samsung S8]
28 | - Android version: [e.g. 9]
29 |
30 | **Screenshots**
31 | If applicable, add screenshots to help explain your problem.
32 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: true
2 | contact_links:
3 | - name: Ask a question
4 | url: https://github.com/GetStream/stream-video-android/discussions
5 | about: If you just have a question, please open a discussion instead of an issue.
6 |
--------------------------------------------------------------------------------
/.github/actions/setup-node/action.yml:
--------------------------------------------------------------------------------
1 | name: 'Setup Node'
2 | description: 'Setup Node'
3 |
4 | inputs:
5 | node-version:
6 | description: The version of Node.js to use
7 | required: false
8 | default: '16'
9 |
10 | runs:
11 | using: 'composite'
12 | steps:
13 | - name: Setup Node
14 | uses: actions/setup-node@v3
15 | with:
16 | node-version: ${{ inputs.node-version }}
17 | registry-url: https://registry.npmjs.org
18 |
--------------------------------------------------------------------------------
/.github/release.yaml:
--------------------------------------------------------------------------------
1 | changelog:
2 | exclude:
3 | labels:
4 | - "pr:ignore-for-release"
5 | authors:
6 | - "github-actions[bot]"
7 | - "stream-public-bot"
8 | categories:
9 | - title: Breaking Changes 🛠
10 | labels:
11 | - "pr:breaking-change"
12 | - title: New Features 🎉
13 | labels:
14 | - "pr:new-feature"
15 | - title: Bug Fixes 🐛
16 | labels:
17 | - "pr:bug"
18 | - title: Improvements ✨
19 | labels:
20 | - "pr:improvement"
21 | - title: Documentation 📚
22 | labels:
23 | - "pr:documentation"
24 | - title: Dependencies 📦
25 | labels:
26 | - "pr:dependencies"
27 | - title: Internal 🧪
28 | labels:
29 | - "pr:internal"
30 | - "pr:ci"
31 | - "pr:test"
32 | - title: Demo App 🧩
33 | labels:
34 | - "pr:demo-app"
35 | - title: Other Changes
36 | labels:
37 | - "*"
38 |
--------------------------------------------------------------------------------
/.github/workflows/no-response.yml:
--------------------------------------------------------------------------------
1 | name: No Response
2 |
3 | on:
4 | issue_comment:
5 | types: [created]
6 | schedule:
7 | # Every midnight
8 | - cron: '0 0 * * *'
9 |
10 | jobs:
11 | noResponse:
12 | runs-on: ubuntu-22.04
13 | steps:
14 | - uses: lee-dohm/no-response@v0.5.0
15 | with:
16 | token: ${{ github.token }}
17 | daysUntilClose: 7
18 | responseRequiredLabel: waiting for response
19 | closeComment: >
20 | This issue has been automatically closed because there has been no response
21 | to our request from the original author.
22 | Please don't hesitate to comment on the bug if you have
23 | any more information for us - we will reopen it right away!
24 | Thanks for your contribution.
--------------------------------------------------------------------------------
/.github/workflows/release-docs.yaml:
--------------------------------------------------------------------------------
1 | name: ReleaseDocs
2 |
3 | on:
4 | push:
5 | branches:
6 | - main
7 | workflow_dispatch:
8 |
9 | jobs:
10 | publish_dokka:
11 | name: Dokka docs
12 | runs-on: ubuntu-22.04
13 | steps:
14 | - name: Check out code
15 | uses: actions/checkout@v3.1.0
16 | with:
17 | ref: main
18 | - uses: GetStream/android-ci-actions/actions/setup-java@main
19 | - name: Generate Dokka HTML docs
20 | run: ./gradlew dokkaHtmlMultimodule
21 | - name: Deploy to GitHub pages
22 | uses: peaceiris/actions-gh-pages@v3
23 | with:
24 | github_token: ${{ secrets.DOCUSAURUS_GH_TOKEN }}
25 | publish_dir: ./build/dokka/htmlMultiModule
26 | publish_branch: gh-pages
--------------------------------------------------------------------------------
/.readme-assets/Github-Graphic-Android.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/.readme-assets/Github-Graphic-Android.jpg
--------------------------------------------------------------------------------
/.repackage-assets/maven_local.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/.repackage-assets/maven_local.png
--------------------------------------------------------------------------------
/.sign/debug.keystore.jks:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/.sign/debug.keystore.jks
--------------------------------------------------------------------------------
/.styles/Google/AMPM.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: "Use 'AM' or 'PM' (preceded by a space)."
3 | link: 'https://developers.google.com/style/word-list'
4 | level: error
5 | nonword: true
6 | tokens:
7 | - '\d{1,2}[AP]M'
8 | - '\d{1,2} ?[ap]m'
9 | - '\d{1,2} ?[aApP]\.[mM]\.'
10 |
--------------------------------------------------------------------------------
/.styles/Google/Acronyms.yml:
--------------------------------------------------------------------------------
1 | extends: conditional
2 | message: "Spell out '%s', if it's unfamiliar to the audience."
3 | link: 'https://developers.google.com/style/abbreviations'
4 | level: suggestion
5 | ignorecase: false
6 | # Ensures that the existence of 'first' implies the existence of 'second'.
7 | first: '\b([A-Z]{3,5})\b'
8 | second: '(?:\b[A-Z][a-z]+ )+\(([A-Z]{3,5})\)'
9 | # ... with the exception of these:
10 | exceptions:
11 | - API
12 | - ASP
13 | - CLI
14 | - CPU
15 | - CSS
16 | - CSV
17 | - DEBUG
18 | - DOM
19 | - DPI
20 | - FAQ
21 | - GCC
22 | - GDB
23 | - GET
24 | - GPU
25 | - GTK
26 | - GUI
27 | - HTML
28 | - HTTP
29 | - HTTPS
30 | - IDE
31 | - JAR
32 | - JSON
33 | - JSX
34 | - LESS
35 | - LLDB
36 | - NET
37 | - NOTE
38 | - NVDA
39 | - OSS
40 | - PATH
41 | - PDF
42 | - PHP
43 | - POST
44 | - RAM
45 | - REPL
46 | - RSA
47 | - SCM
48 | - SCSS
49 | - SDK
50 | - SQL
51 | - SSH
52 | - SSL
53 | - SVG
54 | - TBD
55 | - TCP
56 | - TODO
57 | - URI
58 | - URL
59 | - USB
60 | - UTF
61 | - XML
62 | - XSS
63 | - YAML
64 | - ZIP
65 |
--------------------------------------------------------------------------------
/.styles/Google/Colons.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: "'%s' should be in lowercase."
3 | link: 'https://developers.google.com/style/colons'
4 | nonword: true
5 | level: warning
6 | scope: sentence
7 | tokens:
8 | - ':\s[A-Z]'
9 |
--------------------------------------------------------------------------------
/.styles/Google/Contractions.yml:
--------------------------------------------------------------------------------
1 | extends: substitution
2 | message: "Feel free to use '%s' instead of '%s'."
3 | link: 'https://developers.google.com/style/contractions'
4 | level: suggestion
5 | ignorecase: true
6 | action:
7 | name: replace
8 | swap:
9 | are not: aren't
10 | cannot: can't
11 | could not: couldn't
12 | did not: didn't
13 | do not: don't
14 | does not: doesn't
15 | has not: hasn't
16 | have not: haven't
17 | how is: how's
18 | is not: isn't
19 | it is: it's
20 | should not: shouldn't
21 | that is: that's
22 | they are: they're
23 | was not: wasn't
24 | we are: we're
25 | we have: we've
26 | were not: weren't
27 | what is: what's
28 | when is: when's
29 | where is: where's
30 | will not: won't
31 |
--------------------------------------------------------------------------------
/.styles/Google/DateFormat.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: "Use 'July 31, 2016' format, not '%s'."
3 | link: 'https://developers.google.com/style/dates-times'
4 | ignorecase: true
5 | level: error
6 | nonword: true
7 | tokens:
8 | - '\d{1,2}(?:\.|/)\d{1,2}(?:\.|/)\d{4}'
9 | - '\d{1,2} (?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)|May|Jun(?:e)|Jul(?:y)|Aug(?:ust)|Sep(?:tember)?|Oct(?:ober)|Nov(?:ember)?|Dec(?:ember)?) \d{4}'
10 |
--------------------------------------------------------------------------------
/.styles/Google/Ellipses.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: "In general, don't use an ellipsis."
3 | link: 'https://developers.google.com/style/ellipses'
4 | nonword: true
5 | level: warning
6 | action:
7 | name: remove
8 | tokens:
9 | - '\.\.\.'
10 |
--------------------------------------------------------------------------------
/.styles/Google/EmDash.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: "Don't put a space before or after a dash."
3 | link: 'https://developers.google.com/style/dashes'
4 | nonword: true
5 | level: error
6 | action:
7 | name: edit
8 | params:
9 | - remove
10 | - ' '
11 | tokens:
12 | - '\s[—–]\s'
13 |
--------------------------------------------------------------------------------
/.styles/Google/EnDash.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: "Use an em dash ('—') instead of '–'."
3 | link: 'https://developers.google.com/style/dashes'
4 | nonword: true
5 | level: error
6 | action:
7 | name: edit
8 | params:
9 | - replace
10 | - '-'
11 | - '—'
12 | tokens:
13 | - '–'
14 |
--------------------------------------------------------------------------------
/.styles/Google/Exclamation.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: "Don't use exclamation points in text."
3 | link: 'https://developers.google.com/style/exclamation-points'
4 | nonword: true
5 | level: error
6 | tokens:
7 | - '\w!(?:\s|$)'
8 |
--------------------------------------------------------------------------------
/.styles/Google/FirstPerson.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: "Avoid first-person pronouns such as '%s'."
3 | link: 'https://developers.google.com/style/pronouns#personal-pronouns'
4 | ignorecase: true
5 | level: warning
6 | nonword: true
7 | tokens:
8 | - (?:^|\s)I\s
9 | - (?:^|\s)I,\s
10 | - \bI'm\b
11 | - \bme\b
12 | - \bmy\b
13 | - \bmine\b
14 |
--------------------------------------------------------------------------------
/.styles/Google/Gender.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: "Don't use '%s' as a gender-neutral pronoun."
3 | link: 'https://developers.google.com/style/pronouns#gender-neutral-pronouns'
4 | level: error
5 | ignorecase: true
6 | tokens:
7 | - he/she
8 | - s/he
9 | - \(s\)he
10 |
--------------------------------------------------------------------------------
/.styles/Google/HeadingPunctuation.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: "Don't put a period at the end of a heading."
3 | link: 'https://developers.google.com/style/capitalization#capitalization-in-titles-and-headings'
4 | nonword: true
5 | level: warning
6 | scope: heading
7 | action:
8 | name: edit
9 | params:
10 | - remove
11 | - '.'
12 | tokens:
13 | - '[a-z0-9][.]\s*$'
14 |
--------------------------------------------------------------------------------
/.styles/Google/Headings.yml:
--------------------------------------------------------------------------------
1 | extends: capitalization
2 | message: "'%s' should use sentence-style capitalization."
3 | link: 'https://developers.google.com/style/capitalization#capitalization-in-titles-and-headings'
4 | level: warning
5 | scope: heading
6 | match: $sentence
7 | indicators:
8 | - ':'
9 | exceptions:
10 | - Azure
11 | - CLI
12 | - Code
13 | - Cosmos
14 | - Docker
15 | - Emmet
16 | - gRPC
17 | - I
18 | - Kubernetes
19 | - Linux
20 | - macOS
21 | - Marketplace
22 | - MongoDB
23 | - REPL
24 | - Studio
25 | - TypeScript
26 | - URLs
27 | - Visual
28 | - VS
29 | - Windows
30 |
--------------------------------------------------------------------------------
/.styles/Google/Latin.yml:
--------------------------------------------------------------------------------
1 | extends: substitution
2 | message: "Use '%s' instead of '%s'."
3 | link: 'https://developers.google.com/style/abbreviations'
4 | ignorecase: true
5 | level: error
6 | nonword: true
7 | action:
8 | name: replace
9 | swap:
10 | '\b(?:eg|e\.g\.)[\s,]': for example
11 | '\b(?:ie|i\.e\.)[\s,]': that is
12 |
--------------------------------------------------------------------------------
/.styles/Google/LyHyphens.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: "'%s' doesn't need a hyphen."
3 | link: 'https://developers.google.com/style/hyphens'
4 | level: error
5 | ignorecase: false
6 | nonword: true
7 | action:
8 | name: edit
9 | params:
10 | - replace
11 | - '-'
12 | - ' '
13 | tokens:
14 | - '\s[^\s-]+ly-'
15 |
--------------------------------------------------------------------------------
/.styles/Google/OptionalPlurals.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: "Don't use plurals in parentheses such as in '%s'."
3 | link: 'https://developers.google.com/style/plurals-parentheses'
4 | level: error
5 | nonword: true
6 | action:
7 | name: edit
8 | params:
9 | - remove
10 | - '(s)'
11 | tokens:
12 | - '\b\w+\(s\)'
13 |
--------------------------------------------------------------------------------
/.styles/Google/Ordinal.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: "Spell out all ordinal numbers ('%s') in text."
3 | link: 'https://developers.google.com/style/numbers'
4 | level: error
5 | nonword: true
6 | tokens:
7 | - \d+(?:st|nd|rd|th)
8 |
--------------------------------------------------------------------------------
/.styles/Google/OxfordComma.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: "Use the Oxford comma in '%s'."
3 | link: 'https://developers.google.com/style/commas'
4 | scope: sentence
5 | level: warning
6 | tokens:
7 | - '(?:[^,]+,){1,}\s\w+\s(?:and|or)'
8 |
--------------------------------------------------------------------------------
/.styles/Google/Parens.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: "Use parentheses judiciously."
3 | link: 'https://developers.google.com/style/parentheses'
4 | nonword: true
5 | level: suggestion
6 | tokens:
7 | - '\(.+\)'
8 |
--------------------------------------------------------------------------------
/.styles/Google/Periods.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: "Don't use periods with acronyms or initialisms such as '%s'."
3 | link: 'https://developers.google.com/style/abbreviations'
4 | level: error
5 | nonword: true
6 | tokens:
7 | - '\b(?:[A-Z]\.){3,}'
8 |
--------------------------------------------------------------------------------
/.styles/Google/Quotes.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: "Commas and periods go inside quotation marks."
3 | link: 'https://developers.google.com/style/quotation-marks'
4 | level: error
5 | nonword: true
6 | tokens:
7 | - '"[^"]+"[.,?]'
8 |
--------------------------------------------------------------------------------
/.styles/Google/Ranges.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: "Don't add words such as 'from' or 'between' to describe a range of numbers."
3 | link: 'https://developers.google.com/style/hyphens'
4 | nonword: true
5 | level: warning
6 | tokens:
7 | - '(?:from|between)\s\d+\s?-\s?\d+'
8 |
--------------------------------------------------------------------------------
/.styles/Google/Semicolons.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: "Use semicolons judiciously."
3 | link: 'https://developers.google.com/style/semicolons'
4 | nonword: true
5 | scope: sentence
6 | level: suggestion
7 | tokens:
8 | - ';'
9 |
--------------------------------------------------------------------------------
/.styles/Google/Slang.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: "Don't use internet slang abbreviations such as '%s'."
3 | link: 'https://developers.google.com/style/abbreviations'
4 | ignorecase: true
5 | level: error
6 | tokens:
7 | - 'tl;dr'
8 | - ymmv
9 | - rtfm
10 | - imo
11 | - fwiw
12 |
--------------------------------------------------------------------------------
/.styles/Google/Spacing.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: "'%s' should have one space."
3 | link: 'https://developers.google.com/style/sentence-spacing'
4 | level: error
5 | nonword: true
6 | tokens:
7 | - '[a-z][.?!] {2,}[A-Z]'
8 | - '[a-z][.?!][A-Z]'
9 |
--------------------------------------------------------------------------------
/.styles/Google/Spelling.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: "In general, use American spelling instead of '%s'."
3 | link: 'https://developers.google.com/style/spelling'
4 | ignorecase: true
5 | level: warning
6 | tokens:
7 | - '(?:\w+)nised?'
8 | - '(?:\w+)logue'
9 |
--------------------------------------------------------------------------------
/.styles/Google/Units.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: "Put a nonbreaking space between the number and the unit in '%s'."
3 | link: 'https://developers.google.com/style/units-of-measure'
4 | nonword: true
5 | level: error
6 | tokens:
7 | - \d+(?:B|kB|MB|GB|TB)
8 | - \d+(?:ns|ms|s|min|h|d)
9 |
--------------------------------------------------------------------------------
/.styles/Google/We.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: "Try to avoid using first-person plural like '%s'."
3 | link: 'https://developers.google.com/style/pronouns#personal-pronouns'
4 | level: warning
5 | ignorecase: true
6 | tokens:
7 | - we
8 | - we'(?:ve|re)
9 | - ours?
10 | - us
11 | - let's
12 |
--------------------------------------------------------------------------------
/.styles/Google/Will.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: "Avoid using '%s'."
3 | link: 'https://developers.google.com/style/tense'
4 | ignorecase: true
5 | level: warning
6 | tokens:
7 | - will
8 |
--------------------------------------------------------------------------------
/.styles/Google/meta.json:
--------------------------------------------------------------------------------
1 | {
2 | "feed": "https://github.com/errata-ai/Google/releases.atom",
3 | "vale_version": ">=1.0.0"
4 | }
5 |
--------------------------------------------------------------------------------
/.styles/Google/vocab.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/.styles/Google/vocab.txt
--------------------------------------------------------------------------------
/.styles/Vocab/Base/accept.txt:
--------------------------------------------------------------------------------
1 | 100ms
2 | Giphy
3 | composable
4 | livestream
5 | codec
6 | Giphies
7 | SDKs
8 | SDK's
9 | browsable
10 | scrollable
11 | boolean
12 | squircle
13 | Kotlin
14 | ngrok
15 | Gradle
16 | [Ll]ivestream
17 | keystore
18 | Huawei
19 | Sonatype
20 | protobuf
21 | dialogs
22 | Macrobenchmark
23 | [Cc]ooldown
24 | Telehealth
25 | scrollable
26 | [Ii]nitializers
27 | [Aa]ccessor
28 | integrationguide
29 | [Cc]omposable
30 | APIs
31 | Jetpack
32 | Jitpack
33 | Markwon
34 | jank
35 | UIs
36 | grayscale
37 | styleable
38 | Dark_mode
39 | Linkify
40 | overridable
41 | drawables
42 | Xiaomi
43 | Light_mode
44 | Levenstein
45 | coroutine
46 | _dashboard-xiaomi-config
47 |
--------------------------------------------------------------------------------
/.styles/Vocab/Base/reject.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/.styles/Vocab/Base/reject.txt
--------------------------------------------------------------------------------
/.vale.ini:
--------------------------------------------------------------------------------
1 | StylesPath = .styles
2 |
3 | MinAlertLevel = error
4 | Vocab = Base
5 |
6 | Packages = Google
7 |
8 | # The "formats" section allows you to associate an "unknown" format
9 | # with one of Vale's supported formats.
10 | [formats]
11 | mdx = md
12 |
13 | # Since we mapped `mdx` to `md` in the `formats`section we have to declare our format to be `md`
14 | [*.md]
15 | BasedOnStyles = Vale, Google
16 |
17 | BlockIgnores = import \w* from '.*', \w*\.gradle
18 |
19 |
--------------------------------------------------------------------------------
/AppKey:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/AppKey
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # UNRELEASED CHANGELOG
2 | ## Common changes for all artifacts
3 | ### 🐞 Fixed
4 |
5 | ### ⬆️ Improved
6 |
7 | ### ✅ Added
8 |
9 | ### ⚠️ Changed
10 |
11 | ### ❌ Removed
12 |
13 | ## stream-video-android
14 | ### 🐞 Fixed
15 |
16 | ### ⬆️ Improved
17 |
18 | ### ✅ Added
19 |
20 | ### ⚠️ Changed
21 |
22 | ### ❌ Removed
23 |
24 | ## stream-video-android-ui-compose
25 | ### 🐞 Fixed
26 |
27 | ### ⬆️ Improved
28 |
29 | ### ✅ Added
30 | Ï
31 | ### ⚠️ Changed
32 |
33 | ### ❌ Removed
34 |
35 | ## stream-video-android-xml
36 | ### 🐞 Fixed
37 |
38 | ### ⬆️ Improved
39 |
40 | ### ✅ Added
41 |
42 | ### ⚠️ Changed
43 |
44 | ### ❌ Removed
45 |
46 | ## stream-video-android-pushprovider-firebase
47 | ### 🐞 Fixed
48 |
49 | ### ⬆️ Improved
50 |
51 | ### ✅ Added
52 |
53 | ### ⚠️ Changed
54 |
55 | ### ❌ Removed
--------------------------------------------------------------------------------
/DEPRECATIONS.md:
--------------------------------------------------------------------------------
1 | # Deprecations
2 |
3 | This document lists deprecated constructs in the SDK, with their expected time ⌛ of further deprecations and removals.
4 |
5 | | API / Feature | Deprecated (warning) | Deprecated (error) | Removed | Notes |
6 | | --- | --- | --- | --- | --- |
7 | | --- | --- | --- | --- | --- |
--------------------------------------------------------------------------------
/Gemfile:
--------------------------------------------------------------------------------
1 | # frozen_string_literal: true
2 |
3 | source 'https://rubygems.org'
4 |
5 | git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
6 |
7 | gem 'fastlane', '2.225.0'
8 | gem 'json'
9 | gem 'rubocop', '1.38', group: :rubocop_dependencies
10 | gem 'sinatra', group: :sinatra_dependencies
11 |
12 | eval_gemfile('fastlane/Pluginfile')
13 |
14 | group :rubocop_dependencies do
15 | gem 'rubocop-performance'
16 | gem 'rubocop-require_tools'
17 | end
18 |
19 | group :sinatra_dependencies do
20 | gem 'puma'
21 | gem 'rackup'
22 | end
23 |
--------------------------------------------------------------------------------
/SECURITY.md:
--------------------------------------------------------------------------------
1 | # Reporting a Vulnerability
2 | At Stream we are committed to the security of our Software. We appreciate your efforts in disclosing vulnerabilities responsibly and we will make every effort to acknowledge your contributions.
3 |
4 | Report security vulnerabilities at the following email address:
5 | ```
6 | [security@getstream.io](mailto:security@getstream.io)
7 | ```
8 | Alternatively it is also possible to open a new issue in the affected repository, tagging it with the `security` tag.
9 |
10 | A team member will acknowledge the vulnerability and will follow-up with more detailed information. A representative of the security team will be in touch if more information is needed.
11 |
12 | # Information to include in a report
13 | While we appreciate any information that you are willing to provide, please make sure to include the following:
14 | * Which repository is affected
15 | * Which branch, if relevant
16 | * Be as descriptive as possible, the team will replicate the vulnerability before working on a fix.
17 |
--------------------------------------------------------------------------------
/benchmark/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/benchmark/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt:
--------------------------------------------------------------------------------
1 | import com.android.build.api.dsl.ApplicationExtension
2 | import com.android.build.gradle.internal.dsl.BaseAppModuleExtension
3 | import io.getstream.video.configureFlavors
4 | import io.getstream.video.configureKotlinAndroid
5 | import org.gradle.api.Plugin
6 | import org.gradle.api.Project
7 | import org.gradle.kotlin.dsl.configure
8 |
9 | class AndroidApplicationConventionPlugin : Plugin {
10 | override fun apply(target: Project) {
11 | with(target) {
12 | with(pluginManager) {
13 | apply("com.android.application")
14 | apply("org.jetbrains.kotlin.android")
15 | }
16 |
17 | extensions.configure {
18 | configureKotlinAndroid(this)
19 | }
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/build-logic/gradle.properties:
--------------------------------------------------------------------------------
1 | # Gradle properties are not passed to included builds https://github.com/gradle/gradle/issues/2534
2 | org.gradle.parallel=true
3 | org.gradle.caching=true
4 | org.gradle.configureondemand=true
5 |
--------------------------------------------------------------------------------
/build-logic/settings.gradle.kts:
--------------------------------------------------------------------------------
1 | enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
2 |
3 | dependencyResolutionManagement {
4 | repositories {
5 | google()
6 | mavenCentral()
7 | }
8 | versionCatalogs {
9 | create("libs") {
10 | from(files("../gradle/libs.versions.toml"))
11 | }
12 | }
13 | }
14 |
15 | include(":convention")
16 |
--------------------------------------------------------------------------------
/buildSrc/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | `kotlin-dsl`
3 | }
4 |
5 | gradlePlugin {
6 | plugins {
7 | create("GenerateRPCServicePlugin") {
8 | id = "io.getstream.video.generateServices"
9 | implementationClass = "io.getstream.video.android.commands.rpc.plugin.GenerateRPCServicePlugin"
10 | version = "1.0.0"
11 | }
12 | }
13 | }
14 |
15 | repositories {
16 | mavenCentral()
17 | }
--------------------------------------------------------------------------------
/buildSrc/src/main/kotlin/io/getstream/video/android/Configuration.kt:
--------------------------------------------------------------------------------
1 | package io.getstream.video.android
2 |
3 | object Configuration {
4 | const val compileSdk = 35
5 | const val targetSdk = 35
6 | const val minSdk = 24
7 | const val majorVersion = 1
8 | const val minorVersion = 6
9 | const val patchVersion = 3
10 | const val versionName = "$majorVersion.$minorVersion.$patchVersion"
11 | const val versionCode = 57
12 | const val snapshotVersionName = "$majorVersion.$minorVersion.${patchVersion + 1}-SNAPSHOT"
13 | const val artifactGroup = "io.getstream"
14 | const val streamVideoCallGooglePlayVersion = versionName
15 | const val streamWebRtcVersionName = "1.3.6"
16 | }
17 |
--------------------------------------------------------------------------------
/buildSrc/src/main/kotlin/io/getstream/video/android/commands/rpc/plugin/GenerateRPCServiceExtension.kt:
--------------------------------------------------------------------------------
1 | package io.getstream.video.android.commands.rpc.plugin
2 |
3 | /**
4 | * Extension that is used inside build.gradle to setup the plugin.
5 | */
6 | open class GenerateRPCServiceExtension {
7 | /**
8 | * Source directory from which to extract proto files.
9 | */
10 | var srcDir = "stream-video-android-core/src/main/proto"
11 |
12 | /**
13 | * Output folder for the files. If the output folder is in build don't forget to add it to sources in the modules
14 | * build.gradle.
15 | */
16 | var outputDir = ""
17 | }
--------------------------------------------------------------------------------
/buildSrc/src/main/kotlin/io/getstream/video/android/commands/utils/Tasks.kt:
--------------------------------------------------------------------------------
1 | package io.getstream.video.android.commands.utils
2 |
3 | import org.gradle.api.Action
4 | import org.gradle.api.Task
5 | import org.gradle.api.tasks.TaskContainer
6 | import org.gradle.api.tasks.TaskProvider
7 |
8 | inline fun TaskContainer.registerExt(
9 | name: String,
10 | configuration: Action,
11 | ): TaskProvider = this.register(name, T::class.java, configuration)
12 |
13 |
--------------------------------------------------------------------------------
/compose_compiler_config.conf:
--------------------------------------------------------------------------------
1 | // Kotlin collections and datetime classes
2 | kotlin.collections.*
3 | org.threeten.bp.*
4 | java.time.*
5 |
6 | // We always use immutable classes for our data model, to avoid running the Compose compiler
7 | // in the module we declare it to be stable here.
8 | io.getstream.video.android.core.model.*
--------------------------------------------------------------------------------
/demo-app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 | !/libs/**
--------------------------------------------------------------------------------
/demo-app/benchmark-rules.pro:
--------------------------------------------------------------------------------
1 | -dontobfuscate
2 | -dontwarn com.google.errorprone.annotations.InlineMe
3 |
--------------------------------------------------------------------------------
/demo-app/libs/renderscript-toolkit.aar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/demo-app/libs/renderscript-toolkit.aar
--------------------------------------------------------------------------------
/demo-app/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
--------------------------------------------------------------------------------
/demo-app/src/androidTestE2etestingDebug/kotlin/io/getstream/video/android/pages/DirectCallPage.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.pages
18 |
19 | import androidx.test.uiautomator.By
20 |
21 | class DirectCallPage {
22 |
23 | companion object {
24 | val sampleUser = By.text("Willard Hesser")
25 | val audioCallButton = By.res("Stream_AudioCallButton")
26 | val videoCallButton = By.res("Stream_VideoCallButton")
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/demo-app/src/androidTestE2etestingDebug/resources/allure.properties:
--------------------------------------------------------------------------------
1 | allure.results.useTestStorage=true
2 |
--------------------------------------------------------------------------------
/demo-app/src/development/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/demo-app/src/development/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/demo-app/src/development/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/demo-app/src/development/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/demo-app/src/development/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/demo-app/src/development/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/demo-app/src/development/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/demo-app/src/development/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/demo-app/src/development/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/demo-app/src/development/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/demo-app/src/development/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 | Stream Video Calls (Development)
19 | getstream.io
20 | /video/demos
21 |
--------------------------------------------------------------------------------
/demo-app/src/e2etesting/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/demo-app/src/e2etesting/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/demo-app/src/e2etesting/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/demo-app/src/e2etesting/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/demo-app/src/e2etesting/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/demo-app/src/e2etesting/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/demo-app/src/e2etesting/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/demo-app/src/e2etesting/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/demo-app/src/e2etesting/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/demo-app/src/e2etesting/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/demo-app/src/e2etesting/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 | Stream Video Calls (E2E Testing)
19 | getstream.io
20 | /video/demos
21 |
--------------------------------------------------------------------------------
/demo-app/src/main/ic_launcher-playstore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/demo-app/src/main/ic_launcher-playstore.png
--------------------------------------------------------------------------------
/demo-app/src/main/kotlin/io/getstream/video/android/analytics/FirebaseEvents.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.analytics
18 |
19 | object FirebaseEvents {
20 | const val INSTALL_FROM_QR_CODE = "install_from_qr_code"
21 | const val SCAN_QR_CODE = "scan_qr_code"
22 | }
23 |
--------------------------------------------------------------------------------
/demo-app/src/main/kotlin/io/getstream/video/android/data/services/stream/GetAuthDataResponse.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.data.services.stream
18 |
19 | import kotlinx.serialization.Serializable
20 |
21 | @Serializable data class GetAuthDataResponse(val userId: String, val apiKey: String, val token: String)
22 |
--------------------------------------------------------------------------------
/demo-app/src/main/kotlin/io/getstream/video/android/tooling/extensions/ContextExtensions.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.tooling.extensions
18 |
19 | import android.content.Context
20 | import android.widget.Toast
21 | import androidx.annotation.StringRes
22 |
23 | @JvmSynthetic
24 | internal fun Context.toast(@StringRes message: Int) {
25 | Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
26 | }
27 |
--------------------------------------------------------------------------------
/demo-app/src/main/kotlin/io/getstream/video/android/tooling/extensions/Utils.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.tooling.extensions
18 |
19 | import androidx.compose.runtime.Composable
20 | import androidx.compose.ui.platform.LocalDensity
21 | import androidx.compose.ui.unit.Dp
22 |
23 | @Composable
24 | fun Dp.toPx(): Float {
25 | val density = LocalDensity.current.density
26 | return this.value * density
27 | }
28 |
--------------------------------------------------------------------------------
/demo-app/src/main/kotlin/io/getstream/video/android/tooling/util/StreamFlavors.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.tooling.util
18 |
19 | /**
20 | * Defined flavors. Used in code logic.
21 | */
22 | internal object StreamFlavors {
23 | const val development = "development"
24 | const val production = "production"
25 | }
26 |
27 | public object StreamEnvironments {
28 | const val demo = "demo"
29 | const val pronto = "pronto"
30 | }
31 |
--------------------------------------------------------------------------------
/demo-app/src/main/kotlin/io/getstream/video/android/ui/menu/AudioDeviceUiState.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.ui.menu
18 |
19 | import androidx.compose.ui.graphics.vector.ImageVector
20 | import io.getstream.video.android.core.audio.StreamAudioDevice
21 |
22 | data class AudioDeviceUiState(
23 | val streamAudioDevice: StreamAudioDevice,
24 | val text: String,
25 | val icon: ImageVector, // Assuming it's a drawable resource ID
26 | val highlight: Boolean,
27 | )
28 |
--------------------------------------------------------------------------------
/demo-app/src/main/res/drawable/amsterdam1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/demo-app/src/main/res/drawable/amsterdam1.webp
--------------------------------------------------------------------------------
/demo-app/src/main/res/drawable/amsterdam2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/demo-app/src/main/res/drawable/amsterdam2.webp
--------------------------------------------------------------------------------
/demo-app/src/main/res/drawable/boulder1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/demo-app/src/main/res/drawable/boulder1.webp
--------------------------------------------------------------------------------
/demo-app/src/main/res/drawable/boulder2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/demo-app/src/main/res/drawable/boulder2.webp
--------------------------------------------------------------------------------
/demo-app/src/main/res/drawable/feedback_artwork.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/demo-app/src/main/res/drawable/feedback_artwork.png
--------------------------------------------------------------------------------
/demo-app/src/main/res/drawable/gradient1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/demo-app/src/main/res/drawable/gradient1.webp
--------------------------------------------------------------------------------
/demo-app/src/main/res/drawable/stream_calls_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/demo-app/src/main/res/drawable/stream_calls_logo.png
--------------------------------------------------------------------------------
/demo-app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/demo-app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/demo-app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/demo-app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/demo-app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/demo-app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/demo-app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/demo-app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/demo-app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/demo-app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/demo-app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/demo-app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/demo-app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/demo-app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/demo-app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/demo-app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/demo-app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/demo-app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/demo-app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/demo-app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/demo-app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/demo-app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/demo-app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 | #FFBB86FC
19 | #FF6200EE
20 | #FF3700B3
21 | #FF03DAC5
22 | #FF018786
23 | #FF000000
24 | #FFFFFFFF
25 |
--------------------------------------------------------------------------------
/demo-app/src/main/res/values/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
22 |
--------------------------------------------------------------------------------
/demo-app/src/main/res/xml/network_security_config.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/demo-app/src/production/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 | Stream Video Calls
19 |
--------------------------------------------------------------------------------
/demo-app/src/staging/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 | Stream Video Calls (Staging)
19 |
--------------------------------------------------------------------------------
/fastlane/.env:
--------------------------------------------------------------------------------
1 | FASTLANE_SKIP_ACTION_SUMMARY=true
2 | FASTLANE_HIDE_PLUGINS_TABLE=true
3 | FASTLANE_SKIP_UPDATE_CHECK=true
4 | FASTLANE_HIDE_CHANGELOG=true
5 |
--------------------------------------------------------------------------------
/fastlane/Pluginfile:
--------------------------------------------------------------------------------
1 | # Autogenerated by fastlane
2 | #
3 | # Ensure this file is checked in to source control!
4 |
5 | gem 'fastlane-plugin-stream_actions', '0.3.74'
6 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-all.zip
4 | networkTimeout=10000
5 | validateDistributionUrl=true
6 | zipStoreBase=GRADLE_USER_HOME
7 | zipStorePath=wrapper/dists
8 |
--------------------------------------------------------------------------------
/metrics/size.json:
--------------------------------------------------------------------------------
1 | {
2 | "debug": {
3 | "stream-video-android-core": 13064,
4 | "stream-video-android-ui-xml": 7376,
5 | "stream-video-android-ui-compose": 9344
6 | },
7 | "release": {
8 | "stream-video-android-core": 11592,
9 | "stream-video-android-ui-xml": 5812,
10 | "stream-video-android-ui-compose": 5980
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/metrics/stream-video-android-metrics/src/main/kotlin/io/getstream/video/android/metrics/MainActivity.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.metrics
18 |
19 | import androidx.activity.ComponentActivity
20 |
21 | class MainActivity : ComponentActivity()
22 |
--------------------------------------------------------------------------------
/repackage.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Parse named parameters
4 | while [[ "$#" -gt 0 ]]; do
5 | case $1 in
6 | --repackaged_webrtc) repackaged_webrtc="$2"; shift ;;
7 | --webrtc_android) webrtc_android="$2"; shift ;;
8 | *) echo "Unknown parameter passed: $1"; exit 1 ;;
9 | esac
10 | shift
11 | done
12 |
13 | # Run the Python command with the parameters
14 | python3 scripts/repackage/repackage.py --repackaged_webrtc "$repackaged_webrtc" --webrtc_android "$webrtc_android"
15 |
--------------------------------------------------------------------------------
/scripts/git-hooks/pre-push:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Run spotlessCheck before committing
4 | ./gradlew spotlessCheck
5 |
6 | # Get the exit code of the previous command
7 | RESULTSPOTLESS=$?
8 |
9 | ./gradlew apiCheck
10 |
11 | # Get the exit code of the previous command
12 | RESULTAPI=$?
13 |
14 | # If spotlessCheck failed, prevent the commit
15 | if [ $RESULTSPOTLESS -ne 0 ]; then
16 | echo "SpotlessCheck failed. Please run :spotlessApply to fix the formatting issues before committing."
17 | exit 1
18 | fi
19 |
20 | # If apiCheck failed, prevent the commit
21 | if [ $RESULTAPI -ne 0 ]; then
22 | echo "ApiCheck failed. Please run :apiDump before committing"
23 | exit 1
24 | fi
25 |
--------------------------------------------------------------------------------
/scripts/repackage/utils/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/scripts/repackage/utils/__init__.py
--------------------------------------------------------------------------------
/scripts/repackage/utils/gradle_publish.py:
--------------------------------------------------------------------------------
1 | def override_gradle_publish(file_path):
2 | content = """
3 | apply plugin: 'maven-publish'
4 |
5 | group = PUBLISH_GROUP_ID
6 | version = PUBLISH_VERSION
7 |
8 | afterEvaluate {
9 | publishing {
10 | publications {
11 | release(MavenPublication) {
12 | groupId PUBLISH_GROUP_ID
13 | artifactId PUBLISH_ARTIFACT_ID
14 | version PUBLISH_VERSION
15 | if (project.plugins.findPlugin("com.android.library")) {
16 | from components.release
17 | } else {
18 | from components.java
19 | }
20 | }
21 | }
22 | }
23 | }
24 | """
25 | with open(file_path, 'w') as file:
26 | file.write(content)
27 |
--------------------------------------------------------------------------------
/scripts/repackage/utils/gradle_settings.py:
--------------------------------------------------------------------------------
1 | def modify_gradle_settings():
2 | file_path = 'settings.gradle.kts'
3 |
4 | # Read the content of the file
5 | with open(file_path, 'r') as f:
6 | lines = f.readlines()
7 |
8 | # Add mavenLocal() at appropriate places
9 | for i, line in enumerate(lines):
10 | if line.strip() == "repositories {":
11 | space_count = len(line) - len(line.lstrip())
12 | indent = ' ' * space_count * 2
13 | lines.insert(i + 1, f"{indent}mavenLocal()\n")
14 |
15 | # Remove the line include(":stream-webrtc-android")
16 | lines = [line for line in lines if 'include(":stream-webrtc-android")' not in line]
17 |
18 | # Write the modified content back to the original file
19 | with open(file_path, 'w') as f:
20 | f.writelines(lines)
21 |
22 | print(f"...{file_path} has been modified.")
--------------------------------------------------------------------------------
/scripts/show-last-snapshot-update.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Run the Gradle task to get the artifact list and process the output line by line
4 | ./gradlew -q printAllArtifacts | while IFS= read -r artifact; do
5 | # Extract groupId, artifactId, and snapshot version from the artifact string
6 | groupId=$(echo $artifact | cut -d: -f1)
7 | artifactId=$(echo $artifact | cut -d: -f2)
8 | snapshotVersion=$(echo $artifact | cut -d: -f3)
9 |
10 | # Format the URL for the maven-metadata.xml file in the Nexus repository
11 | url="https://oss.sonatype.org/content/repositories/snapshots/$(echo $groupId | tr '.' '/')/$artifactId/$snapshotVersion/maven-metadata.xml"
12 |
13 | # Fetch the maven-metadata.xml using curl and extract the latest release version using sed
14 | latest_version=$(curl -s "$url" | sed -n 's|.*\(.*\).*|\1|p' | head -n 1)
15 |
16 | # Print the result with the latest stable version
17 | if [ -n "$latest_version" ]; then
18 | echo "$groupId:$artifactId:$latest_version"
19 | else
20 | echo "No version found for $artifact"
21 | fi
22 | done
23 |
--------------------------------------------------------------------------------
/spotless/copyright.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 |
--------------------------------------------------------------------------------
/spotless/copyright.kts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
--------------------------------------------------------------------------------
/spotless/copyright.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
--------------------------------------------------------------------------------
/stream-video-android-bom/build.gradle.kts:
--------------------------------------------------------------------------------
1 | import io.getstream.video.android.Configuration
2 |
3 | plugins {
4 | kotlin("jvm")
5 | }
6 |
7 | rootProject.extra.apply {
8 | set("PUBLISH_GROUP_ID", Configuration.artifactGroup)
9 | set("PUBLISH_ARTIFACT_ID", "stream-video-android-bom")
10 | set("PUBLISH_VERSION", rootProject.extra.get("rootVersionName"))
11 | }
12 |
13 | dependencies {
14 | constraints {
15 | api(project(":stream-video-android-core"))
16 | api(project(":stream-video-android-ui-core"))
17 | api(project(":stream-video-android-ui-xml"))
18 | api(project(":stream-video-android-ui-compose"))
19 | api(project(":stream-video-android-filters-video"))
20 | api(project(":stream-video-android-previewdata"))
21 | }
22 | }
23 |
24 | apply(from ="${rootDir}/scripts/publish-module.gradle")
--------------------------------------------------------------------------------
/stream-video-android-core/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/stream-video-android-core/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.kts.
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
--------------------------------------------------------------------------------
/stream-video-android-core/src/androidTest/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/infrastructure/ByteArrayAdapter.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.android.video.generated.infrastructure
18 |
19 | import com.squareup.moshi.FromJson
20 | import com.squareup.moshi.ToJson
21 |
22 | class ByteArrayAdapter {
23 | @ToJson
24 | fun toJson(data: ByteArray): String = String(data)
25 |
26 | @FromJson
27 | fun fromJson(data: String): ByteArray = data.toByteArray()
28 | }
29 |
--------------------------------------------------------------------------------
/stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/infrastructure/URIAdapter.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.android.video.generated.infrastructure
18 |
19 | import com.squareup.moshi.FromJson
20 | import com.squareup.moshi.ToJson
21 | import java.net.URI
22 |
23 | class URIAdapter {
24 | @ToJson
25 | fun toJson(uri: URI) = uri.toString()
26 |
27 | @FromJson
28 | fun fromJson(s: String): URI = URI.create(s)
29 | }
30 |
--------------------------------------------------------------------------------
/stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/CallsPerDayReport.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @file:Suppress(
18 | "ArrayInDataClass",
19 | "EnumEntryName",
20 | "RemoveRedundantQualifierName",
21 | "UnusedImport",
22 | )
23 |
24 | package io.getstream.android.video.generated.models
25 |
26 | import com.squareup.moshi.Json
27 |
28 | /**
29 | *
30 | */
31 |
32 | data class CallsPerDayReport(
33 | @Json(name = "count")
34 | val count: kotlin.Int,
35 | )
36 |
--------------------------------------------------------------------------------
/stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/WSCallEvent.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.android.video.generated.models
18 |
19 | sealed interface WSCallEvent {
20 | fun getCallCID(): String
21 | }
22 |
--------------------------------------------------------------------------------
/stream-video-android-core/src/main/kotlin/io/getstream/android/video/generated/models/WSClientEvent.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.android.video.generated.models
18 |
19 | sealed interface WSClientEvent
20 |
--------------------------------------------------------------------------------
/stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/call/stats/model/RtcMediaSourceStats.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.core.call.stats.model
18 |
19 | sealed interface RtcMediaSourceStats : RtcStats {
20 |
21 | val kind: String?
22 | val trackIdentifier: String?
23 |
24 | companion object {
25 | const val KIND = "kind"
26 | const val TRACK_IDENTIFIER = "trackIdentifier"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/call/stats/model/RtcMediaStreamTrackSenderStats.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.core.call.stats.model
18 |
19 | // https://www.w3.org/TR/2023/CRD-webrtc-stats-20230427/#dom-rtcmediastreamtrackstats
20 | @Deprecated("Was deprecated in 11 May 2023")
21 | sealed interface RtcMediaStreamTrackSenderStats : RtcMediaStreamTrackStats {
22 | val mediaSourceId: String?
23 | }
24 |
--------------------------------------------------------------------------------
/stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/call/stats/model/RtcStats.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.core.call.stats.model
18 |
19 | sealed interface RtcStats {
20 | val id: String?
21 | val type: String?
22 | val timestampUs: Double?
23 | }
24 |
--------------------------------------------------------------------------------
/stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/call/stats/model/RtcStatsReport.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.core.call.stats.model
18 |
19 | import io.getstream.video.android.core.call.stats.model.discriminator.RtcReportType
20 | import org.webrtc.RTCStatsReport
21 |
22 | data class RtcStatsReport(
23 | val origin: RTCStatsReport,
24 | val parsed: Map>,
25 | )
26 |
--------------------------------------------------------------------------------
/stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/events/VideoEventListener.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.core.events
18 |
19 | import io.getstream.android.video.generated.models.VideoEvent
20 |
21 | public fun interface VideoEventListener {
22 | public fun onEvent(event: EventT)
23 | }
24 |
--------------------------------------------------------------------------------
/stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/logging/HttpLoggingLevel.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.core.logging
18 |
19 | import okhttp3.logging.HttpLoggingInterceptor
20 |
21 | public enum class HttpLoggingLevel(
22 | internal val level: HttpLoggingInterceptor.Level,
23 | ) {
24 | NONE(HttpLoggingInterceptor.Level.NONE),
25 | BASIC(HttpLoggingInterceptor.Level.BASIC),
26 | BODY(HttpLoggingInterceptor.Level.BODY),
27 | }
28 |
--------------------------------------------------------------------------------
/stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/model/CallData.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.core.model
18 |
19 | import androidx.compose.runtime.Stable
20 |
21 | @Stable
22 | public data class CallData(
23 | public val blockedUsersIds: List,
24 | public val call: CallInfo,
25 | public val members: List,
26 | public val ownMembership: CallUser?,
27 | )
28 |
--------------------------------------------------------------------------------
/stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/model/Ingress.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.core.model
18 |
19 | import androidx.compose.runtime.Stable
20 |
21 | @Stable
22 | data class Ingress(var rtmp: RTMP)
23 |
24 | @Stable
25 | data class RTMP(var address: String, var streamKey: String)
26 |
--------------------------------------------------------------------------------
/stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/model/PreferredVideoResolution.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.core.model
18 |
19 | data class PreferredVideoResolution(
20 | val width: Int,
21 | val height: Int,
22 | )
23 |
--------------------------------------------------------------------------------
/stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/model/QueriedMembers.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.core.model
18 |
19 | import androidx.compose.runtime.Stable
20 |
21 | @Stable
22 | public data class QueriedMembers(
23 | public val members: List,
24 | public val next: String?,
25 | public val prev: String?,
26 | )
27 |
--------------------------------------------------------------------------------
/stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/notifications/internal/storage/DevicePreferences.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.core.notifications.internal.storage
18 |
19 | import io.getstream.video.android.model.Device
20 | import kotlinx.serialization.Serializable
21 |
22 | @Serializable
23 | internal data class DevicePreferences(
24 | public val userDevice: Device? = null,
25 | )
26 |
--------------------------------------------------------------------------------
/stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/socket/common/ErrorDetail.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.core.socket.common
18 |
19 | public data class ErrorDetail(
20 | public val code: Int,
21 | public val messages: List,
22 | )
23 |
--------------------------------------------------------------------------------
/stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/socket/common/SocketErrorMessage.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.core.socket.common
18 |
19 | internal data class SocketErrorMessage(val error: ErrorResponse? = null)
20 |
--------------------------------------------------------------------------------
/stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/socket/common/VideoErrorDetail.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.core.socket.common
18 |
19 | /**
20 | * The error detail.
21 | *
22 | * @property code The error code.
23 | * @property messages The error messages.
24 | */
25 | public data class VideoErrorDetail(
26 | public val code: Int,
27 | public val messages: List,
28 | )
29 |
--------------------------------------------------------------------------------
/stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/socket/common/fsm/builder/FSMBuilderMarker.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.core.socket.common.fsm.builder
18 |
19 | @DslMarker
20 | public annotation class FSMBuilderMarker
21 |
--------------------------------------------------------------------------------
/stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/socket/common/scope/user/UserId.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.core.socket.common.scope.user
18 |
19 | /**
20 | * Simply an alias for the user ID.
21 | */
22 | public typealias UserId = String
23 |
--------------------------------------------------------------------------------
/stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/socket/common/token/ConstantTokenProvider.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.core.socket.common.token
18 |
19 | internal class ConstantTokenProvider(private val token: String) : TokenProvider {
20 | override suspend fun loadToken(): String = token
21 | }
22 |
--------------------------------------------------------------------------------
/stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/socket/coordinator/state/RestartReason.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.core.socket.coordinator.state
18 |
19 | enum class RestartReason {
20 | LIFECYCLE_RESUME,
21 | NETWORK_AVAILABLE,
22 | }
23 |
--------------------------------------------------------------------------------
/stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/socket/coordinator/state/VideoSocketConnectionType.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.core.socket.coordinator.state
18 |
19 | enum class VideoSocketConnectionType {
20 | INITIAL_CONNECTION,
21 | AUTOMATIC_RECONNECTION,
22 | FORCE_RECONNECTION,
23 | }
24 |
--------------------------------------------------------------------------------
/stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/socket/sfu/state/RestartReason.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.core.socket.sfu.state
18 |
19 | enum class RestartReason {
20 | RECONNECT_STRATEGY,
21 | NETWORK_AVAILABLE,
22 | }
23 |
--------------------------------------------------------------------------------
/stream-video-android-core/src/main/kotlin/io/getstream/video/android/model/Credentials.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.model
18 |
19 | /**
20 | * The API key of your Stream Video app.
21 | */
22 | public typealias ApiKey = String
23 |
24 | /**
25 | * User's ticket to join/initiate the call.
26 | */
27 | public typealias UserToken = String
28 |
29 | /**
30 | * User's ticket to enter the call when joined/initiated.
31 | */
32 | public typealias SfuToken = String
33 |
--------------------------------------------------------------------------------
/stream-video-android-core/src/main/kotlin/io/getstream/video/android/model/Device.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.model
18 |
19 | import androidx.compose.runtime.Stable
20 |
21 | @Stable
22 | @kotlinx.serialization.Serializable
23 | public data class Device(
24 | val id: String,
25 | val pushProvider: String,
26 | val pushProviderName: String,
27 | )
28 |
--------------------------------------------------------------------------------
/stream-video-android-core/src/main/kotlin/io/getstream/video/android/model/UserAudioLevel.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.model
18 |
19 | import androidx.compose.runtime.Stable
20 |
21 | /**
22 | * Represents the audio level and if a user is speaking.
23 | */
24 | @Stable
25 | public data class UserAudioLevel(
26 | val userId: String,
27 | val isSpeaking: Boolean,
28 | val audioLevel: Float,
29 | )
30 |
--------------------------------------------------------------------------------
/stream-video-android-core/src/main/kotlin/io/getstream/video/android/model/UserDevices.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.model
18 |
19 | import androidx.compose.runtime.Stable
20 |
21 | @Stable
22 | @kotlinx.serialization.Serializable
23 | public data class UserDevices(
24 | val devices: List = emptyList(),
25 | )
26 |
--------------------------------------------------------------------------------
/stream-video-android-core/src/main/res/raw/call_incoming_sound.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-core/src/main/res/raw/call_incoming_sound.mp3
--------------------------------------------------------------------------------
/stream-video-android-core/src/main/res/raw/call_outgoing_sound.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-core/src/main/res/raw/call_outgoing_sound.mp3
--------------------------------------------------------------------------------
/stream-video-android-core/src/main/res/values/ids.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 | stream_call_GetStreamClient
21 | Stream Call
22 |
23 |
--------------------------------------------------------------------------------
/stream-video-android-core/src/test/kotlin/io/getstream/video/android/core/base/auth/GetAuthDataResponse.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.core.base.auth
18 |
19 | import kotlinx.serialization.Serializable
20 |
21 | @Serializable data class GetAuthDataResponse(val userId: String, val apiKey: String, val token: String)
22 |
--------------------------------------------------------------------------------
/stream-video-android-core/src/test/kotlin/io/getstream/video/android/core/token/FakeTokenProvider.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.core.token
18 |
19 | import io.getstream.video.android.core.socket.common.token.TokenProvider
20 |
21 | internal class FakeTokenProvider(vararg val tokens: String) : TokenProvider {
22 |
23 | var tokenId = 0
24 |
25 | override suspend fun loadToken(): String {
26 | return tokens[tokenId++]
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/stream-video-android-filters-video/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 | !/libs/**
--------------------------------------------------------------------------------
/stream-video-android-filters-video/consumer-rules.pro:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-filters-video/consumer-rules.pro
--------------------------------------------------------------------------------
/stream-video-android-filters-video/libs/renderscript-toolkit.aar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-filters-video/libs/renderscript-toolkit.aar
--------------------------------------------------------------------------------
/stream-video-android-filters-video/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
--------------------------------------------------------------------------------
/stream-video-android-filters-video/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
--------------------------------------------------------------------------------
/stream-video-android-previewdata/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/stream-video-android-previewdata/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 | !/libs/**
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/datastore/proto_stream_video_user.pb:
--------------------------------------------------------------------------------
1 |
2 | M
3 | thierryadmin"Thierry*2https://avatars.githubusercontent.com/u/265409?v=4stream-api-key
4 | user-token
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/libs/renderscript-toolkit.aar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/libs/renderscript-toolkit.aar
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/main/res/drawable/example.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/main/res/drawable/example.webp
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioCallContentTest_snapshot AudioCallContent in default state.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioCallContentTest_snapshot AudioCallContent in default state.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioCallContentTest_snapshot AudioCallContent without header.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioCallContentTest_snapshot AudioCallContent without header.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioCallContentTest_snapshot AudioOnlyCallContent in default state.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioCallContentTest_snapshot AudioOnlyCallContent in default state.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioCallContentTest_snapshot AudioOnlyCallContent without header.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioCallContentTest_snapshot AudioOnlyCallContent without header.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioRoomTest_snapshot AudioAppBar composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioRoomTest_snapshot AudioAppBar composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioRoomTest_snapshot AudioControlActions composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioRoomTest_snapshot AudioControlActions composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioRoomTest_snapshot AudioParticipantsGrid composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioRoomTest_snapshot AudioParticipantsGrid composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioRoomTest_snapshot AudioRoom DarkMode composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioRoomTest_snapshot AudioRoom DarkMode composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioRoomTest_snapshot AudioRoom composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioRoomTest_snapshot AudioRoom composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AvatarTest_snapshot AvatarInitial composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AvatarTest_snapshot AvatarInitial composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AvatarTest_snapshot UserAvatar composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AvatarTest_snapshot UserAvatar composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallBackgroundTest_snapshot CallBackground composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallBackgroundTest_snapshot CallBackground composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallComponentsLandscapeTest_snapshot LandscapeCallControls composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallComponentsLandscapeTest_snapshot LandscapeCallControls composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallComponentsPortraitTest_snapshot CallAppBar composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallComponentsPortraitTest_snapshot CallAppBar composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallComponentsPortraitTest_snapshot CallControls composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallComponentsPortraitTest_snapshot CallControls composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallComponentsPortraitTest_snapshot ParticipantIndicatorIcon composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallComponentsPortraitTest_snapshot ParticipantIndicatorIcon composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallComponentsPortraitTest_snapshot RegularCallControls composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallComponentsPortraitTest_snapshot RegularCallControls composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContainerLandscapeTest_snapshot CallContent with multiple participants composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContainerLandscapeTest_snapshot CallContent with multiple participants composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContainerPortraitTest_snapshot CallContent with multiple participants composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContainerPortraitTest_snapshot CallContent with multiple participants composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot CallContent with multiple participants composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot CallContent with multiple participants composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot IncomingCallContent Video type with multiple participants composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot IncomingCallContent Video type with multiple participants composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot IncomingCallContent with minimum parameters.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot IncomingCallContent with minimum parameters.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot IncomingCallContent with one participant composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot IncomingCallContent with one participant composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot IncomingCallContentDetails Audio composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot IncomingCallContentDetails Audio composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot IncomingCallContentDetails Video composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot IncomingCallContentDetails Video composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot IncomingCallOptions composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot IncomingCallOptions composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot OutgoingCallContent with minimum parameters and audio type.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot OutgoingCallContent with minimum parameters and audio type.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot OutgoingCallContent with minimum parameters and video type.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot OutgoingCallContent with minimum parameters and video type.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot OutgoingCallContent with multiple participants composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot OutgoingCallContent with multiple participants composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot OutgoingCallContent with one participant composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot OutgoingCallContent with one participant composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot OutgoingCallDetails Audio composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot OutgoingCallDetails Audio composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot OutgoingCallDetails Video composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot OutgoingCallDetails Video composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot OutgoingCallOptions composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot OutgoingCallOptions composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallControlsTest_snapshot CallControls Actions composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallControlsTest_snapshot CallControls Actions composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallControlsTest_snapshot CallControls composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallControlsTest_snapshot CallControls composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallLobbyTest_snapshot CallLobby composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallLobbyTest_snapshot CallLobby composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_IndicatorsTest_snapshot ActiveSoundLevels composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_IndicatorsTest_snapshot ActiveSoundLevels composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_IndicatorsTest_snapshot Connection ConnectionQualityIndicator composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_IndicatorsTest_snapshot Connection ConnectionQualityIndicator composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_IndicatorsTest_snapshot Connection ParticipantLabel composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_IndicatorsTest_snapshot Connection ParticipantLabel composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_IndicatorsTest_snapshot SoundIndicator composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_IndicatorsTest_snapshot SoundIndicator composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_LivestreamTest_snapshot Livestream Player Overlay composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_LivestreamTest_snapshot Livestream Player Overlay composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_LivestreamTest_snapshot Livestream Player composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_LivestreamTest_snapshot Livestream Player composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot LandscapeParticipants1 composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot LandscapeParticipants1 composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot LandscapeParticipants2 composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot LandscapeParticipants2 composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot LandscapeParticipants3 composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot LandscapeParticipants3 composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot LandscapeParticipants4 composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot LandscapeParticipants4 composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot LandscapeParticipants5 composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot LandscapeParticipants5 composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot LandscapeParticipants6 composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot LandscapeParticipants6 composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot LandscapeScreenSharingContent for myself composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot LandscapeScreenSharingContent for myself composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot LandscapeScreenSharingContent for other participant composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot LandscapeScreenSharingContent for other participant composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot ParticipantsRow composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot ParticipantsRow composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot CallParticipant a local call composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot CallParticipant a local call composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot CallParticipant a remote call composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot CallParticipant a remote call composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot CallParticipantsInfoAppBar composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot CallParticipantsInfoAppBar composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot CallParticipantsInfoOptions composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot CallParticipantsInfoOptions composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot CallParticipantsList composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot CallParticipantsList composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot InviteUserList composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot InviteUserList composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot LocalVideoContent composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot LocalVideoContent composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot ParticipantAvatars composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot ParticipantAvatars composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot ParticipantInformation composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot ParticipantInformation composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot ParticipantVideo composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot ParticipantVideo composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot ParticipantsColumn composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot ParticipantsColumn composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot PortraitParticipants1 composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot PortraitParticipants1 composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot PortraitParticipants2 composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot PortraitParticipants2 composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot PortraitParticipants3 composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot PortraitParticipants3 composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot PortraitParticipants4 composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot PortraitParticipants4 composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot PortraitParticipants5 composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot PortraitParticipants5 composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot PortraitParticipants6 composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot PortraitParticipants6 composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot PortraitScreenSharingContent for myself composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot PortraitScreenSharingContent for myself composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot PortraitScreenSharingContent for other participant composable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot PortraitScreenSharingContent for other participant composable.png
--------------------------------------------------------------------------------
/stream-video-android-ui-core/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
--------------------------------------------------------------------------------
/stream-video-android-ui-core/src/main/baseline-prof.txt:
--------------------------------------------------------------------------------
1 | Lio/getstream/video/android/ui/common/R$array;
2 | Lio/getstream/video/android/ui/common/R$color;
3 | Lio/getstream/video/android/ui/common/R$dimen;
4 | Lio/getstream/video/android/ui/common/R$drawable;
5 | PLio/getstream/video/android/ui/common/renderer/StreamVideoTextureViewRenderer;->(Landroid/content/Context;)V
6 | PLio/getstream/video/android/ui/common/renderer/StreamVideoTextureViewRenderer;->getLogger()Lio/getstream/log/TaggedLogger;
7 | PLio/getstream/video/android/ui/common/renderer/StreamVideoTextureViewRenderer;->onDetachedFromWindow()V
8 | PLio/getstream/video/android/ui/common/renderer/StreamVideoTextureViewRenderer;->onLayout(ZIIII)V
9 | PLio/getstream/video/android/ui/common/renderer/StreamVideoTextureViewRenderer;->onSurfaceTextureAvailable(Landroid/graphics/SurfaceTexture;II)V
10 | PLio/getstream/video/android/ui/common/renderer/StreamVideoTextureViewRenderer;->onSurfaceTextureDestroyed(Landroid/graphics/SurfaceTexture;)Z
--------------------------------------------------------------------------------
/stream-video-android-ui-core/src/main/res/drawable/stream_video_call_sample.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-core/src/main/res/drawable/stream_video_call_sample.webp
--------------------------------------------------------------------------------
/stream-video-android-ui-core/src/main/res/drawable/stream_video_ic_play.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
22 |
25 |
26 |
--------------------------------------------------------------------------------
/stream-video-android-ui-xml/src/main/kotlin/io/getstream/video/android/xml/font/VideoStyle.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.xml.font
18 |
19 | public class VideoStyle {
20 | public var defaultTextStyle: TextStyle? = null
21 | public fun hasDefaultFont(): Boolean = defaultTextStyle?.hasFont() == true
22 | }
23 |
--------------------------------------------------------------------------------
/stream-video-android-ui-xml/src/main/kotlin/io/getstream/video/android/xml/state/CallDeviceState.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.xml.state
18 |
19 | public data class CallDeviceState(
20 | val isMicrophoneEnabled: Boolean = false,
21 | val isSpeakerphoneEnabled: Boolean = false,
22 | val isCameraEnabled: Boolean = false,
23 | )
24 |
--------------------------------------------------------------------------------
/stream-video-android-ui-xml/src/main/kotlin/io/getstream/video/android/xml/utils/Disposable.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.xml.utils
18 |
19 | /**
20 | * Disposable resource. Implementations of this interface can be disposed once their work is done or the result is
21 | * no longer necessary
22 | */
23 | public interface Disposable {
24 |
25 | public val isDisposed: Boolean
26 |
27 | /**
28 | * Disposes the resource
29 | */
30 | public fun dispose()
31 | }
32 |
--------------------------------------------------------------------------------
/stream-video-android-ui-xml/src/main/kotlin/io/getstream/video/android/xml/viewmodel/CallViewModelFactoryProvider.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.xml.viewmodel
18 |
19 | public interface CallViewModelFactoryProvider {
20 |
21 | /**
22 | * Allows for a custom implementation of the [CallViewModelFactory].
23 | */
24 | public fun getCallViewModelFactory(): CallViewModelFactory
25 | }
26 |
--------------------------------------------------------------------------------
/stream-video-android-ui-xml/src/main/kotlin/io/getstream/video/android/xml/widget/avatar/AvatarShape.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.xml.widget.avatar
18 |
19 | /**
20 | * Determines the shape of the avatar image in [AvatarView].
21 | */
22 | public enum class AvatarShape(public val value: Int) {
23 | /**
24 | * Circle cropped image.
25 | */
26 | CIRCLE(0),
27 |
28 | /**
29 | * Round rect cropped image.
30 | */
31 | ROUND_RECT(1),
32 | }
33 |
--------------------------------------------------------------------------------
/stream-video-android-ui-xml/src/main/kotlin/io/getstream/video/android/xml/widget/participant/CallParticipantLabelAlignment.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014-2024 Stream.io Inc. All rights reserved.
3 | *
4 | * Licensed under the Stream License;
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://github.com/GetStream/stream-video-android/blob/main/LICENSE
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.getstream.video.android.xml.widget.participant
18 |
19 | /**
20 | * Used to set he call participant label alignment.
21 | */
22 | public enum class CallParticipantLabelAlignment {
23 | TOP_LEFT,
24 | TOP_RIGHT,
25 | BOTTOM_LEFT,
26 | BOTTOM_RIGHT,
27 | }
28 |
--------------------------------------------------------------------------------
/stream-video-android-ui-xml/src/main/res/drawable/stream_video_bg_active_call_participant.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
23 |
24 |
--------------------------------------------------------------------------------
/stream-video-android-ui-xml/src/main/res/drawable/stream_video_bg_call.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-xml/src/main/res/drawable/stream_video_bg_call.jpg
--------------------------------------------------------------------------------
/stream-video-android-ui-xml/src/main/res/drawable/stream_video_bg_call_option.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
20 |
21 | -
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/stream-video-android-ui-xml/src/main/res/drawable/stream_video_bg_call_participant_name.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/stream-video-android-ui-xml/src/main/res/drawable/stream_video_rect_active_speaker.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
19 |
22 |
23 |
--------------------------------------------------------------------------------
/stream-video-android-ui-xml/src/main/res/drawable/stream_video_rect_controls.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
19 |
20 |
21 |
24 |
25 |
--------------------------------------------------------------------------------
/stream-video-android-ui-xml/src/main/res/drawable/stream_video_rect_controls_landscape.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/stream-video-android-ui-xml/src/main/res/layout/stream_video_item_participant.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
--------------------------------------------------------------------------------
/stream-video-android-ui-xml/src/main/res/layout/stream_video_view_control_button.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
26 |
27 |
--------------------------------------------------------------------------------
/stream-video-android-ui-xml/src/main/res/values/stream_video_attrs_call_container_view.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/stream-video-android-ui-xml/src/main/res/values/stream_video_attrs_picture_in_picture_view.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/stream-video-android-ui-xml/src/main/res/values/stream_video_colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 | #000000
19 | #FFFFFF
20 | #444444
21 |
--------------------------------------------------------------------------------
/stream-video-android-ui-xml/src/main/startup-prof.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/stream-video-android-ui-xml/src/main/startup-prof.txt
--------------------------------------------------------------------------------
/tutorials/tutorial-audio/.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 | local.properties
16 |
--------------------------------------------------------------------------------
/tutorials/tutorial-audio/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 |
--------------------------------------------------------------------------------
/tutorials/tutorial-audio/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/tutorials/tutorial-audio/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/tutorials/tutorial-audio/src/main/res/mipmap-hdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-audio/src/main/res/mipmap-hdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-audio/src/main/res/mipmap-hdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-audio/src/main/res/mipmap-hdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-audio/src/main/res/mipmap-mdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-audio/src/main/res/mipmap-mdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-audio/src/main/res/mipmap-mdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-audio/src/main/res/mipmap-mdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-audio/src/main/res/mipmap-xhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-audio/src/main/res/mipmap-xhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-audio/src/main/res/mipmap-xhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-audio/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-audio/src/main/res/mipmap-xxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-audio/src/main/res/mipmap-xxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-audio/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-audio/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-audio/src/main/res/mipmap-xxxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-audio/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-audio/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-audio/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-audio/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 | #FFBB86FC
19 | #FF6200EE
20 | #FF3700B3
21 | #FF03DAC5
22 | #FF018786
23 | #FF000000
24 | #FFFFFFFF
25 |
--------------------------------------------------------------------------------
/tutorials/tutorial-audio/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 | tutorial-audio
19 |
--------------------------------------------------------------------------------
/tutorials/tutorial-audio/src/main/res/values/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/tutorials/tutorial-audio/src/main/res/xml/backup_rules.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
22 |
--------------------------------------------------------------------------------
/tutorials/tutorial-livestream/.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 | local.properties
16 |
--------------------------------------------------------------------------------
/tutorials/tutorial-livestream/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 |
--------------------------------------------------------------------------------
/tutorials/tutorial-livestream/src/main/res/drawable-hdpi/getstream_mountain.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-livestream/src/main/res/drawable-hdpi/getstream_mountain.png
--------------------------------------------------------------------------------
/tutorials/tutorial-livestream/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/tutorials/tutorial-livestream/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/tutorials/tutorial-livestream/src/main/res/mipmap-hdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-livestream/src/main/res/mipmap-hdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-livestream/src/main/res/mipmap-hdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-livestream/src/main/res/mipmap-hdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-livestream/src/main/res/mipmap-mdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-livestream/src/main/res/mipmap-mdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-livestream/src/main/res/mipmap-mdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-livestream/src/main/res/mipmap-mdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-livestream/src/main/res/mipmap-xhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-livestream/src/main/res/mipmap-xhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-livestream/src/main/res/mipmap-xhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-livestream/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-livestream/src/main/res/mipmap-xxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-livestream/src/main/res/mipmap-xxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-livestream/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-livestream/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-livestream/src/main/res/mipmap-xxxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-livestream/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-livestream/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-livestream/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-livestream/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 | #FFBB86FC
19 | #FF6200EE
20 | #FF3700B3
21 | #FF03DAC5
22 | #FF018786
23 | #FF000000
24 | #FFFFFFFF
25 |
--------------------------------------------------------------------------------
/tutorials/tutorial-livestream/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 | tutorial-livestream
19 |
--------------------------------------------------------------------------------
/tutorials/tutorial-livestream/src/main/res/values/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/tutorials/tutorial-livestream/src/main/res/xml/backup_rules.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
22 |
--------------------------------------------------------------------------------
/tutorials/tutorial-ringing/.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 | local.properties
16 |
--------------------------------------------------------------------------------
/tutorials/tutorial-ringing/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/tutorials/tutorial-ringing/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/tutorials/tutorial-ringing/src/main/res/mipmap-hdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-ringing/src/main/res/mipmap-hdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-ringing/src/main/res/mipmap-hdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-ringing/src/main/res/mipmap-hdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-ringing/src/main/res/mipmap-mdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-ringing/src/main/res/mipmap-mdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-ringing/src/main/res/mipmap-mdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-ringing/src/main/res/mipmap-mdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-ringing/src/main/res/mipmap-xhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-ringing/src/main/res/mipmap-xhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-ringing/src/main/res/mipmap-xhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-ringing/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-ringing/src/main/res/mipmap-xxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-ringing/src/main/res/mipmap-xxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-ringing/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-ringing/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-ringing/src/main/res/mipmap-xxxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-ringing/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-ringing/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-ringing/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-ringing/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 | #FFBB86FC
19 | #FF6200EE
20 | #FF3700B3
21 | #FF03DAC5
22 | #FF018786
23 | #FF000000
24 | #FFFFFFFF
25 |
--------------------------------------------------------------------------------
/tutorials/tutorial-ringing/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 | tutorial-ringing
19 |
--------------------------------------------------------------------------------
/tutorials/tutorial-ringing/src/main/res/values/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/tutorials/tutorial-ringing/src/main/res/xml/backup_rules.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
22 |
--------------------------------------------------------------------------------
/tutorials/tutorial-ringing/src/main/res/xml/network_security_config.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/tutorials/tutorial-video/.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 | local.properties
16 |
--------------------------------------------------------------------------------
/tutorials/tutorial-video/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/tutorials/tutorial-video/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/tutorials/tutorial-video/src/main/res/mipmap-hdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-video/src/main/res/mipmap-hdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-video/src/main/res/mipmap-hdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-video/src/main/res/mipmap-hdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-video/src/main/res/mipmap-mdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-video/src/main/res/mipmap-mdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-video/src/main/res/mipmap-mdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-video/src/main/res/mipmap-mdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-video/src/main/res/mipmap-xhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-video/src/main/res/mipmap-xhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-video/src/main/res/mipmap-xhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-video/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-video/src/main/res/mipmap-xxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-video/src/main/res/mipmap-xxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-video/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-video/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-video/src/main/res/mipmap-xxxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-video/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-video/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-android/36b96d0a29970d340cce592dbcd62e32aa599805/tutorials/tutorial-video/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/tutorials/tutorial-video/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 | #FFBB86FC
19 | #FF6200EE
20 | #FF3700B3
21 | #FF03DAC5
22 | #FF018786
23 | #FF000000
24 | #FFFFFFFF
25 |
--------------------------------------------------------------------------------
/tutorials/tutorial-video/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 | tutorial-video
19 |
--------------------------------------------------------------------------------
/tutorials/tutorial-video/src/main/res/values/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/tutorials/tutorial-video/src/main/res/xml/backup_rules.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
22 |
--------------------------------------------------------------------------------