#include <stdint.h>
#include "cbs_h2645.h"
+#include "cbs_sei.h"
#include "hevc.h"
enum {
uint8_t log2_max_mv_length_vertical;
} H265RawVUI;
-typedef struct H265RawPSExtensionData {
- uint8_t *data;
- size_t bit_length;
+typedef struct H265RawExtensionData {
+ uint8_t *data;
AVBufferRef *data_ref;
-} H265RawPSExtensionData;
+ size_t bit_length;
+} H265RawExtensionData;
typedef struct H265RawVPS {
H265RawNALUnitHeader nal_unit_header;
H265RawHRDParameters hrd_parameters[HEVC_MAX_LAYER_SETS];
uint8_t vps_extension_flag;
- H265RawPSExtensionData extension_data;
+ H265RawExtensionData extension_data;
} H265RawVPS;
typedef struct H265RawSTRefPicSet {
uint8_t sps_scc_extension_flag;
uint8_t sps_extension_4bits;
- H265RawPSExtensionData extension_data;
+ H265RawExtensionData extension_data;
// Range extension.
uint8_t transform_skip_rotation_enabled_flag;
uint8_t pps_scc_extension_flag;
uint8_t pps_extension_4bits;
- H265RawPSExtensionData extension_data;
+ H265RawExtensionData extension_data;
// Range extension.
uint8_t log2_max_transform_skip_block_size_minus2;
typedef struct H265RawSlice {
H265RawSliceHeader header;
- uint8_t *data;
- size_t data_size;
- int data_bit_start;
+ uint8_t *data;
AVBufferRef *data_ref;
+ size_t data_size;
+ int data_bit_start;
} H265RawSlice;
uint16_t pan_scan_rect_persistence_flag;
} H265RawSEIPanScanRect;
-typedef struct H265RawSEIUserDataRegistered {
- uint8_t itu_t_t35_country_code;
- uint8_t itu_t_t35_country_code_extension_byte;
- uint8_t *data;
- size_t data_length;
- AVBufferRef *data_ref;
-} H265RawSEIUserDataRegistered;
-
-typedef struct H265RawSEIUserDataUnregistered {
- uint8_t uuid_iso_iec_11578[16];
- uint8_t *data;
- size_t data_length;
- AVBufferRef *data_ref;
-} H265RawSEIUserDataUnregistered;
-
typedef struct H265RawSEIRecoveryPoint {
int16_t recovery_poc_cnt;
uint8_t exact_match_flag;
int32_t time_offset_value[3];
} H265RawSEITimeCode;
-typedef struct H265RawSEIMasteringDisplayColourVolume {
- uint16_t display_primaries_x[3];
- uint16_t display_primaries_y[3];
- uint16_t white_point_x;
- uint16_t white_point_y;
- uint32_t max_display_mastering_luminance;
- uint32_t min_display_mastering_luminance;
-} H265RawSEIMasteringDisplayColourVolume;
-
-typedef struct H265RawSEIContentLightLevelInfo {
- uint16_t max_content_light_level;
- uint16_t max_pic_average_light_level;
-} H265RawSEIContentLightLevelInfo;
-
-typedef struct H265RawSEIAlternativeTransferCharacteristics {
- uint8_t preferred_transfer_characteristics;
-} H265RawSEIAlternativeTransferCharacteristics;
-
-typedef struct H265RawSEIPayload {
- uint32_t payload_type;
- uint32_t payload_size;
- union {
- H265RawSEIBufferingPeriod buffering_period;
- H265RawSEIPicTiming pic_timing;
- H265RawSEIPanScanRect pan_scan_rect;
- H265RawSEIUserDataRegistered user_data_registered;
- H265RawSEIUserDataUnregistered user_data_unregistered;
- H265RawSEIRecoveryPoint recovery_point;
- H265RawSEIDisplayOrientation display_orientation;
- H265RawSEIActiveParameterSets active_parameter_sets;
- H265RawSEIDecodedPictureHash decoded_picture_hash;
- H265RawSEITimeCode time_code;
- H265RawSEIMasteringDisplayColourVolume mastering_display;
- H265RawSEIContentLightLevelInfo content_light_level;
- H265RawSEIAlternativeTransferCharacteristics
- alternative_transfer_characteristics;
- struct {
- uint8_t *data;
- size_t data_length;
- AVBufferRef *data_ref;
- } other;
- } payload;
-} H265RawSEIPayload;
+typedef struct H265RawSEIAlphaChannelInfo {
+ uint8_t alpha_channel_cancel_flag;
+ uint8_t alpha_channel_use_idc;
+ uint8_t alpha_channel_bit_depth_minus8;
+ uint16_t alpha_transparent_value;
+ uint16_t alpha_opaque_value;
+ uint8_t alpha_channel_incr_flag;
+ uint8_t alpha_channel_clip_flag;
+ uint8_t alpha_channel_clip_type_flag;
+} H265RawSEIAlphaChannelInfo;
typedef struct H265RawSEI {
H265RawNALUnitHeader nal_unit_header;
-
- H265RawSEIPayload payload[H265_MAX_SEI_PAYLOADS];
- uint8_t payload_count;
+ SEIRawMessageList message_list;
} H265RawSEI;
typedef struct CodedBitstreamH265Context {