Skip to content

Chromecast Google TV Family HD All Subtitle Convert Audio Conform Profile

Generated from stock preset pack chromecast-google-tv-family-all-sub-convert-audio-conform.

Dependencies

Tool Needed Why
ffmpeg required scenario execution, encode/transcode, and mux packaging
ffprobe required criteria probing and stream/metadata inspection

E2E Verification

This profile is considered e2e-verified when its mapped suites pass in CI.

Suite What it proves Toolchain version report
tests/e2e/run_profile_actions_e2e.sh action-level output behavior, guardrails, and subtitle-intent pathways tests/e2e/.reports/latest/run_profile_actions_e2e_toolchain_versions.md

Input Envelope

Field Value
Codec any
Bit depth any
Color space any
Min resolution 352x240
Max resolution 1920x1080

Scenario Map

Scenario Command
RES_JUST_RIGHT transcode_h264_1080_all_sub_convert_audio_conform_profile.sh
ELSE profile_guardrail_skip.sh (profile guardrail skip)

Runtime Behavior

  • Scenario RES_JUST_RIGHT uses action script transcode_h264_1080_all_sub_convert_audio_conform_profile.sh.
  • Scenario ELSE uses action script profile_guardrail_skip.sh.

Action summary from transcode_h264_1080_all_sub_convert_audio_conform_profile.sh:

  • Default subtitle behavior is all_sub_preserve + subtitle_convert.
  • Text subtitles are normalized into mov_text when MP4 remains viable.
  • Bitmap subtitles fall back to MKV preservation by default.
  • Preserves AAC and Dolby-family audio streams by default.
  • Conforms DTS-family and PCM-family audio streams when needed.
  • Preserved non-MP4-safe audio forces MKV output.
  • Uses proper zscale+tonemap when available for HDR->SDR conversion.
  • Falls back to an SDR-signaled compatibility transcode when tonemap filters are unavailable.
  • aggressive_vmaf is supported for SDR reference inputs only; HDR/HLG inputs fall back to standard encode because this lane intentionally changes dynamic range.

Operator knobs from transcode_h264_1080_all_sub_convert_audio_conform_profile.sh:

  • VFO_ENCODER_MODE=auto|hw|cpu
  • VFO_MP4_STREAM_MODE=fmp4_faststart|fmp4|faststart
  • VFO_SUBTITLE_SELECTION_SCOPE=all_sub_preserve
  • VFO_SUBTITLE_MODE=subtitle_convert
  • VFO_SUBTITLE_CONVERT_BITMAP_POLICY=preserve_mkv|fail
  • VFO_QUALITY_MODE=standard|aggressive_vmaf
  • VFO_QUALITY_VMAF_MIN=94
  • VFO_QUALITY_VMAF_MAX_PASSES=4

Starting Inputs And Expected Outputs

Aspect What this profile expects / does
Starting containers mkv, mp4, mov, mxf (anything ffmpeg can demux)
Required codec envelope any / any-bit / any
Required resolution range 352x240 to 1920x1080
If criteria do not match candidate is routed to another profile or skipped
If criteria match scenario order is evaluated and first match executes
Output intent profile-specific output written by selected scenario command

Flow

flowchart LR classDef gate fill:#fff7ed,stroke:#f59e0b,color:#7c2d12,stroke-width:1.5px; classDef stage fill:#e0f2fe,stroke:#0284c7,color:#0c4a6e,stroke-width:1.2px; classDef output fill:#dcfce7,stroke:#16a34a,color:#14532d,stroke-width:1.2px; classDef skip fill:#f3f4f6,stroke:#6b7280,color:#1f2937,stroke-width:1.2px; A[Input candidate: mkv / mp4 / mov / mxf]:::stage --> B[Probe codec bits color resolution]:::stage B --> C{Matches profile criteria envelope?}:::gate C -->|No| Z[Handled by other profile or skipped]:::skip C -->|Yes| D{Evaluate scenarios in order}:::gate D --> E[First match: RES_JUST_RIGHT]:::stage E --> F[Execute: transcode_h264_1080_all_sub_convert_audio_conform_profile.sh]:::stage F --> G[Write profile output artifact]:::output

Source

  • Preset file: services/vfo/presets/chromecast-google-tv-family-all-sub-convert-audio-conform/vfo_config.preset.conf
  • Generated by: infra/scripts/generate-profile-docs.sh