X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fhevc_sei.h;h=c67dbceb6c98ffcb2b38453393c123b41fc76765;hb=e5bcda6473a2d6984216004506374669501fcf3b;hp=e92da25bbf76cac0c04d56e34b696d0b37a64935;hpb=ce47f1589e9f5a6cf8372a269bdd862ff0cc3f91;p=ffmpeg diff --git a/libavcodec/hevc_sei.h b/libavcodec/hevc_sei.h index e92da25bbf7..c67dbceb6c9 100644 --- a/libavcodec/hevc_sei.h +++ b/libavcodec/hevc_sei.h @@ -24,38 +24,13 @@ #include #include "get_bits.h" +#include "sei.h" + -/** - * SEI message types - */ typedef enum { - HEVC_SEI_TYPE_BUFFERING_PERIOD = 0, - HEVC_SEI_TYPE_PICTURE_TIMING = 1, - HEVC_SEI_TYPE_PAN_SCAN_RECT = 2, - HEVC_SEI_TYPE_FILLER_PAYLOAD = 3, - HEVC_SEI_TYPE_USER_DATA_REGISTERED_ITU_T_T35 = 4, - HEVC_SEI_TYPE_USER_DATA_UNREGISTERED = 5, - HEVC_SEI_TYPE_RECOVERY_POINT = 6, - HEVC_SEI_TYPE_SCENE_INFO = 9, - HEVC_SEI_TYPE_FULL_FRAME_SNAPSHOT = 15, - HEVC_SEI_TYPE_PROGRESSIVE_REFINEMENT_SEGMENT_START = 16, - HEVC_SEI_TYPE_PROGRESSIVE_REFINEMENT_SEGMENT_END = 17, - HEVC_SEI_TYPE_FILM_GRAIN_CHARACTERISTICS = 19, - HEVC_SEI_TYPE_POST_FILTER_HINT = 22, - HEVC_SEI_TYPE_TONE_MAPPING_INFO = 23, - HEVC_SEI_TYPE_FRAME_PACKING = 45, - HEVC_SEI_TYPE_DISPLAY_ORIENTATION = 47, - HEVC_SEI_TYPE_SOP_DESCRIPTION = 128, - HEVC_SEI_TYPE_ACTIVE_PARAMETER_SETS = 129, - HEVC_SEI_TYPE_DECODING_UNIT_INFO = 130, - HEVC_SEI_TYPE_TEMPORAL_LEVEL0_INDEX = 131, - HEVC_SEI_TYPE_DECODED_PICTURE_HASH = 132, - HEVC_SEI_TYPE_SCALABLE_NESTING = 133, - HEVC_SEI_TYPE_REGION_REFRESH_INFO = 134, - HEVC_SEI_TYPE_MASTERING_DISPLAY_INFO = 137, - HEVC_SEI_TYPE_CONTENT_LIGHT_LEVEL_INFO = 144, - HEVC_SEI_TYPE_ALTERNATIVE_TRANSFER_CHARACTERISTICS = 147, -} HEVC_SEI_Type; + HEVC_SEI_PIC_STRUCT_FRAME_DOUBLING = 7, + HEVC_SEI_PIC_STRUCT_FRAME_TRIPLING = 8 +} HEVC_SEI_PicStructType; typedef struct HEVCSEIPictureHash { uint8_t md5[3][16]; @@ -81,10 +56,14 @@ typedef struct HEVCSEIPictureTiming { } HEVCSEIPictureTiming; typedef struct HEVCSEIA53Caption { - int a53_caption_size; - uint8_t *a53_caption; + AVBufferRef *buf_ref; } HEVCSEIA53Caption; +typedef struct HEVCSEIUnregistered { + AVBufferRef **buf_ref; + int nb_buf_ref; +} HEVCSEIUnregistered; + typedef struct HEVCSEIMasteringDisplay { int present; uint16_t display_primaries[3][2]; @@ -93,6 +72,10 @@ typedef struct HEVCSEIMasteringDisplay { uint32_t min_luminance; } HEVCSEIMasteringDisplay; +typedef struct HEVCSEIDynamicHDRPlus { + AVBufferRef *info; +} HEVCSEIDynamicHDRPlus; + typedef struct HEVCSEIContentLight { int present; uint16_t max_content_light_level; @@ -104,16 +87,39 @@ typedef struct HEVCSEIAlternativeTransfer { int preferred_transfer_characteristics; } HEVCSEIAlternativeTransfer; +typedef struct HEVCSEITimeCode { + int present; + uint8_t num_clock_ts; + uint8_t clock_timestamp_flag[3]; + uint8_t units_field_based_flag[3]; + uint8_t counting_type[3]; + uint8_t full_timestamp_flag[3]; + uint8_t discontinuity_flag[3]; + uint8_t cnt_dropped_flag[3]; + uint16_t n_frames[3]; + uint8_t seconds_value[3]; + uint8_t minutes_value[3]; + uint8_t hours_value[3]; + uint8_t seconds_flag[3]; + uint8_t minutes_flag[3]; + uint8_t hours_flag[3]; + uint8_t time_offset_length[3]; + int32_t time_offset_value[3]; +} HEVCSEITimeCode; + typedef struct HEVCSEI { HEVCSEIPictureHash picture_hash; HEVCSEIFramePacking frame_packing; HEVCSEIDisplayOrientation display_orientation; HEVCSEIPictureTiming picture_timing; HEVCSEIA53Caption a53_caption; + HEVCSEIUnregistered unregistered; HEVCSEIMasteringDisplay mastering_display; + HEVCSEIDynamicHDRPlus dynamic_hdr_plus; HEVCSEIContentLight content_light; int active_seq_parameter_set_id; HEVCSEIAlternativeTransfer alternative_transfer; + HEVCSEITimeCode timecode; } HEVCSEI; struct HEVCParamSets;