diff mbox series

[FFmpeg-devel] avcodec/jpeg2000: Fast fail if HTJ2K codeblocks are present.

Message ID 20220506065543.9085-1-etemesicaleb@gmail.com
State New
Headers show
Series [FFmpeg-devel] avcodec/jpeg2000: Fast fail if HTJ2K codeblocks are present. | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

caleb May 6, 2022, 6:55 a.m. UTC
---
 libavcodec/jpeg2000.h    | 2 ++
 libavcodec/jpeg2000dec.c | 4 ++++
 2 files changed, 6 insertions(+)

Comments

Pierre-Anthony Lemieux May 6, 2022, 5:56 p.m. UTC | #1
LGTM

On Thu, May 5, 2022 at 11:56 PM caleb <etemesicaleb@gmail.com> wrote:
>
> ---
>  libavcodec/jpeg2000.h    | 2 ++
>  libavcodec/jpeg2000dec.c | 4 ++++
>  2 files changed, 6 insertions(+)
>
> diff --git a/libavcodec/jpeg2000.h b/libavcodec/jpeg2000.h
> index d06313425e..e5ecb4cbf9 100644
> --- a/libavcodec/jpeg2000.h
> +++ b/libavcodec/jpeg2000.h
> @@ -110,6 +110,8 @@ enum Jpeg2000Quantsty { // quantization style
>  #define JPEG2000_CSTY_PREC      0x01 // Precincts defined in coding style
>  #define JPEG2000_CSTY_SOP       0x02 // SOP marker present
>  #define JPEG2000_CSTY_EPH       0x04 // EPH marker present
> +#define JPEG2000_CTSY_HTJ2K_F   0x40 // Only HT code-blocks (Rec. ITU-T T.814 | ISO/IEC 15444-15) are present
> +#define JPEG2000_CTSY_HTJ2K_M   0xC0 // HT code blocks (Rec. ITU-T T.814 | ISO/IEC 15444-15) can be present
>
>  // Progression orders
>  #define JPEG2000_PGOD_LRCP      0x00  // Layer-resolution level-component-position progression
> diff --git a/libavcodec/jpeg2000dec.c b/libavcodec/jpeg2000dec.c
> index 92966b11f5..30f8c878d1 100644
> --- a/libavcodec/jpeg2000dec.c
> +++ b/libavcodec/jpeg2000dec.c
> @@ -521,6 +521,10 @@ static int get_cox(Jpeg2000DecoderContext *s, Jpeg2000CodingStyle *c)
>
>      c->cblk_style = bytestream2_get_byteu(&s->g);
>      if (c->cblk_style != 0) { // cblk style
> +        if (c->cblk_style & JPEG2000_CTSY_HTJ2K_M || c->cblk_style & JPEG2000_CTSY_HTJ2K_F) {
> +            av_log(s->avctx, AV_LOG_ERROR, "Support for High throughput JPEG 2000 is not yet available\n");
> +            return AVERROR_PATCHWELCOME;
> +        }
>          av_log(s->avctx, AV_LOG_WARNING, "extra cblk styles %X\n", c->cblk_style);
>          if (c->cblk_style & JPEG2000_CBLK_BYPASS)
>              av_log(s->avctx, AV_LOG_WARNING, "Selective arithmetic coding bypass\n");
> --
> 2.34.0
>
Michael Niedermayer May 7, 2022, 8:31 a.m. UTC | #2
On Fri, May 06, 2022 at 10:56:16AM -0700, Pierre-Anthony Lemieux wrote:
> LGTM

will apply

thx

[...]
Michael Niedermayer May 7, 2022, 8:35 a.m. UTC | #3
Hi

before applying this

Author: caleb <etemesicaleb@gmail.com>

If you want your full name there please resend this with your full name
so its in git with your full name. It cannot be 
changed  later if its pushed like this

thx

[...]
Soft Works May 7, 2022, 8:44 a.m. UTC | #4
> -----Original Message-----
> From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of
> Michael Niedermayer
> Sent: Saturday, May 7, 2022 10:31 AM
> To: FFmpeg development discussions and patches <ffmpeg-
> devel@ffmpeg.org>
> Subject: Re: [FFmpeg-devel] [PATCH] avcodec/jpeg2000: Fast fail if
> HTJ2K codeblocks are present.
> 
> On Fri, May 06, 2022 at 10:56:16AM -0700, Pierre-Anthony Lemieux
> wrote:
> > LGTM
> 
> will apply
> 
> thx
> 
> [...]
> --
> Michael     GnuPG fingerprint:
> 9FF2128B147EF6730BADF133611EC787040B0FAB
> 
> Into a blind darkness they enter who follow after the Ignorance,
> they as if into a greater darkness enter who devote themselves
> to the Knowledge alone. -- Isha Upanishad

They who read as if sentences devoted to pretention of the wise 
words into great pain will enter. -- softworkz :-)
diff mbox series

Patch

diff --git a/libavcodec/jpeg2000.h b/libavcodec/jpeg2000.h
index d06313425e..e5ecb4cbf9 100644
--- a/libavcodec/jpeg2000.h
+++ b/libavcodec/jpeg2000.h
@@ -110,6 +110,8 @@  enum Jpeg2000Quantsty { // quantization style
 #define JPEG2000_CSTY_PREC      0x01 // Precincts defined in coding style
 #define JPEG2000_CSTY_SOP       0x02 // SOP marker present
 #define JPEG2000_CSTY_EPH       0x04 // EPH marker present
+#define JPEG2000_CTSY_HTJ2K_F   0x40 // Only HT code-blocks (Rec. ITU-T T.814 | ISO/IEC 15444-15) are present
+#define JPEG2000_CTSY_HTJ2K_M   0xC0 // HT code blocks (Rec. ITU-T T.814 | ISO/IEC 15444-15) can be present
 
 // Progression orders
 #define JPEG2000_PGOD_LRCP      0x00  // Layer-resolution level-component-position progression
diff --git a/libavcodec/jpeg2000dec.c b/libavcodec/jpeg2000dec.c
index 92966b11f5..30f8c878d1 100644
--- a/libavcodec/jpeg2000dec.c
+++ b/libavcodec/jpeg2000dec.c
@@ -521,6 +521,10 @@  static int get_cox(Jpeg2000DecoderContext *s, Jpeg2000CodingStyle *c)
 
     c->cblk_style = bytestream2_get_byteu(&s->g);
     if (c->cblk_style != 0) { // cblk style
+        if (c->cblk_style & JPEG2000_CTSY_HTJ2K_M || c->cblk_style & JPEG2000_CTSY_HTJ2K_F) {
+            av_log(s->avctx, AV_LOG_ERROR, "Support for High throughput JPEG 2000 is not yet available\n");
+            return AVERROR_PATCHWELCOME;
+        }
         av_log(s->avctx, AV_LOG_WARNING, "extra cblk styles %X\n", c->cblk_style);
         if (c->cblk_style & JPEG2000_CBLK_BYPASS)
             av_log(s->avctx, AV_LOG_WARNING, "Selective arithmetic coding bypass\n");