libavcodec/lagarith.c File Reference

Lagarith lossless decoder. More...

#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 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, 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


Detailed Description

Lagarith lossless decoder.

Author:
Nathan Caldwell

Definition in file lagarith.c.


Enumeration Type Documentation

Enumerator:
FRAME_RAW  uncompressed
FRAME_U_RGB24  unaligned RGB24
FRAME_ARITH_YUY2  arithmetic coded YUY2
FRAME_ARITH_RGB24  arithmetic coded RGB24
FRAME_SOLID_GRAY  solid grayscale color frame
FRAME_SOLID_COLOR  solid non-grayscale color frame
FRAME_OLD_ARITH_RGB  obsolete arithmetic coded RGB (no longer encoded by upstream since version 1.1.0)
FRAME_ARITH_RGBA  arithmetic coded RGBA
FRAME_SOLID_RGBA  solid RGBA color frame
FRAME_ARITH_YV12  arithmetic coded YV12
FRAME_REDUCED_RES  reduced resolution YV12 frame

Definition at line 34 of file lagarith.c.


Function Documentation

static void add_lag_median_prediction ( uint8_t *  dst,
uint8_t *  src1,
uint8_t *  diff,
int  w,
int *  left,
int *  left_top 
) [static]

Definition at line 221 of file lagarith.c.

Referenced by lag_pred_line().

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]

Definition at line 358 of file lagarith.c.

Referenced by lag_decode_frame().

static av_cold int lag_decode_end ( AVCodecContext avctx  )  [static]

Definition at line 611 of file lagarith.c.

static int lag_decode_frame ( AVCodecContext avctx,
void *  data,
int *  data_size,
AVPacket avpkt 
) [static]

Decode a frame.

Parameters:
avctx codec context
data output AVFrame
data_size size of output data or 0 if no picture is returned
avpkt input packet
Returns:
number of consumed bytes on success or negative if decode fails

Definition at line 439 of file lagarith.c.

static av_cold int lag_decode_init ( AVCodecContext avctx  )  [static]

Definition at line 601 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]

Definition at line 270 of file lagarith.c.

Referenced by lag_decode_arith_plane().

static int lag_decode_prob ( GetBitContext gb,
uint32_t *  value 
) [static]

Definition at line 101 of file lagarith.c.

Referenced by lag_read_prob_header().

static int lag_decode_zero_run_line ( LagarithContext l,
uint8_t *  dst,
const uint8_t *  src,
int  width,
int  esc_count 
) [static]

Definition at line 312 of file lagarith.c.

Referenced by lag_decode_arith_plane().

static void lag_pred_line ( LagarithContext l,
uint8_t *  buf,
int  width,
int  stride,
int  line 
) [static]

Definition at line 245 of file lagarith.c.

Referenced by lag_decode_arith_plane().

static int lag_read_prob_header ( lag_rac rac,
GetBitContext gb 
) [static]

Definition at line 135 of file lagarith.c.

Referenced by lag_decode_arith_plane().

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.

Parameters:
x 32bit integer factor
mantissa mantissa of f with exponent 0
Returns:
32bit integer value (x*f)
See also:
softfloat_reciprocal

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.

Parameters:
denom denominator
Returns:
52bit mantissa
See also:
softfloat_mul

Definition at line 66 of file lagarith.c.

Referenced by lag_read_prob_header().


Variable Documentation

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 622 of file lagarith.c.


Generated on Fri Oct 26 02:43:48 2012 for FFmpeg by  doxygen 1.5.8