Răsfoiți Sursa

obs-ffmpeg: Fix incompatible-pointer-types with FFmpeg 7

tytan652 1 an în urmă
părinte
comite
8dbad9ac29

+ 5 - 0
plugins/obs-ffmpeg/ffmpeg-mux/ffmpeg-mux.c

@@ -886,7 +886,12 @@ static int64_t ffmpeg_mux_seek_av_buffer(void *opaque, int64_t offset,
 	return 0;
 }
 
+#if LIBAVFORMAT_VERSION_MAJOR >= 61
+static int ffmpeg_mux_write_av_buffer(void *opaque, const uint8_t *buf,
+				      int buf_size)
+#else
 static int ffmpeg_mux_write_av_buffer(void *opaque, uint8_t *buf, int buf_size)
+#endif
 {
 	struct ffmpeg_mux *ffm = opaque;
 

+ 12 - 6
plugins/obs-ffmpeg/obs-ffmpeg-mpegts.c

@@ -421,6 +421,12 @@ fail:
 	return err;
 }
 
+#if LIBAVFORMAT_VERSION_MAJOR >= 61
+typedef int (*write_packet_cb)(void *, const uint8_t *, int);
+#else
+typedef int (*write_packet_cb)(void *, uint8_t *, int);
+#endif
+
 static inline int allocate_custom_aviocontext(struct ffmpeg_output *stream,
 					      bool is_rist)
 {
@@ -437,13 +443,13 @@ static inline int allocate_custom_aviocontext(struct ffmpeg_output *stream,
 		return AVERROR(ENOMEM);
 	/* allocate custom avio_context */
 	if (is_rist)
-		s = avio_alloc_context(
-			buffer, buffer_size, AVIO_FLAG_WRITE, h, NULL,
-			(int (*)(void *, uint8_t *, int))librist_write, NULL);
+		s = avio_alloc_context(buffer, buffer_size, AVIO_FLAG_WRITE, h,
+				       NULL, (write_packet_cb)librist_write,
+				       NULL);
 	else
-		s = avio_alloc_context(
-			buffer, buffer_size, AVIO_FLAG_WRITE, h, NULL,
-			(int (*)(void *, uint8_t *, int))libsrt_write, NULL);
+		s = avio_alloc_context(buffer, buffer_size, AVIO_FLAG_WRITE, h,
+				       NULL, (write_packet_cb)libsrt_write,
+				       NULL);
 	if (!s)
 		goto fail;
 	s->max_packet_size = h->max_packet_size;