The codec context field was rightly deprecated, and the data may change per-frame.
Signed-off-by: Derek Buitenhuis <derek.buitenh...@gmail.com> --- ffprobe.c | 8 -------- libavcodec/mpeg12dec.c | 19 ++++++++++++++++--- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/ffprobe.c b/ffprobe.c index c352b44..019863a 100644 --- a/ffprobe.c +++ b/ffprobe.c @@ -2226,14 +2226,6 @@ static int show_stream(WriterContext *w, AVFormatContext *fmt_ctx, int stream_id print_str("chroma_location", av_chroma_location_name(dec_ctx->chroma_sample_location)); else print_str_opt("chroma_location", av_chroma_location_name(dec_ctx->chroma_sample_location)); - - if (dec_ctx->timecode_frame_start >= 0) { - char tcbuf[AV_TIMECODE_STR_SIZE]; - av_timecode_make_mpeg_tc_string(tcbuf, dec_ctx->timecode_frame_start); - print_str("timecode", tcbuf); - } else { - print_str_opt("timecode", "N/A"); - } print_int("refs", dec_ctx->refs); break; diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c index 23c77cd..56a87a4 100644 --- a/libavcodec/mpeg12dec.c +++ b/libavcodec/mpeg12dec.c @@ -2413,17 +2413,25 @@ FF_ENABLE_DEPRECATION_WARNINGS } } -static void mpeg_decode_gop(AVCodecContext *avctx, +static int mpeg_decode_gop(AVCodecContext *avctx, const uint8_t *buf, int buf_size) { Mpeg1Context *s1 = avctx->priv_data; MpegEncContext *s = &s1->mpeg_enc_ctx; + AVFrameSideData *tcside; int broken_link; int64_t tc; + tcside = av_frame_new_side_data(s->current_picture_ptr->f, + AV_FRAME_DATA_GOP_TIMECODE, sizeof(int64_t)); + if (!tcside) + return AVERROR(ENOMEM); + init_get_bits(&s->gb, buf, buf_size * 8); - tc = avctx->timecode_frame_start = get_bits(&s->gb, 25); + tc = get_bits(&s->gb, 25); + + memcpy(tcside->data, &tc, sizeof(int64_t)); s->closed_gop = get_bits1(&s->gb); /* broken_link indicate that after editing the @@ -2438,6 +2446,8 @@ static void mpeg_decode_gop(AVCodecContext *avctx, "GOP (%s) closed_gop=%d broken_link=%d\n", tcbuf, s->closed_gop, broken_link); } + + return 0; } static int decode_chunks(AVCodecContext *avctx, AVFrame *picture, @@ -2604,8 +2614,11 @@ static int decode_chunks(AVCodecContext *avctx, AVFrame *picture, break; case GOP_START_CODE: if (last_code == 0) { + int gopret; s2->first_field = 0; - mpeg_decode_gop(avctx, buf_ptr, input_size); + gopret = mpeg_decode_gop(avctx, buf_ptr, input_size); + if (gopret < 0) + return gopret; s->sync = 1; } else { av_log(avctx, AV_LOG_ERROR, -- 2.7.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel