Issue Description
During cross device video calls initiated between a mobile phone and a smartwatch, the video feed on the smartwatch interface displays the initial frame successfully but immediately freezes thereafter. Despite the frozen visual state, the audio stream remains active and functions normally throughout the duration of the call. No specific error messages or crash reports are generated during this failure.
Platform/SDK
Operating System: Android (Wearable / Smartwatch Architecture)
Service: Agora RTC SDK
Component: Hardware Video Decoder and Buffer Management
Root Cause
The video freeze originates from hardware specific limitations within the smartwatch decoding and rendering pipeline. Wearable devices often possess restricted memory and unoptimized hardware decoders compared to standard mobile devices.
In this scenario, the smartwatch successfully decodes the first keyframe but fails to flush and update the internal texture buffers for subsequent frames. Because the decoder continues to output raw byte frames that the restricted hardware cannot process rapidly enough, the rendering surface locks up, resulting in a persistent frozen image while the lighter audio thread continues uninterrupted.
Step-by-Step Solution
Optimize Texture Buffer Allocation
To accommodate the hardware limitations of the smartwatch, the application must explicitly redefine the texture buffer capacity. Increasing the buffer count prevents pipeline blockages.
Modify Decoder Output Formats
The media engine must be instructed to bypass raw byte frame outputs and utilize texture decoding directly, which is significantly more efficient on constrained hardware surfaces.
Apply Configuration Parameters
Inject the following private parameters into the engine initialization sequence before joining the channel. These parameters override the default buffer handling and decoding behavior:
setParameters("{\"che.video.capture_texture_buffer_count\": 4}"); setParameters("{\"rtc.video.decoder_out_byte_frame\": false}");Validate Continuous Rendering
Compile and deploy the updated application architecture to both the mobile device and the smartwatch. Initiate a new video call and verify that the smartwatch rendering surface updates continuously without stalling after the initial frame.
Summary and Best Practice
Wearable integrations require specific memory and decoding optimizations to function reliably. By proactively adjusting the texture buffer count and forcing texture based decoding, applications can bypass hardware bottlenecks on smartwatches and maintain fluid video synchronization alongside the audio stream.