#include "avcodec.h"
#include "get_bits.h"
#include "mathops.h"
#include "dsputil.h"
#include "lagarithrac.h"
Go to the source code of this file.
Data Structures | |
struct | LagarithContext |
Enumerations | |
enum | LagarithFrameType { FRAME_RAW = 1, FRAME_U_RGB24 = 2, FRAME_ARITH_YUY2 = 3, FRAME_ARITH_RGB24 = 4, FRAME_SOLID_GRAY = 5, FRAME_SOLID_COLOR = 6, FRAME_OLD_ARITH_RGB = 7, FRAME_ARITH_RGBA = 8, FRAME_SOLID_RGBA = 9, FRAME_ARITH_YV12 = 10, FRAME_REDUCED_RES = 11 } |
Functions | |
static uint64_t | softfloat_reciprocal (uint32_t denom) |
Compute the 52bit mantissa of 1/(double)denom. | |
static uint32_t | softfloat_mul (uint32_t x, uint64_t mantissa) |
(uint32_t)(x*f), where f has the given mantissa, and exponent 0 Used in combination with softfloat_reciprocal computes x/(double)denom. | |
static uint8_t | lag_calc_zero_run (int8_t x) |
static int | lag_decode_prob (GetBitContext *gb, uint32_t *value) |
static int | lag_read_prob_header (lag_rac *rac, GetBitContext *gb) |
static void | add_lag_median_prediction (uint8_t *dst, uint8_t *src1, uint8_t *diff, int w, int *left, int *left_top) |
static void | lag_pred_line (LagarithContext *l, uint8_t *buf, int width, int stride, int line) |
static void | lag_pred_line_yuy2 (LagarithContext *l, uint8_t *buf, int width, int stride, int line, int is_luma) |
static int | lag_decode_line (LagarithContext *l, lag_rac *rac, uint8_t *dst, int width, int stride, int esc_count) |
static int | lag_decode_zero_run_line (LagarithContext *l, uint8_t *dst, const uint8_t *src, const uint8_t *src_end, int width, int esc_count) |
static int | lag_decode_arith_plane (LagarithContext *l, uint8_t *dst, int width, int height, int stride, const uint8_t *src, int src_size) |
static int | lag_decode_frame (AVCodecContext *avctx, void *data, int *data_size, AVPacket *avpkt) |
Decode a frame. | |
static av_cold int | lag_decode_init (AVCodecContext *avctx) |
static av_cold int | lag_decode_end (AVCodecContext *avctx) |
Variables | |
AVCodec | ff_lagarith_decoder |
Definition in file lagarith.c.
enum LagarithFrameType |
Definition at line 34 of file lagarith.c.
static uint8_t lag_calc_zero_run | ( | int8_t | x | ) | [static] |
Definition at line 96 of file lagarith.c.
Referenced by lag_decode_line(), and lag_decode_zero_run_line().
static int lag_decode_arith_plane | ( | LagarithContext * | l, | |
uint8_t * | dst, | |||
int | width, | |||
int | height, | |||
int | stride, | |||
const uint8_t * | src, | |||
int | src_size | |||
) | [static] |
static av_cold int lag_decode_end | ( | AVCodecContext * | avctx | ) | [static] |
Definition at line 688 of file lagarith.c.
static int lag_decode_frame | ( | AVCodecContext * | avctx, | |
void * | data, | |||
int * | data_size, | |||
AVPacket * | avpkt | |||
) | [static] |
Decode a frame.
avctx | codec context | |
data | output AVFrame | |
data_size | size of output data or 0 if no picture is returned | |
avpkt | input packet |
Definition at line 503 of file lagarith.c.
static av_cold int lag_decode_init | ( | AVCodecContext * | avctx | ) | [static] |
Definition at line 678 of file lagarith.c.
static int lag_decode_line | ( | LagarithContext * | l, | |
lag_rac * | rac, | |||
uint8_t * | dst, | |||
int | width, | |||
int | stride, | |||
int | esc_count | |||
) | [static] |
static int lag_decode_prob | ( | GetBitContext * | gb, | |
uint32_t * | value | |||
) | [static] |
static int lag_decode_zero_run_line | ( | LagarithContext * | l, | |
uint8_t * | dst, | |||
const uint8_t * | src, | |||
const uint8_t * | src_end, | |||
int | width, | |||
int | esc_count | |||
) | [static] |
static void lag_pred_line | ( | LagarithContext * | l, | |
uint8_t * | buf, | |||
int | width, | |||
int | stride, | |||
int | line | |||
) | [static] |
static void lag_pred_line_yuy2 | ( | LagarithContext * | l, | |
uint8_t * | buf, | |||
int | width, | |||
int | stride, | |||
int | line, | |||
int | is_luma | |||
) | [static] |
static int lag_read_prob_header | ( | lag_rac * | rac, | |
GetBitContext * | gb | |||
) | [static] |
static uint32_t softfloat_mul | ( | uint32_t | x, | |
uint64_t | mantissa | |||
) | [static] |
(uint32_t)(x*f), where f has the given mantissa, and exponent 0 Used in combination with softfloat_reciprocal computes x/(double)denom.
x | 32bit integer factor | |
mantissa | mantissa of f with exponent 0 |
Definition at line 85 of file lagarith.c.
Referenced by lag_read_prob_header().
static uint64_t softfloat_reciprocal | ( | uint32_t | denom | ) | [static] |
Compute the 52bit mantissa of 1/(double)denom.
This crazy format uses floats in an entropy coder and we have to match x86 rounding exactly, thus ordinary floats aren't portable enough.
denom | denominator |
Definition at line 66 of file lagarith.c.
Referenced by lag_read_prob_header().
Initial value:
{ .name = "lagarith", .type = AVMEDIA_TYPE_VIDEO, .id = CODEC_ID_LAGARITH, .priv_data_size = sizeof(LagarithContext), .init = lag_decode_init, .close = lag_decode_end, .decode = lag_decode_frame, .capabilities = CODEC_CAP_DR1, .long_name = NULL_IF_CONFIG_SMALL("Lagarith lossless"), }
Definition at line 699 of file lagarith.c.