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);
+ }
+ }
}