Android ACS Calling SDK: Unable to send video above 640×360 - both RawOutgoingVideoStream and LocalVideoStream

Anto Jose 0 Reputation points
2026-08-04T14:47:51.0166667+00:00

Product

  • Azure Communication Services Calling SDK for Android - 'com.azure.android:azure-communication-calling:2.16.0'
  • Features: RawOutgoingVideoStream / VirtualOutgoingVideoStream, and LocalVideoStream

Environment

  • Device: Google Pixel 5
  • Camera capture: CameraX (for the raw-frame path)
  • Call topology: group call (multiple participants / SFU)
  • Receiver: ACS Web/JS SDK, rendering the incoming video full-screen, with no incoming video constraints applied
  • RawOutgoingVideoStream VideoStreamFormat configured as:
    • Resolution: 1280 × 720
    • Pixel format: NV12 (also tested with RGBA)
    • Frame rate: 30 fps (configured)
      • Stride1: 1280, Stride2: 1280

Issue

We use the Android ACS Calling SDK to send outgoing video and observe that ACS consistently encodes and transmits at 640×360 using a software H.264 encoder (h264 sw), regardless of the resolution, pixel format, or stream type we provide.

For the raw path, our application generates 1280×720 frames and submits them via sendRawVideoFrame(). The SDK accepts every frame successfully. Our logs confirm the supplied format:

  • pixelFormat=NV12 1280x720 30fps stride1=1280 stride2=1280

However, the outbound video statistics consistently report:

{
  "bitrateInBps": 172430,
  "codecName": "h264 sw",
  "frameWidth": 640,
  "frameHeight": 360,
  "frameRate": 13.37
}

Questions

  1. Does the Android ACS SDK use a software H.264 encoder (h264 sw) for outgoing video, or should it use the device's hardware encoder (MediaCodec) when available? We observe h264 sw for both RawOutgoingVideoStream and LocalVideoStream on a Pixel 5 (which has a hardware H.264 encoder).
  2. Is the SDK expected to downscale 1280×720 (or 1920×1080) input to 640×360 before encoding?
  3. Are there documented default limits or adaptive policies that cap the transmitted resolution — and specifically, does the group-call topology impose a lower default outgoing resolution than a 1:1 call?
  4. Is there any API or configuration (e.g. OutgoingVideoConstraints) that lets the application request or preserve 1280×720 transmission? If so, what are the supported maximums on Android?

Please let me know if any further details required. This is a critical issue for our product, so any guidance or workaround would be greatly appreciated.

Azure Communication Services

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.