Repository navigation
Releases
0.0.5
Added
-
Added a Windows executable (.exe) build as a release artifact for easier distribution and execution without a Python environment.
-
Added true streaming I/O for
extractandinject, enabling immediate output creation:extract: BIN output is written progressively while reading the input HEVC stream.inject: HEVC output is written progressively while rewriting the input stream.
Changed / Improved
- Reworked
extractandinjectto avoid full-file buffering and eliminate in-memory accumulation, resulting in significantly faster processing and constant memory usage on large streams. - Improved HDR Vivid plot generation to be more accurate and semantically correct, ensuring the visualization reflects decoded HDR Vivid metadata values rather than indirect or approximate derivations.
Fixed
- Prevented performance and stability issues on large inputs by removing workflows that previously required storing the full stream (or large intermediate structures) in memory during
extract/inject.
0.0.4
HDR Vivid (CUVA) Plot – Release Notes
Added
-
Implemented direct decoding of CUVA HDR Vivid bitstream fields from T.35 payloads stored in BIN files, extracting 12-bit minimum, average, variance, and maximum luminance values.
-
Added PQ (ST 2084) domain plotting for luminance visualization, providing perceptually accurate brightness representation consistent with HDR Vivid signaling.
-
Introduced a custom PQ-scaled Y axis with fixed luminance key points ranging from 0.01 to 10,000 nits, labeled in absolute nits.
-
Added area-based luminance visualization:
- Maximum luminance curve (MaxCLL-like behavior) with semi-transparent fill.
- Average luminance curve (MaxFALL-like behavior) layered above.
-
Implemented a high-resolution plot layout (3000×1200) with tuned margins, typography, and grid density for long-form content analysis.
-
Added a top-left informational overlay displaying:
- BIN filename
- Total number of entries
- Missing entry count
- Invalid HDR Vivid payload count
- Luminance scaling reference (4095 → 1000 nits)
-
Added graceful handling of missing or empty BIN entries, inserting a safe luminance floor to preserve plot continuity.
Changed / Improved
- Reworked plot generation to use decoded HDR Vivid metadata values instead of raw payload byte statistics, ensuring semantic correctness.
- Replaced logarithmic nits scaling with true PQ-domain mapping, aligning the plot with professional HDR Vivid analysis expectations.
- Improved legend content to report computed peak and average luminance statistics derived only from valid entries.
- Enhanced grid styling (major and minor lines) and axis labeling for improved readability on dense timelines.
- Standardized plot appearance to provide a clean, consistent HDR Vivid–focused visualization, independent of any external metadata formats.
Fixed
- Fixed incorrect luminance interpretation caused by using raw payload byte maxima instead of decoded 12-bit HDR Vivid fields.
- Fixed instability in low-luminance regions by introducing a minimum PQ floor, preventing zero or negative values in the plot.
- Prevented crashes and misleading graphs when BIN files contain empty, truncated, or malformed HDR Vivid payloads.
- Ensured invalid CUVA payloads (incorrect country code, provider code, or system start code) are excluded from statistics and explicitly reported in the plot overlay.
0.0.3
Added
- Implemented a minimal internal bitreader to inspect HEVC slice headers at bit level.
- Added best-effort detection of
first_slice_segment_in_pic_flagfor HEVC VCL NAL units, enabling Access Unit (AU) boundary inference when AUD is missing. - Introduced fallback AU mapping logic based on slice header inspection for streams without AUD (NAL type 35).
- Improved AU association for parameter sets and SEI NALs occurring before the first VCL, assigning them to a practical default AU.
- Added bilingual (ES/EN) error messages in several critical validation paths for better usability across environments.
Changed / Improved
-
Refactored
compute_au_map()to support dual AU detection strategies:- Primary: explicit AUD (NAL type 35).
- Fallback: HEVC slice header analysis when AUD is absent.
-
Enhanced robustness of Access Unit mapping to better handle non-standard or poorly muxed HEVC streams.
-
Improved error handling and messaging consistency across commands (
info,extract,remove,inject). -
Clarified failure conditions when AUD is required but not present, using explicit and descriptive error messages.
-
Improved internal structure and readability of AU mapping logic, preparing the codebase for future HEVC-related extensions.
Fixed
- Corrected AU mapping behavior when VCL NALs appear before any AUD or when AUDs are partially missing.
- Fixed handling of empty or invalid BIN files with clear termination and user-facing error messages.
- Prevented silent failures in matplotlib import by providing explicit diagnostic output.
- Ensured consistent validation of HDR Vivid payloads during BIN injection to prevent invalid cc/pc data from being processed.
0.0.2
Added
- Real-time progress display for extraction and injection of HDR Vivid SEI data, showing percentage, elapsed time, and estimated remaining time.
- Unified helper functions for reading files, generating SEI NAL units, and locating NAL start codes, improving maintainability.
- Consistent colored console output for
[INFO],[OK],[WARN], and[ERROR]messages. - Display of filenames (not full paths) in logs for clearer and more organized output.
Changed / Improved
- Full refactoring of extraction and injection routines to integrate progress tracking and cleaner structure.
- Injection now calculates the correct insertion point for SEI NAL units with visual progress indication.
- Extraction accumulates HDR Vivid data progressively with visual progress and writes to a
.binfile. - Simplified and more readable codebase with reusable functions for future development.
Fixed
- Correct handling of input/output file validation with informative error messages.
- Prevention of direct jumps to 100% in progress; progress now reflects actual processing status.