if (num != 0 && den != 0)
av_reduce(&avctx->framerate.den, &avctx->framerate.num,
num, den, 1 << 30);
+}
+
+static int export_stream_params_from_sei(HEVCContext *s)
+{
+ AVCodecContext *avctx = s->avctx;
+
+ if (s->sei.a53_caption.buf_ref)
+ s->avctx->properties |= FF_CODEC_PROPERTY_CLOSED_CAPTIONS;
if (s->sei.alternative_transfer.present &&
av_color_transfer_name(s->sei.alternative_transfer.preferred_transfer_characteristics) &&
s->sei.alternative_transfer.preferred_transfer_characteristics != AVCOL_TRC_UNSPECIFIED) {
avctx->color_trc = s->sei.alternative_transfer.preferred_transfer_characteristics;
}
+
+ return 0;
}
static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps)
s->max_ra = INT_MAX;
}
+ ret = export_stream_params_from_sei(s);
+ if (ret < 0)
+ return ret;
+
sh->dependent_slice_segment_flag = 0;
if (!sh->first_slice_in_pic_flag) {
int slice_address_length;
if (!sd)
av_buffer_unref(&a53->buf_ref);
a53->buf_ref = NULL;
-
- s->avctx->properties |= FF_CODEC_PROPERTY_CLOSED_CAPTIONS;
}
for (int i = 0; i < s->sei.unregistered.nb_buf_ref; i++) {
}
}
+ /* export stream parameters from SEI */
+ ret = export_stream_params_from_sei(s);
+ if (ret < 0)
+ return ret;
+
return 0;
}
s->sei.content_light = s0->sei.content_light;
s->sei.alternative_transfer = s0->sei.alternative_transfer;
+ ret = export_stream_params_from_sei(s);
+ if (ret < 0)
+ return ret;
+
return 0;
}
#endif