[FFmpeg-cvslog] h264: Use common SEI types

Mark Thompson git at videolan.org
Thu Jan 21 19:50:50 EET 2021


ffmpeg | branch: master | Mark Thompson <sw at jkqxz.net> | Thu Jan 21 14:37:49 2021 +0000| [64b3aac8d07a8744656737619b70977359d9a6a5] | committer: Mark Thompson

h264: Use common SEI types

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=64b3aac8d07a8744656737619b70977359d9a6a5
---

 libavcodec/cbs_h2645.c                | 18 +++++++++---------
 libavcodec/cbs_h264_syntax_template.c | 20 ++++++++++----------
 libavcodec/h264_metadata_bsf.c        |  8 ++++----
 libavcodec/h264_sei.c                 | 18 +++++++++---------
 libavcodec/h264_sei.h                 | 18 +-----------------
 libavcodec/vaapi_encode_h264.c        |  8 ++++----
 libavcodec/videotoolboxenc.c          |  6 +++---
 7 files changed, 40 insertions(+), 56 deletions(-)

diff --git a/libavcodec/cbs_h2645.c b/libavcodec/cbs_h2645.c
index 9e210abba4..d26d85bcd3 100644
--- a/libavcodec/cbs_h2645.c
+++ b/libavcodec/cbs_h2645.c
@@ -1384,18 +1384,18 @@ static void cbs_h265_close(CodedBitstreamContext *ctx)
 static void cbs_h264_free_sei_payload(H264RawSEIPayload *payload)
 {
     switch (payload->payload_type) {
-    case H264_SEI_TYPE_BUFFERING_PERIOD:
-    case H264_SEI_TYPE_PIC_TIMING:
-    case H264_SEI_TYPE_PAN_SCAN_RECT:
-    case H264_SEI_TYPE_RECOVERY_POINT:
-    case H264_SEI_TYPE_DISPLAY_ORIENTATION:
-    case H264_SEI_TYPE_MASTERING_DISPLAY_COLOUR_VOLUME:
-    case H264_SEI_TYPE_ALTERNATIVE_TRANSFER:
+    case SEI_TYPE_BUFFERING_PERIOD:
+    case SEI_TYPE_PIC_TIMING:
+    case SEI_TYPE_PAN_SCAN_RECT:
+    case SEI_TYPE_RECOVERY_POINT:
+    case SEI_TYPE_DISPLAY_ORIENTATION:
+    case SEI_TYPE_MASTERING_DISPLAY_COLOUR_VOLUME:
+    case SEI_TYPE_ALTERNATIVE_TRANSFER_CHARACTERISTICS:
         break;
-    case H264_SEI_TYPE_USER_DATA_REGISTERED:
+    case SEI_TYPE_USER_DATA_REGISTERED_ITU_T_T35:
         av_buffer_unref(&payload->payload.user_data_registered.data_ref);
         break;
-    case H264_SEI_TYPE_USER_DATA_UNREGISTERED:
+    case SEI_TYPE_USER_DATA_UNREGISTERED:
         av_buffer_unref(&payload->payload.user_data_unregistered.data_ref);
         break;
     default:
diff --git a/libavcodec/cbs_h264_syntax_template.c b/libavcodec/cbs_h264_syntax_template.c
index 76ed51cc7b..37047dc30b 100644
--- a/libavcodec/cbs_h264_syntax_template.c
+++ b/libavcodec/cbs_h264_syntax_template.c
@@ -747,45 +747,45 @@ static int FUNC(sei_payload)(CodedBitstreamContext *ctx, RWContext *rw,
 #endif
 
     switch (current->payload_type) {
-    case H264_SEI_TYPE_BUFFERING_PERIOD:
+    case SEI_TYPE_BUFFERING_PERIOD:
         CHECK(FUNC(sei_buffering_period)
               (ctx, rw, &current->payload.buffering_period));
         break;
-    case H264_SEI_TYPE_PIC_TIMING:
+    case SEI_TYPE_PIC_TIMING:
         CHECK(FUNC(sei_pic_timing)
               (ctx, rw, &current->payload.pic_timing));
         break;
-    case H264_SEI_TYPE_PAN_SCAN_RECT:
+    case SEI_TYPE_PAN_SCAN_RECT:
         CHECK(FUNC(sei_pan_scan_rect)
               (ctx, rw, &current->payload.pan_scan_rect));
         break;
-    case H264_SEI_TYPE_FILLER_PAYLOAD:
+    case SEI_TYPE_FILLER_PAYLOAD:
         {
             for (i = 0; i  < current->payload_size; i++)
                 fixed(8, ff_byte, 0xff);
         }
         break;
-    case H264_SEI_TYPE_USER_DATA_REGISTERED:
+    case SEI_TYPE_USER_DATA_REGISTERED_ITU_T_T35:
         CHECK(FUNC_SEI(sei_user_data_registered)
               (ctx, rw, &current->payload.user_data_registered, &current->payload_size));
         break;
-    case H264_SEI_TYPE_USER_DATA_UNREGISTERED:
+    case SEI_TYPE_USER_DATA_UNREGISTERED:
         CHECK(FUNC_SEI(sei_user_data_unregistered)
               (ctx, rw, &current->payload.user_data_unregistered, &current->payload_size));
         break;
-    case H264_SEI_TYPE_RECOVERY_POINT:
+    case SEI_TYPE_RECOVERY_POINT:
         CHECK(FUNC(sei_recovery_point)
               (ctx, rw, &current->payload.recovery_point));
         break;
-    case H264_SEI_TYPE_DISPLAY_ORIENTATION:
+    case SEI_TYPE_DISPLAY_ORIENTATION:
         CHECK(FUNC(sei_display_orientation)
               (ctx, rw, &current->payload.display_orientation));
         break;
-    case H264_SEI_TYPE_MASTERING_DISPLAY_COLOUR_VOLUME:
+    case SEI_TYPE_MASTERING_DISPLAY_COLOUR_VOLUME:
         CHECK(FUNC_SEI(sei_mastering_display_colour_volume)
               (ctx, rw, &current->payload.mastering_display_colour_volume));
         break;
-    case H264_SEI_TYPE_ALTERNATIVE_TRANSFER:
+    case SEI_TYPE_ALTERNATIVE_TRANSFER_CHARACTERISTICS:
         CHECK(FUNC_SEI(sei_alternative_transfer_characteristics)
               (ctx, rw, &current->payload.alternative_transfer_characteristics));
         break;
diff --git a/libavcodec/h264_metadata_bsf.c b/libavcodec/h264_metadata_bsf.c
index f39e649ac6..2228761113 100644
--- a/libavcodec/h264_metadata_bsf.c
+++ b/libavcodec/h264_metadata_bsf.c
@@ -435,7 +435,7 @@ static int h264_metadata_filter(AVBSFContext *bsf, AVPacket *pkt)
 
                 for (j = sei->payload_count - 1; j >= 0; j--) {
                     if (sei->payload[j].payload_type ==
-                        H264_SEI_TYPE_FILLER_PAYLOAD)
+                        SEI_TYPE_FILLER_PAYLOAD)
                         ff_cbs_h264_delete_sei_message(au, &au->units[i], j);
                 }
             }
@@ -454,7 +454,7 @@ static int h264_metadata_filter(AVBSFContext *bsf, AVPacket *pkt)
                 int32_t *matrix;
 
                 if (sei->payload[j].payload_type !=
-                    H264_SEI_TYPE_DISPLAY_ORIENTATION)
+                    SEI_TYPE_DISPLAY_ORIENTATION)
                     continue;
                 disp = &sei->payload[j].payload.display_orientation;
 
@@ -492,7 +492,7 @@ static int h264_metadata_filter(AVBSFContext *bsf, AVPacket *pkt)
     }
     if (ctx->display_orientation == INSERT) {
         H264RawSEIPayload payload = {
-            .payload_type = H264_SEI_TYPE_DISPLAY_ORIENTATION,
+            .payload_type = SEI_TYPE_DISPLAY_ORIENTATION,
         };
         H264RawSEIDisplayOrientation *disp =
             &payload.payload.display_orientation;
@@ -590,7 +590,7 @@ static int h264_metadata_init(AVBSFContext *bsf)
         int j;
 
         ctx->sei_user_data_payload.payload_type =
-            H264_SEI_TYPE_USER_DATA_UNREGISTERED;
+            SEI_TYPE_USER_DATA_UNREGISTERED;
 
         // Parse UUID.  It must be a hex string of length 32, possibly
         // containing '-'s between hex digits (which we ignore).
diff --git a/libavcodec/h264_sei.c b/libavcodec/h264_sei.c
index 793446be84..ca2ca59e1f 100644
--- a/libavcodec/h264_sei.c
+++ b/libavcodec/h264_sei.c
@@ -444,31 +444,31 @@ int ff_h264_sei_decode(H264SEIContext *h, GetBitContext *gb,
             return ret;
 
         switch (type) {
-        case H264_SEI_TYPE_PIC_TIMING: // Picture timing SEI
+        case SEI_TYPE_PIC_TIMING: // Picture timing SEI
             ret = decode_picture_timing(&h->picture_timing, &gb_payload, logctx);
             break;
-        case H264_SEI_TYPE_USER_DATA_REGISTERED:
+        case SEI_TYPE_USER_DATA_REGISTERED_ITU_T_T35:
             ret = decode_registered_user_data(h, &gb_payload, logctx, size);
             break;
-        case H264_SEI_TYPE_USER_DATA_UNREGISTERED:
+        case SEI_TYPE_USER_DATA_UNREGISTERED:
             ret = decode_unregistered_user_data(&h->unregistered, &gb_payload, logctx, size);
             break;
-        case H264_SEI_TYPE_RECOVERY_POINT:
+        case SEI_TYPE_RECOVERY_POINT:
             ret = decode_recovery_point(&h->recovery_point, &gb_payload, logctx);
             break;
-        case H264_SEI_TYPE_BUFFERING_PERIOD:
+        case SEI_TYPE_BUFFERING_PERIOD:
             ret = decode_buffering_period(&h->buffering_period, &gb_payload, ps, logctx);
             break;
-        case H264_SEI_TYPE_FRAME_PACKING:
+        case SEI_TYPE_FRAME_PACKING_ARRANGEMENT:
             ret = decode_frame_packing_arrangement(&h->frame_packing, &gb_payload);
             break;
-        case H264_SEI_TYPE_DISPLAY_ORIENTATION:
+        case SEI_TYPE_DISPLAY_ORIENTATION:
             ret = decode_display_orientation(&h->display_orientation, &gb_payload);
             break;
-        case H264_SEI_TYPE_GREEN_METADATA:
+        case SEI_TYPE_GREEN_METADATA:
             ret = decode_green_metadata(&h->green_metadata, &gb_payload);
             break;
-        case H264_SEI_TYPE_ALTERNATIVE_TRANSFER:
+        case SEI_TYPE_ALTERNATIVE_TRANSFER_CHARACTERISTICS:
             ret = decode_alternative_transfer(&h->alternative_transfer, &gb_payload);
             break;
         default:
diff --git a/libavcodec/h264_sei.h b/libavcodec/h264_sei.h
index 4fdcf4ed3f..14cc559361 100644
--- a/libavcodec/h264_sei.h
+++ b/libavcodec/h264_sei.h
@@ -21,24 +21,8 @@
 
 #include "get_bits.h"
 #include "h264_ps.h"
+#include "sei.h"
 
-/**
- * SEI message types
- */
-typedef enum {
-    H264_SEI_TYPE_BUFFERING_PERIOD       = 0,   ///< buffering period (H.264, D.1.1)
-    H264_SEI_TYPE_PIC_TIMING             = 1,   ///< picture timing
-    H264_SEI_TYPE_PAN_SCAN_RECT          = 2,   ///< pan-scan rectangle
-    H264_SEI_TYPE_FILLER_PAYLOAD         = 3,   ///< filler data
-    H264_SEI_TYPE_USER_DATA_REGISTERED   = 4,   ///< registered user data as specified by Rec. ITU-T T.35
-    H264_SEI_TYPE_USER_DATA_UNREGISTERED = 5,   ///< unregistered user data
-    H264_SEI_TYPE_RECOVERY_POINT         = 6,   ///< recovery point (frame # to decoder sync)
-    H264_SEI_TYPE_FRAME_PACKING          = 45,  ///< frame packing arrangement
-    H264_SEI_TYPE_DISPLAY_ORIENTATION    = 47,  ///< display orientation
-    H264_SEI_TYPE_GREEN_METADATA         = 56,  ///< GreenMPEG information
-    H264_SEI_TYPE_MASTERING_DISPLAY_COLOUR_VOLUME = 137,  ///< mastering display properties
-    H264_SEI_TYPE_ALTERNATIVE_TRANSFER   = 147, ///< alternative transfer
-} H264_SEI_Type;
 
 /**
  * pic_struct in picture timing SEI message
diff --git a/libavcodec/vaapi_encode_h264.c b/libavcodec/vaapi_encode_h264.c
index b577d09caf..13120b05af 100644
--- a/libavcodec/vaapi_encode_h264.c
+++ b/libavcodec/vaapi_encode_h264.c
@@ -231,22 +231,22 @@ static int vaapi_encode_h264_write_extra_header(AVCodecContext *avctx,
         i = 0;
 
         if (priv->sei_needed & SEI_IDENTIFIER) {
-            sei->payload[i].payload_type = H264_SEI_TYPE_USER_DATA_UNREGISTERED;
+            sei->payload[i].payload_type = SEI_TYPE_USER_DATA_UNREGISTERED;
             sei->payload[i].payload.user_data_unregistered = priv->sei_identifier;
             ++i;
         }
         if (priv->sei_needed & SEI_TIMING) {
             if (pic->type == PICTURE_TYPE_IDR) {
-                sei->payload[i].payload_type = H264_SEI_TYPE_BUFFERING_PERIOD;
+                sei->payload[i].payload_type = SEI_TYPE_BUFFERING_PERIOD;
                 sei->payload[i].payload.buffering_period = priv->sei_buffering_period;
                 ++i;
             }
-            sei->payload[i].payload_type = H264_SEI_TYPE_PIC_TIMING;
+            sei->payload[i].payload_type = SEI_TYPE_PIC_TIMING;
             sei->payload[i].payload.pic_timing = priv->sei_pic_timing;
             ++i;
         }
         if (priv->sei_needed & SEI_RECOVERY_POINT) {
-            sei->payload[i].payload_type = H264_SEI_TYPE_RECOVERY_POINT;
+            sei->payload[i].payload_type = SEI_TYPE_RECOVERY_POINT;
             sei->payload[i].payload.recovery_point = priv->sei_recovery_point;
             ++i;
         }
diff --git a/libavcodec/videotoolboxenc.c b/libavcodec/videotoolboxenc.c
index 400401550a..a333a9a10c 100644
--- a/libavcodec/videotoolboxenc.c
+++ b/libavcodec/videotoolboxenc.c
@@ -1751,7 +1751,7 @@ static int copy_replace_length_codes(
             remaining_dst_size--;
 
             wrote_bytes = write_sei(sei,
-                                    H264_SEI_TYPE_USER_DATA_REGISTERED,
+                                    SEI_TYPE_USER_DATA_REGISTERED,
                                     dst_data,
                                     remaining_dst_size);
 
@@ -1807,7 +1807,7 @@ static int copy_replace_length_codes(
                 return status;
 
             wrote_bytes = write_sei(sei,
-                                    H264_SEI_TYPE_USER_DATA_REGISTERED,
+                                    SEI_TYPE_USER_DATA_REGISTERED,
                                     new_sei,
                                     remaining_dst_size - old_sei_length);
             if (wrote_bytes < 0)
@@ -1903,7 +1903,7 @@ static int vtenc_cm_to_avpacket(
 
     if (sei) {
         size_t msg_size = get_sei_msg_bytes(sei,
-                                            H264_SEI_TYPE_USER_DATA_REGISTERED);
+                                            SEI_TYPE_USER_DATA_REGISTERED);
 
         sei_nalu_size = sizeof(start_code) + 1 + msg_size + 1;
     }



More information about the ffmpeg-cvslog mailing list