25 int plane_index,
int bits)
46 if (
s->slice_coding_mode == 1) {
47 for (x = 0; x <
w; x++) {
50 for (i = bits-1; i>=0; i--) {
58 for (x = 0; x <
w; x++) {
69 diff =
fold(diff, bits);
102 ff_dlog(
s->avctx,
"count:%d index:%d, mode:%d, x:%d pos:%d\n",
103 run_count, run_index, run_mode, x,
129 const int ring_size =
s->context_model ? 3 : 2;
131 int lbd =
s->bits_per_raw_sample <= 8;
132 int packed = !
src[1];
133 int bits =
s->bits_per_raw_sample > 0 ?
s->bits_per_raw_sample : 8;
141 (
w + 6) *
sizeof(*
RENAME(
s->sample_buffer)));
143 for (y = 0; y <
h; y++) {
146 sample[p][i]=
RENAME(
s->sample_buffer) + p*ring_size*(
w+6) + ((h+i-y)%
ring_size)*(
w+6) + 3;
148 for (x = 0; x <
w; x++) {
151 unsigned v = *((
const uint32_t*)(
src[0] + x*4 +
stride[0]*y));
154 r = (v >> 16) & 0xFF;
157 const uint16_t *p = ((
const uint16_t*)(
src[0] + x*packed_size +
stride[0]*y));
164 g = *((
const uint16_t *)(
src[0] + x*2 +
stride[0]*y));
165 b = *((
const uint16_t *)(
src[1] + x*2 +
stride[1]*y));
166 r = *((
const uint16_t *)(
src[2] + x*2 +
stride[2]*y));
168 a = *((
const uint16_t *)(
src[3] + x*2 +
stride[3]*y));
170 b = *((
const uint16_t *)(
src[0] + x*2 +
stride[0]*y));
171 g = *((
const uint16_t *)(
src[1] + x*2 +
stride[1]*y));
172 r = *((
const uint16_t *)(
src[2] + x*2 +
stride[2]*y));
175 if (
s->slice_coding_mode != 1) {
178 g += (b *
s->slice_rct_by_coef + r *
s->slice_rct_ry_coef) >> 2;
190 sample[p][0][-1] = sample[p][1][0 ];
191 sample[p][1][
w] = sample[p][1][w-1];
192 if (lbd &&
s->slice_coding_mode == 0)
static av_always_inline int fold(int diff, int bits)
const uint8_t ff_log2_run[41]
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
static void put_bits(Jpeg2000EncoderContext *s, int val, int n)
put n times val bit
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])
static int ring_size(RingBuffer *ring)
static av_always_inline void predict(PredictorState *ps, float *coef, int output_enable)
static int RENAME() get_context(PlaneContext *p, TYPE *src, TYPE *last, TYPE *last2)
static int RENAME() encode_rgb_frame(FFV1Context *s, const uint8_t *src[4], int w, int h, const int stride[4])
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
static av_always_inline int RENAME() encode_line(FFV1Context *s, int w, TYPE *sample[3], int plane_index, int bits)
static const uint8_t offset[127][2]
static int put_bits_count(PutBitContext *s)
#define AV_CODEC_FLAG_PASS1
Use internal 2pass ratecontrol in first pass mode.
static void put_vlc_symbol(PutBitContext *pb, VlcState *const state, int v, int bits)
uint8_t(* state)[CONTEXT_SIZE]
static av_always_inline int diff(const uint32_t a, const uint32_t b)