Dropout Extension Format¶
This document defines a standard extension format for storing dropout annotations for CVBS files.
The format is an extension to the core CVBS File Format Specification and is intentionally separate from the core metadata schema.
Purpose and Scope¶
A dropout annotation marks one or more contiguous CVBS samples within a frame where source signal quality is lost or significantly degraded.
This extension format is for producer-generated dropout metadata only. It does not alter CVBS sample payload bytes, video timing definitions, or any core metadata semantics.
File Naming¶
The dropout extension file is a separate SQLite sidecar file:
- Dropout extension metadata:
<basename>.dropouts.meta
<basename> must match the basename of the associated CVBS data/metadata files.
Association with Core Metadata¶
A dropout extension file applies to one logical CVBS capture identified by basename.
If the core metadata file (<basename>.meta) exists, the extension's cvbs_file_id values must reference a valid cvbs_file.cvbs_file_id row in that file.
Producers must ensure the sidecar is mapped to the correct capture by validating all of the following before writing annotations:
- The sidecar basename exactly matches the associated CVBS basename.
- Every row's
cvbs_file_idexists in<basename>.meta. - All dropout rows in the sidecar refer only to that associated capture.
If no core metadata file exists, producers must set cvbs_file_id = 1 and treat it as the implicit default capture identifier.
SQLite Schema¶
PRAGMA user_version = 5;
CREATE TABLE dropout_run (
cvbs_file_id INTEGER NOT NULL,
frame_id INTEGER NOT NULL
CHECK (frame_id >= 0),
sample_start INTEGER NOT NULL
CHECK (sample_start >= 0),
sample_count INTEGER NOT NULL
CHECK (sample_count > 0),
severity INTEGER NOT NULL
CHECK (severity >= 0 AND severity <= 100),
PRIMARY KEY (cvbs_file_id, frame_id, sample_start)
);
CREATE INDEX idx_dropout_run_frame
ON dropout_run (cvbs_file_id, frame_id);
Table Definition¶
dropout_run Table¶
The dropout_run table records sample-range dropout annotations within frames.
Each row defines one contiguous dropout run in a frame.
cvbs_file_id¶
- Type: INTEGER
- Nullable: No
- Description: Identifier of the associated capture. Must match
cvbs_file.cvbs_file_idin<basename>.metawhen that file exists.
frame_id¶
- Type: INTEGER
- Nullable: No
- Range: 0 to
number_of_sequential_frames - 1when known - Description: Zero-based sequential frame index within capture order.
sample_start¶
- Type: INTEGER
- Nullable: No
- Range: 0 to
samples_per_frame - 1when known - Description: Zero-based sample index within the frame where the dropout run begins.
sample_count¶
- Type: INTEGER
- Nullable: No
- Range:
>= 1 - Description: Number of consecutive samples affected by the dropout run.
severity¶
- Type: INTEGER
- Nullable: No
- Range: 0 to 100
- Description: Producer confidence/severity percentage for the annotated dropout run.
Frame and Sample Validity Rules¶
frame_idis frame-relative and uses 0-based indexing.sample_startis frame-relative and uses 0-based indexing.sample_countis the run length in samples and must be greater than 0.- A given
(cvbs_file_id, frame_id, sample_start)tuple must appear at most once. - Producers should split non-contiguous dropout regions into separate rows.
- Producers should avoid emitting overlapping runs for the same frame.
- When frame sample bounds are known, producers should ensure
sample_start + sample_countdoes not exceed frame sample length.
Consumer Requirements¶
- Consumers must treat this extension as optional.
- If the file is missing or unreadable, consumers must continue processing the CVBS content without dropout overlays.
- Consumers must ignore unknown columns added by future extension revisions.
- Consumers should ignore rows whose
frame_idfalls outside known capture bounds when those bounds are known. - Consumers should ignore rows where
sample_startorsample_countis out of bounds when frame sample bounds are known.
Versioning and Forward Compatibility¶
- Schema versioning uses
PRAGMA user_version. - This document defines version
5. - Version
5changesseverityto an integer percentage in the range 0 to 100. - Version
4defines sample-range dropout runs (dropout_run) usingframe_id,sample_start, andsample_count. - Future versions may add columns and additional tables.
- Future versions must not redefine the meaning of existing columns in an incompatible way.