I encoded a raw HEVC file using FFMPEG and NVENC with a main 444 profile which is one of the REXT profiles. I was debugging the HEVC bitstream with the ffmpeg trace_header command and noticed that NVENC does not write the SPS constraint flags for REXT profiles. As seen below, all the flags are set to zero when in fact should be 0b111000001.
[trace_headers @ 0x559cdad39dc0] 92 general_max_12bit_constraint_flag 0 = 0
[trace_headers @ 0x559cdad39dc0] 93 general_max_10bit_constraint_flag 0 = 0
[trace_headers @ 0x559cdad39dc0] 94 general_max_8bit_constraint_flag 0 = 0
[trace_headers @ 0x559cdad39dc0] 95 general_max_422chroma_constraint_flag 0 = 0
[trace_headers @ 0x559cdad39dc0] 96 general_max_420chroma_constraint_flag 0 = 0
[trace_headers @ 0x559cdad39dc0] 97 general_max_monochrome_constraint_flag 0 = 0
[trace_headers @ 0x559cdad39dc0] 98 general_intra_constraint_flag 0 = 0
[trace_headers @ 0x559cdad39dc0] 99 general_one_picture_only_constraint_flag 0 = 0
[trace_headers @ 0x559cdad39dc0] 100 general_lower_bit_rate_constraint_flag 0 = 0
These constraint flags are defined in Rec. ITU-T H.265 Table A.2, A.3, A.5 and A.7. When the general_profile_idc is equal to 4 (which has 21 different HEVC profiles), how can one differentiate between a main_444 and a main_444_10 profile without valid SPS constraint flags? The HEVC specification states that these constraint flags need to be written into the bitstream. Could this be a possible NVENC bug?
Thanks