[Bugfix] Qwen3-VL/Qwen-Omni: honor max_pixels/min_pixels for video prompts (#49015)

SYLAR committed Jul 19, 2026 at 01:29 UTC 7c2acd38b72de4a4177f2a4c2b80b216da7d55b0
2 files changed +30
vllm/model_executor/models/qwen2_5_omni_thinker.py
+17
@@ -509,6 +509,23 @@ class Qwen2_5OmniThinkerMultiModalProcessor(
509 **mm_kwargs,
510 )
511
512 + merged = self.info.ctx.get_merged_mm_kwargs(mm_kwargs)
513 + if mm_data.get("videos") and (
514 + merged.keys() & {"size", "min_pixels", "max_pixels"}
515 + ):
516 + mm_kwargs = dict(mm_kwargs)
517 + video_size = dict(self.info.get_hf_processor().video_processor.size)
518 + size_override = merged.get("size")
519 + if size_override is not None:
520 + video_size = video_size | size_override
521 + min_pixels = merged.get("min_pixels")
522 + if min_pixels is not None:
523 + video_size["shortest_edge"] = min_pixels
524 + max_pixels = merged.get("max_pixels")
525 + if max_pixels is not None:
526 + video_size["longest_edge"] = max_pixels
527 + mm_kwargs["size"] = video_size
528 +
529 hf_inputs = super()._call_hf_processor(
530 prompt=prompt,
531 mm_data=mm_data,
vllm/model_executor/models/qwen3_vl.py
+13
@@ -1272,6 +1272,19 @@ class Qwen3VLMultiModalProcessor(BaseMultiModalProcessor[Qwen3VLProcessingInfo])
1272 # NOTE: a copy of is created to update do_sample_frames,
1273 # otherwise mm_hash for the object will be incorrect.
1274 video_mm_kwargs = dict(**mm_kwargs)
1275 + merged = self.info.ctx.get_merged_mm_kwargs(mm_kwargs)
1276 + if merged.keys() & {"size", "min_pixels", "max_pixels"}:
1277 + video_size = dict(self.info.get_video_processor().size)
1278 + size_override = merged.get("size")
1279 + if size_override is not None:
1280 + video_size = video_size | size_override
1281 + min_pixels = merged.get("min_pixels")
1282 + if min_pixels is not None:
1283 + video_size["shortest_edge"] = min_pixels
1284 + max_pixels = merged.get("max_pixels")
1285 + if max_pixels is not None:
1286 + video_size["longest_edge"] = max_pixels
1287 + video_mm_kwargs["size"] = video_size
1288 sampled_fps = video_mm_kwargs.get("fps")
1289 if is_list_of(sampled_fps, float):
1290 video_mm_kwargs["fps"] = sampled_fps[item_idx]