Skip to content

Feat/fix tbb build issue#4

Merged
DuinoDu merged 2 commits into
mainfrom
feat/fix_tbb_build_issue
Sep 28, 2025
Merged

Feat/fix tbb build issue#4
DuinoDu merged 2 commits into
mainfrom
feat/fix_tbb_build_issue

Conversation

@DuinoDu

@DuinoDu DuinoDu commented Sep 28, 2025

Copy link
Copy Markdown
Collaborator

Rt

@DuinoDu DuinoDu merged commit 5ffd8d4 into main Sep 28, 2025
17 checks passed
@DuinoDu DuinoDu deleted the feat/fix_tbb_build_issue branch September 28, 2025 06:04
DuinoDu added a commit that referenced this pull request Jun 7, 2026
Two FFmpeg patch changes that together let downstream tools recover the
mp4 writer's first_pts_us_writer_ anchor from any stream's metadata,
without consulting any sidecar file.

* read patch -- libavformat/mov.c::mov_parse_stsd_data:
  Replace the mett branch's blanket avio_skip(pb, size) with a proper
  walk of the child atoms. The original code read at most 20 bytes of
  mime via avio_get_str, which truncated the in-buffer copy but only
  advanced the cursor by 20 -- the rest of the mime string + the tbtm
  child box were treated as garbage. Now the parser consumes the full
  ContentEncoding and MimeFormat null-terminated strings (buffers grown
  to 256), then hands the remaining bytes to mov_read_default so any
  registered child parser (tbtm, the new tbgt, anything we add later)
  fires for mett tracks too. Net effect: every mett stream now surfaces
  the `timebase` (= track_base_unix_us) tag, where previously only RGB
  / depth carried it.

* enc patch -- libavformat/movenc.c:
  Add `mov_write_tbgt_tag`, a sibling of the existing tbtm writer that
  emits the writer's track_base_godot_ticks_us (== first_pts_us_writer_)
  as a 16-byte box (fourcc 'tbgt' + big-endian i64). Call it everywhere
  tbtm is currently written: the raw1 / FFV1 / HEVC video sample entry
  blocks, and inside mov_write_mett_tag. The read patch registers a
  matching mov_read_tbgt that surfaces the value as a
  `track_base_godot_ticks_us` stream tag.

Verified on a fresh Quest 3 capture (Stage 6 muxer + Stage 6 reader):
  #0 mett (left_controller):  tb=...242  tbgt=1870352
  #1 mett (right_controller): tb=...242  tbgt=1870352
  #2 mett (left_hand):        tb=...242  tbgt=1870352
  #3 mett (left_input):       tb=...242  tbgt=1870352
  #4 mett (right_input):      tb=...242  tbgt=1870352
  #5 mett (head):             tb=...242  tbgt=1870352
  #6 hev1:                    tb=...242  tbgt=1870352
  #7 FFV1:                    tb=...242  tbgt=1870352

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant