"""Standalone Transformers processor for quicksviewer_8b (one conversation). pixel_values stays CPU uint8 [sum_frames,3,980,980]. image_spans identify only 64 content embeddings, excluding /. timestamp_spans identify ordinary digit-token slots to patch after the model determines cube boundaries. """ import json import os from pathlib import Path import re import shutil import numpy as np import torch from transformers import AutoTokenizer from transformers.feature_extraction_utils import BatchFeature from transformers.processing_utils import ProcessorMixin from transformers.utils.hub import cached_file from .image_processing_quicksviewer import QuicksviewerImageProcessor, SIGLIP_SIZE from .video_processing_quicksviewer import ( QuicksviewerVideoProcessor, frame_temporal_ids, num_video_cubes, timestamp_placeholder_ids, timestamp_token_count, video_list, ) VISUAL_START_ID = 151669 VISUAL_END_ID = 151670 VISUAL_CONTENT_ID = 128244 NQ = 64 _MEDIA_PATTERN = re.compile(r"|