[FFmpeg-devel] [PATCH v2 03/13] cbs_h2645: Merge SEI message handling in common between codecs
James Almer
jamrial at gmail.com
Thu Jan 21 04:08:15 EET 2021
On 1/18/2021 7:44 PM, Mark Thompson wrote:
> diff --git a/libavcodec/cbs_sei.h b/libavcodec/cbs_sei.h
> index 95beabf4d7..5ce4ad3ccd 100644
> --- a/libavcodec/cbs_sei.h
> +++ b/libavcodec/cbs_sei.h
> @@ -21,8 +21,132 @@
>
> #include <stddef.h>
> #include <stdint.h>
> +
> #include "libavutil/buffer.h"
>
> +#include "cbs.h"
> +
> +// SEI payload types form a common namespace between the H.264, H.265
> +// and H.266 standards. A given payload type always has the same
> +// meaning, but some names have different payload types in different
> +// standards (e.g. scalable-nesting is 30 in H.264 but 133 in H.265).
> +// The content of the payload data depends on the standard, though
> +// many generic parts have the same interpretation everywhere (such as
> +// mastering-display-colour-volume and user-data-unregistered).
> +enum {
> + SEI_TYPE_BUFFERING_PERIOD = 0,
> + SEI_TYPE_PIC_TIMING = 1,
> + SEI_TYPE_PAN_SCAN_RECT = 2,
> + SEI_TYPE_FILLER_PAYLOAD = 3,
> + SEI_TYPE_USER_DATA_REGISTERED_ITU_T_T35 = 4,
> + SEI_TYPE_USER_DATA_UNREGISTERED = 5,
> + SEI_TYPE_RECOVERY_POINT = 6,
> + SEI_TYPE_DEC_REF_PIC_MARKING_REPETITION = 7,
> + SEI_TYPE_SPARE_PIC = 8,
> + SEI_TYPE_SCENE_INFO = 9,
> + SEI_TYPE_SUB_SEQ_INFO = 10,
> + SEI_TYPE_SUB_SEQ_LAYER_CHARACTERISTICS = 11,
> + SEI_TYPE_SUB_SEQ_CHARACTERISTICS = 12,
> + SEI_TYPE_FULL_FRAME_FREEZE = 13,
> + SEI_TYPE_FULL_FRAME_FREEZE_RELEASE = 14,
> + SEI_TYPE_FULL_FRAME_SNAPSHOT = 15,
> + SEI_TYPE_PROGRESSIVE_REFINEMENT_SEGMENT_START = 16,
> + SEI_TYPE_PROGRESSIVE_REFINEMENT_SEGMENT_END = 17,
> + SEI_TYPE_MOTION_CONSTRAINED_SLICE_GROUP_SET = 18,
> + SEI_TYPE_FILM_GRAIN_CHARACTERISTICS = 19,
> + SEI_TYPE_DEBLOCKING_FILTER_DISPLAY_PREFERENCE = 20,
> + SEI_TYPE_STEREO_VIDEO_INFO = 21,
> + SEI_TYPE_POST_FILTER_HINT = 22,
> + SEI_TYPE_TONE_MAPPING_INFO = 23,
> + SEI_TYPE_SCALABILITY_INFO = 24,
> + SEI_TYPE_SUB_PIC_SCALABLE_LAYER = 25,
> + SEI_TYPE_NON_REQUIRED_LAYER_REP = 26,
> + SEI_TYPE_PRIORITY_LAYER_INFO = 27,
> + SEI_TYPE_LAYERS_NOT_PRESENT_4 = 28,
> + SEI_TYPE_LAYER_DEPENDENCY_CHANGE = 29,
> + SEI_TYPE_SCALABLE_NESTING_4 = 30,
> + SEI_TYPE_BASE_LAYER_TEMPORAL_HRD = 31,
> + SEI_TYPE_QUALITY_LAYER_INTEGRITY_CHECK = 32,
> + SEI_TYPE_REDUNDANT_PIC_PROPERTY = 33,
> + SEI_TYPE_TL0_DEP_REP_INDEX = 34,
> + SEI_TYPE_TL_SWITCHING_POINT = 35,
> + SEI_TYPE_PARALLEL_DECODING_INFO = 36,
> + SEI_TYPE_MVC_SCALABLE_NESTING = 37,
> + SEI_TYPE_VIEW_SCALABILITY_INFO = 38,
> + SEI_TYPE_MULTIVIEW_SCENE_INFO_4 = 39,
> + SEI_TYPE_MULTIVIEW_ACQUISITION_INFO_4 = 40,
> + SEI_TYPE_NON_REQUIRED_VIEW_COMPONENT = 41,
> + SEI_TYPE_VIEW_DEPENDENCY_CHANGE = 42,
> + SEI_TYPE_OPERATION_POINTS_NOT_PRESENT = 43,
> + SEI_TYPE_BASE_VIEW_TEMPORAL_HRD = 44,
> + SEI_TYPE_FRAME_PACKING_ARRANGEMENT = 45,
> + SEI_TYPE_MULTIVIEW_VIEW_POSITION_4 = 46,
> + SEI_TYPE_DISPLAY_ORIENTATION = 47,
> + SEI_TYPE_MVCD_SCALABLE_NESTING = 48,
> + SEI_TYPE_MVCD_VIEW_SCALABILITY_INFO = 49,
> + SEI_TYPE_DEPTH_REPRESENTATION_INFO_4 = 50,
> + SEI_TYPE_THREE_DIMENSIONAL_REFERENCE_DISPLAYS_INFO_4 = 51,
> + SEI_TYPE_DEPTH_TIMING = 52,
> + SEI_TYPE_DEPTH_SAMPLING_INFO = 53,
> + SEI_TYPE_CONSTRAINED_DEPTH_PARAMETER_SET_IDENTIFIER = 54,
> + SEI_TYPE_GREEN_METADATA = 56,
> + SEI_TYPE_STRUCTURE_OF_PICTURES_INFO = 128,
> + SEI_TYPE_ACTIVE_PARAMETER_SETS = 129,
> + SEI_TYPE_DECODING_UNIT_INFO = 130,
> + SEI_TYPE_TEMPORAL_SUB_LAYER_ZERO_IDX = 131,
> + SEI_TYPE_DECODED_PICTURE_HASH = 132,
> + SEI_TYPE_SCALABLE_NESTING_5 = 133,
> + SEI_TYPE_REGION_REFRESH_INFO = 134,
> + SEI_TYPE_NO_DISPLAY = 135,
> + SEI_TYPE_TIME_CODE = 136,
> + SEI_TYPE_MASTERING_DISPLAY_COLOUR_VOLUME = 137,
> + SEI_TYPE_SEGMENTED_RECT_FRAME_PACKING_ARRANGEMENT = 138,
> + SEI_TYPE_TEMPORAL_MOTION_CONSTRAINED_TILE_SETS = 139,
> + SEI_TYPE_CHROMA_RESAMPLING_FILTER_HINT = 140,
> + SEI_TYPE_KNEE_FUNCTION_INFO = 141,
> + SEI_TYPE_COLOUR_REMAPPING_INFO = 142,
> + SEI_TYPE_DEINTERLACED_FIELD_IDENTIFICATION = 143,
> + SEI_TYPE_CONTENT_LIGHT_LEVEL_INFO = 144,
> + SEI_TYPE_DEPENDENT_RAP_INDICATION = 145,
> + SEI_TYPE_CODED_REGION_COMPLETION = 146,
> + SEI_TYPE_ALTERNATIVE_TRANSFER_CHARACTERISTICS = 147,
> + SEI_TYPE_AMBIENT_VIEWING_ENVIRONMENT = 148,
> + SEI_TYPE_CONTENT_COLOUR_VOLUME = 149,
> + SEI_TYPE_EQUIRECTANGULAR_PROJECTION = 150,
> + SEI_TYPE_CUBEMAP_PROJECTION = 151,
> + SEI_TYPE_FISHEYE_VIDEO_INFO = 152,
> + SEI_TYPE_SPHERE_ROTATION = 154,
> + SEI_TYPE_REGIONWISE_PACKING = 155,
> + SEI_TYPE_OMNI_VIEWPORT = 156,
> + SEI_TYPE_REGIONAL_NESTING = 157,
> + SEI_TYPE_MCTS_EXTRACTION_INFO_SETS = 158,
> + SEI_TYPE_MCTS_EXTRACTION_INFO_NESTING = 159,
> + SEI_TYPE_LAYERS_NOT_PRESENT_5 = 160,
> + SEI_TYPE_INTER_LAYER_CONSTRAINED_TILE_SETS = 161,
> + SEI_TYPE_BSP_NESTING = 162,
> + SEI_TYPE_BSP_INITIAL_ARRIVAL_TIME = 163,
> + SEI_TYPE_SUB_BITSTREAM_PROPERTY = 164,
> + SEI_TYPE_ALPHA_CHANNEL_INFO = 165,
> + SEI_TYPE_OVERLAY_INFO = 166,
> + SEI_TYPE_TEMPORAL_MV_PREDICTION_CONSTRAINTS = 167,
> + SEI_TYPE_FRAME_FIELD_INFO = 168,
> + SEI_TYPE_THREE_DIMENSIONAL_REFERENCE_DISPLAYS_INFO = 176,
> + SEI_TYPE_DEPTH_REPRESENTATION_INFO_5 = 177,
> + SEI_TYPE_MULTIVIEW_SCENE_INFO_5 = 178,
> + SEI_TYPE_MULTIVIEW_ACQUISITION_INFO_5 = 179,
> + SEI_TYPE_MULTIVIEW_VIEW_POSITION_5 = 180,
> + SEI_TYPE_ALTERNATIVE_DEPTH_INFO = 181,
> + SEI_TYPE_SEI_MANIFEST = 200,
> + SEI_TYPE_SEI_PREFIX_INDICATION = 201,
> + SEI_TYPE_ANNOTATED_REGIONS = 202,
> + SEI_TYPE_SUBPIC_LEVEL_INFO = 203,
> + SEI_TYPE_SAMPLE_ASPECT_RATIO_INFO = 204,
> +};
Could this part be done outside CBS? h264_sei, hevc_sei and eventually
vvc_sei could be all merged in the long run, but at first, defining
these enum values and having all three modules use them would be better
than duplicating them exclusively for CBS. You're not using the CBS
namespace for them here, either.
We could call the header h274_sei (Can't be simply h274 because that
spec also defines VUI and other features, although valid only for VVC
for now). The h274 name could be used for this CBS implementation, too.
More information about the ffmpeg-devel
mailing list