I tried to fix our internal bitstream filtering on muxing using this code

https://github.com/FFmpeg/FFmpeg/blob/master/libavformat/tee.c

it works in sense it stopped crashing and adding simple filter like
dump_extra makes file a bit bigger.

But complex stuff like cropping or rotation still does not work  :-(

not sure, may be we need to add those options via av_dict_set too ?
From 176303611820682fbca98236faf62f9a3b5029f1 Mon Sep 17 00:00:00 2001
From: Andrew Randrianasulu <[email protected]>
Date: Mon, 21 Nov 2022 13:20:16 +0300
Subject: [PATCH] Init bitstream filtering so libavcodec does not crash

---
 cinelerra-5.1/cinelerra/ffmpeg.C | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/cinelerra-5.1/cinelerra/ffmpeg.C b/cinelerra-5.1/cinelerra/ffmpeg.C
index 2d441a79..ee3edba5 100644
--- a/cinelerra-5.1/cinelerra/ffmpeg.C
+++ b/cinelerra-5.1/cinelerra/ffmpeg.C
@@ -585,6 +585,10 @@ int FFStream::write_packet(FFPacket &pkt)
 		ret = av_interleaved_write_frame(ffmpeg->fmt_ctx, pkt);
 	}
 	else {
+	bsfc->time_base_in = st->time_base;
+	avcodec_parameters_copy(bsfc->par_in, st->codecpar);
+	av_bsf_init(bsfc);
+	
 		ret = av_bsf_send_packet(bsfc, pkt);
 		while( ret >= 0 ) {
 			FFPacket bs;
@@ -593,6 +597,9 @@ int FFStream::write_packet(FFPacket &pkt)
 				if( ret == AVERROR_EOF ) return -1;
 				break;
 			}
+			//printf(" filter name %s \n", bsfc->filter[0].name);
+			//avcodec_parameters_copy(ffmpeg->fmt_ctx->streams[0]->codecpar, bsfc->par_out);
+			//avcodec_parameters_copy(st->codecpar, bsfc->par_out);
 			av_packet_rescale_ts(bs, avctx->time_base, st->time_base);
 			bs->stream_index = st->index;
 			ret = av_interleaved_write_frame(ffmpeg->fmt_ctx, bs);
-- 
2.38.1

-- 
Cin mailing list
[email protected]
https://lists.cinelerra-gg.org/mailman/listinfo/cin

Reply via email to