Commit 22291c37 authored by Kieran Kunhya's avatar Kieran Kunhya Committed by Michael Niedermayer

avcodec: Add support for per-frame AFD output in h264

Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent b75c0a72
...@@ -608,6 +608,7 @@ static int h264_init_context(AVCodecContext *avctx, H264Context *h) ...@@ -608,6 +608,7 @@ static int h264_init_context(AVCodecContext *avctx, H264Context *h)
h->frame_recovered = 0; h->frame_recovered = 0;
h->prev_frame_num = -1; h->prev_frame_num = -1;
h->sei_fpa.frame_packing_arrangement_cancel_flag = -1; h->sei_fpa.frame_packing_arrangement_cancel_flag = -1;
h->has_afd = 0;
h->next_outputed_poc = INT_MIN; h->next_outputed_poc = INT_MIN;
for (i = 0; i < MAX_DELAYED_PIC_COUNT; i++) for (i = 0; i < MAX_DELAYED_PIC_COUNT; i++)
...@@ -869,6 +870,15 @@ static void decode_postinit(H264Context *h, int setup_finished) ...@@ -869,6 +870,15 @@ static void decode_postinit(H264Context *h, int setup_finished)
} }
} }
if (h->has_afd) {
AVFrameSideData *sd =
av_frame_new_side_data(cur->f, AV_FRAME_DATA_AFD, 1);
if (sd) {
*sd->data = h->afd;
h->has_afd = 0;
}
}
cur->mmco_reset = h->mmco_reset; cur->mmco_reset = h->mmco_reset;
h->mmco_reset = 0; h->mmco_reset = 0;
......
...@@ -781,6 +781,9 @@ typedef struct H264Context { ...@@ -781,6 +781,9 @@ typedef struct H264Context {
int missing_fields; int missing_fields;
uint8_t afd;
int has_afd;
// Timestamp stuff // Timestamp stuff
int sei_buffering_period_present; ///< Buffering period SEI flag int sei_buffering_period_present; ///< Buffering period SEI flag
......
...@@ -132,7 +132,13 @@ static int decode_user_data_itu_t_t35(H264Context *h, int size) ...@@ -132,7 +132,13 @@ static int decode_user_data_itu_t_t35(H264Context *h, int size)
return -1; return -1;
skip_bits(&h->gb, 4); skip_bits(&h->gb, 4);
dtg_active_format = get_bits(&h->gb, 4); dtg_active_format = get_bits(&h->gb, 4);
#if FF_API_AFD
FF_DISABLE_DEPRECATION_WARNINGS
h->avctx->dtg_active_format = dtg_active_format; h->avctx->dtg_active_format = dtg_active_format;
FF_ENABLE_DEPRECATION_WARNINGS
#endif /* FF_API_AFD */
h->has_afd = 1;
h->afd = dtg_active_format;
} else { } else {
skip_bits(&h->gb, 6); skip_bits(&h->gb, 6);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment