skip_bits1(gb); // upsampled_aspect_ratio_flag
}
+static void decode_nal_sei_display_orientation(HEVCContext *s)
+{
+ GetBitContext *gb = &s->HEVClc->gb;
+
+ s->sei_display_orientation_present = !get_bits1(gb);
+
+ if (s->sei_display_orientation_present) {
+ s->sei_hflip = get_bits1(gb); // hor_flip
+ s->sei_vflip = get_bits1(gb); // ver_flip
+
+ s->sei_anticlockwise_rotation = get_bits(gb, 16);
+ skip_bits1(gb); // display_orientation_persistence_flag
+ }
+}
+
static int decode_pic_timing(HEVCContext *s)
{
GetBitContext *gb = &s->HEVClc->gb;
if (s->nal_unit_type == NAL_SEI_PREFIX) {
if (payload_type == 256 /*&& s->decode_checksum_sei*/) {
decode_nal_sei_decoded_picture_hash(s);
- return 1;
} else if (payload_type == 45) {
decode_nal_sei_frame_packing_arrangement(s);
- return 1;
+ } else if (payload_type == 47) {
+ decode_nal_sei_display_orientation(s);
} else if (payload_type == 1){
int ret = decode_pic_timing(s);
av_log(s->avctx, AV_LOG_DEBUG, "Skipped PREFIX SEI %d\n", payload_type);
} else if (payload_type == 129){
active_parameter_sets(s);
av_log(s->avctx, AV_LOG_DEBUG, "Skipped PREFIX SEI %d\n", payload_type);
- return 1;
} else {
av_log(s->avctx, AV_LOG_DEBUG, "Skipped PREFIX SEI %d\n", payload_type);
skip_bits(gb, 8*payload_size);
- return 1;
}
} else { /* nal_unit_type == NAL_SEI_SUFFIX */
if (payload_type == 132 /* && s->decode_checksum_sei */)
av_log(s->avctx, AV_LOG_DEBUG, "Skipped SUFFIX SEI %d\n", payload_type);
skip_bits(gb, 8 * payload_size);
}
- return 1;
}
+ return 1;
}
static int more_rbsp_data(GetBitContext *gb)