Где я могу найти спецификации HEVC \ H.265
Я ищу спецификации HEVC \ H.265 (особенно для атомов hvc1 и hvcC), но я не могу найти их в Интернете.
Есть ли бесплатные спецификации для HEVC онлайн?
2 ответа
Спецификация HEVC/H.265 находится в свободном доступе здесь. Тем не менее, он не содержит информацию о hvc1
и hvcC
атомы. Они определены в части 15 стандарта MPEG-4, которая в основном является расширением базового формата медиафайлов ISO (основа mp4) для переноса содержимого AVC и HEVC. Для HEVC вам нужна (как минимум) версия от 2014 года, так как более ранние версии содержат только информацию об AVC. К сожалению, эта спецификация не доступна бесплатно.
Некоторое дальнейшее руководство, если это мешает вам получить спецификацию: hvc1
/hev1
коробка анализируется точно так же, как avc1
/2
/3
/4
коробки. hvcC
хотя коробка разбирается немного иначе чем avcC
коробка. Для анализа этого вы можете посмотреть, как это анализируется в некоторых проектах с открытым исходным кодом, таких как ffmpeg или vlc.
Я использовал эту структуру, чтобы разобрать ее. Я взял это из 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;
}
}
}