54 int tid, wt, maxtab,
i, j;
72 s->maxval,
s->t1,
s->t2,
s->t3,
s->reset);
94 else if ((5 + wt*(
s->maxval+1)) < 65535)
97 maxtab = 65530/wt - 1;
100 av_log(
s->avctx,
AV_LOG_DEBUG,
"LSE palette %d tid:%d wt:%d maxtab:%d\n",
id, tid, wt, maxtab);
106 maxtab =
FFMIN(maxtab, (
len - 5) / wt +
s->palette_index);
108 if (
s->palette_index > maxtab)
113 uint32_t *pal = (uint32_t *)
s->picture_ptr->data[1];
116 if (
s->avctx->bits_per_raw_sample > 0 &&
s->avctx->bits_per_raw_sample < 8) {
117 maxtab =
FFMIN(maxtab, (1<<
s->avctx->bits_per_raw_sample)-1);
118 shift = 8 -
s->avctx->bits_per_raw_sample;
121 s->picture_ptr->format =
123 for (
i=
s->palette_index;
i<=maxtab;
i++) {
125 pal[k] = wt < 4 ? 0xFF000000 : 0;
126 for (j=0; j<wt; j++) {
127 pal[k] |=
get_bits(&
s->gb, 8) << (8*(wt-j-1));
130 s->palette_index =
i;
140 ff_dlog(
s->avctx,
"ID=%i, T=%i,%i,%i\n",
id,
s->t1,
s->t2,
s->t3);
152 for (k = 0; ((unsigned)
state->N[Q] << k) <
state->A[Q]; k++)
163 ret = -(ret + 1 >> 1);
180 int RItype,
int limit_add)
183 int Q = 365 + RItype;
189 for (k = 0; ((unsigned)
state->N[Q] << k) <
temp; k++)
203 if (!k && (RItype || ret) && (2 *
state->B[Q] <
state->N[Q]))
208 ret =
map - (ret + 1 >> 1);
214 if (
FFABS(ret) > 0xFFFF)
218 ret *=
state->twonear;
228 void *last,
void *dst,
int last2,
int w,
242 Ra = x ?
R(dst, x -
stride) :
R(last, x);
244 Rc = x ?
R(last, x -
stride) : last2;
262 for (
i = 0;
i <
r;
i++) {
281 for (
i = 0;
i <
r;
i++) {
294 RItype = (
FFABS(Ra - Rb) <=
state->near) ? 1 : 0;
300 if (
state->near && RItype) {
335 if (pred < -state->near)
351 int point_transform,
int ilv)
357 int decoded_height = 0;
363 cur =
s->picture_ptr->data[0];
372 state->bpp = (
s->bits < 2) ? 2 :
s->bits;
373 state->maxval =
s->maxval;
382 shift = point_transform + (8 -
s->bits);
384 shift = point_transform + (16 -
s->bits);
393 "JPEG-LS params: %ix%i NEAR=%i MV=%i T(%i,%i,%i) "
394 "RESET=%i, LIMIT=%i, qbpp=%i, RANGE=%i\n",
399 ilv, point_transform,
s->bits,
s->cur_scan);
406 if (
s->cur_scan >
s->nb_components) {
410 stride = (
s->nb_components > 1) ? 3 : 1;
414 for (
i = 0;
i <
s->height;
i++) {
421 t = *((uint16_t *)last);
426 cur +=
s->picture_ptr->linesize[0];
428 if (
s->restart_interval && !--
s->restart_count) {
434 }
else if (ilv == 1) {
436 int Rc[3] = { 0, 0, 0 };
437 stride = (
s->nb_components > 1) ? 3 : 1;
438 memset(cur, 0,
s->picture_ptr->linesize[0]);
440 for (
i = 0;
i <
s->height;
i++) {
442 for (j = 0; j <
stride; j++) {
449 if (
s->restart_interval && !--
s->restart_count) {
457 cur +=
s->picture_ptr->linesize[0];
460 }
else if (ilv == 2) {
470 if (
s->xfrm &&
s->nb_components == 3) {
473 w =
s->width *
s->nb_components;
478 for (
i = 0;
i <
s->height;
i++) {
481 for (x = off; x + 2 <
w; x += 3) {
482 src[x ] +=
src[x+1] + 128;
483 src[x+2] +=
src[x+1] + 128;
487 for (x = off; x + 2 <
w; x += 3) {
488 src[x ] +=
src[x+1] + 128;
489 src[x+2] += ((
src[x ] +
src[x+1])>>1) + 128;
493 for (x = off; x + 2 <
w; x += 3) {
494 int g =
src[x+0] - ((
src[x+2]+
src[x+1])>>2) + 64;
501 for (x = off; x + 2 <
w; x += 3) {
502 int r =
src[x+0] - (( 359 * (
src[x+2]-128) + 490) >> 8);
503 int g =
src[x+0] - (( 88 * (
src[x+1]-128) - 183 * (
src[x+2]-128) + 30) >> 8);
504 int b =
src[x+0] + ((454 * (
src[x+1]-128) + 574) >> 8);
511 src +=
s->picture_ptr->linesize[0];
520 w =
s->width *
s->nb_components;
525 for (
i = 0;
i < decoded_height;
i++) {
526 for (x = off; x <
w; x +=
stride)
528 src +=
s->picture_ptr->linesize[0];
531 uint16_t *
src = (uint16_t *)
s->picture_ptr->data[0];
533 for (
i = 0;
i < decoded_height;
i++) {
534 for (x = 0; x <
w; x++)
536 src +=
s->picture_ptr->linesize[0] / 2;
#define av_assert0(cond)
assert() equivalent, that is always enabled.
Libavcodec external API header.
#define FF_DEBUG_PICT_INFO
static av_cold int init(AVCodecContext *avctx)
const uint8_t ff_log2_run[41]
#define FFABS(a)
Absolute value, Note, INT_MIN / INT64_MIN result in undefined behavior as they are not representable ...
static CopyRet receive_frame(AVCodecContext *avctx, AVFrame *frame, int *got_frame)
static void comp(unsigned char *dst, ptrdiff_t dst_stride, unsigned char *src, ptrdiff_t src_stride, int add)
bitstream reader API header.
static unsigned int show_bits_long(GetBitContext *s, int n)
Show 0-32 bits.
static unsigned int get_bits_long(GetBitContext *s, int n)
Read 0-32 bits.
static int get_bits_left(GetBitContext *gb)
static unsigned int get_bits1(GetBitContext *s)
static void skip_bits(GetBitContext *s, int n)
static unsigned int get_bits(GetBitContext *s, int n)
Read 1-25 bits.
static const uint8_t * align_get_bits(GetBitContext *s)
static int get_ur_golomb_jpegls(GetBitContext *gb, int k, int limit, int esc_len)
read unsigned golomb rice code (jpegls).
#define AV_CODEC_CAP_DR1
Codec uses get_buffer() or get_encode_buffer() for allocating buffers and supports custom allocators.
#define AVERROR_PATCHWELCOME
Not yet implemented in FFmpeg, patches welcome.
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
#define AV_LOG_DEBUG
Stuff which is only useful for libav* developers.
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
void * av_mallocz(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
const VDPAUPixFmtMap * map
void ff_jpegls_init_state(JLSState *state)
Calculate initial JPEG-LS parameters.
void ff_jpegls_reset_coding_parameters(JLSState *s, int reset_all)
Calculate JPEG-LS codec values.
static int ff_jpegls_update_state_regular(JLSState *state, int Q, int err)
static void ff_jpegls_downscale_state(JLSState *state, int Q)
static int ff_jpegls_quantize(JLSState *s, int v)
Calculate quantized gradient value, used for context determination.
AVCodec ff_jpegls_decoder
static int ls_decode_line(JLSState *state, MJpegDecodeContext *s, void *last, void *dst, int last2, int w, int stride, int comp, int bits)
Decode one line of image.
static int ls_get_code_runterm(GetBitContext *gb, JLSState *state, int RItype, int limit_add)
Get Golomb code, decode it and update state for run termination.
int ff_jpegls_decode_lse(MJpegDecodeContext *s)
Decode LSE block with initialization parameters.
static int ls_get_code_regular(GetBitContext *gb, JLSState *state, int Q)
Get context-dependent Golomb code, decode it and update context.
int ff_jpegls_decode_picture(MJpegDecodeContext *s, int near, int point_transform, int ilv)
#define FF_CODEC_CAP_SETS_PKT_DTS
Decoders marked with FF_CODEC_CAP_SETS_PKT_DTS want to set AVFrame.pkt_dts manually.
#define FF_CODEC_CAP_INIT_THREADSAFE
The codec does not modify any global variables in the init function, allowing to call the init functi...
#define FF_CODEC_CAP_INIT_CLEANUP
The codec allows calling the close function for deallocation even if the init function returned a fai...
common internal API header
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
void avpriv_report_missing_feature(void *avc, const char *msg,...) av_printf_format(2
Log a generic warning message about a missing feature.
MJPEG encoder and decoder.
av_cold int ff_mjpeg_decode_init(AVCodecContext *avctx)
av_cold int ff_mjpeg_decode_end(AVCodecContext *avctx)
int ff_mjpeg_receive_frame(AVCodecContext *avctx, AVFrame *frame)
@ AV_PIX_FMT_GRAY8
Y , 8bpp.
@ AV_PIX_FMT_PAL8
8 bits with AV_PIX_FMT_RGB32 palette
static const float pred[4]
static int shift(int a, int b)
const char * name
Name of the codec implementation.
#define avpriv_request_sample(...)