ChapterForge
Loading...
Searching...
No Matches
trak_builder.hpp
Go to the documentation of this file.
1//
2// trak_builder.hpp
3// ChapterForge
4//
5// Created by Till Toenshoff on 12/9/25.
6// Copyright © 2025 Till Toenshoff. All rights reserved.
7//
8
9#pragma once
10
11#include <cstdint>
12#include <memory>
13#include <vector>
14#include <string>
15
16#include "mp4_atoms.hpp"
17
18// Build full audio track (with tref linking to chapter tracks)
19std::unique_ptr<Atom> build_trak_audio(uint32_t track_id, uint32_t timescale, uint64_t duration_ts,
20 std::unique_ptr<Atom> stbl_audio,
21 const std::vector<uint32_t> &chapter_ref_track_ids,
22 uint64_t tkhd_duration_mvhd);
23
24// Build full text chapter track.
25std::unique_ptr<Atom> build_trak_text(uint32_t track_id, uint32_t timescale, uint64_t duration_ts,
26 std::unique_ptr<Atom> stbl_text, uint64_t tkhd_duration_mvhd,
27 const std::string &handler_name, bool enabled);
28
29// Build timed metadata track (mdta/metx style).
30std::unique_ptr<Atom> build_trak_metadata(uint32_t track_id, uint32_t timescale,
31 uint64_t duration_ts,
32 std::unique_ptr<Atom> stbl_metadata,
33 uint64_t tkhd_duration_mvhd,
34 const std::string &handler_name);
35
36// Build full image chapter track.
37std::unique_ptr<Atom> build_trak_image(uint32_t track_id, uint32_t timescale, uint64_t duration_ts,
38 std::unique_ptr<Atom> stbl_image, uint16_t width,
39 uint16_t height, uint64_t tkhd_duration_mvhd);
std::unique_ptr< Atom > build_trak_image(uint32_t track_id, uint32_t timescale, uint64_t duration_ts, std::unique_ptr< Atom > stbl_image, uint16_t width, uint16_t height, uint64_t tkhd_duration_mvhd)
std::unique_ptr< Atom > build_trak_text(uint32_t track_id, uint32_t timescale, uint64_t duration_ts, std::unique_ptr< Atom > stbl_text, uint64_t tkhd_duration_mvhd, const std::string &handler_name, bool enabled)
std::unique_ptr< Atom > build_trak_metadata(uint32_t track_id, uint32_t timescale, uint64_t duration_ts, std::unique_ptr< Atom > stbl_metadata, uint64_t tkhd_duration_mvhd, const std::string &handler_name)
std::unique_ptr< Atom > build_trak_audio(uint32_t track_id, uint32_t timescale, uint64_t duration_ts, std::unique_ptr< Atom > stbl_audio, const std::vector< uint32_t > &chapter_ref_track_ids, uint64_t tkhd_duration_mvhd)