Deployed 811e0a1 with MkDocs version: 1.6.1

This commit is contained in:
2026-10-18 01:00:31 +00:00
parent 461292b693
commit 73659f9d4c
7 changed files with 116 additions and 49 deletions
+10 -7
View File
@@ -2890,13 +2890,16 @@ audio, add hand-built subtitles or an <code>Attachment</code> (e.g. cover art).
filter for resolution/bitrate. See <code>fetch_dash_manifest</code> in the EXAMPLE service
for a thorough demonstration.</p>
<div class="admonition note">
<p class="admonition-title">Flip HDR10 → HDR10+ by hand when you know the platform embeds it</p>
<p>HDR10+ is a <strong>bitstream (SEI)</strong> feature. The HLS parser intentionally does
not sniff it from the bitstream, so a manifest that embeds HDR10+ SEI but labels
the variant plain HDR10 will parse as HDR10. The label is the only signal
the parser has, and it is wrong. Only the service author knows the platform
embeds HDR10+, so it is on you to correct <code>video.range</code> to HDR10+ here for
those services.</p>
<p class="admonition-title">HDR10+ in tracks labelled HDR10</p>
<p>HDR10+ is a <strong>bitstream (SEI)</strong> feature, and many manifests label an HDR10+
variant as plain HDR10. Before unshackle lists or selects tracks, the
<a href="../../reference/configuration/download/#hdr10plus_probe"><code>hdr10plus_probe</code></a>
reads the first fragment of each HEVC HDR10 track and changes <code>video.range</code> to
HDR10+ when the fragment carries HDR10+ metadata. Set <code>video.range</code> yourself
only when the probe cannot read the fragment, for example an ISM track whose
SEI is encrypted, or when the platform gives a reliable signal of its own.
If the playback API has no HDR10+ value, request HDR10 for an HDR10+ request
and let the probe relabel the tracks.</p>
</div>
<div class="admonition warning">
<p class="admonition-title"><code>get_tracks</code> is your only chance to capture license inputs</p>
+2 -1
View File
@@ -3316,7 +3316,8 @@ the title fails.</p>
<p>When a title has HDR10+ but no DV track, <code>-r HYBRID --generate-dv</code> makes a Dolby Vision
Profile 8.1 track from the HDR10+ metadata. It needs <code>hdr10plus_tool</code> as well as <code>dovi_tool</code>.
When a title has a DV track, unshackle uses that track and ignores the flag. When it has none,
the flag also makes unshackle ask the service for its HDR10+ tracks.</p>
the flag also makes unshackle ask the service for its HDR10+ tracks. A track that the service labels HDR10 but
that carries HDR10+ metadata also qualifies (see <a href="../../reference/configuration/download/#hdr10plus_probe"><code>hdr10plus_probe</code></a>).</p>
<div class="language-shell highlight"><span class="filename">Generate Dolby Vision from HDR10+, and keep the HDR10+ file too</span><pre><span></span><code><span id="__span-8-1"><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>unshackle<span class="w"> </span>dl<span class="w"> </span>-q<span class="w"> </span><span class="m">2160</span><span class="w"> </span>-r<span class="w"> </span>HYBRID,HDR10P<span class="w"> </span>--generate-dv<span class="w"> </span>EXAMPLE<span class="w"> </span><span class="s1">'...'</span>
</span></code></pre></div>
<p>Each HDR10+ scene becomes one Dolby Vision shot, with its own scene cut and its own Level 1
+64 -1
View File
@@ -1193,6 +1193,17 @@
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#hdr10plus_probe" class="md-nav__link">
<span class="md-ellipsis">
hdr10plus_probe
</span>
</a>
</li>
<li class="md-nav__item">
@@ -2149,6 +2160,17 @@
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#hdr10plus_probe" class="md-nav__link">
<span class="md-ellipsis">
hdr10plus_probe
</span>
</a>
</li>
<li class="md-nav__item">
@@ -2850,6 +2872,47 @@ release yourself, in place of the fixed <code>DUAL</code>, <code>MULTi</code> an
<p>Regional variants of the same base language (e.g. <code>en-US</code> and <code>en-GB</code>) collapse to a single
language in both modes, so they never trigger <code>{dual}</code> on their own.</p>
</div>
<h2 id="hdr10plus_probe"><code>hdr10plus_probe</code><a class="headerlink" href="#hdr10plus_probe" title="Permanent link">&para;</a></h2>
<ul>
<li><strong>Type:</strong> <code>bool</code> &nbsp;·&nbsp; <strong>Default:</strong> <code>true</code></li>
</ul>
<p>Find the HDR10+ tracks that a service labels as HDR10. Before unshackle lists or selects tracks, it
reads the first fragment of HEVC HDR10 tracks from DASH, HLS fMP4 and one-file sources. A track
whose first frame carries HDR10+ (SMPTE ST 2094-40) metadata becomes <code>HDR10P</code>. Then <code>-r HDR10P</code>,
<code>--list</code> and <a href="../../../guide/downloading/#dolby-vision-from-hdr10"><code>--generate-dv</code></a> use it.</p>
<p>When two HDR10 tracks have the same resolution, they can be an HDR10 encode and an HDR10+ encode
side by side, so unshackle probes every track. When each track has its own resolution, unshackle
probes the two highest and the two lowest bitrates first:</p>
<table>
<thead>
<tr>
<th>Result</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr>
<td>All four carry HDR10+</td>
<td>Every HDR10 track of the title becomes <code>HDR10P</code>.</td>
</tr>
<tr>
<td>Some carry HDR10+</td>
<td>The title has HDR10 and HDR10+ encodes side by side, so unshackle probes every track.</td>
</tr>
<tr>
<td>None carry HDR10+</td>
<td>Every track stays <code>HDR10</code>.</td>
</tr>
</tbody>
</table>
<p>A probe that fails, or a fragment whose metadata is encrypted, keeps the label from the service.
unshackle does not probe ISM tracks. Each probe makes one to three small requests: the 64 KiB
fragment, plus the playlist of an HLS track or the header of a one-file track. The probes run in
parallel, with no more at a time than <code>--workers</code> (or <code>dl.workers</code>) sets for a track download.</p>
<div class="language-yaml highlight"><pre><span></span><code><span id="__span-12-1"><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a><span class="nt">hdr10plus_probe</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
</span></code></pre></div>
<p>A remote server probes its tracks before it sends them, so the setting on the server applies to
remote downloads and to the REST API.</p>
<h2 id="generate_dv_mode"><code>generate_dv_mode</code><a class="headerlink" href="#generate_dv_mode" title="Permanent link">&para;</a></h2>
<ul>
<li><strong>Type:</strong> <code>str</code> &nbsp;·&nbsp; <strong>Default:</strong> <code>v29</code></li>
@@ -2879,7 +2942,7 @@ same peak and letterbox area. They differ in the scene average, which the TV use
</tr>
</tbody>
</table>
<div class="language-yaml highlight"><pre><span></span><code><span id="__span-12-1"><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a><span class="nt">generate_dv_mode</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">v29</span>
<div class="language-yaml highlight"><pre><span></span><code><span id="__span-13-1"><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a><span class="nt">generate_dv_mode</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">v29</span>
</span></code></pre></div>
<p>The setting applies on the machine that runs the hybrid step: the client for a remote download, the
server for a REST API job.</p>
+1 -1
View File
@@ -1993,7 +1993,7 @@ default.</p>
</tr>
<tr>
<td><a href="download/">Download &amp; processing</a></td>
<td><code>dl</code>, <code>continue_downloads</code>, <code>merge_segments</code>, <code>subtitle</code>, <code>audio</code>, <code>muxing</code>, <code>language_tags</code>, <code>dual_multi_mode</code>, <code>generate_dv_mode</code></td>
<td><code>dl</code>, <code>continue_downloads</code>, <code>merge_segments</code>, <code>subtitle</code>, <code>audio</code>, <code>muxing</code>, <code>language_tags</code>, <code>dual_multi_mode</code>, <code>generate_dv_mode</code>, <code>hdr10plus_probe</code></td>
</tr>
<tr>
<td><a href="output/">Output &amp; naming</a></td>
File diff suppressed because one or more lines are too long
+38 -38
View File
@@ -2,154 +2,154 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://docs.unshackle.dev/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/dev/creating-a-service/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/dev/service-architecture/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/dev/rest-api/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/dev/rest-api/authentication/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/dev/rest-api/dashboard/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/dev/rest-api/endpoints/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/dev/rest-api/errors/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/dev/rest-api/job-lifecycle/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/dev/rest-api/quickstart/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/dev/rest-api/remote-sessions/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/getting-started/configuration-file/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/getting-started/installation/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/getting-started/quickstart/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/guide/cli-reference/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/guide/downloading/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/guide/drm-and-cdm/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/guide/output-and-naming/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/guide/proxies-and-vpn/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/guide/subtitles/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/guide/troubleshooting/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/guide/vaults/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/reference/api/config/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/reference/api/drm/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/reference/api/service/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/reference/api/titles/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/reference/api/tracks/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/reference/configuration/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/reference/configuration/directories/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/reference/configuration/download/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/reference/configuration/drm/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/reference/configuration/example/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/reference/configuration/misc/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/reference/configuration/network/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/reference/configuration/output/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/reference/configuration/post-scripts/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/reference/configuration/services/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/reference/configuration/vaults/</loc>
<lastmod>2026-10-17</lastmod>
<lastmod>2026-10-18</lastmod>
</url>
</urlset>
BIN
View File
Binary file not shown.