Skip to content

Commit c7deab7

Browse files
keshavdvVltnrch
authored andcommitted
h264_metadata bitstream fixed_frame_rate_flag fix
After changes like ef13faf, the h264_metadata bitstream filter stopped working when using the fixed_frame_rate_flag option on an input stream that doesn't contain VUI because the default inferred value of low_hrd_delay_flag seems to be 1. ffmpeg used to raise a warning, but proceeded anyway but now aborts after the other fixes since the output is rightfully invalid. I believe this change makes the bitstream filter conform to page 403 of the ITU spec: "When fixed_frame_rate_flag is equal to 1, low_delay_hrd_flag shall be equal to 0. When low_delay_hrd_flag is not present, its value shall be inferred to be equal to 1 − fixed_frame_rate_flag."
1 parent 920840f commit c7deab7

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

Changelog

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ releases are sorted from youngest to oldest.
44
version 7.1.1-mtv:
55
- Molotov patches
66
- Redis protocol via libhiredis
7+
- h264_metadata bitstream fixed_frame_rate_flag fix
78

89
version 7.1.1:
910
avformat/hls: Partially revert "reduce default max reload to 3"

libavcodec/bsf/h264_metadata.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,13 @@ static int h264_metadata_update_sps(AVBSFContext *bsf,
224224
sps->vui.timing_info_present_flag = 1;
225225
need_vui = 1;
226226
}
227-
SET_VUI_FIELD(fixed_frame_rate_flag);
227+
228+
// Set fixed frame rate flag and update low_delay_hrd_flag to match
229+
if (ctx->fixed_frame_rate_flag >= 0) {
230+
sps->vui.fixed_frame_rate_flag = ctx->fixed_frame_rate_flag;
231+
sps->vui.low_delay_hrd_flag = 1 - sps->vui.fixed_frame_rate_flag;
232+
}
233+
228234
if (ctx->zero_new_constraint_set_flags) {
229235
sps->constraint_set4_flag = 0;
230236
sps->constraint_set5_flag = 0;

0 commit comments

Comments
 (0)