This avoids confusion with equivalent H.265 SEI values when both are
being used at the same time.
(cherry picked from commit 6ea220cbeec8863e2006a03b73bed52db2b13ee7)
... | ... |
@@ -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 |
} |