Go to the documentation of this file.
27 int plane_index,
int bits)
39 if (
s->slice_coding_mode == 1) {
41 for (x = 0; x <
w; x++) {
52 for (x = 0; x <
w; x++) {
72 if (
context == 0 && run_mode == 0)
76 if (run_count == 0 && run_mode == 1) {
79 if (x + run_count <=
w)
92 while (run_count > 1 &&
w-x > 1) {
98 while (run_count > 1 &&
w-x > 1) {
117 ff_dlog(
s->avctx,
"count:%d index:%d, mode:%d, x:%d pos:%d\n",
134 int lbd =
s->avctx->bits_per_raw_sample <= 8;
135 int bits =
s->avctx->bits_per_raw_sample > 0 ?
s->avctx->bits_per_raw_sample : 8;
139 for (x = 0; x < 4; x++) {
141 sample[x][1] =
RENAME(
s->sample_buffer) + (x * 2 + 1) * (
w + 6) + 3;
146 memset(
RENAME(
s->sample_buffer), 0, 8 * (
w + 6) *
sizeof(*
RENAME(
s->sample_buffer)));
148 for (y = 0; y <
h; y++) {
158 if (lbd &&
s->slice_coding_mode == 0)
165 for (x = 0; x <
w; x++) {
171 if (
s->slice_coding_mode != 1) {
174 g -= (
b *
s->slice_rct_by_coef +
r *
s->slice_rct_ry_coef) >> 2;
180 *((uint32_t*)(
src[0] + x*4 +
stride[0]*y)) =
b + ((
unsigned)
g<<8) + ((
unsigned)
r<<16) + ((
unsigned)
a<<24);
182 *((uint16_t*)(
src[0] + x*2 +
stride[0]*y)) =
g;
183 *((uint16_t*)(
src[1] + x*2 +
stride[1]*y)) =
b;
184 *((uint16_t*)(
src[2] + x*2 +
stride[2]*y)) =
r;
186 *((uint16_t*)(
src[3] + x*2 +
stride[3]*y)) =
a;
188 *((uint16_t*)(
src[0] + x*2 +
stride[0]*y)) =
b;
189 *((uint16_t*)(
src[1] + x*2 +
stride[1]*y)) =
g;
190 *((uint16_t*)(
src[2] + x*2 +
stride[2]*y)) =
r;
static int is_input_end(FFV1Context *s)
int context_count[MAX_QUANT_TABLES]
static int get_bits_count(const GetBitContext *s)
uint8_t(* state)[CONTEXT_SIZE]
static av_always_inline int RENAME() decode_line(FFV1Context *s, int w, TYPE *sample[2], int plane_index, int bits)
static unsigned int get_bits(GetBitContext *s, int n)
Read 1-25 bits.
static av_flatten int get_symbol_inline(RangeCoder *c, uint8_t *state, int is_signed)
static int get_vlc_symbol(GetBitContext *gb, VlcState *const state, 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
static unsigned int get_bits1(GetBitContext *s)
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
#define av_assert2(cond)
assert() equivalent, that does lie in speed critical code.
#define i(width, name, range_min, range_max)
static av_always_inline void predict(PredictorState *ps, float *coef, int output_enable)
static int get_rac(RangeCoder *c, uint8_t *const state)
static int RENAME() decode_rgb_frame(FFV1Context *s, uint8_t *src[4], int w, int h, int stride[4])
const uint8_t ff_log2_run[41]
#define AVERROR_INVALIDDATA
Invalid data found when processing input.