|
110 | 110 |
|
111 | 111 | Two findings changed between the builds and should not be treated as fixed facts: |
112 | 112 |
|
113 | | -- **PNG, WebP and HLS.** Not render formats on 19.1.3.7; they *are* on 21.0.4.5. |
114 | | - `png_sequence`, `webp_animated` and `hls_h264` therefore resolve on 21.x and |
115 | | - fail loudly on 19.x, which is the correct behavior rather than a regression. |
116 | | - PNG exposes RGB only — no alpha codec — so it does not replace `dpx_sequence` |
117 | | - for transparency. |
| 113 | +- **PNG and WebP.** Not render formats on 19.1.3.7; they *are* on 21.0.4.5, so |
| 114 | + `png_sequence` and `webp_animated` resolve on 21.x and fail loudly on 19.x, |
| 115 | + which is correct behavior rather than a regression. PNG exposes RGB only — no |
| 116 | + alpha codec — so it does not replace `dpx_sequence` for transparency. |
| 117 | +- **A format can advertise a codec it will not accept.** `HLS` (m3u8) returns a |
| 118 | + codec from `GetRenderCodecs` and real rasters from `GetRenderResolutions`, yet |
| 119 | + `SetCurrentRenderFormatAndCodec` rejects every value. Resolving a target proves |
| 120 | + only that the pair is *listed*; the authoritative test is queuing a job, which |
| 121 | + is why `prepare_delivery_job` refuses to queue on a rejected pair. |
118 | 122 | - **Zero-codec formats.** `wav` and `gif` on 19.x; `braw`, `mts` and `wav` on |
119 | 123 | 21.x — `gif` gained codecs, BRAW and MTS lost them. `wav` is the constant, so |
120 | 124 | an audio-only WAV target remains inexpressible through |
@@ -703,17 +707,13 @@ def _package(key: str, label: str, formats: Tuple[str, ...], codecs: Tuple[str, |
703 | 707 | "need a human. easyDCP variants exist on this install too.", |
704 | 708 | ), |
705 | 709 | ), |
706 | | - "hls_h264": _package( |
707 | | - "hls_h264", "HLS package (H.264)", |
708 | | - ("HLS", "m3u8"), ("H264", "H.264"), |
709 | | - "HTTP Live Streaming package: an .m3u8 playlist plus its segment files.", |
710 | | - notes=( |
711 | | - "HLS is a PACKAGE: a playlist plus segments, not one file. Bitrate ladders, " |
712 | | - "variant playlists and encryption keys are not expressible as a render target " |
713 | | - "— this selects the format/codec only.", |
714 | | - "HLS is not a render format on Resolve 19.x; this target resolves on 21.x+.", |
715 | | - ), |
716 | | - ), |
| 710 | + # No HLS target. `HLS` (m3u8) looks fully supported through the query APIs on |
| 711 | + # 21.0.4.5 — GetRenderCodecs returns {'H.264': 'H264'} and GetRenderResolutions |
| 712 | + # returns real rasters — but SetCurrentRenderFormatAndCodec('m3u8', ...) is |
| 713 | + # rejected for every value tried ('H264', 'H.264', 'h264', ''), while the same |
| 714 | + # call for mp4/H264 succeeds. The matrix advertises a pair that cannot be |
| 715 | + # selected, so a target for it would fail 100% of the time. |
| 716 | + # Verified on Studio 21.0.4.5, 2026-08-12. See api_truth.py. |
717 | 717 | } |
718 | 718 |
|
719 | 719 | VALID_TARGETS = frozenset(DELIVERY_TARGETS) |
@@ -749,8 +749,6 @@ def _package(key: str, label: str, formats: Tuple[str, ...], codecs: Tuple[str, |
749 | 749 | "png": "png_sequence", |
750 | 750 | "gif": "gif_animated", |
751 | 751 | "webp": "webp_animated", |
752 | | - "hls": "hls_h264", |
753 | | - "streaming": "hls_h264", |
754 | 752 | } |
755 | 753 |
|
756 | 754 | #: Fields a caller may override per call. Deliberately excludes id/label/tier/ |
|
0 commit comments