XiaoHongbo-Hope opened a new pull request, #10889:
URL: https://github.com/apache/paimon/pull/10889
### Purpose
Support `table.add_video("/data/example.mp4")` without caller-supplied frame
rows or descriptors. Optional `metadata={"episode_id": 42}` fills business
fields on every row.
- Generate presentation-order `frame_index` and actual PTS-based `timestamp`
in seconds from the first frame, preserving variable frame timing.
- Store the original encoded bytes through the existing `.video` writer.
Explicit `frames`, `add_videos`, and the persistent format are unchanged.
- Require a local, single-video-stream file, `frame_index: int64`,
`timestamp: float64`, and a configured video column. The source must remain
unchanged until import returns; external state/action alignment is not inferred.
- Validate before writing, reject decoding/timestamp errors, and abort
detected source changes. Retain a compact timestamp array and write batches of
1,024 rows. Timing discovery decodes the full video; existing writer-side
indexing may decode it again.
### Tests
`multimodal_table_test.py` + `multimodal_video_test.py`: **125 passed, 5
skipped, 53 subtests passed**, using PyAV 15.1.0 and PyArrow 19.0.1.
Real H.264 MP4 coverage includes CFR/VFR, nonzero start PTS, B-frames,
unchanged payload bytes/pixels, and multi-batch import. Also covers
schema/metadata validation, audio-only/multiple-stream/corrupt input,
missing/backward timestamps, decode/source-change failures without new
snapshots, and explicit-frame regressions.
Flake8, Python syntax check, and `git diff --check` passed.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]