Skip to content

Release v1.2.0#123

Merged
YPandas merged 8 commits intomasterfrom
develop
Oct 28, 2025
Merged

Release v1.2.0#123
YPandas merged 8 commits intomasterfrom
develop

Conversation

@YPandas
Copy link
Copy Markdown
Contributor

@YPandas YPandas commented Oct 17, 2025

Issue #, if available:

  • N/A

Description of changes:

What was changed?

  • Multi-Viewer WebRTC storage (Ingestion): Implemented viewer participant WebRTC connection establishment with the KVS WebRTC storage session
  • Environment Configuration: Added .env file support for directly using AWS credentials and control plane endpoints
  • H.264 Codec Validation: Added codec compatibility checks for storage session mode
  • Enhanced Error Handling: Implemented error dialogs for storage session join failures
  • UI Improvements
    • data channel text box is removed when using WebRTC Storage
    • local video view is removed when using WebRTC Storage viewer
  • AWS SDK Upgrade: Updated AWS Android SDK from 2.75.0 to 2.81.1 to address the 16 KB Google Play compatibility issue [https://developer.android.com/guide/practices/page-sizes]

Why was it changed?

  • Multi-Viewer Feature Launch: enables customer to view their camera using WebRTC from multiple viewing devices (mobile/browser); max concurrent sesison is limited to 3
  • Developer Experience: Simplified development workflow by eliminating Cognito setup requirements through .env configuration
  • Production Readiness: Enhanced codec validation and error handling match with the currently supported formats

How was it changed?

  • Removed master-only WebRTC storage from Android (allows customers to use device as master and viewer for WebRTC Storage)
  • Added JoinStorageSessionAsViewer (https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_webrtc_JoinStorageSessionAsViewer.html) call
  • Added UI validation preventing storage session viewers from using video with ingest media (audio-only restriction)
  • Modified build.gradle to parse .env file and generate compile-time BuildConfig constants for AWS credentials
  • Added custom credentials provider(for testing only) and disabled logout for .env credential users
  • Implemented H.264 encoder/decoder validation with user-friendly error dialogs
  • Enhanced storage session error handling with pop up notifications
  • Decided UI element's visibility based on webrtc ingestion configuration

What testing was done for the changes?

  • P2P Compatibility: Verified mobile master and viewer functionality remains intact in peer-to-peer mode
  • Multi-Viewer Storage: Tested Android master with WebRTC storage (audio+video), multiple Android viewers with audio-only ingestion, mixed Android/JS scenarios, dynamic viewer connection/disconnection, and verified media recording and playback from storage streams
  • Cross-SDK Compatibility: Confirmed Android SDK establishes connections successfully with KVS WebRTC SDKs (iOS, C, JS)
  • UI Transitions: Verified seamless UI transitions between ingestion mode and peer-to-peer mode
  • Error Handling: Tested error handling scenarios and dialog responses for various failure cases
  • Codec Validation: Confirmed proper H.264 encoder/decoder detection and error messaging

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

YPandas and others added 8 commits October 8, 2025 12:29
* feat: enable ingest media for viewers with audio-only restriction

- Remove master-only restriction for ingest media functionality
- Add validation to prevent viewers from using ingest media with video
- Implement storage session support for viewers (audio-only)
- Update WebRTC activity to skip video track creation for storage viewers

* Update WebRtcActivity with current version

- Replace WebRtcActivity.java with current working version
- remove the fallback solution of null clientID

* adding verbose logs back and remove overrides that only call super

* changing visibility of KEY_SEND_VIDEO variable

* refactor: extract storage client methods and update master validation logic

- Extract storage client configuration into separate methods in WebRtcActivity
- Add helper methods for better code clarity
- Remove mandatory video requirement for masters in non-storage scenarios
- Update viewer validation message for multi-viewer participants

* feat: Add H.264 codec validation for WebRTC storage sessions

- Show AlertDialog when H.264 encoder missing for master with ingest media
- Show AlertDialog when H.264 decoder missing for storage session viewers
- Add codecValidationFailed flag to prevent WebRTC initialization after validation failure
- Add null check for audioManager in onDestroy() to prevent crash on early exit

* feat: Add codec logging and final parameter to WebRtcActivity

- Restore codec logging in onCreate() to show all available encoders/decoders for debugging
- Add final modifier

---------

Co-authored-by: Yuqi Huang <yuuqih@amazon.com>
- Show AlertDialog when JoinStorageSession API fails
- Close WebRTC activity when user dismisses error dialog

Co-authored-by: Yuqi Huang <yuuqih@amazon.com>
* Add .env file support for AWS credentials with production warnings

• Load AWS credentials from .env file via BuildConfig
• Skip authentication flow when env credentials present
• Disable logout functionality for env credential users
• Add production warning message for env credential usage
• Maintain fallback to Cognito authentication when no env file

* Add custom endpoint configuration via .env file

• Load CUSTOM_ENDPOINT from .env file via BuildConfig

* format improvement

* changing variable name(CUSTOM_ENDPOINT --> CONTROL_PLANE_URI)

* Add CustomCredentialsProvider to use AWS credentials from .env file

* refactor: centralize AWS credentials validation logic

- Make hasEnvCredentials() public static in KinesisVideoWebRtcDemoApp
- Remove duplicate hasEnvSetting() method from SimpleNavActivity
- Replace inline credential validation in StartUpActivity

---------

Co-authored-by: Yuqi Huang <yuuqih@amazon.com>
Co-authored-by: Yuqi Huang <yuuqih@amazon.com>
- Hide data channel input when ingest media is enabled
- Hide local video view when send video is disabled

Co-authored-by: Yuqi Huang <yuuqih@amazon.com>
Co-authored-by: Yuqi Huang <yuuqih@amazon.com>
Co-authored-by: Yuqi Huang <yuuqih@amazon.com>
Co-authored-by: Yuqi Huang <yuuqih@amazon.com>
@YPandas YPandas added 1.2.0 release-1.2.0 Release labels Oct 17, 2025
@YPandas YPandas merged commit 6898ee8 into master Oct 28, 2025
11 checks passed
@YPandas YPandas deleted the develop branch October 28, 2025 17:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

1.2.0 release-1.2.0 Release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants