Message ID | edfbbe5c-cd8e-a09b-194b-793a3f8be013@gmail.com |
---|---|
State | Superseded |
Headers | show |
On Sun, Oct 08, 2017 at 04:51:49PM +0530, Gyan Doshi wrote: > OpenJPEG 2.3 was released a few days ago. Changelog reports "No API/ABI > break compared to v2.2.0 but additional symbols for subset of components > decoding" > > This patch is adapted from an earlier patch which added support for 2.2. > > Applied and tested locally. > From c42f0c4290170cb49dc00f7898bee31d2e8ee814 Mon Sep 17 00:00:00 2001 > From: Gyan Doshi <gyandoshi@gmail.com> > Date: Sun, 8 Oct 2017 14:59:23 +0530 > Subject: [PATCH] lavc: add support for openjpeg 2.3 > > Signed-off-by: Gyan Doshi <gyandoshi@gmail.com> > --- > configure | 5 ++++- > libavcodec/libopenjpegdec.c | 8 +++++--- > libavcodec/libopenjpegenc.c | 10 ++++++---- > 3 files changed, 15 insertions(+), 8 deletions(-) > > diff --git a/configure b/configure > index 391c141e7a..3280e74f0f 100755 > --- a/configure > +++ b/configure > @@ -1930,6 +1930,7 @@ HEADERS_LIST=" > 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 @@ enabled libopencv && { check_header opencv2/core/core_c.h && > 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 || I'm sorry but this needs to stop. Why the hell do we have to add a ton of garbage to the configure every time there is a new openjpeg release? Why is it the only project that pollutes the configure like this at every release? [...] > -#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 ...and then this? Yeah well, please put an end to this. This condition should be something like #if OPENJPEG_MAJOR >= 2 or something like that. [...]
On Sun, 8 Oct 2017 13:43:45 +0200 Clément Bœsch <u@pkh.me> wrote: > On Sun, Oct 08, 2017 at 04:51:49PM +0530, Gyan Doshi wrote: > > OpenJPEG 2.3 was released a few days ago. Changelog reports "No > > API/ABI break compared to v2.2.0 but additional symbols for subset > > of components decoding" > > > > This patch is adapted from an earlier patch which added support for > > 2.2. > > > > Applied and tested locally. > > > From c42f0c4290170cb49dc00f7898bee31d2e8ee814 Mon Sep 17 00:00:00 > > 2001 From: Gyan Doshi <gyandoshi@gmail.com> > > Date: Sun, 8 Oct 2017 14:59:23 +0530 > > Subject: [PATCH] lavc: add support for openjpeg 2.3 > > > > Signed-off-by: Gyan Doshi <gyandoshi@gmail.com> > > --- > > configure | 5 ++++- > > libavcodec/libopenjpegdec.c | 8 +++++--- > > libavcodec/libopenjpegenc.c | 10 ++++++---- > > 3 files changed, 15 insertions(+), 8 deletions(-) > > > > diff --git a/configure b/configure > > index 391c141e7a..3280e74f0f 100755 > > --- a/configure > > +++ b/configure > > @@ -1930,6 +1930,7 @@ HEADERS_LIST=" > > 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 @@ enabled libopencv && { check_header > > opencv2/core/core_c.h && 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 || > > I'm sorry but this needs to stop. Why the hell do we have to add a > ton of garbage to the configure every time there is a new openjpeg > release? > > Why is it the only project that pollutes the configure like this at > every release? openjpeg provides a pkg-config file here; from the look of it, it only needs to require a recent enough version (>=2.1 I'd guess), use the pkg-config reported cflags and libs, and #include <openjpeg.h> instead of <openjpeg-$version/openjpeg.h>
I can clean these up as part of the patch that drops OpenJPEG 1.x support, which I plan on making after the next release (though of course someone else is welcome to beat me to it; it seems there's a race for OpenJPEG patches!).
On 10/8/2017 4:18 PM, Michael Bradshaw wrote: > I can clean these up as part of the patch that drops OpenJPEG 1.x support, > which I plan on making after the next release (though of course someone > else is welcome to beat me to it; it seems there's a race for OpenJPEG > patches!). Is there anything that precludes switching 2.X to pkg-config and leaving 1.X as is? - Derek
On Sun, Oct 8, 2017 at 8:34 AM, Derek Buitenhuis <derek.buitenhuis@gmail.com > wrote: > > Is there anything that precludes switching 2.X to pkg-config and leaving > 1.X as is? No, switching 2.x to pkg-config isn't dependent on dropping 1.x. But since I plan to do both, I figure I might as well do them together since they're both clean-up work.
diff --git a/configure b/configure index 391c141e7a..3280e74f0f 100755 --- a/configure +++ b/configure @@ -1930,6 +1930,7 @@ HEADERS_LIST=" 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 @@ enabled libopencv && { check_header opencv2/core/core_c.h && 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 || diff --git a/libavcodec/libopenjpegdec.c b/libavcodec/libopenjpegdec.c index 1210123265..67d47bd6a0 100644 --- a/libavcodec/libopenjpegdec.c +++ b/libavcodec/libopenjpegdec.c @@ -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 @@ static int libopenjpeg_decode_frame(AVCodecContext *avctx, 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); diff --git a/libavcodec/libopenjpegenc.c b/libavcodec/libopenjpegenc.c index b67e533d1d..92b4433b04 100644 --- a/libavcodec/libopenjpegenc.c +++ b/libavcodec/libopenjpegenc.c @@ -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 @@ static av_cold int libopenjpeg_encode_init(AVCodecContext *avctx) 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 @@ static int libopenjpeg_encode_frame(AVCodecContext *avctx, AVPacket *pkt, 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);