From f5ceb15bb692d5121a976c3638811b96fc14f85f Mon Sep 17 00:00:00 2001 From: James Almer Date: Wed, 21 Mar 2018 11:27:49 -0300 Subject: [PATCH] ffmpeg: remove dead call to av_parser_change() It's been a noop for years, and it's been argued that in-band headers should not be forcedly removed without the user's explicit request. Also, as the FIXME line stated, this is a job for a bitstream filter like extract_extradata, remove_extradata, dump_extradata, and filter_units. Signed-off-by: James Almer --- fftools/ffmpeg.c | 44 ++++---------------------------------------- fftools/ffmpeg.h | 3 --- 2 files changed, 4 insertions(+), 43 deletions(-) diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c index 3c18e06713..ec9ce29097 100644 --- a/fftools/ffmpeg.c +++ b/fftools/ffmpeg.c @@ -551,9 +551,6 @@ static void ffmpeg_cleanup(int ret) av_frame_free(&ost->last_frame); av_dict_free(&ost->encoder_opts); - av_parser_close(ost->parser); - avcodec_free_context(&ost->parser_avctx); - av_freep(&ost->forced_keyframes); av_expr_free(ost->forced_keyframes_pexpr); av_freep(&ost->avfilter); @@ -2051,30 +2048,10 @@ static void do_streamcopy(InputStream *ist, OutputStream *ost, const AVPacket *p opkt.duration = av_rescale_q(pkt->duration, ist->st->time_base, ost->mux_timebase); opkt.flags = pkt->flags; - // FIXME remove the following 2 lines they shall be replaced by the bitstream filters - if ( ost->st->codecpar->codec_id != AV_CODEC_ID_H264 - && ost->st->codecpar->codec_id != AV_CODEC_ID_MPEG1VIDEO - && ost->st->codecpar->codec_id != AV_CODEC_ID_MPEG2VIDEO - && ost->st->codecpar->codec_id != AV_CODEC_ID_VC1 - ) { - int ret = av_parser_change(ost->parser, ost->parser_avctx, - &opkt.data, &opkt.size, - pkt->data, pkt->size, - pkt->flags & AV_PKT_FLAG_KEY); - if (ret < 0) { - av_log(NULL, AV_LOG_FATAL, "av_parser_change failed: %s\n", - av_err2str(ret)); - exit_program(1); - } - if (ret) { - opkt.buf = av_buffer_create(opkt.data, opkt.size, av_buffer_default_free, NULL, 0); - if (!opkt.buf) - exit_program(1); - } - } else { - opkt.data = pkt->data; - opkt.size = pkt->size; - } + + opkt.data = pkt->data; + opkt.size = pkt->size; + av_copy_packet_side_data(&opkt, pkt); output_packet(of, &opkt, ost, 0); @@ -3124,11 +3101,6 @@ static int init_output_stream_streamcopy(OutputStream *ost) av_display_rotation_set((int32_t *)sd, -ost->rotate_override_value); } - ost->parser = av_parser_init(par_dst->codec_id); - ost->parser_avctx = avcodec_alloc_context3(NULL); - if (!ost->parser_avctx) - return AVERROR(ENOMEM); - switch (par_dst->codec_type) { case AVMEDIA_TYPE_AUDIO: if (audio_volume != 256) { @@ -3569,14 +3541,6 @@ static int init_output_stream(OutputStream *ost, char *error, int error_len) ret = init_output_stream_streamcopy(ost); if (ret < 0) return ret; - - /* - * FIXME: will the codec context used by the parser during streamcopy - * This should go away with the new parser API. - */ - ret = avcodec_parameters_to_context(ost->parser_avctx, ost->st->codecpar); - if (ret < 0) - return ret; } // parse user provided disposition, and update stream values diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h index 8195f73e8b..d44b7a5c72 100644 --- a/fftools/ffmpeg.h +++ b/fftools/ffmpeg.h @@ -526,9 +526,6 @@ typedef struct OutputStream { int keep_pix_fmt; - AVCodecParserContext *parser; - AVCodecContext *parser_avctx; - /* stats */ // combined size of all the packets written uint64_t data_size;