34 int run_index = sc->run_index;
41 if (sc->slice_coding_mode == 1) {
43 if (
c->bytestream_end -
c->bytestream < (
w *
bits + 7LL)>>3) {
48 for (x = 0; x <
w; x++) {
60 if (
c->bytestream_end -
c->bytestream <
w * 35) {
71 for (x = 0; x <
w; x++) {
74 context =
RENAME(get_context)(
f->quant_tables[p->quant_table_index],
88 sc->rc_stat2[p->quant_table_index][context]);
116 ff_dlog(logctx,
"count:%d index:%d, mode:%d, x:%d pos:%d\n",
117 run_count, run_index, run_mode, x,
134 sc->run_index = run_index;
140 const uint8_t *
src[4],
144 int transparency =
f->transparency;
146 for (
int p = 0; p<3 + transparency; p++)
147 memset(sc->fltmap[p], 0, 65536 *
sizeof(**sc->fltmap));
149 for (y = 0; y <
h; y++) {
150 for (x = 0; x <
w; x++) {
153 if (
sizeof(
TYPE) == 4 || transparency) {
154 g = *((
const uint16_t *)(
src[0] + x*2 +
stride[0]*y));
155 b = *((
const uint16_t *)(
src[1] + x*2 +
stride[1]*y));
156 r = *((
const uint16_t *)(
src[2] + x*2 +
stride[2]*y));
158 a = *((
const uint16_t *)(
src[3] + x*2 +
stride[3]*y));
160 b = *((
const uint16_t *)(
src[0] + x*2 +
stride[0]*y));
161 g = *((
const uint16_t *)(
src[1] + x*2 +
stride[1]*y));
162 r = *((
const uint16_t *)(
src[2] + x*2 +
stride[2]*y));
165 sc->fltmap[0][
g] = 1;
166 sc->fltmap[1][
b] = 1;
167 sc->fltmap[2][
r] = 1;
169 sc->fltmap[3][
a] = 1;
175 const uint8_t *
src[4],
176 int w,
int h,
const int stride[4],
int ac)
179 const int ring_size =
f->context_model ? 3 : 2;
182 int lbd =
f->bits_per_raw_sample <= 8;
183 int packed = !
src[1];
185 int transparency =
f->transparency;
186 int packed_size = (3 + transparency)*2;
196 (
w + 6) *
sizeof(*
RENAME(sc->sample_buffer)));
198 for (y = 0; y <
h; y++) {
203 for (x = 0; x <
w; x++) {
206 unsigned v = *((
const uint32_t*)(
src[0] + x*4 +
stride[0]*y));
209 r = (v >> 16) & 0xFF;
212 const uint16_t *p = ((
const uint16_t*)(
src[0] + x*packed_size +
stride[0]*y));
218 }
else if (
sizeof(
TYPE) == 4 || transparency) {
219 g = *((
const uint16_t *)(
src[0] + x*2 +
stride[0]*y));
220 b = *((
const uint16_t *)(
src[1] + x*2 +
stride[1]*y));
221 r = *((
const uint16_t *)(
src[2] + x*2 +
stride[2]*y));
223 a = *((
const uint16_t *)(
src[3] + x*2 +
stride[3]*y));
225 b = *((
const uint16_t *)(
src[0] + x*2 +
stride[0]*y));
226 g = *((
const uint16_t *)(
src[1] + x*2 +
stride[1]*y));
227 r = *((
const uint16_t *)(
src[2] + x*2 +
stride[2]*y));
231 g = sc->fltmap[0][
g];
232 b = sc->fltmap[1][
b];
233 r = sc->fltmap[2][
r];
235 a = sc->fltmap[3][
a];
238 if (sc->slice_coding_mode != 1) {
241 g += (
b * sc->slice_rct_by_coef +
r * sc->slice_rct_ry_coef) >> 2;
251 for (p = 0; p < 3 + transparency; p++) {
static av_always_inline void predict(PredictorState *ps, int *coef, int output_enable)
static int ring_size(RingBuffer *ring)
#define av_assert0(cond)
assert() equivalent, that is always enabled.
#define i(width, name, range_min, range_max)
static struct @346255127015250356166251341105367306144006377143 state
static const uint8_t bits[8]
void ff_ffv1_compute_bits_per_plane(const FFV1Context *f, FFV1SliceContext *sc, int bits[4], int *offset, int mask[4], int bits_per_raw_sample)
static av_always_inline int fold(int diff, int bits)
static void put_vlc_symbol(PutBitContext *pb, VlcState *const state, int v, int bits)
static av_always_inline av_flatten void put_symbol_inline(RangeCoder *c, uint8_t *state, int v, int is_signed, uint64_t rc_stat[256][2], uint64_t rc_stat2[32][2])
#define AV_CODEC_FLAG_PASS1
Use internal 2pass ratecontrol in first pass mode.
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
static void put_bits(Jpeg2000EncoderContext *s, int val, int n)
put n times val bit
const uint8_t ff_log2_run[41]
static void encode_line(AVCodecContext *avctx, uint8_t **data, const uint8_t *line, int length)
static int put_bits_count(PutBitContext *s)
static int put_bytes_left(const PutBitContext *s, int round_up)
static av_always_inline int diff(const struct color_info *a, const struct color_info *b, const int trans_thresh)