Browse code

h264_sei: Add namespace prefix to all SEI values

This avoids confusion with equivalent H.265 SEI values when both are
being used at the same time.

(cherry picked from commit 6ea220cbeec8863e2006a03b73bed52db2b13ee7)

Mark Thompson authored on 2017/05/16 06:42:14
Showing 6 changed files
... ...
@@ -473,23 +473,23 @@ static inline int parse_nal_units(AVCodecParserContext *s,
473 473
 
474 474
             if (sps->pic_struct_present_flag && p->sei.picture_timing.present) {
475 475
                 switch (p->sei.picture_timing.pic_struct) {
476
-                case SEI_PIC_STRUCT_TOP_FIELD:
477
-                case SEI_PIC_STRUCT_BOTTOM_FIELD:
476
+                case H264_SEI_PIC_STRUCT_TOP_FIELD:
477
+                case H264_SEI_PIC_STRUCT_BOTTOM_FIELD:
478 478
                     s->repeat_pict = 0;
479 479
                     break;
480
-                case SEI_PIC_STRUCT_FRAME:
481
-                case SEI_PIC_STRUCT_TOP_BOTTOM:
482
-                case SEI_PIC_STRUCT_BOTTOM_TOP:
480
+                case H264_SEI_PIC_STRUCT_FRAME:
481
+                case H264_SEI_PIC_STRUCT_TOP_BOTTOM:
482
+                case H264_SEI_PIC_STRUCT_BOTTOM_TOP:
483 483
                     s->repeat_pict = 1;
484 484
                     break;
485
-                case SEI_PIC_STRUCT_TOP_BOTTOM_TOP:
486
-                case SEI_PIC_STRUCT_BOTTOM_TOP_BOTTOM:
485
+                case H264_SEI_PIC_STRUCT_TOP_BOTTOM_TOP:
486
+                case H264_SEI_PIC_STRUCT_BOTTOM_TOP_BOTTOM:
487 487
                     s->repeat_pict = 2;
488 488
                     break;
489
-                case SEI_PIC_STRUCT_FRAME_DOUBLING:
489
+                case H264_SEI_PIC_STRUCT_FRAME_DOUBLING:
490 490
                     s->repeat_pict = 3;
491 491
                     break;
492
-                case SEI_PIC_STRUCT_FRAME_TRIPLING:
492
+                case H264_SEI_PIC_STRUCT_FRAME_TRIPLING:
493 493
                     s->repeat_pict = 5;
494 494
                     break;
495 495
                 default:
... ...
@@ -504,12 +504,12 @@ static inline int parse_nal_units(AVCodecParserContext *s,
504 504
                 s->picture_structure = AV_PICTURE_STRUCTURE_FRAME;
505 505
                 if (sps->pic_struct_present_flag && p->sei.picture_timing.present) {
506 506
                     switch (p->sei.picture_timing.pic_struct) {
507
-                    case SEI_PIC_STRUCT_TOP_BOTTOM:
508
-                    case SEI_PIC_STRUCT_TOP_BOTTOM_TOP:
507
+                    case H264_SEI_PIC_STRUCT_TOP_BOTTOM:
508
+                    case H264_SEI_PIC_STRUCT_TOP_BOTTOM_TOP:
509 509
                         s->field_order = AV_FIELD_TT;
510 510
                         break;
511
-                    case SEI_PIC_STRUCT_BOTTOM_TOP:
512
-                    case SEI_PIC_STRUCT_BOTTOM_TOP_BOTTOM:
511
+                    case H264_SEI_PIC_STRUCT_BOTTOM_TOP:
512
+                    case H264_SEI_PIC_STRUCT_BOTTOM_TOP_BOTTOM:
513 513
                         s->field_order = AV_FIELD_BB;
514 514
                         break;
515 515
                     default:
... ...
@@ -81,7 +81,7 @@ static int decode_picture_timing(H264SEIPictureTiming *h, GetBitContext *gb,
81 81
         h->pic_struct = get_bits(gb, 4);
82 82
         h->ct_type    = 0;
83 83
 
84
-        if (h->pic_struct > SEI_PIC_STRUCT_FRAME_TRIPLING)
84
+        if (h->pic_struct > H264_SEI_PIC_STRUCT_FRAME_TRIPLING)
85 85
             return AVERROR_INVALIDDATA;
86 86
 
87 87
         num_clock_ts = sei_num_clock_ts_table[h->pic_struct];
... ...
@@ -421,31 +421,31 @@ int ff_h264_sei_decode(H264SEIContext *h, GetBitContext *gb,
421 421
         next = get_bits_count(gb) + 8 * size;
422 422
 
423 423
         switch (type) {
424
-        case SEI_TYPE_PIC_TIMING: // Picture timing SEI
424
+        case H264_SEI_TYPE_PIC_TIMING: // Picture timing SEI
425 425
             ret = decode_picture_timing(&h->picture_timing, gb, ps, logctx);
426 426
             break;
427
-        case SEI_TYPE_USER_DATA_REGISTERED:
427
+        case H264_SEI_TYPE_USER_DATA_REGISTERED:
428 428
             ret = decode_registered_user_data(h, gb, logctx, size);
429 429
             break;
430
-        case SEI_TYPE_USER_DATA_UNREGISTERED:
430
+        case H264_SEI_TYPE_USER_DATA_UNREGISTERED:
431 431
             ret = decode_unregistered_user_data(&h->unregistered, gb, logctx, size);
432 432
             break;
433
-        case SEI_TYPE_RECOVERY_POINT:
433
+        case H264_SEI_TYPE_RECOVERY_POINT:
434 434
             ret = decode_recovery_point(&h->recovery_point, gb);
435 435
             break;
436
-        case SEI_TYPE_BUFFERING_PERIOD:
436
+        case H264_SEI_TYPE_BUFFERING_PERIOD:
437 437
             ret = decode_buffering_period(&h->buffering_period, gb, ps, logctx);
438 438
             break;
439
-        case SEI_TYPE_FRAME_PACKING:
439
+        case H264_SEI_TYPE_FRAME_PACKING:
440 440
             ret = decode_frame_packing_arrangement(&h->frame_packing, gb);
441 441
             break;
442
-        case SEI_TYPE_DISPLAY_ORIENTATION:
442
+        case H264_SEI_TYPE_DISPLAY_ORIENTATION:
443 443
             ret = decode_display_orientation(&h->display_orientation, gb);
444 444
             break;
445
-        case SEI_TYPE_GREEN_METADATA:
445
+        case H264_SEI_TYPE_GREEN_METADATA:
446 446
             ret = decode_green_metadata(&h->green_metadata, gb);
447 447
             break;
448
-        case SEI_TYPE_ALTERNATIVE_TRANSFER:
448
+        case H264_SEI_TYPE_ALTERNATIVE_TRANSFER:
449 449
             ret = decode_alternative_transfer(&h->alternative_transfer, gb);
450 450
             break;
451 451
         default:
... ...
@@ -25,31 +25,32 @@
25 25
  * SEI message types
26 26
  */
27 27
 typedef enum {
28
-    SEI_TYPE_BUFFERING_PERIOD       = 0,   ///< buffering period (H.264, D.1.1)
29
-    SEI_TYPE_PIC_TIMING             = 1,   ///< picture timing
30
-    SEI_TYPE_USER_DATA_REGISTERED   = 4,   ///< registered user data as specified by Rec. ITU-T T.35
31
-    SEI_TYPE_USER_DATA_UNREGISTERED = 5,   ///< unregistered user data
32
-    SEI_TYPE_RECOVERY_POINT         = 6,   ///< recovery point (frame # to decoder sync)
33
-    SEI_TYPE_FRAME_PACKING          = 45,  ///< frame packing arrangement
34
-    SEI_TYPE_DISPLAY_ORIENTATION    = 47,  ///< display orientation
35
-    SEI_TYPE_GREEN_METADATA         = 56,  ///< GreenMPEG information
36
-    SEI_TYPE_ALTERNATIVE_TRANSFER   = 147, ///< alternative transfer
37
-} SEI_Type;
28
+    H264_SEI_TYPE_BUFFERING_PERIOD       = 0,   ///< buffering period (H.264, D.1.1)
29
+    H264_SEI_TYPE_PIC_TIMING             = 1,   ///< picture timing
30
+    H264_SEI_TYPE_FILLER_PAYLOAD         = 3,   ///< filler data
31
+    H264_SEI_TYPE_USER_DATA_REGISTERED   = 4,   ///< registered user data as specified by Rec. ITU-T T.35
32
+    H264_SEI_TYPE_USER_DATA_UNREGISTERED = 5,   ///< unregistered user data
33
+    H264_SEI_TYPE_RECOVERY_POINT         = 6,   ///< recovery point (frame # to decoder sync)
34
+    H264_SEI_TYPE_FRAME_PACKING          = 45,  ///< frame packing arrangement
35
+    H264_SEI_TYPE_DISPLAY_ORIENTATION    = 47,  ///< display orientation
36
+    H264_SEI_TYPE_GREEN_METADATA         = 56,  ///< GreenMPEG information
37
+    H264_SEI_TYPE_ALTERNATIVE_TRANSFER   = 147, ///< alternative transfer
38
+} H264_SEI_Type;
38 39
 
39 40
 /**
40 41
  * pic_struct in picture timing SEI message
41 42
  */
42 43
 typedef enum {
43
-    SEI_PIC_STRUCT_FRAME             = 0, ///<  0: %frame
44
-    SEI_PIC_STRUCT_TOP_FIELD         = 1, ///<  1: top field
45
-    SEI_PIC_STRUCT_BOTTOM_FIELD      = 2, ///<  2: bottom field
46
-    SEI_PIC_STRUCT_TOP_BOTTOM        = 3, ///<  3: top field, bottom field, in that order
47
-    SEI_PIC_STRUCT_BOTTOM_TOP        = 4, ///<  4: bottom field, top field, in that order
48
-    SEI_PIC_STRUCT_TOP_BOTTOM_TOP    = 5, ///<  5: top field, bottom field, top field repeated, in that order
49
-    SEI_PIC_STRUCT_BOTTOM_TOP_BOTTOM = 6, ///<  6: bottom field, top field, bottom field repeated, in that order
50
-    SEI_PIC_STRUCT_FRAME_DOUBLING    = 7, ///<  7: %frame doubling
51
-    SEI_PIC_STRUCT_FRAME_TRIPLING    = 8  ///<  8: %frame tripling
52
-} SEI_PicStructType;
44
+    H264_SEI_PIC_STRUCT_FRAME             = 0, ///<  0: %frame
45
+    H264_SEI_PIC_STRUCT_TOP_FIELD         = 1, ///<  1: top field
46
+    H264_SEI_PIC_STRUCT_BOTTOM_FIELD      = 2, ///<  2: bottom field
47
+    H264_SEI_PIC_STRUCT_TOP_BOTTOM        = 3, ///<  3: top field, bottom field, in that order
48
+    H264_SEI_PIC_STRUCT_BOTTOM_TOP        = 4, ///<  4: bottom field, top field, in that order
49
+    H264_SEI_PIC_STRUCT_TOP_BOTTOM_TOP    = 5, ///<  5: top field, bottom field, top field repeated, in that order
50
+    H264_SEI_PIC_STRUCT_BOTTOM_TOP_BOTTOM = 6, ///<  6: bottom field, top field, bottom field repeated, in that order
51
+    H264_SEI_PIC_STRUCT_FRAME_DOUBLING    = 7, ///<  7: %frame doubling
52
+    H264_SEI_PIC_STRUCT_FRAME_TRIPLING    = 8  ///<  8: %frame tripling
53
+} H264_SEI_PicStructType;
53 54
 
54 55
 /**
55 56
  * frame_packing_arrangement types
... ...
@@ -66,7 +67,7 @@ typedef enum {
66 66
 
67 67
 typedef struct H264SEIPictureTiming {
68 68
     int present;
69
-    SEI_PicStructType pic_struct;
69
+    H264_SEI_PicStructType pic_struct;
70 70
 
71 71
     /**
72 72
      * Bit set of clock types for fields/frames in picture timing SEI message.
... ...
@@ -1150,37 +1150,37 @@ static int h264_export_frame_props(H264Context *h)
1150 1150
     if (sps->pic_struct_present_flag && h->sei.picture_timing.present) {
1151 1151
         H264SEIPictureTiming *pt = &h->sei.picture_timing;
1152 1152
         switch (pt->pic_struct) {
1153
-        case SEI_PIC_STRUCT_FRAME:
1153
+        case H264_SEI_PIC_STRUCT_FRAME:
1154 1154
             break;
1155
-        case SEI_PIC_STRUCT_TOP_FIELD:
1156
-        case SEI_PIC_STRUCT_BOTTOM_FIELD:
1155
+        case H264_SEI_PIC_STRUCT_TOP_FIELD:
1156
+        case H264_SEI_PIC_STRUCT_BOTTOM_FIELD:
1157 1157
             cur->f->interlaced_frame = 1;
1158 1158
             break;
1159
-        case SEI_PIC_STRUCT_TOP_BOTTOM:
1160
-        case SEI_PIC_STRUCT_BOTTOM_TOP:
1159
+        case H264_SEI_PIC_STRUCT_TOP_BOTTOM:
1160
+        case H264_SEI_PIC_STRUCT_BOTTOM_TOP:
1161 1161
             if (FIELD_OR_MBAFF_PICTURE(h))
1162 1162
                 cur->f->interlaced_frame = 1;
1163 1163
             else
1164 1164
                 // try to flag soft telecine progressive
1165 1165
                 cur->f->interlaced_frame = h->prev_interlaced_frame;
1166 1166
             break;
1167
-        case SEI_PIC_STRUCT_TOP_BOTTOM_TOP:
1168
-        case SEI_PIC_STRUCT_BOTTOM_TOP_BOTTOM:
1167
+        case H264_SEI_PIC_STRUCT_TOP_BOTTOM_TOP:
1168
+        case H264_SEI_PIC_STRUCT_BOTTOM_TOP_BOTTOM:
1169 1169
             /* Signal the possibility of telecined film externally
1170 1170
              * (pic_struct 5,6). From these hints, let the applications
1171 1171
              * decide if they apply deinterlacing. */
1172 1172
             cur->f->repeat_pict = 1;
1173 1173
             break;
1174
-        case SEI_PIC_STRUCT_FRAME_DOUBLING:
1174
+        case H264_SEI_PIC_STRUCT_FRAME_DOUBLING:
1175 1175
             cur->f->repeat_pict = 2;
1176 1176
             break;
1177
-        case SEI_PIC_STRUCT_FRAME_TRIPLING:
1177
+        case H264_SEI_PIC_STRUCT_FRAME_TRIPLING:
1178 1178
             cur->f->repeat_pict = 4;
1179 1179
             break;
1180 1180
         }
1181 1181
 
1182 1182
         if ((pt->ct_type & 3) &&
1183
-            pt->pic_struct <= SEI_PIC_STRUCT_BOTTOM_TOP)
1183
+            pt->pic_struct <= H264_SEI_PIC_STRUCT_BOTTOM_TOP)
1184 1184
             cur->f->interlaced_frame = (pt->ct_type & (1 << 1)) != 0;
1185 1185
     } else {
1186 1186
         /* Derive interlacing flag from used decoding process. */
... ...
@@ -1195,8 +1195,8 @@ static int h264_export_frame_props(H264Context *h)
1195 1195
         if (sps->pic_struct_present_flag && h->sei.picture_timing.present) {
1196 1196
             /* Use picture timing SEI information. Even if it is a
1197 1197
              * information of a past frame, better than nothing. */
1198
-            if (h->sei.picture_timing.pic_struct == SEI_PIC_STRUCT_TOP_BOTTOM ||
1199
-                h->sei.picture_timing.pic_struct == SEI_PIC_STRUCT_TOP_BOTTOM_TOP)
1198
+            if (h->sei.picture_timing.pic_struct == H264_SEI_PIC_STRUCT_TOP_BOTTOM ||
1199
+                h->sei.picture_timing.pic_struct == H264_SEI_PIC_STRUCT_TOP_BOTTOM_TOP)
1200 1200
                 cur->f->top_field_first = 1;
1201 1201
             else
1202 1202
                 cur->f->top_field_first = 0;
... ...
@@ -644,18 +644,18 @@ static void vaapi_encode_h264_write_sei(PutBitContext *pbc,
644 644
 
645 645
     for (payload_type = 0; payload_type < 64; payload_type++) {
646 646
         switch (payload_type) {
647
-        case SEI_TYPE_BUFFERING_PERIOD:
647
+        case H264_SEI_TYPE_BUFFERING_PERIOD:
648 648
             if (!priv->send_timing_sei ||
649 649
                 pic->type != PICTURE_TYPE_IDR)
650 650
                 continue;
651 651
             write_payload = &vaapi_encode_h264_write_buffering_period;
652 652
             break;
653
-        case SEI_TYPE_PIC_TIMING:
653
+        case H264_SEI_TYPE_PIC_TIMING:
654 654
             if (!priv->send_timing_sei)
655 655
                 continue;
656 656
             write_payload = &vaapi_encode_h264_write_pic_timing;
657 657
             break;
658
-        case SEI_TYPE_USER_DATA_UNREGISTERED:
658
+        case H264_SEI_TYPE_USER_DATA_UNREGISTERED:
659 659
             if (pic->encode_order != 0)
660 660
                 continue;
661 661
             write_payload = &vaapi_encode_h264_write_identifier;
... ...
@@ -1599,7 +1599,7 @@ static int copy_replace_length_codes(
1599 1599
             remaining_dst_size--;
1600 1600
 
1601 1601
             wrote_bytes = write_sei(sei,
1602
-                                    SEI_TYPE_USER_DATA_REGISTERED,
1602
+                                    H264_SEI_TYPE_USER_DATA_REGISTERED,
1603 1603
                                     dst_data,
1604 1604
                                     remaining_dst_size);
1605 1605
 
... ...
@@ -1655,7 +1655,7 @@ static int copy_replace_length_codes(
1655 1655
                 return status;
1656 1656
 
1657 1657
             wrote_bytes = write_sei(sei,
1658
-                                    SEI_TYPE_USER_DATA_REGISTERED,
1658
+                                    H264_SEI_TYPE_USER_DATA_REGISTERED,
1659 1659
                                     new_sei,
1660 1660
                                     remaining_dst_size - old_sei_length);
1661 1661
             if (wrote_bytes < 0)
... ...
@@ -1751,7 +1751,7 @@ static int vtenc_cm_to_avpacket(
1751 1751
 
1752 1752
     if (sei) {
1753 1753
         size_t msg_size = get_sei_msg_bytes(sei,
1754
-                                            SEI_TYPE_USER_DATA_REGISTERED);
1754
+                                            H264_SEI_TYPE_USER_DATA_REGISTERED);
1755 1755
 
1756 1756
         sei_nalu_size = sizeof(start_code) + 1 + msg_size + 1;
1757 1757
     }