Opened 6 years ago

Closed 6 years ago

#6719 closed enhancement (fixed)

ffmpeg doesn't build with newest openjpeg dependency from its git now at v2.3.0

Reported by: hydra3333 Owned by:
Priority: wish Component: build system
Version: git-master Keywords: libopenjpeg
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Summary of the bug:

Openjpeg git at https://github.com/uclouvain/openjpeg is up from v2.2 to v2.3, which means that ffmpeg no longer builds with the openjpeg dependency as built from its git.

The attached .diff patches seem to fix ffmpeg so that it builds with openjpeg v2.3 as a dependency built from its git.

built on:

2017.10.05

Patches should be submitted to the ffmpeg-devel mailing list and not this bug tracker.

... except that I'm a newbie and don't know how and may be totally embarrassed by my lack of competence. Some kind reviewer may choose to consider reviewing the patches or equivalents and maybe submit them to update ffmpeg so that it then builds with openjpeg v2.3 ?

--- libopenjpegdec.c	2017-10-05 19:19:04.193903000 +1030
+++ libopenjpegdec.2.3.c	2017-10-05 19:19:04.193903000 +1030
@@ -34,7 +34,9 @@
 #include "internal.h"
 #include "thread.h"
 
-#if HAVE_OPENJPEG_2_2_OPENJPEG_H
+#if HAVE_OPENJPEG_2_3_OPENJPEG_H
+#  include <openjpeg-2.3/openjpeg.h>
+#elif HAVE_OPENJPEG_2_2_OPENJPEG_H
 #  include <openjpeg-2.2/openjpeg.h>
 #elif HAVE_OPENJPEG_2_1_OPENJPEG_H
 #  include <openjpeg-2.1/openjpeg.h>
@@ -46,7 +48,7 @@
 #  include <openjpeg.h>
 #endif
 
-#if HAVE_OPENJPEG_2_2_OPENJPEG_H || HAVE_OPENJPEG_2_1_OPENJPEG_H || HAVE_OPENJPEG_2_0_OPENJPEG_H
+#if HAVE_OPENJPEG_2_3_OPENJPEG_H || HAVE_OPENJPEG_2_2_OPENJPEG_H || HAVE_OPENJPEG_2_1_OPENJPEG_H || HAVE_OPENJPEG_2_0_OPENJPEG_H
 #  define OPENJPEG_MAJOR_VERSION 2
 #  define OPJ(x) OPJ_##x
 #else
@@ -431,7 +433,7 @@
     opj_stream_set_read_function(stream, stream_read);
     opj_stream_set_skip_function(stream, stream_skip);
     opj_stream_set_seek_function(stream, stream_seek);
-#if HAVE_OPENJPEG_2_2_OPENJPEG_H || HAVE_OPENJPEG_2_1_OPENJPEG_H
+#if HAVE_OPENJPEG_2_3_OPENJPEG_H || HAVE_OPENJPEG_2_2_OPENJPEG_H || HAVE_OPENJPEG_2_1_OPENJPEG_H
     opj_stream_set_user_data(stream, &reader, NULL);
 #elif HAVE_OPENJPEG_2_0_OPENJPEG_H
     opj_stream_set_user_data(stream, &reader);
--- libopenjpegenc.c	2017-10-05 19:19:04.193903000 +1030
+++ libopenjpegenc.2.3.c	2017-10-05 19:19:04.193903000 +1030
@@ -32,7 +32,9 @@
 #include "avcodec.h"
 #include "internal.h"
 
-#if HAVE_OPENJPEG_2_2_OPENJPEG_H
+#if HAVE_OPENJPEG_2_3_OPENJPEG_H
+#  include <openjpeg-2.3/openjpeg.h>
+#elif HAVE_OPENJPEG_2_2_OPENJPEG_H
 #  include <openjpeg-2.2/openjpeg.h>
 #elif HAVE_OPENJPEG_2_1_OPENJPEG_H
 #  include <openjpeg-2.1/openjpeg.h>
@@ -44,7 +46,7 @@
 #  include <openjpeg.h>
 #endif
 
-#if HAVE_OPENJPEG_2_2_OPENJPEG_H || HAVE_OPENJPEG_2_1_OPENJPEG_H || HAVE_OPENJPEG_2_0_OPENJPEG_H
+#if HAVE_OPENJPEG_2_3_OPENJPEG_H || HAVE_OPENJPEG_2_2_OPENJPEG_H || HAVE_OPENJPEG_2_1_OPENJPEG_H || HAVE_OPENJPEG_2_0_OPENJPEG_H
 #  define OPENJPEG_MAJOR_VERSION 2
 #  define OPJ(x) OPJ_##x
 #else
@@ -307,7 +309,7 @@
 
     opj_set_default_encoder_parameters(&ctx->enc_params);
 
-#if HAVE_OPENJPEG_2_2_OPENJPEG_H || HAVE_OPENJPEG_2_1_OPENJPEG_H
+#if HAVE_OPENJPEG_2_3_OPENJPEG_H || HAVE_OPENJPEG_2_2_OPENJPEG_H || HAVE_OPENJPEG_2_1_OPENJPEG_H
     switch (ctx->cinema_mode) {
     case OPJ_CINEMA2K_24:
         ctx->enc_params.rsiz = OPJ_PROFILE_CINEMA_2K;
@@ -771,7 +773,7 @@
     opj_stream_set_write_function(stream, stream_write);
     opj_stream_set_skip_function(stream, stream_skip);
     opj_stream_set_seek_function(stream, stream_seek);
-#if HAVE_OPENJPEG_2_2_OPENJPEG_H || HAVE_OPENJPEG_2_1_OPENJPEG_H
+#if HAVE_OPENJPEG_2_3_OPENJPEG_H || HAVE_OPENJPEG_2_2_OPENJPEG_H || HAVE_OPENJPEG_2_1_OPENJPEG_H
     opj_stream_set_user_data(stream, &writer, NULL);
 #elif HAVE_OPENJPEG_2_0_OPENJPEG_H
     opj_stream_set_user_data(stream, &writer);
--- configure	2017-10-05 19:19:04.193903000 +1030
+++ configure.2.3.new	2017-10-05 19:19:04.193903000 +1030
@@ -1930,6 +1930,7 @@
     machine_ioctl_meteor_h
     malloc_h
     opencv2_core_core_c_h
+    openjpeg_2_3_openjpeg_h
     openjpeg_2_2_openjpeg_h
     openjpeg_2_1_openjpeg_h
     openjpeg_2_0_openjpeg_h
@@ -5950,7 +5951,9 @@
                                  require opencv opencv2/core/core_c.h cvCreateImageHeader -lopencv_core -lopencv_imgproc; } ||
                                require_pkg_config libopencv opencv opencv/cxcore.h cvCreateImageHeader; }
 enabled libopenh264       && require_pkg_config libopenh264 openh264 wels/codec_api.h WelsGetCodecVersion
-enabled libopenjpeg       && { { check_lib libopenjpeg openjpeg-2.2/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
+enabled libopenjpeg       && { { check_lib libopenjpeg openjpeg-2.3/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
+                               check_lib libopenjpeg openjpeg-2.3/openjpeg.h opj_version -lopenjp2 ||
+                               { check_lib libopenjpeg openjpeg-2.2/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
                                check_lib libopenjpeg openjpeg-2.2/openjpeg.h opj_version -lopenjp2 ||
                                { check_lib libopenjpeg openjpeg-2.1/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
                                check_lib libopenjpeg openjpeg-2.1/openjpeg.h opj_version -lopenjp2 ||

Change History (5)

comment:1 by Carl Eugen Hoyos, 6 years ago

Keywords: libopenjpeg added; openjpeg_v2.3.0 removed

Please send your patch made with git format-patch to the FFmpeg development mailing list.

comment:2 by Carl Eugen Hoyos, 6 years ago

Priority: normalwish
Type: defectenhancement

comment:3 by hydra3333, 6 years ago

OK, attempted to send a patch made with git format-patch to the FFmpeg development mailing list.

I suppose I track it by looking at threaded view for Oct 2017 here
http://ffmpeg.org/pipermail/ffmpeg-devel/

comment:4 by hydra3333, 6 years ago

Ah I just noticed someone got in before me with the same patch.
http://ffmpeg.org/pipermail/ffmpeg-devel/2017-October/217389.html

I wonder how I cancel a patch sent to the list.

Last edited 6 years ago by hydra3333 (previous) (diff)

comment:5 by Carl Eugen Hoyos, 6 years ago

Resolution: fixed
Status: newclosed

Thank you for your report and your try to fix it!
Hopefully fixed by Michael Bradshaw in 41d6d627024393c142cf7cd93eff1d5a049105f5

Note: See TracTickets for help on using tickets.