Skip to content
Snippets Groups Projects
software-manual.tex 118 KiB
Newer Older
  • Learn to ignore specific revisions
  • Yan Zhang's avatar
    Yan Zhang committed
    \Option{QuadtreeTULog2MaxSize} &
    %\ShortOption{\None} &
    \Default{6 \\ ($= \mathrm{log}_2(64)$)} &
    Defines the Maximum TU size in logarithm base 2.
    \\
    
    \Option{QuadtreeTULog2MinSize} &
    %\ShortOption{\None} &
    \Default{2 \\ ($= \mathrm{log}_2(4)$)} &
    Defines the Minimum TU size in logarithm base 2.
    \\
    
    \Option{QuadtreeTUMaxDepthIntra} &
    %\ShortOption{\None} &
    \Default{1} &
    Defines the depth of the TU tree for intra CUs.
    \\
    
    \Option{QuadtreeTUMaxDepthInter} &
    %\ShortOption{\None} &
    \Default{2} &
    Defines the depth of the TU tree for inter CUs.
    \\
    
    \end{OptionTableNoShorthand}
    
    
    %%
    %% Coding structure parameters
    %%
    
    \begin{OptionTableNoShorthand}{Coding structure parameters}{tab:coding-structure}
    \Option{IntraPeriod (-ip)} &
    %\ShortOption{-ip} &
    \Default{$-1$} &
    Specifies the intra frame period.
    A value of $-1$ implies an infinite period.
    \\
    
    \Option{DecodingRefreshType (-dr)} &
    %\ShortOption{-dr} &
    \Default{0} &
    Specifies the type of decoding refresh to apply at the intra frame period
    picture.
    \par
    \begin{tabular}{cp{0.45\textwidth}}
    0 & Applies an I picture (not a intra random access point). \\
    1 & Applies a CRA intra random access point (open GOP). \\
    2 & Applies an IDR intra random access point (closed GOP). \\
    3 & Use recovery point SEI messages to indicate random access. \\
    \end{tabular}
    \\
    
    \Option{GOPSize (-g)} &
    %\ShortOption{-g} &
    \Default{1} &
    Specifies the size of the cyclic GOP structure.
    \\
    
    \Option{Frame\emph{N}} &
    %\ShortOption{\None} &
    \Default{\NotSet} &
    Multiple options that define the cyclic GOP structure that will be used
    repeatedly throughout the sequence.  The table should contain GOPSize
    elements.
    \par
    See section~\ref{sec:gop-structure} for further details.
    \\
    
    \Option{ReWriteParamSets} &
    %\ShortOption{-ip} &
    \Default{$0$} &
    Enable writing of parameter sets (SPS, PPS, etc.) before every (intra) random access point to enable true random access.
    \\
    \end{OptionTableNoShorthand}
    
    
    %%
    %% Motion estimation parameters
    %%
    
    \begin{OptionTableNoShorthand}{Motion estimation parameters}{tab:motion-estimation}
    \Option{FastSearch} &
    %\ShortOption{\None} &
    \Default{1} &
    Enables or disables the use of a fast motion search.
    \par
    \begin{tabular}{cp{0.45\textwidth}}
     0 & Full search method \\
     1 & Fast search method - TZSearch\\
     2 & Predictive motion vector fast search method \\
     3 & Extended TZSearch method \\
    \end{tabular}
    \\
    
    \Option{SearchRange (-sr)} &
    %\ShortOption{-sr} &
    \Default{96} &
    Specifies the search range used for motion estimation.
    
    Note: the search range is defined around a predictor. Motion vectors
    derived by the motion estimation may thus have values larger than the
    search range.
    \\
    
    \Option{BipredSearchRange} &
    %\ShortOption{\None} &
    \Default{4} &
    Specifies the search range used for bi-prediction refinement in motion
    estimation.
    \\
    
    \Option{ClipForBiPredMEEnabled} &
    %\ShortOption{\None} &
    \Default{0} &
    Enables clipping in the Bi-Pred ME, which prevents values over- or under-flowing. It is usually disabled to reduce encoder run-time.
    \\
    
    \Option{FastMEAssumingSmootherMVEnabled} &
    %\ShortOption{\None} &
    \Default{0} &
    Enables fast ME assuming a smoother MV.
    \\
    
    \Option{HadamardME} &
    %\ShortOption{\None} &
    \Default{true} &
    Enables or disables the use of the Hadamard transform in fractional-pel motion
    estimation.
    \par
    \begin{tabular}{cp{0.45\textwidth}}
     0 & SAD for cost estimation \\
     1 & Hadamard for cost estimation \\
    \end{tabular}
    \\
    
    \Option{ASR} &
    %\ShortOption{\None} &
    \Default{false} &
    Enables or disables the use of adaptive search ranges, where the motion
    search range is dynamically adjusted according to the POC difference
    between the current and the reference pictures.
    \begin{displaymath}
    \resizebox{\hsize}{!}{$
    \mathrm{SearchRange}= \mathrm{Round}\left(
                              \mathrm{SearchRange}
                              * \mathrm{ADAPT\_SR\_SCALE}
                              * \frac{\mathrm{abs}(
                                     \mathrm{POCcur} - \mathrm{POCref} )}{
                                     \mathrm{RateGOPSize}}\right)
    $}
    \end{displaymath}
    \\
    
    \Option{MaxNumMergeCand} &
    %\ShortOption{\None} &
    \Default{5} &
    Specifies the maximum number of merge candidates to use.
    \\
    
    \Option{MaxNumTriangleCand} &
    %\ShortOption{\None} &
    \Default{5} &
    Specifies the maximum number of triangle merge candidates to use.
    
    \\
    
    \Option{MaxNumIBCMergeCand} &
    %\ShortOption{\None} &
    \Default{6} &
    Specifies the maximum number of IBC merge candidates to use.
    
    Yan Zhang's avatar
    Yan Zhang committed
    \\
    
    \Option{DisableIntraInInter} &
    %\ShortOption{\None} &
    \Default{0} &
    Flag to disable intra PUs in inter slices.
    \\
    
    \Option{MMVD} &
    %\ShortOption{\None} &
    \Default{1} &
    Enables or disables the merge mode with motion vector difference (MMVD).
    \\
    
    \Option{MmvdDisNum} &
    %\ShortOption{\None} &
    \Default{6} &
    Specifies the number of MMVD distance entries used from the distance table at encoder.
    \\
    \end{OptionTableNoShorthand}
    
    
    %%
    %% Mode decision parameters
    %%
    
    \begin{OptionTableNoShorthand}{Mode decision parameters}{tab:mode-decision}
    \Option{LambdaModifier$N$ (-LM$N$)} &
    %\ShortOption{-LM$N$} &
    \Default{1.0} &
    Specifies a value that is multiplied with the Lagrange multiplier
    $\lambda$, for use in the rate-distortion optimised cost calculation
    when encoding temporal layer~$N$.
    If LambdaModifierI is specified, then LambdaModifierI will be used for intra pictures.
    \par
    $N$ may be in the range 0 (inclusive) to 7 (exclusive).
    \\
    
    \Option{LambdaModifierI (-LMI)} &
    %\ShortOption{-LMI} &
    \Default{} &
    Specifies one or more of the LambdaModifiers to use intra pictures at each of the temporal layers.
    If not present, then the LambdaModifier$N$ settings are used instead. If the list of values
    (comma or space separated) does not include enough values for each of the temporal layers,
    the last value is repeated as required.
    \\
    
    \Option{IQPFactor (-IQF)} &
    %\ShortOption{-IQF} &
    \Default{-1} &
    Specifies the QP factor to be used for intra pictures during the lambda computation.
    (The values specified in the GOP structure are only used for inter pictures).
    If negative (default), the following equation is used to derive the value:
    \par
    $IQP_{factor}=0.57*(1.0-Max(0.5, Min(0.0, 0.05*s)))$
    \par
    where $s = Int(isField ? (GS-1)/2 : GS-1)$ and
    $GS$ is the gop size.
    \\
    
    \Option{ECU} &
    %\ShortOption{\None} &
    \Default{false} &
    Enables or disables the use of early CU determination.  When enabled, skipped CUs will not be split further.
    \\
    
    \Option{CFM} &
    %\ShortOption{\None} &
    \Default{false} &
    Enables or disables the use of Cbf-based fast encoder mode.  When enabled, once a 2Nx2N CU has been evaluated, if the RootCbf is 0, further PU splits will not be evaluated.
    \\
    
    \Option{ESD} &
    %\ShortOption{\None} &
    \Default{false} &
    Enables or disables the use of early skip detection.  When enabled, the skip mode will be tested before any other.
    \\
    
    \Option{FEN} &
    %\ShortOption{\None} &
    \Default{0} &
    Controls the use of different fast encoder coding tools.  The following
    tools are supported in different combinations:
    \par
    \begin{tabular}{cp{0.45\textwidth}}
     a & In the SAD computation for blocks having size larger than 8, only
         the lines of even rows in the block are considered. \\
     b & The number of iterations used in the bi-directional motion vector
         refinement in the motion estimation process is reduced from 4 to 1. \\
    \end{tabular}
    Depending on the value of the parameter, the following combinations are
    supported:
    \par
    \begin{tabular}{cp{0.45\textwidth}}
     0 & Disable all modes \\
     1 & Use both a \& b tools\\
     2 & Use only tool b \\
     3 & Use only tool a \\
    \end{tabular}
    \\
    
    \Option{FDM} &
    %\ShortOption{\None} &
    \Default{true} &
    Enables or disables the use of fast encoder decisions for 2Nx2N merge
    mode.  When enabled, the RD cost for the merge mode of the current
    candidate is not evaluated if the merge skip mode was the best merge
    mode for one of the previous candidates.
    \\
    
    \Option{RDpenalty} &
    %\ShortOption{\None} &
    \Default{0} &
    RD-penalty for 32x32 TU for intra in non-intra slices.
    Enabling this parameter can reduce the visibility of CU boundaries in the coded picture.
    \par
    \begin{tabular}{cp{0.45\textwidth}}
     0 & No RD-penalty \\
     1 & RD-penalty \\
     2 & Maximum RD-penalty (no 32x32 TU)\\
    \end{tabular}
    \\
    
    
    \Option{FastLocalDualTreeMode} &
    %\ShortOption{\None} &
    \Default{0} &
    Controls intra coding speedup introducted with local dual tree mode. 
    \par
    \begin{tabular}{cp{0.45\textwidth}}
     0 & Disabled\\
     1 & Stop testing intra modes in inter slices, if best cost is more that 1.5 times inter cost.\\
     2 & Test only one intra mode in inter slices\\
    \end{tabular}
    \\
    
    
    
    Yan Zhang's avatar
    Yan Zhang committed
    \end{OptionTableNoShorthand}
    
    %%
    %% Quantization parameters
    %%
    \begin{OptionTableNoShorthand}{Quantization parameters}{tab:quantization}
    \Option{QP (-q)} &
    %\ShortOption{-q} &
    \Default{30.0} &
    Specifies the base value of the quantization parameter. If it is non-integer, the QP is switched once during encoding.
    \\
    
    \Option{IntraQPOffset} &
    %\ShortOption{\None} &
    \Default{0} &
    Specifies a QP offset from the base QP value to be used for intra frames.
    \\
    
    \Option{LambdaFromQpEnable} &
    %\ShortOption{\None} &
    \Default{false} &
    When enabled, the $\lambda$, which is used to convert a cost in bits to a cost in distortion terms, is calculated as:
    
    $\lambda=qpFactor \times 2^{qp+6*(bitDepthLuma-8)-12}$,
    where $qp$ is the slice QP and $qpFactor$ is calculated as follows:
    
    \begin{tabular}{lp{0.45\textwidth}}
     $= IQF$                            & if $IQF >= 0$ and slice is a periodic intra slice \\
     $= 0.57 \times \lambda_{scale}$    & if slice is a non-periodic intra slice \\
     $=$ value from GOP table           & otherwise \\
    \end{tabular}
    
    where $IQF$ is the value specified using the IntraQPFactor option, and where $\lambda_{scale}$ is:
    
    \begin{tabular}{lp{0.45\textwidth}}
     $1$                            & if LambdaFromQpEnable=true \\
     $1.0 - max(0,min(0.5,0.05*B))$ & if LambdaFromQpEnable=false \\
    \end{tabular}
    
    where $B$ is the number of B frames.
    
    If LambdaFromQpEnable=false, then the $\lambda$ is also subsequently scaled for non-top-level hiearchical depths, as follows:
    
    $\lambda = \lambda_{base} \times max(2, min(4, (sliceQP-12)/6))$
    
    In addition, independent on the IntraQPFactor, if HadamardME=false, then for an inter slice the final $\lambda$ is scaled by a factor of $0.95$.
    \\
    
    
    \Option{UseIdentityTableForNon420Chroma}&
    \Default{1}&
    
    Specifies whether identity chroma QP mapping tables are used for 4:2:2 and 4:4:4 content. When set to 1, the identity chroma QP mapping table is used for all the three chroma components for 4:2:2 or 4:4:4 content. When set to 0, chroma QP 
    mapping table may be specified by other parameters in the configuration.
    \\
    
    
    \Option{SameCQPTablesForAllChroma}&
    \Default{1}&
    
    Specifies that the Cb, Cr and joint Cb-Cr components all use the same
    chroma mapping table. When set to 1, the values of QpInValCr, 
    QpOutValCr, QpInValCbCr and QpOutValCbCr are ignored. When set to 0, all
    
    Cb, Cr and joint Cb-Cr components may have different chroma QP mapping tables specified in the configuration file. Note that 
    
    SameCQPTablesForAllChroma is ignored when UseIdentityTableForNon420Chroma is set to 1 for 4:2:2 and 4:4:4 content.
    \\
    
    \Option{QpInValCb}%
    \Option{QpOutValCb}&
    
    \Default{\NotSet} &
    
    Specifies the input and coordinates of the pivot points used to specify the chroma QP mapping tables for the Cb component. Default values are as follows: 
    
     QpInValCb & 25, 33, 43 \\
     QpOutValCb & 25, 32, 37 \\
    
    \end{tabular}
    The values specify the pivot points for the chroma QP mapping table, the unspecified QP values are interpolated from the remaining values. E.g., the default values above specify that  the pivot points for the chroma QP mapping table for the Cb component are (25, 25), (33, 32), (43, 37).
    
    Note that that QpInValCr and QpOutValCr are ignored when UseIdentityTableForNon420Chroma is set to 1 for 4:2:2 and 4:4:4 content.
    
    \Default{\NotSet} &
    
    Specifies the input and coordinates of the pivot points used to specify the chroma QP mapping tables for the Cr component. Default values are as follows: 
    
     QpInValCr  & 0 \\
     QpOutValCr & 0 \\
    
    
    The default values specify a pivot point of (0,0) which corresponds to an identity chroma QP mapping table. Note that that QpInValCr and QpOutValCr are ignored 
    
    when SameCQPTablesForAllChroma is set to 1 or when UseIdentityTableForNon420Chroma is set to 1 for 4:2:2 and 4:4:4 content.
    \\
    
    \Option{QpInValCbCr}%
    \Option{QpOutValCbCr}&
    
    \Default{\NotSet} &
    
    Specifies the input and coordinates of the pivot points used to specify the chroma QP mapping tables for the joint Cb-Cr component. Default values are as follows: 
    
     QpInValrCr   & 0 \\
     QpOutValCbCr & 0 \\
    
    The default values specify a pivot point of (0,0) which corresponds to a identity chroma QP mapping table. Note that that QpInValCbCr and QpOutVaCblCr are ignored 
    when SameCQPTablesForAllChroma is set to 1  or when UseIdentityTableForNon420Chroma is set to 1 for 4:2:2 and 4:4:4 content.
    \\
    
    
    Yan Zhang's avatar
    Yan Zhang committed
    1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898
    \Option{CbQpOffset (-cbqpofs)}%
    \Option{CrQpOffset (-crqpofs)} &
    %\ShortOption{-cbqpofs}%
    %\ShortOption{-crqpofs} &
    \Default{0}%
    \Default{0} &
    Global offset to apply to the luma QP to derive the QP of Cb and Cr
    respectively.  These options correspond to the values of cb_qp_offset
    and cr_qp_offset, that are transmitted in the PPS.  Valid values are in
    the range $[-12, 12]$.
    \\
    
    \Option{CbCrQpOffset (-cbcrqpofs)} &
    \Default{-1} &
    Global offset to apply to the luma QP to derive the QP for joint Cb-Cr
    residual coding mode.  This option corresponds to the value of cb_cr_qp_offset
    transmitted in the PPS.  Valid values are in the range $[-12, 12]$.
    \\
    
    \Option{CbCrQpOffsetDualTree} &
    \Default{0} &
    Tile group QP offset for joint Cb-Cr residual coding mode when separate luma and
    chroma trees are used.  This option corresponds to the value of tile_group_cb_cr_qp_offset
    transmitted in the tile group header. Valid values are in the range $[-12, 12]$.
    \\
    
    \Option{LumaLevelToDeltaQPMode} &
    \Default{0} &
    Luma-level based Delta QP modulation.
    \par
    \begin{tabular}{cp{0.45\textwidth}}
     0 & not used \\
     1 & Based on CTU average \\
     2 & Based on Max luma in CTU\\
    \end{tabular}
    \\
    
    \Option{LumaLevelToDeltaQPMaxValWeight} &
    \Default{1.0} &
    Weight of per block maximum luma value when LumaLevelToDeltaQPMode=2.
    \\
    
    \Option{LumaLevelToDeltaQPMappingLuma} &
    \Default{\NotSet} &
    Specify luma values to use for the luma to delta QP mapping instead of using default values. Default values are: 0, 301, 367, 434, 501, 567, 634, 701, 767, 834.
    \\
    
    \Option{LumaLevelToDeltaQPMappingDQP} &
    \Default{\NotSet} &
    Specify DQP values to use for the luma to delta QP mapping instead of using default values. Default values are: -3, -2, -1, 0, 1, 2, 3, 4, 5, 6.
    \\
    
    \Option{WCGPPSEnable} &
    \Default{0} &
    Enable the WCG PPS modulation of the chroma QP, rather than the slice,
    which, unlike slice-level modulation, allows the deblocking process
    to consider the adjustment.
    To use, specify a fractional QP:
    the first part of the sequence will use $qpc=floor(QP)$ in the following
    calculation and PPS-0; the second part of the sequence will use $qpc=ceil(QP)$
    and PPS-1. The $chromaQp$ that is then stored in the PPS is given as:
    $clip(round(WCGPPSXXQpScale*baseCQp)+XXQpOffset)$ where $baseCQp=(WCGPPSChromaQpScale*qpc+WCGPPSChromaQpOffset)$.
    Note that the slices will continue to have a delta QP applied.
    \\
    
    \Option{WCGPPSChromaQpScale} &
    \Default{0.0} &
    Scale parameter for the linear chroma QP offset mapping used for WCG content.
    \\
    
    \Option{WCGPPSChromaQpOffset} &
    \Default{0.0} &
    Offset parameter for the linear chroma QP offset mapping used for WCG content.
    \\
    
    \Option{WCGPPSCbQpScale}%
    \Option{WCGPPSCrQpScale} &
    \Default{1.0} &
    Per chroma component QP scale factor depending on capture and representation color space.
    For Cb component with BT.2020 container use 1.14; for BT.709 material and 1.04 for P3 material.
    For Cr component with BT.2020 container use 1.79; for BT.709 material and 1.39 for P3 material.
    \\
    
    \Option{SliceChromaQPOffsetPeriodicity} &
    \Default{0} &
    Defines the periodicity for inter slices that use the slice-level chroma QP offsets, as defined by SliceCbQpOffsetIntraOrPeriodic and SliceCrQpOffsetIntraOrPeriodic. A value of 0 disables the periodicity. It is intended to be used in low-delay configurations where an regular intra period is not defined.
    \\
    
    \Option{SliceCbQpOffsetIntraOrPeriodic}%
    \Option{SliceCrQpOffsetIntraOrPeriodic} &
    \Default{0} &
    Defines the slice-level QP offset to be used for intra slices, or once every 'SliceChromaQPOffsetPeriodicity' pictures.
    \\
    
    \Option{MaxCuDQPDepth (-dqd)} &
    %\ShortOption{\None} &
    \Default{0} &
    Defines maximum depth of a minimum CuDQP for sub-LCU-level delta QP.
    MaxCuDQPDepth shall be greater than or equal to SliceGranularity.
    \\
    
    \Option{RDOQ} &
    %\ShortOption{\None} &
    \Default{true} &
    Enables or disables rate-distortion-optimized quantization for transformed TUs.
    \\
    
    \Option{RDOQTS} &
    %\ShortOption{\None} &
    \Default{true} &
    Enables or disables rate-distortion-optimized quantization for transform-skipped TUs.
    \\
    
    \Option{SelectiveRDOQ} &
    %\ShortOption{\None} &
    \Default{false} &
    Enables or disables selective rate-distortion-optimized quantization.
    A simple quantization is use to pre-analyze, whether to bypass the RDOQ process or not. 
    If all the coefficients are quantized to 0, the RDOQ process is bypassed. 
    Otherwise, the RDOQ process is performed as usual.
    \\
    
    \Option{DeltaQpRD (-dqr)} &
    %\ShortOption{-dqr} &
    \Default{0} &
    Specifies the maximum QP offset at slice level for multi-pass slice
    encoding.  When encoding, each slice is tested multiple times by using
    slice QP values in the range $[-\mathrm{DeltaQpRD}, \mathrm{DeptaQpRD}]$,
    and the best QP value is chosen as the slice QP.
    \\
    
    \Option{MaxDeltaQP (-d)} &
    %\ShortOption{-d} &
    \Default{0} &
    Specifies the maximum QP offset at the largest coding unit level for
    the block-level adaptive QP assignment scheme. In the encoder, each
    largest coding unit is tested multiple times by using the QP values in
    the range $[-\mathrm{MaxDeltaQP}, \mathrm{MaxDeltaQP}]$, and the best QP
    value is chosen as the QP value of the largest coding unit.
    \\
    
    \Option{dQPFile (-m)} &
    %\ShortOption{-m} &
    \Default{\NotSet} &
    Specifies a file containing a list of QP deltas. The $n$-th line
    (where $n$ is 0 for the first line) of this file corresponds to the QP
    value delta for the picture with POC value $n$.
    \\
    
    \Option{AdaptiveQp (-aq)} &
    %\ShortOption{-aq} &
    \Default{false} &
    Enable or disable QP adaptation based upon a psycho-visual model.
    \\
    
    \Option{MaxQPAdaptationRange (-aqr)} &
    %\ShortOption{-aqps} &
    \Default{6} &
    Specifies the maximum QP adaptation range.
    \\
    
    \Option{AdaptiveQpSelection (-aqps)} &
    %\ShortOption{-aqps} &
    \Default{false} &
    Specifies whether QP values for non-I frames will be calculated on the
    fly based on statistics of previously coded frames.
    \\
    
    \Option{RecalculateQP...} \Option{AccordingToLambda} &
    %\ShortOption{\None} &
    \Default{false} &
    Recalculate QP values according to lambda values. Do not suggest to be enabled in all intra case.
    \\
    
    \Option{ScalingList} &
    %\ShortOption{\None} &
    \Default{0} &
    Controls the specification of scaling lists:
    \par
    \begin{tabular}{cp{0.45\textwidth}}
     0 & Scaling lists are disabled \\
     1 & Use default scaling lists \\
     2 & Scaling lists are specified in the file indicated by ScalingListFile \\
    \end{tabular}
    \\
    
    \Option{ScalingListFile} &
    %\ShortOption{\None} &
    \Default{\NotSet} &
    When ScalingList is set to 2, this parameter indicates the name of the file, which contains the defined scaling lists.
    If ScalingList is set to 2 and this parameter is an empty string, information on the format of the scaling list file
    is output and the encoder stops.
    \\
    
    \Option{MaxCUChromaQpAdjustmentDepth} &
    %\ShortOption{\None} &
    \Default{-1} &
    Specifies the maximum depth for CU chroma QP adjustment; if negative, CU chroma QP adjustment is disabled.
    \\
    
    \end{OptionTableNoShorthand}
    
    
    %%
    %% Slice/Tile/Brick coding parameters
    %%
    \begin{OptionTableNoShorthand}{Slice, tile and brick coding parameters}{tab:slice-coding}
    %\Option{SliceGranularity} &
    %\ShortOption{\None} &
    %\Default{0} &
    %Determines the depth in an LCU at which slices may begin and end.
    %\par
    %\begin{tabular}{cp{0.45\textwidth}}
    % 0   & Slice addresses are LCU aligned \\
    % $1 \leq n \leq 3$
    %     & Slice start addresses are aligned to CUs at depth $n$ \\
    %\end{tabular}
    %
    %Note: The smallest permissible alignment is 16x16 CUs.
    %Values of $n$ must satisfy this constraint, for example, with a 64x64
    %LCU, $n$ must be less than or equal to 2.
    %\\
    
    \Option{SliceMode} &
    %\ShortOption{\None} &
    \Default{0} &
    Controls the slice partitioning method in conjunction with
    SliceArgument.
    \par
    \begin{tabular}{cp{0.45\textwidth}}
     0 & Single slice \\
     1 & (deprecated) Maximum number of CTUs per slice \\
     2 & (deprecated) Maximum number of bytes per slice \\
     3 & Maximum number of tiles per slice \\
     4 & One slice per brick
    \end{tabular}
    \\
    
    \Option{SliceArgument} &
    %\ShortOption{\None} &
    \Default{\NotSet} &
    (deprecated)
    Specifies the maximum number of CTUs, bytes or tiles in a slice depending on the
    SliceMode setting.
    \\
    
    \Option{RectSliceFlag} &
    %\ShortOption{\None} &
    \Default{1} &
    Controls the slice shape method in conjunction with SliceMode,
    SliceArgument, and Tile/Brick configurations.
    \par
    \begin{tabular}{cp{0.45\textwidth}}
     0 & Raster scan slice. Bricks within slice are in raster scan order  \\
     1 & Rectangular slice. Bricks within slice form rectangular shape \\
     NOTE: When SliceMode is equal to 3, RectSliceFlag is equal to 1, 
     and there is more than one tiles/bricks in the pic, 
     NumRecSliceInPicMinus1 must be greater than 0
    \end{tabular}
    \\
    
    \Option{NumRecSlicesInPicMinus1} &
    %\ShortOption{\None} &
    \Default{0} &
    Specifies the number of rectangular slices in the picture.
    \\
    
    \Option{RectSlicesBoundaryArray} &
    %\ShortOption{\None} &
    \Default{\NotSet} &
    Specifies a space or comma separated list of top-left brick index and 
    bottom-right brick index of rectangular slices.
    The top-left brick index and bottom-right brick index corresponds to the top left 
    rectangular slice in the picture. The rest of indices corresponds to the each rectangular slices
    in the picture in the rectangular slice raster scan in the picture, respectively.
    
    For example, when the picture is partitioned into 16 tiles (4 tile columns and 4 tile rows), 
    each tile is not further partitioned into bricks, SliceMode is equal to 3, SliceArgument is equal to 4, 
    and NumRecSlicesInPicMinus1 is equal to 3, the values of RectSlicesBoundaryArray shall be as followss: 
    0 5 2 7 8 13 10 15.
    \par
    \begin{tabular}{cp{0.45\textwidth}}
     First  slice has top-left brick index 0  and bottom-right brick index 5 \\
     Second slice has top-left brick index 2  and bottom-right brick index 7 \\
     Third  slice has top-left brick index 8  and bottom-right brick index 13 \\
     Fourth slice has top-left brick index 10 and bottom-right brick index 15
    \end{tabular}
    \\
    
    \Option{IDRRefParamList} &
    %\ShortOption{\None} &
    \Default{false} &
    Enables the signalling of reference picture list syntax elements in slice headers of IDR pictures
    \\
    
    \Option{WaveFrontSynchro} &
    %\ShortOption{\None} &
    \Default{false} &
    Enables the use of specific CABAC probabilities synchronization at the
    beginning of each line of CTBs in order to produce a bitstream that can
    be encoded or decoded using one or more cores.
    \\
    
    \Option{TileUniformSpacing} &
    %\ShortOption{\None} &
    \Default{false} &
    Controls the mode used to determine per row and column tile sizes.
    \par
    \begin{tabular}{cp{0.45\textwidth}}
     0 & Each tile column width and tile row height is explicitly set
         by TileColumnWidthArray and TileRowHeightArray respectively \\
     1 & Tile columns and tile rows are uniformly spaced. \\
    \end{tabular}
    \\
    
    \Option{NumTileColumnsMinus1}%
    \Option{NumTileRowsMinus1} &
    %\ShortOption{\None} &
    \Default{0} &
    Specifies the tile based picture partitioning geometry as
    $\mathrm{NumTileColumnsMinus1} + 1 \times \mathrm{NumTileRowsMinus1} + 1$
    columns and rows.
    \\
    
    \Option{TileColumnWidthArray}%
    \Option{TileRowHeightArray} &
    %\ShortOption{\None} &
    \Default{\NotSet} &
    Specifies a space or comma separated list of widths and heights,
    respectively, of each tile column or tile row.  The first value in the
    list corresponds to the leftmost tile column or topmost tile row.
    \\
    
    \Option{BrickSplit1}%
    \Option{BrickSplit2} %
    \Option{BrickSplitN} &
    %\ShortOption{\None} &
    \Default{\NotSet} &
    Specifies the splitting of tiles into bricks, N can be in the range of 1 to 128 and has no further meaning except to distinguish different splitting parameters.
    
    The following options are supported:
    
    BrickSplitN tileIdx uniform (numsplits) heights
    
    \begin{tabular}{cp{0.45\textwidth}}
     tileIdx & the index of the tile to be split in raster scan order starting with zero \\
     uniform & specifies whether uniform splitting shall be used (1 for uniform, 0 non-uniform) \\
     numsplits & specifies the number of splits, if uniform is not used \\
     heights & specifies the height of the uniform splits or a list of heights for non-uniform splits \\
    \end{tabular}
     
    \\
    \Option{TileRowHeightArray} &
    %\ShortOption{\None} &
    \Default{\NotSet} &
    Specifies a space or comma separated list of widths and heights,
    respectively, of each tile column or tile row.  The first value in the
    list corresponds to the leftmost tile column or topmost tile row.
    \\
    
    
    \end{OptionTableNoShorthand}
    
    
    
    %%
    %% In-loop filtering parameters
    %%
    \begin{OptionTableNoShorthand}{In-loop filtering parameters}{tab:inloop-filter}
    \Option{LoopFilterDisable} &
    %\ShortOption{\None} &
    \Default{false} &
    Enables or disables the in-loop deblocking filter.
    \\
    
    \Option{LFCrossSliceBoundaryFlag} &
    %\ShortOption{\None} &
    \Default{true} &
    Enables or disables the use of in-loop filtering across slice
    boundaries.
    \\
    
    \Option{LoopFilterOffsetInPPS}&
    %\ShortOption{\None}&
    \Default{false}&
    If enabled, the in-loop deblocking filter control parameters are sent in PPS. 
    Otherwise, the in-loop deblocking filter control parameters are sent in the slice segment header.
    If deblocking filter parameters are sent in PPS, the same values of deblocking filter parameters 
    are used for all pictures in the sequence (i.e. deblocking parameter = base parameter value).  
    If deblocking filter parameters are sent in the slice segment header, varying deblocking filter 
    parameters can be specified by setting parameters tcOffsetDiv2 and betaOffsetDiv2 in the GOP structure table. 
    In this case, the final value of the deblocking filter parameter sent for a certain GOP picture is equal to 
    (base parameter + GOP parameter for this picture). Intra-pictures use the base parameters values.
    \\
    
    \Option{LoopFilterTcOffset_div2}&
    %\ShortOption{\None}&
    \Default{0}&
    Specifies the base value for the in-loop deblocking filter parameter tc_offset_div2. The final value of tc_offset_div2 
    shall be an integer number in the range $-6..6$.
    \\
    
    \Option{LoopFilterBetaOffset_div2}&
    %\ShortOption{\None}&
    \Default{0}&
    Specifies the base value for the in-loop deblocking filter parameter beta_offset_div2. The final value of beta_offset_div2 
    shall be an integer number in the range $-6..6$.
    \\
    
    \Option{DeblockingFilterMetric}&
    %\ShortOption{\None}&
    \Default{0}&
    Specifies the use of a deblocking filter metric to evaluate the suitability of deblocking. If non-zero then
    LoopFilterOffsetInPPS and LoopFilterDisable must be 0. Currently excepted values are 0, 1 and 2.
    \\
    
    \Option{LFCrossSliceBoundaryFlag}&
    %\ShortOption{\None}&
    \Default{true}&
    Enables or disables the use of a deblocking across tile boundaries.
    \\
    
    \Option{LoopFilterAcrossVirtualBoundariesDisabledFlag}&
    %\ShortOption{\None}&
    \Default{false}&
    Disables in-loop filtering operations across the virtual boundaries.
    \\
    
    \Option{NumVerVirtualBoundaries}&
    %\ShortOption{\None}&
    \Default{0}&
    Specifies the number of vertical virtual boundaries.The value of NumVerVirtualBoundaries shall be in the range of 0 to 3, inclusive.
    \\
    
    \Option{NumHorVirtualBoundaries}&
    %\ShortOption{\None}&
    \Default{0}&
    Specifies the number of horizontal virtual boundaries. The value of NumHorVirtualBoundaries shall be in the range of 0 to 3, inclusive.
    \\
    
    \Option{VirtualBoundariesPosX}&
    %\ShortOption{\None}&
    \Default{\NotSet}&
    Specifies the locations of the vertical virtual boundaries in units of luma samples
    \\
    
    \Option{VirtualBoundariesPosY}&
    %\ShortOption{\None}&
    \Default{\NotSet}&
    Specifies the locations of the horizontal virtual boundaries in units of luma samples
    \\
    
    \end{OptionTableNoShorthand}
    
    
    
    %%
    %% Coding tools parameters
    %%
    
    \begin{OptionTableNoShorthand}{Coding tools parameters}{tab:coding-tools}
    
    \Option{MIP} &
    %\ShortOption{\None} &
    \Default{true} &
    Enables or disables the use of matrix-based intra prediction (MIP).
    \\
    
    \Option{AMP} &
    %\ShortOption{\None} &
    \Default{true} &
    Enables or disables the use of asymmetric motion partitions.
    \\
    
    \Option{ISP} &
    %\ShortOption{\None} &
    \Default{false} &
    Enables or disables the Intra Sub-Partitions coding mode.
    \\
    
    \Option{ISPFast} &
    %\ShortOption{\None} &
    \Default{false} &
    Enables or disables reduced testing of non-DCT-II transforms if ISP is likely to become the best mode for a given CU.
    \par
    This option has no effect if either ISP or MTS are disabled.
    \\
    
    
    \Option{JointCbCr} &
    
    Yan Zhang's avatar
    Yan Zhang committed
    %\ShortOption{\None} &
    
    \Default{false} &
    
    Enables or disables the joint coding of chroma residuals.
    
    Yan Zhang's avatar
    Yan Zhang committed
    \\
    
    
    \Option{SAO} &
    
    %\ShortOption{\None} &
    \Default{true} &
    
    Enables or disables the sample adaptive offset (SAO) filter.
    
    Yan Zhang's avatar
    Yan Zhang committed
    \Option{TestSAODisableAtPictureLevel} &
    %\ShortOption{\None} &
    \Default{false} &
    Enables the testing of disabling SAO at the picture level after having analysed all blocks.
    \\
    
    \Option{SaoEncodingRate} &
    %\ShortOption{\None} &
    \Default{0.75} &
    When >0 SAO early picture termination is enabled for luma and chroma.
    \\
    
    \Option{SaoEncodingRateChroma} &
    %\ShortOption{\None} &
    \Default{0.5} &
    The SAO early picture termination rate to use for chroma (when m_SaoEncodingRate is >0). If <=0, use results for luma.
    \\
    
    \Option{SAOLcuBoundary} &
    %\ShortOption{\None} &
    \Default{false} &
    Enables or disables SAO parameter estimation using non-deblocked pixels
    for LCU bottom and right boundary areas.
    \\
    
    \Option{SAOResetEncoderStateAfterIRAP} &
    %\ShortOption{\None} &
    \Default{false} &
    When true, resets the encoder's SAO state after an IRAP (POC order).
    \\
    
    \Option{ConstrainedIntraPred} &
    %\ShortOption{\None} &
    \Default{false} &
    Enables or disables constrained intra prediction.  Constrained intra
    prediction only permits samples from intra blocks in the same slice as the
    current block to be used for intra prediction.
    \\
    
    \Option{FastUDIUseMPMEnabled} &
    %\ShortOption{\None} &
    \Default{true} &
    If enabled, adapt intra direction search, accounting for MPM
    \\
    
    \Option{FastMEForGenBLowDelayEnabled} &
    %\ShortOption{\None} &
    \Default{true} &
    If enabled use a fast ME for generalised B Low Delay slices
    \\
    
    \Option{UseBLambdaForNonKeyLowDelayPictures} &
    %\ShortOption{\None} &
    \Default{true} &
    Enables use of B-Lambda for non-key low-delay pictures
    \\
    
    \Option{TransquantBypassEnable} &
    %\ShortOption{\None} &
    \Default{false} &
    Enables or disables the ability to bypass the transform,
    quantization and filtering stages at CU level.
    This option corresponds to the value of
    transquant_bypass_enabled_flag that is transmitted in the PPS.
    
    See CUTransquantBypassFlagForce for further details.
    \\
    
    \Option{CUTransquantBypassFlagForce} &
    %\ShortOption{\None} &
    \Default{0} &
    Controls the per CU transformation, quantization and filtering
    mode decision.
    This option controls the value of the per CU cu_transquant_bypass_flag.
    \par
    \begin{tabular}{cp{0.45\textwidth}}
     0 & Bypass is searched on a CU-by-CU basis and will be used if the cost is lower than not bypassing. \\
     1 & Bypass is forced for all CUs. \\
    \end{tabular}
    
    This option has no effect if TransquantBypassEnable is disabled.
    \\
    
    \Option{PCMEnabledFlag} &
    %\ShortOption{\None} &
    \Default{false} &
    Enables or disables the use of PCM. The encoder will use cost measures on a CU-by-CU basis to determine if PCM mode is to be applied.
    \\
    
    \Option{PCMLog2MaxSize} &