File fix-build-ffmpeg5.patch of Package mediastreamer2

diff -ru a/src/utils/ffmpeg-priv.c b/src/utils/ffmpeg-priv.c
--- a/src/utils/ffmpeg-priv.c	2023-06-14 09:45:13.000000000 +0200
+++ b/src/utils/ffmpeg-priv.c	2023-06-28 09:33:18.234674791 +0200
@@ -24,31 +24,22 @@
 
 #ifndef HAVE_FUN_avcodec_encode_video2
 int avcodec_encode_video2 (AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr) {
-	int error=avcodec_encode_video(avctx, avpkt->data, avpkt->size,frame);
-	if (error<0){
-		return error;
-	}else{
-		if (error>0) {
-			*got_packet_ptr=1;
-			avpkt->size=error;
-		}else *got_packet_ptr=0;
-	}
-	return 0;
-}
-#endif
+    int ret;
 
+    *got_packet_ptr = 0;
 
+    ret = avcodec_send_frame(avctx, frame);
+    if (ret < 0)
+        return ret;
 
-#ifndef HAVE_FUN_avcodec_get_context_defaults3 /**/
-int avcodec_get_context_defaults3 (AVCodecContext *s, AVCodec *codec) {
-	avcodec_get_context_defaults(s);
-	return 0;
-}
+    ret = avcodec_receive_packet(avctx, avpkt);
+    if (!ret)
+        *got_packet_ptr = 1;
+    if (ret == AVERROR(EAGAIN))
+        return 0;
 
-AVCodecContext *avcodec_alloc_context3(AVCodec *codec){
-	return avcodec_alloc_context();
+    return ret;
 }
-
 #endif
 
 
Only in b/src/utils: ffmpeg-priv.c.orig
diff -ru a/src/utils/ffmpeg-priv.h b/src/utils/ffmpeg-priv.h
--- a/src/utils/ffmpeg-priv.h	2023-06-14 09:45:13.000000000 +0200
+++ b/src/utils/ffmpeg-priv.h	2023-06-28 09:33:18.238674814 +0200
@@ -80,6 +80,29 @@
                          AVPacket *avpkt){
 	return avcodec_decode_video(avctx,picture, got_picture_ptr,avpkt->data,avpkt->size);
 }
+#else
+static inline int avcodec_decode_video2(AVCodecContext *avctx, AVFrame *frame, int *got_frame, AVPacket *pkt)
+{
+    int ret;
+
+    *got_frame = 0;
+
+    if (pkt) {
+        ret = avcodec_send_packet(avctx, pkt);
+        // In particular, we don't expect AVERROR(EAGAIN), because we read all
+        // decoded frames with avcodec_receive_frame() until done.
+        if (ret < 0)
+            return ret == AVERROR_EOF ? 0 : ret;
+    }
+
+    ret = avcodec_receive_frame(avctx, frame);
+    if (ret < 0 && ret != AVERROR(EAGAIN) && ret != AVERROR_EOF)
+        return ret;
+    if (ret >= 0)
+        *got_frame = 1;
+
+    return 0;
+}
 #endif
 #if HAVE_AVCODEC_OLD_CODEC_IDS
 #include <libavcodec/old_codec_ids.h>
@@ -120,11 +143,6 @@
 int avcodec_encode_video2 (AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr);
 #endif
 
-#ifndef HAVE_FUN_avcodec_get_context_defaults3 /**/
-int avcodec_get_context_defaults3 (AVCodecContext *s, AVCodec *codec);
-AVCodecContext *avcodec_alloc_context3(AVCodec *codec);
-#endif
-
 #ifndef HAVE_FUN_avcodec_open2 /**/
 int avcodec_open2 (AVCodecContext *avctx, AVCodec *codec, AVDictionary **options);
 #endif
Only in b/src/utils: ffmpeg-priv.h.orig
diff -ru a/src/utils/jpgloader-ffmpeg.c b/src/utils/jpgloader-ffmpeg.c
--- a/src/utils/jpgloader-ffmpeg.c	2023-06-14 09:45:13.000000000 +0200
+++ b/src/utils/jpgloader-ffmpeg.c	2023-06-28 09:33:18.238674814 +0200
@@ -76,7 +76,6 @@
 		return NULL;
 	}
 
-	avcodec_get_context_defaults3(&av_context,NULL);
 	if (avcodec_open2(&av_context,codec,NULL)<0){
 		ms_error("jpeg2yuv: avcodec_open failed");
 		return NULL;
Only in b/src/utils: jpgloader-ffmpeg.c.orig
diff -ru a/src/videofilters/ffmpegjpegwriter.c b/src/videofilters/ffmpegjpegwriter.c
--- a/src/videofilters/ffmpegjpegwriter.c	2023-06-14 09:45:13.000000000 +0200
+++ b/src/videofilters/ffmpegjpegwriter.c	2023-06-28 09:34:02.362930213 +0200
@@ -192,7 +192,7 @@
 		sws_freeContext(sws_ctx);
 
 		av_frame_unref(s->pict);
-		avpicture_fill((AVPicture *)s->pict, (uint8_t *)jpegm->b_rptr, avctx->pix_fmt, avctx->width, avctx->height);
+    av_image_fill_arrays(s->pict->data,s->pict->linesize,(uint8_t*)jpegm->b_rptr,avctx->pix_fmt,avctx->width,avctx->height, 1);
 		packet.data = comp_buf;
 		packet.size = (int)comp_buf_sz;
 		packet.pts = frame_ts;
diff -ru a/src/videofilters/h264dec.cpp b/src/videofilters/h264dec.cpp
--- a/src/videofilters/h264dec.cpp	2023-06-14 09:45:13.000000000 +0200
+++ b/src/videofilters/h264dec.cpp	2023-06-28 09:33:18.238674814 +0200
@@ -67,17 +67,15 @@
 static void ffmpeg_init(void){
 	static bool_t done=FALSE;
 	if (!done){
-		avcodec_register_all();
 		done=TRUE;
 	}
 }
 
 static void dec_open(DecData *d){
-	AVCodec *codec;
+	const AVCodec *codec;
 	int error;
 	codec=avcodec_find_decoder(CODEC_ID_H264);
 	if (codec==NULL) ms_fatal("Could not find H264 decoder in ffmpeg.");
-	avcodec_get_context_defaults3(&d->av_context, NULL);
 	error=avcodec_open2(&d->av_context,codec, NULL);
 	if (error!=0){
 		ms_fatal("avcodec_open() failed.");
@@ -165,7 +163,7 @@
 		ms_error("%s: error in sws_scale().",f->desc->name);
 	}
 #if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(50,43,0) // backward compatibility with Debian Squeeze (6.0)
-	mblk_set_timestamp_info(yuv_msg, (uint32_t)orig->pkt_pts);
+	mblk_set_timestamp_info(yuv_msg, (uint32_t)orig->pts);
 #endif
 	return yuv_msg;
 }
Only in b/src/videofilters: h264dec.cpp.orig
diff -ru a/src/videofilters/videodec.c b/src/videofilters/videodec.c
--- a/src/videofilters/videodec.c	2023-06-14 09:45:13.000000000 +0200
+++ b/src/videofilters/videodec.c	2023-06-28 09:33:18.238674814 +0200
@@ -70,7 +70,6 @@
 	DecState *s=(DecState *)ms_new0(DecState,1);
 	ms_ffmpeg_check_init();
 
-	avcodec_get_context_defaults3(&s->av_context, NULL);
 	s->allocator = ms_yuv_buf_allocator_new();
 	s->av_codec=NULL;
 	s->codec=cid;
@@ -662,7 +661,7 @@
 #endif
 		ms_error("%s: error in ms_sws_scale().",f->desc->name);
 	}
-	mblk_set_timestamp_info(yuv_msg, (uint32_t)orig->pkt_pts);
+	mblk_set_timestamp_info(yuv_msg, (uint32_t)orig->pts);
 	return yuv_msg;
 }
 /* Bitmasks to select bits of a byte from low side */
Only in b/src/videofilters: videodec.c.orig
diff -ru a/src/videofilters/videoenc.c b/src/videofilters/videoenc.c
--- a/src/videofilters/videoenc.c	2023-06-14 09:45:13.000000000 +0200
+++ b/src/videofilters/videoenc.c	2023-06-28 09:33:18.238674814 +0200
@@ -129,7 +129,6 @@
 
 void ms_ffmpeg_check_init(){
 	if(!avcodec_initialized){
-		avcodec_register_all();
 		avcodec_initialized=TRUE;
 #ifdef ENABLE_LOG_FFMPEG
 		av_log_set_level(AV_LOG_WARNING);
@@ -269,7 +268,6 @@
 	AVCodecContext *c=&s->av_context;
 	const int max_br_vbv=128000;
 
-	avcodec_get_context_defaults3(c, NULL);
 	if (s->codec==CODEC_ID_MJPEG)
 	{
 		ms_message("Codec bitrate set to %i",(int)c->bit_rate);
@@ -333,7 +331,6 @@
 #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0)
         c->rtp_mode = 1;
 #endif
-	c->rtp_payload_size = s->mtu/2;
 	if (s->profile==0){
 		s->codec=CODEC_ID_H263;
 	}else{
@@ -816,7 +813,7 @@
 	ms_yuv_buf_init_from_mblk(&yuv, inm);
 	/* convert image if necessary */
 	av_frame_unref(s->pict);
-	avpicture_fill((AVPicture*)s->pict,yuv.planes[0],c->pix_fmt,c->width,c->height);
+	av_image_fill_arrays(s->pict->data,s->pict->linesize,yuv.planes[0],c->pix_fmt,c->width,c->height,1);
 
 	/* timestamp used by ffmpeg, unset here */
 	s->pict->pts=AV_NOPTS_VALUE;
Only in b/src/videofilters: videoenc.c.orig
openSUSE Build Service is sponsored by