Go to the documentation of this file.
34 int run_index = sc->run_index;
39 if (
c->bytestream_end -
c->bytestream <
w * 35) {
50 if (sc->slice_coding_mode == 1) {
51 for (x = 0; x <
w; x++) {
62 for (x = 0; x <
w; x++) {
107 ff_dlog(logctx,
"count:%d index:%d, mode:%d, x:%d pos:%d\n",
108 run_count, run_index, run_mode, x,
125 sc->run_index = run_index;
131 const uint8_t *
src[4],
135 const int ring_size =
f->context_model ? 3 : 2;
137 const int ac =
f->ac;
139 int lbd =
f->bits_per_raw_sample <= 8;
140 int packed = !
src[1];
141 int bits =
f->bits_per_raw_sample > 0 ?
f->bits_per_raw_sample : 8;
143 int transparency =
f->transparency;
144 int packed_size = (3 + transparency)*2;
149 (
w + 6) *
sizeof(*
RENAME(sc->sample_buffer)));
151 for (y = 0; y <
h; y++) {
156 for (x = 0; x <
w; x++) {
159 unsigned v = *((
const uint32_t*)(
src[0] + x*4 +
stride[0]*y));
162 r = (v >> 16) & 0xFF;
165 const uint16_t *p = ((
const uint16_t*)(
src[0] + x*packed_size +
stride[0]*y));
171 }
else if (
sizeof(
TYPE) == 4 || transparency) {
172 g = *((
const uint16_t *)(
src[0] + x*2 +
stride[0]*y));
173 b = *((
const uint16_t *)(
src[1] + x*2 +
stride[1]*y));
174 r = *((
const uint16_t *)(
src[2] + x*2 +
stride[2]*y));
176 a = *((
const uint16_t *)(
src[3] + x*2 +
stride[3]*y));
178 b = *((
const uint16_t *)(
src[0] + x*2 +
stride[0]*y));
179 g = *((
const uint16_t *)(
src[1] + x*2 +
stride[1]*y));
180 r = *((
const uint16_t *)(
src[2] + x*2 +
stride[2]*y));
183 if (sc->slice_coding_mode != 1) {
186 g += (
b * sc->slice_rct_by_coef +
r * sc->slice_rct_ry_coef) >> 2;
196 for (p = 0; p < 3 + transparency; p++) {
200 if (lbd && sc->slice_coding_mode == 0)
204 bits + (sc->slice_coding_mode != 1), ac, pass1);
static av_always_inline int RENAME() encode_line(FFV1Context *f, FFV1SliceContext *sc, void *logctx, int w, TYPE *sample[3], int plane_index, int bits, int ac, int pass1)
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 void put_bits(Jpeg2000EncoderContext *s, int val, int n)
put n times val bit
static av_always_inline void predict(PredictorState *ps, int *coef, int output_enable)
uint8_t(* state)[CONTEXT_SIZE]
static int ring_size(RingBuffer *ring)
static int put_bytes_left(const PutBitContext *s, int round_up)
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
static av_always_inline int fold(int diff, int bits)
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf default minimum maximum flags name is the option keep it simple and lowercase description are in without and describe what they for example set the foo of the bar offset is the offset of the field in your context
Undefined Behavior In the C some operations are like signed integer dereferencing freed accessing outside allocated Undefined Behavior must not occur in a C it is not safe even if the output of undefined operations is unused The unsafety may seem nit picking but Optimizing compilers have in fact optimized code on the assumption that no undefined Behavior occurs Optimizing code based on wrong assumptions can and has in some cases lead to effects beyond the output of computations The signed integer overflow problem in speed critical code Code which is highly optimized and works with signed integers sometimes has the problem that often the output of the computation does not c
static av_always_inline int diff(const struct color_info *a, const struct color_info *b, const int trans_thresh)
The reader does not expect b to be semantically here and if the code is changed by maybe adding a a division or other the signedness will almost certainly be mistaken To avoid this confusion a new type was SUINT is the C unsigned type but it holds a signed int to use the same example SUINT a
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf offset
static void put_vlc_symbol(PutBitContext *pb, VlcState *const state, int v, int bits)
#define i(width, name, range_min, range_max)
static int put_bits_count(PutBitContext *s)
static int RENAME() encode_rgb_frame(FFV1Context *f, FFV1SliceContext *sc, const uint8_t *src[4], int w, int h, const int stride[4])
const uint8_t ff_log2_run[41]
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
#define AV_CODEC_FLAG_PASS1
Use internal 2pass ratecontrol in first pass mode.