<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Hi,<div class=""><br class=""></div><div class="">As far as I understand, the h265 specification states that the Main 12 profile allows for a bit depth of 8 bits to 12 bits per sample with support for 4:0:0 and 4:2:0 chroma sampling. HEVC decoders that conform to the Main 12 profile must be capable of decoding bitstreams made with the following profiles: Monochrome, Monochrome 12, Main, Main 10, and Main 12.</div><div class=""><br class=""></div><div class="">I’m trying to encode 12bit grayscale images into a 12bit monochrome h265 video stream using x265 (via FFmpeg). I’m specifying the profile as Main12 and the chroma subsampling as 4:0:0.</div><div class="">When I try to launch the encoding, I get the following error:</div><div class=""><i class="">“main12 profile not compatible with i400 input chroma subsampling”</i></div><div class=""><br class=""></div><div class="">I traced the error to line 527 of level.ccp: <a href="https://bitbucket.org/multicoreware/x265_git/src/ce8642f22123f0b8cf105c88fc1e8af9888bd345/source/encoder/level.cpp#lines-527" class="">https://bitbucket.org/multicoreware/x265_git/src/ce8642f22123f0b8cf105c88fc1e8af9888bd345/source/encoder/level.cpp#lines-527</a></div><div class=""><br class=""></div><div class=""><div class="" style="background-color: rgb(255, 255, 254); line-height: 20px; white-space: pre;"><div class=""></div><blockquote type="cite" class=""><div class=""><span class="" style="color: rgb(160, 160, 160); font-style: italic;">/* check that input color space is supported by profile */</span></div><div class="">    <span class="" style="color: rgb(9, 30, 66); font-weight: bold;">if</span> (!<span class="" style="color: rgb(32, 32, 32);">strcmp</span>(<span class="" style="color: rgb(32, 32, 32);">profile</span>, <span class="" style="color: rgb(191, 38, 0);">"main"</span>) || !<span class="" style="color: rgb(32, 32, 32);">strcmp</span>(<span class="" style="color: rgb(32, 32, 32);">profile</span>, <span class="" style="color: rgb(191, 38, 0);">"main-intra"</span>) ||</div><div class="">        !<span class="" style="color: rgb(32, 32, 32);">strcmp</span>(<span class="" style="color: rgb(32, 32, 32);">profile</span>, <span class="" style="color: rgb(191, 38, 0);">"main10"</span>) || !<span class="" style="color: rgb(32, 32, 32);">strcmp</span>(<span class="" style="color: rgb(32, 32, 32);">profile</span>, <span class="" style="color: rgb(191, 38, 0);">"main10-intra"</span>) ||</div><div class="">        !<span class="" style="color: rgb(32, 32, 32);">strcmp</span>(<span class="" style="color: rgb(32, 32, 32);">profile</span>, <span class="" style="color: rgb(191, 38, 0);">"main12"</span>) || !<span class="" style="color: rgb(32, 32, 32);">strcmp</span>(<span class="" style="color: rgb(32, 32, 32);">profile</span>, <span class="" style="color: rgb(191, 38, 0);">"main12-intra"</span>) ||</div><div class="">        !<span class="" style="color: rgb(32, 32, 32);">strcmp</span>(<span class="" style="color: rgb(32, 32, 32);">profile</span>, <span class="" style="color: rgb(191, 38, 0);">"mainstillpicture"</span>) || !<span class="" style="color: rgb(32, 32, 32);">strcmp</span>(<span class="" style="color: rgb(32, 32, 32);">profile</span>, <span class="" style="color: rgb(191, 38, 0);">"msp"</span>))</div><div class="">    {</div><div class="">        <span class="" style="color: rgb(9, 30, 66); font-weight: bold;">if</span> (<span class="" style="color: rgb(32, 32, 32);">param</span>-><span class="" style="color: rgb(32, 32, 32);">internalCsp</span> != <span class="" style="color: rgb(32, 32, 32);">X265_CSP_I420</span>)</div><div class="">        {</div><div class="">            <span class="" style="color: rgb(32, 32, 32);">x265_log</span>(<span class="" style="color: rgb(32, 32, 32);">param</span>, <span class="" style="color: rgb(32, 32, 32);">X265_LOG_ERROR</span>, <span class="" style="color: rgb(191, 38, 0);">"%s profile not compatible with %s input chroma subsampling.\n"</span>,</div><div class="">                     <span class="" style="color: rgb(32, 32, 32);">profile</span>, <span class="" style="color: rgb(32, 32, 32);">x265_source_csp_names</span>[<span class="" style="color: rgb(32, 32, 32);">param</span>-><span class="" style="color: rgb(32, 32, 32);">internalCsp</span>]);</div><div class="">            <span class="" style="color: rgb(9, 30, 66); font-weight: bold;">return</span> -<span class="" style="color: rgb(101, 84, 192);">1</span>;</div><div class="">        }</div><div class="">    }</div></blockquote></div></div><div class=""><br class=""></div><div class="">Based on what the h265 specification says, the Main12 profile should support 4:0:0 (i400) 12bit monochrome chroma subsampling.</div><div class=""><br class=""></div><div class="">Shouldn’t the check of chroma subsampling at line 525 allow for both <span class="" style="color: rgb(32, 32, 32); white-space: pre; background-color: rgb(255, 255, 254);"><i class="">X265_CSP_I420</i> and </span><span class="" style="color: rgb(32, 32, 32); white-space: pre; background-color: rgb(255, 255, 254);"><i class="">X265_CSP_I400</i>?</span></div><div class=""><span class="" style="color: rgb(32, 32, 32); white-space: pre; background-color: rgb(255, 255, 254);"><br class=""></span></div><div class=""><span class="" style="color: rgb(32, 32, 32); white-space: pre; background-color: rgb(255, 255, 254);">Thanks</span></div><div class=""><span class="" style="color: rgb(32, 32, 32); white-space: pre; background-color: rgb(255, 255, 254);">Andrea</span></div></body></html>