h264: eliminate low_delay
It is always unconditionally initialized in decode_postinit() and then immediately used in one place further below. All the other places where it is accessed are just useless fluff.
This commit is contained in:
parent
5b35b290dd
commit
99c554efc8
@ -334,10 +334,6 @@ av_cold int ff_h264_decode_init(AVCodecContext *avctx)
|
|||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
/* set defaults */
|
|
||||||
if (!avctx->has_b_frames)
|
|
||||||
h->low_delay = 1;
|
|
||||||
|
|
||||||
ret = ff_thread_once(&h264_vlc_init, ff_h264_decode_init_vlc);
|
ret = ff_thread_once(&h264_vlc_init, ff_h264_decode_init_vlc);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
av_log(avctx, AV_LOG_ERROR, "pthread_once has failed.");
|
av_log(avctx, AV_LOG_ERROR, "pthread_once has failed.");
|
||||||
@ -363,7 +359,6 @@ av_cold int ff_h264_decode_init(AVCodecContext *avctx)
|
|||||||
if (h->ps.sps && h->ps.sps->bitstream_restriction_flag &&
|
if (h->ps.sps && h->ps.sps->bitstream_restriction_flag &&
|
||||||
h->avctx->has_b_frames < h->ps.sps->num_reorder_frames) {
|
h->avctx->has_b_frames < h->ps.sps->num_reorder_frames) {
|
||||||
h->avctx->has_b_frames = h->ps.sps->num_reorder_frames;
|
h->avctx->has_b_frames = h->ps.sps->num_reorder_frames;
|
||||||
h->low_delay = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
avctx->internal->allocate_progress = 1;
|
avctx->internal->allocate_progress = 1;
|
||||||
@ -581,7 +576,6 @@ static void decode_postinit(H264Context *h, int setup_finished)
|
|||||||
h->avctx->strict_std_compliance >= FF_COMPLIANCE_NORMAL) {
|
h->avctx->strict_std_compliance >= FF_COMPLIANCE_NORMAL) {
|
||||||
h->avctx->has_b_frames = FFMAX(h->avctx->has_b_frames, sps->num_reorder_frames);
|
h->avctx->has_b_frames = FFMAX(h->avctx->has_b_frames, sps->num_reorder_frames);
|
||||||
}
|
}
|
||||||
h->low_delay = !h->avctx->has_b_frames;
|
|
||||||
|
|
||||||
pics = 0;
|
pics = 0;
|
||||||
while (h->delayed_pic[pics])
|
while (h->delayed_pic[pics])
|
||||||
@ -646,12 +640,10 @@ static void decode_postinit(H264Context *h, int setup_finished)
|
|||||||
if (invalid + cnt < MAX_DELAYED_PIC_COUNT) {
|
if (invalid + cnt < MAX_DELAYED_PIC_COUNT) {
|
||||||
h->avctx->has_b_frames = FFMAX(h->avctx->has_b_frames, cnt);
|
h->avctx->has_b_frames = FFMAX(h->avctx->has_b_frames, cnt);
|
||||||
}
|
}
|
||||||
h->low_delay = 0;
|
} else if (!h->avctx->has_b_frames &&
|
||||||
} else if (h->low_delay &&
|
|
||||||
((h->next_outputed_poc != INT_MIN &&
|
((h->next_outputed_poc != INT_MIN &&
|
||||||
out->poc > h->next_outputed_poc + 2) ||
|
out->poc > h->next_outputed_poc + 2) ||
|
||||||
cur->f->pict_type == AV_PICTURE_TYPE_B)) {
|
cur->f->pict_type == AV_PICTURE_TYPE_B)) {
|
||||||
h->low_delay = 0;
|
|
||||||
h->avctx->has_b_frames++;
|
h->avctx->has_b_frames++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -470,7 +470,6 @@ typedef struct H264Context {
|
|||||||
|
|
||||||
int droppable;
|
int droppable;
|
||||||
int coded_picture_number;
|
int coded_picture_number;
|
||||||
int low_delay;
|
|
||||||
|
|
||||||
int context_initialized;
|
int context_initialized;
|
||||||
int flags;
|
int flags;
|
||||||
|
@ -378,7 +378,6 @@ int ff_h264_update_thread_context(AVCodecContext *dst,
|
|||||||
h->first_field = h1->first_field;
|
h->first_field = h1->first_field;
|
||||||
h->picture_structure = h1->picture_structure;
|
h->picture_structure = h1->picture_structure;
|
||||||
h->droppable = h1->droppable;
|
h->droppable = h1->droppable;
|
||||||
h->low_delay = h1->low_delay;
|
|
||||||
|
|
||||||
for (i = 0; i < H264_MAX_PICTURE_COUNT; i++) {
|
for (i = 0; i < H264_MAX_PICTURE_COUNT; i++) {
|
||||||
ff_h264_unref_picture(h, &h->DPB[i]);
|
ff_h264_unref_picture(h, &h->DPB[i]);
|
||||||
@ -397,7 +396,6 @@ int ff_h264_update_thread_context(AVCodecContext *dst,
|
|||||||
|
|
||||||
h->enable_er = h1->enable_er;
|
h->enable_er = h1->enable_er;
|
||||||
h->workaround_bugs = h1->workaround_bugs;
|
h->workaround_bugs = h1->workaround_bugs;
|
||||||
h->low_delay = h1->low_delay;
|
|
||||||
h->droppable = h1->droppable;
|
h->droppable = h1->droppable;
|
||||||
|
|
||||||
// extradata/NAL handling
|
// extradata/NAL handling
|
||||||
@ -1014,20 +1012,6 @@ int ff_h264_decode_slice_header(H264Context *h, H264SliceContext *sl)
|
|||||||
if (h->bit_depth_luma != h->ps.sps->bit_depth_luma ||
|
if (h->bit_depth_luma != h->ps.sps->bit_depth_luma ||
|
||||||
h->chroma_format_idc != h->ps.sps->chroma_format_idc)
|
h->chroma_format_idc != h->ps.sps->chroma_format_idc)
|
||||||
needs_reinit = 1;
|
needs_reinit = 1;
|
||||||
|
|
||||||
if (h->flags & AV_CODEC_FLAG_LOW_DELAY ||
|
|
||||||
(h->ps.sps->bitstream_restriction_flag &&
|
|
||||||
!h->ps.sps->num_reorder_frames)) {
|
|
||||||
if (h->avctx->has_b_frames > 1 || h->delayed_pic[0])
|
|
||||||
av_log(h->avctx, AV_LOG_WARNING, "Delayed frames seen. "
|
|
||||||
"Reenabling low delay requires a codec flush.\n");
|
|
||||||
else
|
|
||||||
h->low_delay = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (h->avctx->has_b_frames < 2)
|
|
||||||
h->avctx->has_b_frames = !h->low_delay;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pps = h->ps.pps;
|
pps = h->ps.pps;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user