TEN-framework / TEN-framework/ten-framework

[FEATURE] Video (vision) input support for gemini_mllm_python — regression from legacy gemini_v2v_python

Open
#2,238 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
11.1k
Forks
1.4k
Avg merge
2d 15m
Merged PRs (30d)
22

Description

Description

The legacy TEN-Agent extension gemini_v2v_python supported realtime vision: it consumed RTC
video_frame input, converted frames to JPEG, and forwarded them to the Gemini Live API
alongside audio (this was a flagship demo — "realtime vision and realtime screenshare detection").

The current generation gemini_mllm_python (v0.2.1) appears to be audio-only:

  • extension.py only implements the audio ingress path (send_realtime_input(audio=...));
    there is no video_frame handling.
  • The shared MLLM interface (ten_ai_base/api/mllm-interface.json) only defines
    audio_frame_in / audio_frame_out — no video input channel. The same applies to
    openai_mllm_python and glm_mllm_python.

Gemini Live natively supports continuous video input (processed at 1 fps server-side),
so this looks like a capability regression introduced by the v2v → mllm rewrite rather
than a provider limitation.

Use case

We are building a realtime voice + video call agent on TEN (agora_rtc + gemini_mllm_python).
Voice works out of the box, but the camera track cannot reach Gemini because the MLLM
interface has no video path.

Request

  1. Add a video input channel to the MLLM interface (ten_ai_base);
  2. Restore video frame forwarding in gemini_mllm_python, similar to what the legacy
    gemini_v2v_python did (see PR #474).

Questions

  • Is video support for the mllm extensions already on the roadmap?
  • If not, would a PR be welcome? Guidance on how you'd like the ten_ai_base interface
    change to be split would help.
Severity

Major

Additional Information

No response

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by comparing gemini_mllm_python's extension.py and ten_ai_base/api/mllm-interface.json with the legacy gemini_v2v_python implementation referenced by PR #474. Trace the existing audio ingress path and its interface channel, then determine the corresponding video-frame path. Done means the shared interface exposes video input and gemini_mllm_python forwards RTC frames to Gemini alongside audio.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
ai, audio-video-rtc
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.