Go to the documentation of this file.
37 #define SHL(a, n) ((n) >= 0 ? (a) << (n) : (a) >> -(n))
44 while (
w > 1 ||
h > 1) {
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++)
218 int bandno,
int gbandno,
int reslevelno,
253 switch (bandno + (reslevelno > 0)) {
279 int precno,
int bandno,
int reslevelno,
280 int log2_band_prec_width,
281 int log2_band_prec_height)
284 int nb_codeblocks, cblkno;
293 (1 << log2_band_prec_width);
297 (1 << log2_band_prec_height);
301 (1 << log2_band_prec_width);
307 (1 << log2_band_prec_height);
342 for (cblkno = 0; cblkno < nb_codeblocks; cblkno++) {
365 if ((bandno + !!reslevelno) & 1) {
366 cblk->
coord[0][0] +=
comp->reslevel[reslevelno-1].coord[0][1] -
367 comp->reslevel[reslevelno-1].coord[0][0];
368 cblk->
coord[0][1] +=
comp->reslevel[reslevelno-1].coord[0][1] -
369 comp->reslevel[reslevelno-1].coord[0][0];
371 if ((bandno + !!reslevelno) & 2) {
372 cblk->
coord[1][0] +=
comp->reslevel[reslevelno-1].coord[1][1] -
373 comp->reslevel[reslevelno-1].coord[1][0];
374 cblk->
coord[1][1] +=
comp->reslevel[reslevelno-1].coord[1][1] -
375 comp->reslevel[reslevelno-1].coord[1][0];
396 int bandno,
int gbandno,
int reslevelno,
397 const int cbps,
int dx,
int dy)
400 uint8_t log2_band_prec_width, log2_band_prec_height;
412 if (reslevelno == 0) {
414 for (
i = 0;
i < 2;
i++)
415 for (j = 0; j < 2; j++)
429 for (
i = 0;
i < 2;
i++)
430 for (j = 0; j < 2; j++)
434 (((bandno + 1 >>
i) & 1LL) << declvl - 1),
458 for (precno = 0; precno < nb_precincts; precno++) {
460 precno, bandno, reslevelno,
461 log2_band_prec_width, log2_band_prec_height);
472 const int cbps,
int dx,
int dy,
475 int reslevelno, bandno, gbandno = 0,
ret,
i, j;
489 comp->coord[1][1] -
comp->coord[1][0], 0, avctx))
491 csize = (
comp->coord[0][1] -
comp->coord[0][0]) *
492 (
comp->coord[1][1] -
comp->coord[1][0]);
493 if (
comp->coord[0][1] -
comp->coord[0][0] > 32768 ||
494 comp->coord[1][1] -
comp->coord[1][0] > 32768) {
516 for (reslevelno = 0; reslevelno < codsty->
nreslevels; reslevelno++) {
523 for (
i = 0;
i < 2;
i++)
524 for (j = 0; j < 2; j++)
544 if (reslevel->
coord[0][1] == reslevel->
coord[0][0])
552 if (reslevel->
coord[1][1] == reslevel->
coord[1][0])
567 for (bandno = 0; bandno < reslevel->
nbands; bandno++, gbandno++) {
569 comp, codsty, qntsty,
570 bandno, gbandno, reslevelno,
581 int reslevelno, bandno, cblkno, precno;
582 for (reslevelno = 0; reslevelno < codsty->
nreslevels; reslevelno++) {
584 for (bandno = 0; bandno < rlevel->
nbands; bandno++) {
602 int reslevelno, bandno, precno;
611 reslevel =
comp->reslevel + reslevelno;
612 for (bandno = 0; bandno < reslevel->
nbands; bandno++) {
618 band = reslevel->
band + bandno;
628 for (cblkno = 0; cblkno < nb_code_blocks; cblkno ++) {
static const int contribtab[3][3]
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_SGN_N
static void av_cold jpeg2000_init_tier1_luts(void)
static void comp(unsigned char *dst, ptrdiff_t dst_stride, unsigned char *src, ptrdiff_t src_stride, int add)
#define JPEG2000_T1_SIG_NE
static __device__ float floorf(float a)
static const int xorbittab[3][3]
uint8_t ff_jpeg2000_sgnctxno_lut[16][16]
static int FUNC() ph(CodedBitstreamContext *ctx, RWContext *rw, H266RawPH *current)
Jpeg2000TgtNode * zerobits
static void init_band_stepsize(AVCodecContext *avctx, Jpeg2000Band *band, Jpeg2000CodingStyle *codsty, Jpeg2000QuantStyle *qntsty, int bandno, int gbandno, int reslevelno, int cbps)
uint8_t ff_jpeg2000_sigctxno_lut[256][4]
struct Jpeg2000TgtNode * parent
static av_always_inline float exp2fi(int x)
2^(x) for integer x in the range -126..128.
#define JPEG2000_T1_SIG_N
const struct AVCodec * codec
static av_always_inline float av_int2float(uint32_t i)
Reinterpret a 32-bit integer as a float.
#define JPEG2000_T1_SGN_E
uint8_t log2_prec_heights[JPEG2000_MAX_RESLEVELS]
#define JPEG2000_T1_SIG_E
static double val(void *priv, double ch)
static int ff_thread_once(char *control, void(*routine)(void))
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
static Jpeg2000TgtNode * ff_jpeg2000_tag_tree_init(int w, int h)
#define av_assert0(cond)
assert() equivalent, that is always enabled.
int64_t max_pixels
The number of pixels per image to maximally accept.
#define JPEG2000_T1_SGN_W
#define JPEG2000_T1_SIG_S
uint8_t log2_prec_widths[JPEG2000_MAX_RESLEVELS]
#define AVERROR_PATCHWELCOME
Not yet implemented in FFmpeg, patches welcome.
#define JPEG2000_T1_SIG_W
static int32_t tag_tree_size(int w, int h)
uint16_t log2_cblk_height
static int getsgnctxno(int flag, uint8_t *xorbit)
static int init_band(AVCodecContext *avctx, Jpeg2000ResLevel *reslevel, Jpeg2000Component *comp, Jpeg2000CodingStyle *codsty, Jpeg2000QuantStyle *qntsty, int bandno, int gbandno, int reslevelno, const int cbps, int dx, int dy)
#define JPEG2000_T1_SIG_SE
static const int ctxlbltab[3][3]
int ff_jpeg2000_dwt_init(DWTContext *s, int border[2][2], int decomp_levels, int type)
Initialize DWT.
void ff_jpeg2000_cleanup(Jpeg2000Component *comp, Jpeg2000CodingStyle *codsty)
int ff_jpeg2000_init_component(Jpeg2000Component *comp, Jpeg2000CodingStyle *codsty, Jpeg2000QuantStyle *qntsty, const int cbps, int dx, int dy, AVCodecContext *avctx)
#define JPEG2000_T1_SIG_SW
Jpeg2000TgtNode * cblkincl
uint8_t ff_jpeg2000_xorbit_lut[16][16]
void ff_dwt_destroy(DWTContext *s)
void ff_jpeg2000_reinit(Jpeg2000Component *comp, Jpeg2000CodingStyle *codsty)
int av_codec_is_encoder(const AVCodec *codec)
#define av_assert2(cond)
assert() equivalent, that does lie in speed critical code.
#define i(width, name, range_min, range_max)
uint8_t expn[JPEG2000_MAX_DECLEVELS *3]
void * av_calloc(size_t nmemb, size_t size)
uint16_t mant[JPEG2000_MAX_DECLEVELS *3]
#define FFSWAP(type, a, b)
static int getsigctxno(int flag, int bandno)
#define AV_INPUT_BUFFER_PADDING_SIZE
main external API structure.
static int ff_jpeg2000_ceildivpow2(int a, int b)
void av_cold ff_jpeg2000_init_tier1_luts(void)
#define JPEG2000_T1_SGN_S
#define JPEG2000_T1_SIG_NW
void ff_jpeg2000_set_significance(Jpeg2000T1Context *t1, int x, int y, int negative)
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
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...
void ff_tag_tree_zero(Jpeg2000TgtNode *t, int w, int h, int val)
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)