File kdenlive-ffmpeg5.patch of Package kde3-kdenlive

diff -Naru kdenlive_orig/cmake/modules/FindLIBFFMPEG.cmake kdenlive/cmake/modules/FindLIBFFMPEG.cmake
--- kdenlive_orig/cmake/modules/FindLIBFFMPEG.cmake	2008-07-08 19:38:43.000000000 +0900
+++ kdenlive/cmake/modules/FindLIBFFMPEG.cmake	2023-09-02 15:38:20.921651042 +0900
@@ -26,6 +26,24 @@
     "\n***************************\n")
 ENDIF (LIBFFMPEG_INCLUDE_DIR)
 
+FIND_PATH(LIBFFMPEG_CODEC_INCLUDE_DIR
+  NAMES avcodec.h
+  PATHS ${FFMPEG_HEADER_PATH}/ffmpeg ${FFMPEG_HEADER_PATH}/libavcodec ${FFMPEG_HEADER_PATH}/ffmpeg/libavcodec
+  /usr/include/ffmpeg /usr/include/libavcodec /usr/include/ffmpeg/libavcodec
+  /usr/local/include/ffmpeg /usr/local/include/libavcodec /usr/local/include/ffmpeg/libavcodec
+  NO_DEFAULT_PATH
+)
+
+IF (LIBFFMPEG_CODEC_INCLUDE_DIR)
+  MESSAGE(STATUS "Found FFmpeg Libavcodec includes: ${LIBFFMPEG_CODEC_INCLUDE_DIR}") 
+ELSE (LIBFFMPEG_CODEC_INCLUDE_DIR)
+  MESSAGE(FATAL_ERROR "\n***************************\n"
+    "Could not find FFmpeg Libcodec includes\n"
+    "please install the libavcodec-dev package or give the path manually using\n"
+    "-DLIBFFMPEG_CODEC_INCLUDE_DIR=PATH_TO_YOUR_AVCODEC_HEADERS"
+    "\n***************************\n")
+ENDIF (LIBFFMPEG_CODEC_INCLUDE_DIR)
+
 FIND_LIBRARY(LIBFFMPEG_LIBRARY
   NAMES avformat
   PATHS ${FFMPEG_LIBS_PATH}
@@ -43,11 +61,28 @@
     "\n***************************\n")
 ENDIF (LIBFFMPEG_LIBRARY)
 
-IF (LIBFFMPEG_LIBRARY AND LIBFFMPEG_INCLUDE_DIR)
+FIND_LIBRARY(LIBFFMPEG_CODEC_LIBRARY
+  NAMES avcodec
+  PATHS ${FFMPEG_LIBS_PATH}
+  /usr/lib /usr/local/lib
+  NO_DEFAULT_PATH
+)
+
+IF (LIBFFMPEG_CODEC_LIBRARY)
+  MESSAGE(STATUS "Found FFmpeg Libavcodec library: ${LIBFFMPEG_LIBRARY}")
+ELSE (LIBFFMPEG_CODEC_LIBRARY)
+  MESSAGE(FATAL_ERROR "\n***************************\n"
+    "Could not find FFmpeg Libavcodec library\n"
+    "please install the libavcodec package or give the path manually using\n"
+    "-DLIBFFMPEG_CODEC_LIBRARY=PATH_TO_YOUR_AVCODEC_LIBRARY"
+    "\n***************************\n")
+ENDIF (LIBFFMPEG_CODEC_LIBRARY)
+
+IF (LIBFFMPEG_LIBRARY AND LIBFFMPEG_INCLUDE_DIR AND LIBFFMPEG_CODEC_LIBRARY AND LIBFFMPEG_CODEC_INCLUDE_DIR)
   SET( LIBFFMPEG_FOUND 1 )
-  SET( LIBFFMPEG_LIBRARIES ${LIBFFMPEG_LIBRARY} )
-ELSE (LIBFFMPEG_LIBRARY AND LIBFFMPEG_INCLUDE_DIR)
+  SET( LIBFFMPEG_LIBRARIES ${LIBFFMPEG_LIBRARY} ${LIBFFMPEG_CODEC_LIBRARY})
+ELSE (LIBFFMPEG_LIBRARY AND LIBFFMPEG_INCLUDE_DIR AND LIBFFMPEG_CODEC_LIBRARY AND LIBFFMPEG_CODEC_INCLUDE_DIR)
   SET( LIBFFMPEG_FOUND 0 )
-ENDIF (LIBFFMPEG_LIBRARY AND LIBFFMPEG_INCLUDE_DIR)
+ENDIF (LIBFFMPEG_LIBRARY AND LIBFFMPEG_INCLUDE_DIR AND LIBFFMPEG_CODEC_LIBRARY AND LIBFFMPEG_CODEC_INCLUDE_DIR)
 
 
diff -Naru kdenlive_orig/kdenlive/CMakeLists.txt kdenlive/kdenlive/CMakeLists.txt
--- kdenlive_orig/kdenlive/CMakeLists.txt	2007-12-26 18:19:51.000000000 +0900
+++ kdenlive/kdenlive/CMakeLists.txt	2023-09-02 15:51:34.553576854 +0900
@@ -357,6 +357,7 @@
 ${LIBMLT_INCLUDE_DIR}
 ${LIBMLTPLUS_INCLUDE_DIR}
 ${LIBFFMPEG_INCLUDE_DIR}
+${LIBFFMPEG_CODEC_INCLUDE_DIR}
 ${CMAKE_CURRENT_BINARY_DIR}
 )
 
@@ -365,10 +366,11 @@
 ${LIBMLT_LIBRARY}
 ${LIBMLTPLUS_LIBRARY}
 ${LIBFFMPEG_LIBRARY}
+${LIBFFMPEG_CODEC_LIBRARY}
 )
 
 ADD_EXECUTABLE(kdenlive ${SRC_FILES} ${SRC_MOC} ${SRC_UI} ${SRC_KCFG} )
-TARGET_LINK_LIBRARIES(kdenlive ${QT_LIBRARIES} kio kdeui kdecore knewstuff kdeprint ${LIBMLTPLUS_LIBRARY} ${LIBMLT_LIBRARY})
+TARGET_LINK_LIBRARIES(kdenlive ${QT_LIBRARIES} kio kdeui kdecore knewstuff kdeprint ${LIBMLTPLUS_LIBRARY} ${LIBMLT_LIBRARY} ${LIBFFMPEG_CODEC_LIBRARY})
 
 INSTALL_TARGETS (/bin kdenlive )
 INSTALL (FILES kdenlive.kcfg DESTINATION share/config.kcfg)
diff -Naru kdenlive_orig/kdenlive/krender.cpp kdenlive/kdenlive/krender.cpp
--- kdenlive_orig/kdenlive/krender.cpp	2023-09-02 13:55:18.227083902 +0900
+++ kdenlive/kdenlive/krender.cpp	2023-09-02 15:47:13.002900629 +0900
@@ -26,6 +26,7 @@
 
 extern "C" {
 #include <avformat.h>
+#include <avcodec.h>
 }
 
 #include <iostream>
@@ -502,22 +503,38 @@
 		// Get the video_index
 		int index = mlt_properties_get_int( properties, "video_index" );
 		if (context->streams && 
-		    context->streams [index] && 
-		    context->streams[ index ]->codec && 
-		    context->streams[ index ]->codec->codec && 
-		    context->streams[ index ]->codec->codec->name )
-			 filePropertyMap["videocodec"] = context->streams[ index ]->codec->codec->name;
+		    context->streams [index]) {
+			AVCodecContext *codec = avcodec_alloc_context3(NULL);
+			if (codec != NULL) {
+			    if (avcodec_parameters_to_context(codec, context->streams[ index ]->codecpar) >= 0) {
+				if (codec &&
+				    codec->codec &&
+				    codec->codec->name)
+			                filePropertyMap["videocodec"] = codec->codec->name;
+			    }
+
+			    avcodec_free_context(&codec);
+			}
+		}
 	}
 	context = (AVFormatContext *) mlt_properties_get_data( properties, "audio_context", NULL );
 	if (context != NULL) {
 		// Get the video_index
 		int index = mlt_properties_get_int( properties, "audio_index" );
 		if (context->streams && 
-		    context->streams [index] &&
-		    context->streams[ index ]->codec && 
-		    context->streams[ index ]->codec->codec && 
-		    context->streams[ index ]->codec->codec->name )
-			filePropertyMap["audiocodec"] = context->streams[ index ]->codec->codec->name;
+		    context->streams [index]) {
+			AVCodecContext *codec = avcodec_alloc_context3(NULL);
+			if (codec != NULL) {
+			    if (avcodec_parameters_to_context(codec, context->streams[ index ]->codecpar) >= 0) {
+				if (codec &&
+				    codec->codec &&
+				    codec->codec->name )
+			                filePropertyMap["audiocodec"] = codec->codec->name;
+			    }
+
+			    avcodec_free_context(&codec);
+			}
+		}
 	}
 
 
openSUSE Build Service is sponsored by