Source: https://guthlabs.ai/docs/instruments/data-rate-storage-planner-camera-codecs/mechanism/

instrument mechanism / verified-clean

# Data Rate / Storage Planner (Camera Codecs) mechanism

The inspectable method record for Data Rate / Storage Planner (Camera Codecs), kept separate from implementation and qualification.

Status: **VERIFIED_CLEAN**Lifecycle: **verified-clean**

## Model scope

The arithmetic method is valid after explicit unit and lookup-key conventions are added. The current specification is incomplete because it claims resolution/fps-aware codec lookup and card-count output without listing resolution, fps, or card capacity as required inputs, and it does not define decimal GB versus GiB. The honest-label warning about manufacturer-published nominal rates and scene-dependent VBR is appropriate but should also mention audio/container overhead and recommend a safety margin.

- storage = dataRate(MB/s) × duration(s) is correct only when the rate is truly in decimal MB/s; if the lookup table stores Mbps, the required conversion is dataRate(Mbps) ÷ 8.

- The advertised storage GB output requires an explicit convention: decimal GB = MB ÷ 1000, or binary GiB = MiB ÷ 1024. These are not interchangeable.

- The specification does not state the formula for cards needed. Under the stated storage-planning purpose it should be cardsNeeded = ceil(storageGB ÷ cardCapacityGB), with card capacity using the same decimal/binary convention.

- Resolution and frame rate are mentioned in the computation claim but are absent from the listed inputs and are required lookup keys for most codec-rate tables.

- A single nominal rate is not generally valid for VBR H.264 or H.265; scene complexity, encoder settings, audio, container overhead, and camera-specific implementation can change the actual rate.

- The codec preset lookup must identify the manufacturer, codec profile, resolution, frame rate, bit depth, chroma subsampling, and intra/inter-frame mode; names such as H.264 or ProRes alone are insufficient.

## Units and conventions

- The vectors use decimal megabytes and gigabytes: 1 MB = 1,000,000 bytes and 1 GB = 1,000 MB.

- When a table value is in megabits per second, conversion is Mbps ÷ 8 = MB/s.

- Duration is in seconds and must be nonnegative.

- Card capacity is treated as decimal GB and must be positive.

- Cards needed is rounded upward with the mathematical ceiling function; zero-duration input produces zero required storage and zero cards under the literal formula.

- Nominal codec rates exclude or ignore possible audio, container, metadata, filesystem, and formatting overhead unless the selected table explicitly includes them.

## Inspectable vector

One of 4 source-bound review vectors:

````
{
  "inputs": {
    "codec_preset": "Apple ProRes 422 HQ",
    "resolution": "3840x2160",
    "fps": 30,
    "duration_s": 3600,
    "card_capacity_GB": 128
  },
  "expected_outputs": {
    "data_rate_Mbps": 707,
    "data_rate_MB_s": 88.375,
    "storage_GB": 318.15,
    "cards_needed": 3
  },
  "reference_data": {
    "codec": "Apple ProRes 422 HQ",
    "resolution": "3840x2160",
    "fps": 30,
    "nominal_data_rate_Mbps": 707,
    "source_convention": "widely tabulated standard value; Apple ProRes manufacturer nominal-rate table"
  },
  "working": "1. Convert rate: 707 Mbps ÷ 8 = 88.375 MB/s. 2. Storage: 88.375 MB/s × 3,600 s = 318,150 MB. 3. Convert to decimal GB: 318,150 MB ÷ 1,000 = 318.15 GB. 4. Cards: ceil(318.15 GB ÷ 128 GB) = ceil(2.485546875) = 3 cards."
}
````

## Failure boundary

**BREAK_CLAIMED** · SELF_FLAGGED

A card size of exactly zero makes the cards-needed calculation undefined due to division by zero; the instrument should reject that input. The convention probe also shows materially different results if duration units are misread.

## Other records

[01**Overview**](<https://guthlabs.ai/docs/instruments/data-rate-storage-planner-camera-codecs/>)[03**Implementation**](<https://guthlabs.ai/docs/instruments/data-rate-storage-planner-camera-codecs/implementation/>)[04**Qualification**](<https://guthlabs.ai/docs/instruments/data-rate-storage-planner-camera-codecs/qualification/>)

## Sources and evidence

These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.

- `VERIFIED_LEDGER.json`

- `evidence-tranche7/tranche7-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
