--- a/cinelerra/ffmpeg.C	2026-09-23 11:08:09.688883257 -0600
+++ b/cinelerra/ffmpeg.C	2026-09-24 19:01:52.317760679 -0600
@@ -2013,7 +2013,10 @@
 int FFMPEG::check_sample_rate(AVCodec *codec, int sample_rate)
 #endif
 {
-	const int *p = codec->supported_samplerates;
+/*      const int *p = codec->supported_samplerates; */
+        const int *codec_supported_samplerates = NULL;
+        avcodec_get_supported_config(NULL, codec, AV_CODEC_CONFIG_SAMPLE_RATE, 0, (const void**)&codec_supported_samplerates, NULL);
+        const int *p = codec_supported_samplerates;
 	if( !p ) return sample_rate;
 	while( *p != 0 ) {
 		if( *p == sample_rate ) return *p;
@@ -2267,8 +2270,12 @@
 		AVCodec *av_codec = !FFMPEG::get_codec(audio_codec, "audio", asset->acodec) ?
 #endif
 			avcodec_find_encoder_by_name(audio_codec) : 0;
-		if( av_codec && av_codec->sample_fmts )
-			cin_fmt = find_best_sample_fmt_of_list(av_codec->sample_fmts, AV_SAMPLE_FMT_FLT);
+/*              if( av_codec && av_codec->sample_fmts ) 
+                        cin_fmt = find_best_sample_fmt_of_list(av_codec->sample_fmts, AV_SAMPLE_FMT_FLT); */
+                const enum AVSampleFormat *av_codec_sample_fmts = NULL;
+                avcodec_get_supported_config(NULL, av_codec, AV_CODEC_CONFIG_SAMPLE_FORMAT, 0, (const void**)&av_codec_sample_fmts, NULL);
+                if( av_codec && av_codec_sample_fmts )
+                        cin_fmt = find_best_sample_fmt_of_list(av_codec_sample_fmts, AV_SAMPLE_FMT_FLT);
 	}
 	if( cin_fmt < 0 ) cin_fmt = AV_SAMPLE_FMT_S16;
 	const char *name = av_get_sample_fmt_name((AVSampleFormat)cin_fmt);
@@ -2307,18 +2314,27 @@
 		AVCodec *av_codec = !get_codec(video_codec, "video", asset->vcodec) ?
 #endif
 			avcodec_find_encoder_by_name(video_codec) : 0;
-		if( av_codec && av_codec->pix_fmts ) {
+/*              if( av_codec && av_codec->pix_fmts ) { */
+                const enum AVPixelFormat *av_codec_pix_fmts = NULL;
+                avcodec_get_supported_config(NULL, av_codec, AV_CODEC_CONFIG_PIX_FORMAT, 0, (const void**)&av_codec_pix_fmts, NULL);
+                if( av_codec && av_codec_pix_fmts ) {
 			if( 0 && edl ) { // frequently picks a bad answer
 				int color_model = edl->session->color_model;
 				int max_bits = BC_CModels::calculate_pixelsize(color_model) * 8;
 				max_bits /= BC_CModels::components(color_model);
-				cin_fmt = avcodec_find_best_pix_fmt_of_list(av_codec->pix_fmts,
+/*                              cin_fmt = avcodec_find_best_pix_fmt_of_list(av_codec->pix_fmts, */
+                                const enum AVPixelFormat *av_codec_pix_fmts = NULL;
+                                avcodec_get_supported_config(NULL, av_codec, AV_CODEC_CONFIG_PIX_FORMAT, 0, (const void**)&av_codec_pix_fmts, NULL);
+                                cin_fmt = avcodec_find_best_pix_fmt_of_list(av_codec_pix_fmts,
 					(BC_CModels::is_yuv(color_model) ?
 						(max_bits > 8 ? AV_PIX_FMT_AYUV64LE : AV_PIX_FMT_YUV444P) :
 						(max_bits > 8 ? AV_PIX_FMT_RGB48LE : AV_PIX_FMT_RGB24)), 0, 0);
 			}
 			else
-				cin_fmt = av_codec->pix_fmts[0];
+/*                              cin_fmt = av_codec->pix_fmts[0]; */
+                                const enum AVPixelFormat *av_codec_pix_fmts = NULL;
+                                avcodec_get_supported_config(NULL, av_codec, AV_CODEC_CONFIG_PIX_FORMAT, 0, (const void**)&av_codec_pix_fmts, NULL);
+                                cin_fmt = av_codec_pix_fmts[0];
 		}
 	}
 	if( cin_fmt < 0 ) cin_fmt = AV_PIX_FMT_YUV420P;
@@ -3075,8 +3091,12 @@
 			}
 			ctx->time_base = st->time_base = (AVRational){1, aud->sample_rate};
 			AVSampleFormat sample_fmt = av_get_sample_fmt(asset->ff_sample_format);
+/*			if( sample_fmt == AV_SAMPLE_FMT_NONE )
+                                sample_fmt = codec->sample_fmts ? codec->sample_fmts[0] : AV_SAMPLE_FMT_S16; */
+                                const enum AVSampleFormat *codec_sample_fmts = NULL;
+                                avcodec_get_supported_config(NULL, codec, AV_CODEC_CONFIG_SAMPLE_FORMAT, 0, (const void**)&codec_sample_fmts, NULL);
 			if( sample_fmt == AV_SAMPLE_FMT_NONE )
-				sample_fmt = codec->sample_fmts ? codec->sample_fmts[0] : AV_SAMPLE_FMT_S16;
+                                sample_fmt = codec_sample_fmts ? codec_sample_fmts[0] : AV_SAMPLE_FMT_S16;
 			ctx->sample_fmt = sample_fmt;
 			//uint64_t layout = av_get_default_channel_layout(ctx->ch_layout.nb_channels);
 			AVChannelLayout layout;
@@ -3177,8 +3197,12 @@
 				default: break;
 				}
 			}
+/*			if( pix_fmt == AV_PIX_FMT_NONE )
+                                pix_fmt = codec->pix_fmts ? codec->pix_fmts[0] : AV_PIX_FMT_YUV420P; */
+                                const enum AVPixelFormat *codec_pix_fmts = NULL;
+                                avcodec_get_supported_config(NULL, codec, AV_CODEC_CONFIG_PIX_FORMAT, 0, (const void**)&codec_pix_fmts, NULL);
 			if( pix_fmt == AV_PIX_FMT_NONE )
-				pix_fmt = codec->pix_fmts ? codec->pix_fmts[0] : AV_PIX_FMT_YUV420P;
+                                pix_fmt = codec_pix_fmts ? codec_pix_fmts[0] : AV_PIX_FMT_YUV420P;
 			ctx->pix_fmt = pix_fmt;
 
 			const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt);
@@ -3188,9 +3212,12 @@
 			ctx->height = (vid->height+mask_h) & ~mask_h;
 			ctx->sample_aspect_ratio = to_sample_aspect_ratio(asset);
 			AVRational frame_rate;
+			const AVRational *codec_supported_framerates = NULL;
+                        avcodec_get_supported_config(NULL, codec, AV_CODEC_CONFIG_FRAME_RATE, 0, (const void**)&codec_supported_framerates, NULL);
 			if (ctx->codec->id == AV_CODEC_ID_MPEG1VIDEO ||
 			    ctx->codec->id == AV_CODEC_ID_MPEG2VIDEO)
-			frame_rate = check_frame_rate(codec->supported_framerates, vid->frame_rate);
+/*			frame_rate = check_frame_rate(codec->supported_framerates, vid->frame_rate); */
+                        frame_rate = check_frame_rate(codec_supported_framerates, vid->frame_rate);
 			else
 			frame_rate = av_d2q(vid->frame_rate, INT_MAX);
 			if( !frame_rate.num || !frame_rate.den ) {
