简体   繁体   中英

Where can I find HEVC \ H.265 specs

I'm looking for HEVC \\ H.265 specs (especially for hvc1 and hvcC atoms) but I'm not able to find them on-line.

Is there a free spec for HEVC on-line?

The HEVC/H.265 spec is freely available here . However, it does not contain information about the hvc1 and the hvcC atoms. These are defined in MPEG-4 Part 15 , which is basically an extension of the ISO base media file format (the basis of mp4) for carrying AVC and HEVC content. For HEVC, you need (at least) the version from 2014, as earlier versions only have information about AVC. Unfortunately, this spec is not available for free.

Some further guidance if this prevents you from getting the spec: the hvc1 / hev1 box is parsed exactly the same way as the avc1 / 2 / 3 / 4 boxes. The hvcC box though is parsed slightly differently than the avcC box. For parsing that one, you could look at how this is parsed in some open source projects, such as ffmpeg or vlc .

I've used this structure to parse it. I took it from ISO/IEC 14496-15:2014.

aligned(8) class HEVCDecoderConfigurationRecord
{
    unsigned int(8) configurationVersion = 1;
    unsigned int(2) general_profile_space;
    unsigned int(1) general_tier_flag;
    unsigned int(5) general_profile_idc;
    unsigned int(32) general_profile_compatibility_flags;
    unsigned int(48) general_constraint_indicator_flags;
    unsigned int(8) general_level_idc;
    bit(4) reserved = ‘1111’b;
    unsigned int(12) min_spatial_segmentation_idc;
    bit(6) reserved = ‘111111’b;
    unsigned int(2) parallelismType;
    bit(6) reserved = ‘111111’b;
    unsigned int(2) chroma_format_idc;
    bit(5) reserved = ‘11111’b;
    unsigned int(3) bit_depth_luma_minus8;
    bit(5) reserved = ‘11111’b;
    unsigned int(3) bit_depth_chroma_minus8;
    bit(16) avgFrameRate;
    bit(2) constantFrameRate;
    bit(3) numTemporalLayers;
    bit(1) temporalIdNested;
    unsigned int(2) lengthSizeMinusOne;
    unsigned int(8) numOfArrays;
    for (j=0; j < numOfArrays; j++)
    {
        bit(1) array_completeness;
        unsigned int(1) reserved = 0;
        unsigned int(6) NAL_unit_type;
        unsigned int(16) numNalus;
        for (i=0; i< numNalus; i++)
        {
            unsigned int(16) nalUnitLength;
            bit(8*nalUnitLength) nalUnit;
        }
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM