mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-09-20 05:16:38 +00:00
ffmpeg: remove bsf extradata propagation hack
The offending bitstream filter was fixed, so this is no longer needed. Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
parent
437ad467c2
commit
f1cdc01e72
19
ffmpeg.c
19
ffmpeg.c
@ -536,7 +536,6 @@ static void ffmpeg_cleanup(int ret)
|
|||||||
for (j = 0; j < ost->nb_bitstream_filters; j++)
|
for (j = 0; j < ost->nb_bitstream_filters; j++)
|
||||||
av_bsf_free(&ost->bsf_ctx[j]);
|
av_bsf_free(&ost->bsf_ctx[j]);
|
||||||
av_freep(&ost->bsf_ctx);
|
av_freep(&ost->bsf_ctx);
|
||||||
av_freep(&ost->bsf_extradata_updated);
|
|
||||||
|
|
||||||
av_frame_free(&ost->filtered_frame);
|
av_frame_free(&ost->filtered_frame);
|
||||||
av_frame_free(&ost->last_frame);
|
av_frame_free(&ost->last_frame);
|
||||||
@ -837,27 +836,9 @@ static void output_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost)
|
|||||||
continue;
|
continue;
|
||||||
} else if (ret < 0)
|
} else if (ret < 0)
|
||||||
goto finish;
|
goto finish;
|
||||||
/* HACK! - aac_adtstoasc updates extradata after filtering the first frame when
|
|
||||||
* the api states this shouldn't happen after init(). Propagate it here to the
|
|
||||||
* muxer and to the next filters in the chain to workaround this.
|
|
||||||
* TODO/FIXME - Make aac_adtstoasc use new packet side data instead of changing
|
|
||||||
* par_out->extradata and adapt muxers accordingly to get rid of this. */
|
|
||||||
if (!(ost->bsf_extradata_updated[idx - 1] & 1)) {
|
|
||||||
ret = avcodec_parameters_copy(ost->st->codecpar, ost->bsf_ctx[idx - 1]->par_out);
|
|
||||||
if (ret < 0)
|
|
||||||
goto finish;
|
|
||||||
ost->bsf_extradata_updated[idx - 1] |= 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* send it to the next filter down the chain or to the muxer */
|
/* send it to the next filter down the chain or to the muxer */
|
||||||
if (idx < ost->nb_bitstream_filters) {
|
if (idx < ost->nb_bitstream_filters) {
|
||||||
/* HACK/FIXME! - See above */
|
|
||||||
if (!(ost->bsf_extradata_updated[idx] & 2)) {
|
|
||||||
ret = avcodec_parameters_copy(ost->bsf_ctx[idx]->par_out, ost->bsf_ctx[idx - 1]->par_out);
|
|
||||||
if (ret < 0)
|
|
||||||
goto finish;
|
|
||||||
ost->bsf_extradata_updated[idx] |= 2;
|
|
||||||
}
|
|
||||||
ret = av_bsf_send_packet(ost->bsf_ctx[idx], pkt);
|
ret = av_bsf_send_packet(ost->bsf_ctx[idx], pkt);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto finish;
|
goto finish;
|
||||||
|
1
ffmpeg.h
1
ffmpeg.h
@ -458,7 +458,6 @@ typedef struct OutputStream {
|
|||||||
AVRational enc_timebase;
|
AVRational enc_timebase;
|
||||||
|
|
||||||
int nb_bitstream_filters;
|
int nb_bitstream_filters;
|
||||||
uint8_t *bsf_extradata_updated;
|
|
||||||
AVBSFContext **bsf_ctx;
|
AVBSFContext **bsf_ctx;
|
||||||
|
|
||||||
AVCodecContext *enc_ctx;
|
AVCodecContext *enc_ctx;
|
||||||
|
@ -1385,13 +1385,6 @@ static OutputStream *new_output_stream(OptionsContext *o, AVFormatContext *oc, e
|
|||||||
if (*bsfs)
|
if (*bsfs)
|
||||||
bsfs++;
|
bsfs++;
|
||||||
}
|
}
|
||||||
if (ost->nb_bitstream_filters) {
|
|
||||||
ost->bsf_extradata_updated = av_mallocz_array(ost->nb_bitstream_filters, sizeof(*ost->bsf_extradata_updated));
|
|
||||||
if (!ost->bsf_extradata_updated) {
|
|
||||||
av_log(NULL, AV_LOG_FATAL, "Bitstream filter memory allocation failed\n");
|
|
||||||
exit_program(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
MATCH_PER_STREAM_OPT(codec_tags, str, codec_tag, oc, st);
|
MATCH_PER_STREAM_OPT(codec_tags, str, codec_tag, oc, st);
|
||||||
if (codec_tag) {
|
if (codec_tag) {
|
||||||
|
Loading…
Reference in New Issue
Block a user