Skip to content

Releases: Xmax-AI/XmaxSDK-HarmonyOS

1.0.12

Choose a tag to compare

@WengYuehTing WengYuehTing released this 18 Oct 17:07

What's New

  • Add adaptive uplink and downlink transmission tiers based on network quality and device performance.
  • Add normalized video statistics for monitoring resolution, bitrate, frame rate, packet loss, and latency.
  • Support original-face restoration during generation; XLab enables it for virtual try-on.
  • Preserve image and video aspect ratios while selecting generation and output sizes independently.
  • Improve trajectory continuity and align interaction coordinates across media sizes.
  • Refresh XLab, usage documentation, and demo materials; unify RTC log labels and improve log spacing in DevEco Studio.

API Changes

  • Add the optional faceRestoration argument to both startGeneration overloads. It defaults to false on each public call and can be updated during generation.
  • Add setUplinkVideoStatisticsListener and setDownlinkVideoStatisticsListener, with their statistics and listener types.
  • Replace MediaServicing.resolveModelInputSize with resolveMediaSize(size, source), resolveGenerationSize(size), and resolveTargetSize(size, maximumSize, frameInterpolationEnabled?). Export RealtimeMediaSource for source-specific sizing.
  • Interaction points and outgoing trajectory coordinates now use normalized media coordinates in [0, 1] instead of pixel coordinates. Update custom integrations accordingly.
  • Remove the legacy logging-options second argument of XmaxConfiguration. Use new XmaxConfiguration(apiKey, environment, loggerOptions).
  • Supported models are X2_0 and X2_0_SLA; SLA uses the client's configured production environment.

1.0.11

Choose a tag to compare

@WengYuehTing WengYuehTing released this 23 Sep 10:17

What's New

  • Improve high-resolution video playback, including 4K input, by downscaling through the system Surface processing pipeline before reading frames.
  • Reduce unnecessary frame drops caused by normal video processing latency for smoother local playback.
  • Initialize video decoders asynchronously to keep the UI responsive while opening large videos.
  • Simplify internal decoder timing and Surface dimension handling.

API Changes

  • No public API changes.

1.0.10

Choose a tag to compare

@WengYuehTing WengYuehTing released this 23 Sep 01:13

What's New

  • Control local video playback with pause and resume, including tap-to-toggle playback in XLab.
  • Freeze the generated view with a native RTC snapshot while local video playback is paused.
  • Play local videos once or loop them. XLab uses looping playback by default.
  • Log incoming RTC room signals for troubleshooting.
  • Determine camera output dimensions from the display orientation rather than display width and height.

API Changes

  • Added pauseLocalVideoStream(), resumeLocalVideoStream(), and toggleLocalVideoStreamPlayback().
  • Added localVideoPlaybackState and setLocalVideoPlaybackStateListener() with PLAYING, PAUSE, and ENDED states.
  • Added an optional third loop argument to createLocalVideoStream(filePath, videoFormat?, loop?), defaulting to true.
  • With loop: false, natural completion stops local audio/video frame submission and reports ENDED. In-flight remote results can continue to render; the SDK does not automatically stop the generation task or disconnect the session.
  • ENDED describes local playback completion, not completion of cloud processing. Replaying an ended video requires stopping and recreating the local stream after disconnecting if necessary.

1.0.9

Choose a tag to compare

@WengYuehTing WengYuehTing released this 21 Sep 02:16

What's New

  • The Pro-tier realtime model is now named X2.0-SLA, aligning the SDK with the
    server-side model identifier. Model capabilities are unchanged: exact
    1024 × 1920 / 1920 × 1024 input buckets, 2,100,000-pixel bound, 30 fps
    default, and 1024 × 1920 default camera format.

Fixes

  • RTC engine teardown no longer propagates vendor SDK exceptions:
    destroyRTCEngine() errors are converted to XmaxError, and each event
    unbinding during destroy is isolated so a single failure cannot mask the
    engine release.

API Changes

  • Breaking: RealtimeModel.X2_0_PRO is renamed to RealtimeModel.X2_0_SLA
    with the model identifier x2.0-sla. The former x2.0-pro identifier is no
    longer accepted and rejects with INVALID_CONFIGURATION.
  • XLab migrates a saved Pro (x2.0-pro) model selection to X2.0-SLA
    automatically on launch.

1.0.8

Choose a tag to compare

@WengYuehTing WengYuehTing released this 20 Sep 12:13

What's New

  • Rotating the camera between portrait and landscape during generation now stops the current task, keeps the RTC connection and remote track, and restarts generation with the latest capture dimensions and cached conditions. The state briefly returns to CONNECTED with RealtimeReason.ORIENTATION_CHANGED and becomes GENERATING again once confirmed — the same connection-preserving policy as switchCamera().
  • Orientation flips never use change_condition to resize (the server cannot change task dimensions); a mismatched task is always terminated and resubmitted. Rotations during a start or restart confirmation are detected through orientation-drift checks and rebuilt until the submitted orientation matches capture.
  • User actions are no longer blocked while a rotation restart is in progress: new conditions submitted during the settle window take effect immediately and supersede the pending restart, and conditions submitted while the restarted task awaits confirmation are merged into it through change_condition instead of failing with a concurrent-operation error.
  • switchCamera() also self-checks orientation drift on completion, closing the rotation-during-switch-confirmation gap.
  • XLab keeps the loading indicator visible for the whole orientation-driven rebuild and restores the remote video track after SDK-internal restarts.

API Changes

  • RealtimeContext accepts an optional faceDetection argument, sent as detection in generation start/condition parameters (default false).

1.0.7

Choose a tag to compare

@WengYuehTing WengYuehTing released this 20 Sep 08:12

What's New

  • Camera capture can now ignore display orientation changes: rotating the window no longer flips capture dimensions or disconnects the active session when observation is disabled.
  • A failed native camera frame read now drops the frame silently instead of reporting a media error, avoiding spurious error callbacks during transient reads.
  • XLab is locked to portrait orientation and its realtime camera scenario disables display observation.

API Changes

  • createLocalCameraStream() accepts an optional observeDisplayChange argument (default true). Pass false to keep a fixed capture ratio: the SDK skips display-orientation listening, does not rotate or flip capture dimensions, and does not disconnect with RealtimeReason.ORIENTATION_CHANGED on window rotation.

1.0.6

Choose a tag to compare

@WengYuehTing WengYuehTing released this 13 Sep 17:52

What's New

  • Added Chinese and English localization to XLab and SDK diagnostics.
  • Improved realtime lifecycle handling, including local preparation, preview readiness, generation cancellation, and camera orientation changes.
  • Added optional microphone capture for camera input and independent local-preview and remote-playback volume controls.
  • Added ordered remote video frame callbacks and configurable video upload bitrate and encoder preference.
  • Improved model selection and XLab's realtime interface.

API Changes

  • RealtimeState now reports PREPARING and READY and carries completion or failure details in state.reason (RealtimeReason). The former disconnectionReason, DISCONNECTED, and ERROR states are removed.
  • setRemoteVideoFrameListener() exposes post-processed remote frames. createLocalCameraStream() accepts an optional useMicrophone argument, and RealtimeVideoFormat accepts bitrate and encoder-preference options.
  • RealtimeModel.X2_0_PRO replaces X2_0_SLA.
  • Removed the separate error and camera-preview-ready listeners, stopGeneration(), RealtimeMediaSource, and XmaxErrorSeverity. Observe lifecycle failures and readiness through setStateListener(); use disconnect() to cancel an active connection or generation.

1.0.5

Choose a tag to compare

@WengYuehTing WengYuehTing released this 09 Sep 12:52

What's New

  • Reworked camera capture around CameraKit external frames with native libyuv/NEON conversion to reduce frame copies and improve delivery performance.
  • Added orientation-aware camera output and landscape preview support, with clean disconnection when an active camera generation changes orientation.
  • Improved camera profile selection with a preferred 16:9 path and 4:3 fallback, and added frame indexes to outgoing generation SEI.

API Changes

  • Added RealtimeDisconnectionReason and RealtimeState.disconnectionReason so applications can distinguish normal disconnection from camera-orientation changes.
  • Camera-backed RealtimeVideoTrack.videoFormat now follows the current output orientation.

1.0.4

Choose a tag to compare

@WengYuehTing WengYuehTing released this 07 Sep 09:41

What's New

  • Added configurable China and global service environments for realtime and storage requests.
  • Updated XLab and the integration guide with explicit service-environment examples.
  • Refined the README description of the end-to-end generation workflow and gesture interaction.

API Changes

  • Added XmaxEnvironment.CHINA and XmaxEnvironment.GLOBAL.
  • Extended XmaxConfiguration with service-environment selection while preserving the existing logger-options call pattern.

1.0.3

Choose a tag to compare

@WengYuehTing WengYuehTing released this 06 Sep 18:21

What's New

  • Added support for the X2_0_SLA realtime model.
  • Updated XLab to display and persist all available realtime model selections.
  • Increased the supported realtime input resolution range and updated the XLab default format to 1024 × 1920 at 30 fps.

API Changes

  • Added RealtimeModel.X2_0_SLA.