37 #define SHL(a, n) ((n) >= 0 ? (a) << (n) : (a) >> -(n)) 45 while (w > 1 || h > 1) {
46 res += w * (int64_t)h;
66 while (w > 1 || h > 1) {
75 for (i = 0; i < ph; i++)
76 for (j = 0; j < pw; j++)
77 t[i * pw + j].parent = &t2[(i >> 1) * w + (j >> 1)];
89 for (i = 0; i < siz; i++) {
114 if (h == 2)
return 8;
116 if (v >= 1)
return 7;
117 if (d >= 1)
return 6;
120 if (v == 2)
return 4;
121 if (v == 1)
return 3;
122 if (d >= 2)
return 2;
123 if (d == 1)
return 1;
125 if (d >= 3)
return 8;
127 if (h+v >= 1)
return 7;
131 if (h+v >= 2)
return 5;
132 if (h+v == 1)
return 4;
135 if (h+v >= 2)
return 2;
136 if (h+v == 1)
return 1;
143 static const int contribtab[3][3] = { { 0, -1, 1 }, { -1, -1, 0 }, { 1, 0, 1 } };
144 static const int ctxlbltab[3][3] = { { 13, 12, 11 }, { 10, 9, 10 }, { 11, 12, 13 } };
145 static const int xorbittab[3][3] = { { 1, 1, 1 }, { 1, 0, 0 }, { 0, 0, 0 } };
149 int vcontrib, hcontrib;
163 for (i = 0; i < 256; i++)
164 for (j = 0; j < 4; j++)
166 for (i = 0; i < 16; i++)
167 for (j = 0; j < 16; j++)
201 int bandno,
int gbandno,
int reslevelno,
236 switch (bandno + (reslevelno > 0)) {
269 int precno,
int bandno,
int reslevelno,
270 int log2_band_prec_width,
271 int log2_band_prec_height)
274 int nb_codeblocks, cblkno;
283 (1 << log2_band_prec_width);
287 (1 << log2_band_prec_height);
291 (1 << log2_band_prec_width);
297 (1 << log2_band_prec_height);
332 for (cblkno = 0; cblkno < nb_codeblocks; cblkno++) {
355 if ((bandno + !!reslevelno) & 1) {
361 if ((bandno + !!reslevelno) & 2) {
386 int bandno,
int gbandno,
int reslevelno,
387 int cbps,
int dx,
int dy)
390 uint8_t log2_band_prec_width, log2_band_prec_height;
402 if (reslevelno == 0) {
404 for (i = 0; i < 2; i++)
405 for (j = 0; j < 2; j++)
419 for (i = 0; i < 2; i++)
420 for (j = 0; j < 2; j++)
424 (((bandno + 1 >> i) & 1LL) << declvl - 1),
448 for (precno = 0; precno < nb_precincts; precno++) {
449 ret =
init_prec(avctx, band, reslevel, comp, codsty,
450 precno, bandno, reslevelno,
451 log2_band_prec_width, log2_band_prec_height);
462 int cbps,
int dx,
int dy,
465 int reslevelno, bandno, gbandno = 0,
ret,
i, j;
479 comp->
coord[1][1] - comp->
coord[1][0], 0, avctx))
481 csize = (comp->
coord[0][1] - comp->
coord[0][0]) *
483 if (comp->
coord[0][1] - comp->
coord[0][0] > 32768 ||
484 comp->
coord[1][1] - comp->
coord[1][0] > 32768) {
506 for (reslevelno = 0; reslevelno < codsty->
nreslevels; reslevelno++) {
513 for (i = 0; i < 2; i++)
514 for (j = 0; j < 2; j++)
515 reslevel->
coord[i][j] =
534 if (reslevel->
coord[0][1] == reslevel->
coord[0][0])
542 if (reslevel->
coord[1][1] == reslevel->
coord[1][0])
557 for (bandno = 0; bandno < reslevel->
nbands; bandno++, gbandno++) {
559 comp, codsty, qntsty,
560 bandno, gbandno, reslevelno,
571 int reslevelno, bandno, cblkno, precno;
572 for (reslevelno = 0; reslevelno < codsty->
nreslevels; reslevelno++) {
574 for (bandno = 0; bandno < rlevel->
nbands; bandno++) {
592 int reslevelno, bandno, precno;
601 reslevel = comp->
reslevel + reslevelno;
602 for (bandno = 0; bandno < reslevel->
nbands; bandno++) {
608 band = reslevel->
band + bandno;
618 for (cblkno = 0; cblkno < nb_code_blocks; cblkno ++) {
uint8_t ff_jpeg2000_sgnctxno_lut[16][16]
const struct AVCodec * codec
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
void av_cold ff_jpeg2000_init_tier1_luts(void)
void ff_jpeg2000_cleanup(Jpeg2000Component *comp, Jpeg2000CodingStyle *codsty)
int av_codec_is_encoder(const AVCodec *codec)
Jpeg2000TgtNode * cblkincl
Memory handling functions.
uint16_t mant[JPEG2000_MAX_DECLEVELS *3]
static const int contribtab[3][3]
static const int xorbittab[3][3]
static Jpeg2000TgtNode * ff_jpeg2000_tag_tree_init(int w, int h)
Macro definitions for various function/variable attributes.
#define JPEG2000_T1_SIG_W
#define av_assert0(cond)
assert() equivalent, that is always enabled.
Jpeg2000TgtNode * zerobits
#define JPEG2000_T1_SIG_NE
#define JPEG2000_T1_SIG_SE
static const int ctxlbltab[3][3]
uint8_t log2_prec_widths[JPEG2000_MAX_RESLEVELS]
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
int ff_jpeg2000_dwt_init(DWTContext *s, int border[2][2], int decomp_levels, int type)
Initialize DWT.
static int init_band(AVCodecContext *avctx, Jpeg2000ResLevel *reslevel, Jpeg2000Component *comp, Jpeg2000CodingStyle *codsty, Jpeg2000QuantStyle *qntsty, int bandno, int gbandno, int reslevelno, int cbps, int dx, int dy)
void ff_jpeg2000_set_significance(Jpeg2000T1Context *t1, int x, int y, int negative)
uint8_t log2_prec_heights[JPEG2000_MAX_RESLEVELS]
simple assert() macros that are a bit more flexible than ISO C assert().
int64_t max_pixels
The number of pixels per image to maximally accept.
static void init_band_stepsize(AVCodecContext *avctx, Jpeg2000Band *band, Jpeg2000CodingStyle *codsty, Jpeg2000QuantStyle *qntsty, int bandno, int gbandno, int reslevelno, int cbps)
static av_always_inline float ff_exp2fi(int x)
2^(x) for integer x
int av_image_check_size(unsigned int w, unsigned int h, int log_offset, void *log_ctx)
Check if the given dimension of an image is valid, meaning that all bytes of the image can be address...
struct Jpeg2000TgtNode * parent
#define JPEG2000_T1_SGN_S
JPEG 2000 structures and defines common to encoder and decoder.
void ff_dwt_destroy(DWTContext *s)
#define JPEG2000_T1_SIG_N
static int ff_jpeg2000_ceildivpow2(int a, int b)
static void comp(unsigned char *dst, ptrdiff_t dst_stride, unsigned char *src, ptrdiff_t src_stride, int add)
#define AVERROR_PATCHWELCOME
Not yet implemented in FFmpeg, patches welcome.
Libavcodec external API header.
main external API structure.
#define JPEG2000_T1_SIG_S
Jpeg2000ResLevel * reslevel
void ff_jpeg2000_reinit(Jpeg2000Component *comp, Jpeg2000CodingStyle *codsty)
#define JPEG2000_T1_SGN_E
uint8_t expn[JPEG2000_MAX_DECLEVELS *3]
common internal api header.
common internal and external API header
uint16_t log2_cblk_height
#define AV_INPUT_BUFFER_PADDING_SIZE
Required number of additionally allocated bytes at the end of the input bitstream for decoding...
void ff_tag_tree_zero(Jpeg2000TgtNode *t, int w, int h, int val)
int ff_jpeg2000_init_component(Jpeg2000Component *comp, Jpeg2000CodingStyle *codsty, Jpeg2000QuantStyle *qntsty, int cbps, int dx, int dy, AVCodecContext *avctx)
#define JPEG2000_T1_SIG_SW
#define JPEG2000_T1_SGN_N
static int getsgnctxno(int flag, uint8_t *xorbit)
#define JPEG2000_T1_SIG_E
int32_t ff_tag_tree_size(int w, int h)
static int getsigctxno(int flag, int bandno)
static int init_prec(AVCodecContext *avctx, Jpeg2000Band *band, Jpeg2000ResLevel *reslevel, Jpeg2000Component *comp, Jpeg2000CodingStyle *codsty, int precno, int bandno, int reslevelno, int log2_band_prec_width, int log2_band_prec_height)
#define FFSWAP(type, a, b)
uint8_t ff_jpeg2000_sigctxno_lut[256][4]
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFrame structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample they are references to shared objects When the negotiation mechanism computes the intersection of the formats supported at each end of a all references to both lists are replaced with a reference to the intersection And when a single format is eventually chosen for a link amongst the remaining all references to the list are updated That means that if a filter requires that its input and output have the same format amongst a supported all it has to do is use a reference to the same list of formats query_formats can leave some formats unset and return AVERROR(EAGAIN) to cause the negotiation mechanism toagain later.That can be used by filters with complex requirements to use the format negotiated on one link to set the formats supported on another.Frame references ownership and permissions
#define JPEG2000_T1_SIG_NW
#define JPEG2000_T1_SGN_W
static double val(void *priv, double ch)
void * av_mallocz_array(size_t nmemb, size_t size)
uint8_t ff_jpeg2000_xorbit_lut[16][16]