Deployed 35871f3 with MkDocs version: 1.6.1

This commit is contained in:
2026-10-17 22:40:48 +00:00
parent d3a5b8c695
commit 461292b693
12 changed files with 1170 additions and 946 deletions
File diff suppressed because it is too large Load Diff
+52 -4
View File
@@ -2164,6 +2164,17 @@
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#unshackle.core.tracks.Hybrid.detect_active_area" class="md-nav__link">
<span class="md-ellipsis">
<code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;detect_active_area
</span>
</a>
</li>
<li class="md-nav__item">
@@ -3384,6 +3395,17 @@
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#unshackle.core.tracks.Hybrid.detect_active_area" class="md-nav__link">
<span class="md-ellipsis">
<code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;detect_active_area
</span>
</a>
</li>
<li class="md-nav__item">
@@ -5360,12 +5382,12 @@ If no DV track is available but HDR10+ is present, it will convert HDR10+ to DV.
<a href="#unshackle.core.tracks.Hybrid.level_5" class="headerlink" title="Permanent link">&para;</a></h3>
<div class="language-python doc-signature highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">level_5</span><span class="p">(</span><span class="n">input_video</span><span class="p">)</span>
<div class="language-python doc-signature highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">level_5</span><span class="p">(</span><span class="n">crop</span><span class="p">)</span>
</span></code></pre></div>
<div class="doc doc-contents ">
<p>Make Level 5 active area metadata through crop detection on the HDR10 track.</p>
<p>Write the active area of the HDR10 track, as (left, top, right, bottom), to Level 5.</p>
<p>This resolves mismatches where DV has no black bars but HDR10 does (or vice versa)
by telling the display the correct active area.</p>
@@ -5377,6 +5399,28 @@ by telling the display the correct active area.</p>
<div class="doc doc-object doc-function">
<h3 id="unshackle.core.tracks.Hybrid.detect_active_area" class="doc doc-heading">
<code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">detect_active_area</span>
<a href="#unshackle.core.tracks.Hybrid.detect_active_area" class="headerlink" title="Permanent link">&para;</a></h3>
<div class="language-python doc-signature highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">detect_active_area</span><span class="p">(</span><span class="n">input_video</span><span class="p">)</span>
</span></code></pre></div>
<div class="doc doc-contents ">
<p>The picture's crop as (left, top, right, bottom) and its share of the frame, or None.</p>
<p>None also when the picture is under 40% of the frame: cropdetect on dark samples can report a tiny
picture, which would be wrong in L5 and would divide the HDR10+ conversion's mean by a tiny share.</p>
</div>
</div>
<div class="doc doc-object doc-function">
<h3 id="unshackle.core.tracks.Hybrid.sanitize_l6" class="doc doc-heading">
<code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">sanitize_l6</span>
@@ -5473,12 +5517,16 @@ MaxCLL. A value of 0 means "unknown", and this method keeps it as-is.</p>
<a href="#unshackle.core.tracks.Hybrid.convert_hdr10plus_to_dv" class="headerlink" title="Permanent link">&para;</a></h3>
<div class="language-python doc-signature highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">convert_hdr10plus_to_dv</span><span class="p">()</span>
<div class="language-python doc-signature highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">convert_hdr10plus_to_dv</span><span class="p">(</span><span class="n">active_fraction</span><span class="o">=</span><span class="mf">1.0</span><span class="p">)</span>
</span></code></pre></div>
<div class="doc doc-contents ">
<p>Convert HDR10+ metadata to Dolby Vision RPU</p>
<p>Generate a Dolby Vision RPU with one shot per HDR10+ scene.</p>
<p>By default unshackle builds the L1 of each shot itself (see hdr10plus_shots), because dovi_tool's
--hdr10plus-json sets L1 avg from the linear AverageMaxRGB and so makes most scenes too bright.
config.generate_dv_mode picks the L1 avg floor: v29 (about 2.4 nits, closest to the pixels) or v40
(about 10 nits, as in studio CM v4.0 RPUs). legacy hands the HDR10+ JSON to dovi_tool instead.</p>
</div>
@@ -1193,6 +1193,17 @@
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#generate_dv_mode" class="md-nav__link">
<span class="md-ellipsis">
generate_dv_mode
</span>
</a>
</li>
</ul>
@@ -2138,6 +2149,17 @@
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#generate_dv_mode" class="md-nav__link">
<span class="md-ellipsis">
generate_dv_mode
</span>
</a>
</li>
</ul>
@@ -2349,6 +2371,12 @@ default. In other words, config only fills in options you did not set on the com
<td>Warn instead of failing when a requested resolution, range, or language is missing, or when one DRM system does not license under <code>--all-drm</code>. The CLI flag is <code>--best-available</code>, also spelled <code>--warn-only</code>.</td>
</tr>
<tr>
<td><code>generate_dv</code></td>
<td>bool</td>
<td><code>false</code></td>
<td>With <code>-r HYBRID</code>, make Dolby Vision from the HDR10+ metadata when a title has no DV track. Needs <code>hdr10plus_tool</code>. See <a href="../../../guide/downloading/#dolby-vision-from-hdr10">Dolby Vision from HDR10+</a>.</td>
</tr>
<tr>
<td><code>proxy</code></td>
<td>str</td>
<td><em>(unset)</em></td>
@@ -2822,6 +2850,39 @@ 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="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>
</ul>
<p>How <a href="../../../guide/downloading/#dolby-vision-from-hdr10"><code>--generate-dv</code></a> sets the Level 1 brightness
values of the Dolby Vision it makes from HDR10+. All modes make one shot per HDR10+ scene and keep the
same peak and letterbox area. They differ in the scene average, which the TV uses to tone-map.</p>
<table>
<thead>
<tr>
<th>Mode</th>
<th>Scene average</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>v29</code> (default)</td>
<td>unshackle's average from the HDR10+ brightness distribution, at least about 2.4 nits. Closest to the pixels.</td>
</tr>
<tr>
<td><code>v40</code></td>
<td>The same average, at least about 10 nits, as in studio Dolby Vision (CM v4.0). Dark scenes read brighter than <code>v29</code>.</td>
</tr>
<tr>
<td><code>legacy</code></td>
<td>The <code>dovi_tool generate --hdr10plus-json</code> average. Most scenes read brighter than the pixels.</td>
</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>
</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></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>
</tr>
<tr>
<td><a href="output/">Output &amp; naming</a></td>