FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Enumerations | Functions | Variables
diracdec.c File Reference

Dirac Decoder. More...

#include "avcodec.h"
#include "get_bits.h"
#include "bytestream.h"
#include "internal.h"
#include "golomb.h"
#include "dirac_arith.h"
#include "mpeg12data.h"
#include "libavcodec/mpegvideo.h"
#include "mpegvideoencdsp.h"
#include "dirac_dwt.h"
#include "dirac.h"
#include "diracdsp.h"
#include "videodsp.h"

Go to the source code of this file.

Data Structures

struct  DiracFrame
 
struct  DiracBlock
 
struct  SubBand
 
struct  Plane
 
struct  DiracContext
 
struct  lowdelay_slice
 

Macros

#define MAX_DWT_LEVELS   5
 The spec limits the number of wavelet decompositions to 4 for both level 1 (VC-2) and 128 (long-gop default). More...
 
#define MAX_REFERENCE_FRAMES   8
 The spec limits this to 3 for frame coding, but in practice can be as high as 6. More...
 
#define MAX_DELAY   5 /* limit for main profile for frame coding (TODO: field coding) */
 
#define MAX_FRAMES   (MAX_REFERENCE_FRAMES + MAX_DELAY + 1)
 
#define MAX_QUANT   68 /* max quant for VC-2 */
 
#define MAX_BLOCKSIZE   32 /* maximum xblen/yblen we support */
 
#define DIRAC_REF_MASK_REF1   1
 DiracBlock->ref flags, if set then the block does MC from the given ref. More...
 
#define DIRAC_REF_MASK_REF2   2
 
#define DIRAC_REF_MASK_GLOBAL   4
 
#define DELAYED_PIC_REF   4
 Value of Picture.reference when Picture is not a reference picture, but is held for delayed output. More...
 
#define CALC_PADDING(size, depth)   (((size + (1 << depth) - 1) >> depth) << depth)
 
#define DIVRNDUP(a, b)   (((a) + (b) - 1) / (b))
 
#define SIGN_CTX(x)   (CTX_SIGN_ZERO + ((x) > 0) - ((x) < 0))
 
#define CHECKEDREAD(dst, cond, errmsg)
 
#define ROLLOFF(i)
 
#define DATA_UNIT_HEADER_SIZE   13
 Dirac Specification -> 9.6 Parse Info Header Syntax. More...
 

Enumerations

enum  dirac_parse_code { pc_seq_header = 0x00, pc_eos = 0x10, pc_aux_data = 0x20, pc_padding = 0x30 }
 Dirac Specification -> Parse code values. More...
 
enum  dirac_subband {
  subband_ll = 0, subband_hl = 1, subband_lh = 2, subband_hh = 3,
  subband_nb
}
 

Functions

static int divide3 (int x)
 
static DiracFrameremove_frame (DiracFrame *framelist[], int picnum)
 
static int add_frame (DiracFrame *framelist[], int maxframes, DiracFrame *frame)
 
static int alloc_sequence_buffers (DiracContext *s)
 
static int alloc_buffers (DiracContext *s, int stride)
 
static void free_sequence_buffers (DiracContext *s)
 
static av_cold int dirac_decode_init (AVCodecContext *avctx)
 
static void dirac_decode_flush (AVCodecContext *avctx)
 
static av_cold int dirac_decode_end (AVCodecContext *avctx)
 
static void coeff_unpack_arith (DiracArith *c, int qfactor, int qoffset, SubBand *b, IDWTELEM *buf, int x, int y)
 
static int coeff_unpack_golomb (GetBitContext *gb, int qfactor, int qoffset)
 
static void codeblock (DiracContext *s, SubBand *b, GetBitContext *gb, DiracArith *c, int left, int right, int top, int bottom, int blockcnt_one, int is_arith)
 Decode the coeffs in the rectangle defined by left, right, top, bottom [DIRAC_STD] 13.4.3.2 Codeblock unpacking loop. More...
 
static void intra_dc_prediction (SubBand *b)
 Dirac Specification -> 13.3 intra_dc_prediction(band) More...
 
static av_always_inline void decode_subband_internal (DiracContext *s, SubBand *b, int is_arith)
 Dirac Specification -> 13.4.2 Non-skipped subbands. More...
 
static int decode_subband_arith (AVCodecContext *avctx, void *b)
 
static int decode_subband_golomb (AVCodecContext *avctx, void *arg)
 
static void decode_component (DiracContext *s, int comp)
 Dirac Specification -> [DIRAC_STD] 13.4.1 core_transform_data() More...
 
static void lowdelay_subband (DiracContext *s, GetBitContext *gb, int quant, int slice_x, int slice_y, int bits_end, SubBand *b1, SubBand *b2)
 
static int decode_lowdelay_slice (AVCodecContext *avctx, void *arg)
 Dirac Specification -> 13.5.2 Slices. More...
 
static int decode_lowdelay (DiracContext *s)
 Dirac Specification -> 13.5.1 low_delay_transform_data() More...
 
static void init_planes (DiracContext *s)
 
static int dirac_unpack_prediction_parameters (DiracContext *s)
 Unpack the motion compensation parameters Dirac Specification -> 11.2 Picture prediction data. More...
 
static int dirac_unpack_idwt_params (DiracContext *s)
 Dirac Specification -> 11.3 Wavelet transform data. More...
 
static int pred_sbsplit (uint8_t *sbsplit, int stride, int x, int y)
 
static int pred_block_mode (DiracBlock *block, int stride, int x, int y, int refmask)
 
static void pred_block_dc (DiracBlock *block, int stride, int x, int y)
 
static void pred_mv (DiracBlock *block, int stride, int x, int y, int ref)
 
static void global_mv (DiracContext *s, DiracBlock *block, int x, int y, int ref)
 
static void decode_block_params (DiracContext *s, DiracArith arith[8], DiracBlock *block, int stride, int x, int y)
 
static void propagate_block_data (DiracBlock *block, int stride, int size)
 Copies the current block to the other blocks covered by the current superblock split mode. More...
 
static int dirac_unpack_block_motion_data (DiracContext *s)
 Dirac Specification -> More...
 
static int weight (int i, int blen, int offset)
 
static void init_obmc_weight_row (Plane *p, uint8_t *obmc_weight, int stride, int left, int right, int wy)
 
static void init_obmc_weight (Plane *p, uint8_t *obmc_weight, int stride, int left, int right, int top, int bottom)
 
static void init_obmc_weights (DiracContext *s, Plane *p, int by)
 
static int mc_subpel (DiracContext *s, DiracBlock *block, const uint8_t *src[5], int x, int y, int ref, int plane)
 For block x,y, determine which of the hpel planes to do bilinear interpolation from and set src[] to the location in each hpel plane to MC from. More...
 
static void add_dc (uint16_t *dst, int dc, int stride, uint8_t *obmc_weight, int xblen, int yblen)
 
static void block_mc (DiracContext *s, DiracBlock *block, uint16_t *mctmp, uint8_t *obmc_weight, int plane, int dstx, int dsty)
 
static void mc_row (DiracContext *s, DiracBlock *block, uint16_t *mctmp, int plane, int dsty)
 
static void select_dsp_funcs (DiracContext *s, int width, int height, int xblen, int yblen)
 
static void interpolate_refplane (DiracContext *s, DiracFrame *ref, int plane, int width, int height)
 
static int dirac_decode_frame_internal (DiracContext *s)
 Dirac Specification -> 13.0 Transform data syntax. More...
 
static int get_buffer_with_edge (AVCodecContext *avctx, AVFrame *f, int flags)
 
static int dirac_decode_picture_header (DiracContext *s)
 Dirac Specification -> 11.1.1 Picture Header. More...
 
static int get_delayed_pic (DiracContext *s, AVFrame *picture, int *got_frame)
 
static int dirac_decode_data_unit (AVCodecContext *avctx, const uint8_t *buf, int size)
 
static int dirac_decode_frame (AVCodecContext *avctx, void *data, int *got_frame, AVPacket *pkt)
 

Variables

static const uint8_t default_qmat [][4][4]
 
static const int qscale_tab [MAX_QUANT+1]
 
static const int qoffset_intra_tab [MAX_QUANT+1]
 
static const int qoffset_inter_tab [MAX_QUANT+1]
 
static const uint8_t epel_weights [4][4][4]
 
AVCodec ff_dirac_decoder
 

Detailed Description

Dirac Decoder.

Author
Marco Gerards marco.nosp@m.@gnu.nosp@m..org, David Conrad, Jordi Ortiz nenjo.nosp@m.rdi@.nosp@m.gmail.nosp@m..com

Definition in file diracdec.c.

Macro Definition Documentation

#define MAX_DWT_LEVELS   5

The spec limits the number of wavelet decompositions to 4 for both level 1 (VC-2) and 128 (long-gop default).

5 decompositions is the maximum before >16-bit buffers are needed. Schroedinger allows this for DD 9,7 and 13,7 wavelets only, limiting the others to 4 decompositions (or 3 for the fidelity filter).

We use this instead of MAX_DECOMPOSITIONS to save some memory.

Definition at line 52 of file diracdec.c.

Referenced by alloc_sequence_buffers(), decode_component(), and dirac_unpack_idwt_params().

#define MAX_REFERENCE_FRAMES   8

The spec limits this to 3 for frame coding, but in practice can be as high as 6.

Definition at line 57 of file diracdec.c.

Referenced by dirac_decode_picture_header().

#define MAX_DELAY   5 /* limit for main profile for frame coding (TODO: field coding) */

Definition at line 58 of file diracdec.c.

Referenced by dirac_decode_frame().

#define MAX_FRAMES   (MAX_REFERENCE_FRAMES + MAX_DELAY + 1)
#define MAX_QUANT   68 /* max quant for VC-2 */

Definition at line 60 of file diracdec.c.

Referenced by codeblock(), and lowdelay_subband().

#define MAX_BLOCKSIZE   32 /* maximum xblen/yblen we support */
#define DIRAC_REF_MASK_REF1   1

DiracBlock->ref flags, if set then the block does MC from the given ref.

Definition at line 66 of file diracdec.c.

Referenced by decode_block_params().

#define DIRAC_REF_MASK_REF2   2

Definition at line 67 of file diracdec.c.

Referenced by decode_block_params().

#define DIRAC_REF_MASK_GLOBAL   4

Definition at line 68 of file diracdec.c.

Referenced by decode_block_params(), and pred_mv().

#define DELAYED_PIC_REF   4

Value of Picture.reference when Picture is not a reference picture, but is held for delayed output.

Definition at line 74 of file diracdec.c.

Referenced by decode_postinit(), dirac_decode_frame(), dirac_decode_picture_header(), ff_h264_decode_slice_header(), get_delayed_pic(), h264_decode_frame(), pic_is_unused(), and unreference_pic().

#define CALC_PADDING (   size,
  depth 
)    (((size + (1 << depth) - 1) >> depth) << depth)

Definition at line 76 of file diracdec.c.

Referenced by alloc_sequence_buffers(), and init_planes().

#define DIVRNDUP (   a,
  b 
)    (((a) + (b) - 1) / (b))

Definition at line 79 of file diracdec.c.

Referenced by alloc_sequence_buffers(), and dirac_unpack_block_motion_data().

#define SIGN_CTX (   x)    (CTX_SIGN_ZERO + ((x) > 0) - ((x) < 0))

Definition at line 462 of file diracdec.c.

Referenced by coeff_unpack_arith().

#define CHECKEDREAD (   dst,
  cond,
  errmsg 
)
Value:
if (cond) { \
av_log(s->avctx, AV_LOG_ERROR, errmsg); \
}\
dst = tmp;
const char * s
Definition: avisynth_c.h:631
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
Definition: error.h:59
static unsigned svq3_get_ue_golomb(GetBitContext *gb)
Definition: golomb.h:115
if()
Definition: avfilter.c:975
#define av_log(a,...)
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition: log.h:176
return

Referenced by dirac_unpack_idwt_params().

#define ROLLOFF (   i)
Value:
offset == 1 ? ((i) ? 5 : 3) : \
(1 + (6*(i) + offset - 1) / (2*offset - 1))
static const uint8_t offset[127][2]
Definition: vf_spp.c:92

Referenced by weight().

#define DATA_UNIT_HEADER_SIZE   13

Dirac Specification -> 9.6 Parse Info Header Syntax.

parse_info() 4 byte start code + byte parse code + 4 byte size + 4 byte previous size

Definition at line 1831 of file diracdec.c.

Referenced by dirac_decode_data_unit(), and dirac_decode_frame().

Enumeration Type Documentation

Dirac Specification -> Parse code values.

9.6.1 Table 9.1

Enumerator
pc_seq_header 
pc_eos 
pc_aux_data 
pc_padding 

Definition at line 226 of file diracdec.c.

Enumerator
subband_ll 
subband_hl 
subband_lh 
subband_hh 
subband_nb 

Definition at line 233 of file diracdec.c.

Function Documentation

static int divide3 ( int  x)
inlinestatic

Definition at line 285 of file diracdec.c.

Referenced by intra_dc_prediction(), and pred_block_dc().

static DiracFrame* remove_frame ( DiracFrame framelist[],
int  picnum 
)
static

Definition at line 290 of file diracdec.c.

Referenced by dirac_decode_frame(), and dirac_decode_picture_header().

static int add_frame ( DiracFrame framelist[],
int  maxframes,
DiracFrame frame 
)
static

Definition at line 308 of file diracdec.c.

Referenced by dirac_decode_frame(), and dirac_decode_picture_header().

static int alloc_sequence_buffers ( DiracContext s)
static

Definition at line 319 of file diracdec.c.

Referenced by dirac_decode_data_unit().

static int alloc_buffers ( DiracContext s,
int  stride 
)
static

Definition at line 357 of file diracdec.c.

Referenced by dirac_decode_data_unit().

static void free_sequence_buffers ( DiracContext s)
static

Definition at line 386 of file diracdec.c.

Referenced by dirac_decode_data_unit(), and dirac_decode_flush().

static av_cold int dirac_decode_init ( AVCodecContext avctx)
static

Definition at line 418 of file diracdec.c.

static void dirac_decode_flush ( AVCodecContext avctx)
static

Definition at line 442 of file diracdec.c.

Referenced by dirac_decode_end().

static av_cold int dirac_decode_end ( AVCodecContext avctx)
static

Definition at line 450 of file diracdec.c.

static void coeff_unpack_arith ( DiracArith c,
int  qfactor,
int  qoffset,
SubBand b,
IDWTELEM buf,
int  x,
int  y 
)
inlinestatic

Definition at line 464 of file diracdec.c.

Referenced by codeblock().

static int coeff_unpack_golomb ( GetBitContext gb,
int  qfactor,
int  qoffset 
)
inlinestatic

Definition at line 496 of file diracdec.c.

Referenced by codeblock(), and lowdelay_subband().

static void codeblock ( DiracContext s,
SubBand b,
GetBitContext gb,
DiracArith c,
int  left,
int  right,
int  top,
int  bottom,
int  blockcnt_one,
int  is_arith 
)
inlinestatic

Decode the coeffs in the rectangle defined by left, right, top, bottom [DIRAC_STD] 13.4.3.2 Codeblock unpacking loop.

codeblock()

Definition at line 513 of file diracdec.c.

Referenced by decode_subband_internal().

static void intra_dc_prediction ( SubBand b)
inlinestatic

Dirac Specification -> 13.3 intra_dc_prediction(band)

Definition at line 572 of file diracdec.c.

Referenced by decode_lowdelay(), and decode_subband_internal().

static av_always_inline void decode_subband_internal ( DiracContext s,
SubBand b,
int  is_arith 
)
static

Dirac Specification -> 13.4.2 Non-skipped subbands.

subband_coeffs()

Definition at line 596 of file diracdec.c.

Referenced by decode_subband_arith(), and decode_subband_golomb().

static int decode_subband_arith ( AVCodecContext avctx,
void b 
)
static

Definition at line 629 of file diracdec.c.

Referenced by decode_component().

static int decode_subband_golomb ( AVCodecContext avctx,
void arg 
)
static

Definition at line 636 of file diracdec.c.

Referenced by decode_component().

static void decode_component ( DiracContext s,
int  comp 
)
static

Dirac Specification -> [DIRAC_STD] 13.4.1 core_transform_data()

Definition at line 648 of file diracdec.c.

Referenced by dirac_decode_frame_internal().

static void lowdelay_subband ( DiracContext s,
GetBitContext gb,
int  quant,
int  slice_x,
int  slice_y,
int  bits_end,
SubBand b1,
SubBand b2 
)
static

Definition at line 684 of file diracdec.c.

Referenced by decode_lowdelay_slice().

static int decode_lowdelay_slice ( AVCodecContext avctx,
void arg 
)
static

Dirac Specification -> 13.5.2 Slices.

slice(sx,sy)

Definition at line 733 of file diracdec.c.

Referenced by decode_lowdelay().

static int decode_lowdelay ( DiracContext s)
static

Dirac Specification -> 13.5.1 low_delay_transform_data()

Definition at line 775 of file diracdec.c.

Referenced by dirac_decode_frame_internal().

static void init_planes ( DiracContext s)
static

Definition at line 819 of file diracdec.c.

Referenced by dirac_decode_picture_header().

static int dirac_unpack_prediction_parameters ( DiracContext s)
static

Unpack the motion compensation parameters Dirac Specification -> 11.2 Picture prediction data.

picture_prediction()

Definition at line 872 of file diracdec.c.

Referenced by dirac_decode_picture_header().

static int dirac_unpack_idwt_params ( DiracContext s)
static

Dirac Specification -> 11.3 Wavelet transform data.

wavelet_transform()

Definition at line 991 of file diracdec.c.

Referenced by dirac_decode_picture_header().

static int pred_sbsplit ( uint8_t sbsplit,
int  stride,
int  x,
int  y 
)
inlinestatic

Definition at line 1069 of file diracdec.c.

Referenced by dirac_unpack_block_motion_data().

static int pred_block_mode ( DiracBlock block,
int  stride,
int  x,
int  y,
int  refmask 
)
inlinestatic

Definition at line 1083 of file diracdec.c.

Referenced by decode_block_params().

static void pred_block_dc ( DiracBlock block,
int  stride,
int  x,
int  y 
)
inlinestatic

Definition at line 1099 of file diracdec.c.

Referenced by decode_block_params().

static void pred_mv ( DiracBlock block,
int  stride,
int  x,
int  y,
int  ref 
)
inlinestatic
static void global_mv ( DiracContext s,
DiracBlock block,
int  x,
int  y,
int  ref 
)
static

Definition at line 1168 of file diracdec.c.

Referenced by decode_block_params().

static void decode_block_params ( DiracContext s,
DiracArith  arith[8],
DiracBlock block,
int  stride,
int  x,
int  y 
)
static

Definition at line 1184 of file diracdec.c.

Referenced by dirac_unpack_block_motion_data().

static void propagate_block_data ( DiracBlock block,
int  stride,
int  size 
)
static

Copies the current block to the other blocks covered by the current superblock split mode.

Definition at line 1224 of file diracdec.c.

Referenced by dirac_unpack_block_motion_data().

static int dirac_unpack_block_motion_data ( DiracContext s)
static

Dirac Specification ->

  1. Block motion data syntax

Definition at line 1243 of file diracdec.c.

Referenced by dirac_decode_picture_header().

static int weight ( int  i,
int  blen,
int  offset 
)
static

Definition at line 1298 of file diracdec.c.

Referenced by dv_init_enc_block(), encode_mb_internal(), ff_h264_weight_pixels16_8_mmi(), ff_h264_weight_pixels4_8_mmi(), ff_h264_weight_pixels8_8_mmi(), ff_lpc_calc_coefs(), guess_dc(), hevc_biwgt_copy_12w_msa(), hevc_biwgt_copy_16multx4mult_msa(), hevc_biwgt_copy_4w_msa(), hevc_biwgt_copy_6w_msa(), hevc_biwgt_copy_8w_msa(), hevc_hv_biwgt_4t_4multx8mult_msa(), hevc_hv_biwgt_4t_4x2_msa(), hevc_hv_biwgt_4t_4x4_msa(), hevc_hv_biwgt_4t_6w_msa(), hevc_hv_biwgt_4t_8multx4mult_msa(), hevc_hv_biwgt_4t_8x2_msa(), hevc_hv_biwgt_4t_8x6_msa(), hevc_hz_biwgt_4t_12w_msa(), hevc_hz_biwgt_4t_16w_msa(), hevc_hz_biwgt_4t_24w_msa(), hevc_hz_biwgt_4t_32w_msa(), hevc_hz_biwgt_4t_4x2_msa(), hevc_hz_biwgt_4t_4x4_msa(), hevc_hz_biwgt_4t_4x8multiple_msa(), hevc_hz_biwgt_4t_6w_msa(), hevc_hz_biwgt_4t_8x2_msa(), hevc_hz_biwgt_4t_8x4multiple_msa(), hevc_hz_biwgt_4t_8x6_msa(), hevc_hz_biwgt_8t_16w_msa(), hevc_hz_biwgt_8t_24w_msa(), hevc_hz_biwgt_8t_32w_msa(), hevc_hz_biwgt_8t_48w_msa(), hevc_hz_biwgt_8t_4w_msa(), hevc_hz_biwgt_8t_64w_msa(), hevc_hz_biwgt_8t_8w_msa(), hevc_vt_biwgt_4t_12w_msa(), hevc_vt_biwgt_4t_16w_msa(), hevc_vt_biwgt_4t_24w_msa(), hevc_vt_biwgt_4t_32w_msa(), hevc_vt_biwgt_4t_4x2_msa(), hevc_vt_biwgt_4t_4x4_msa(), hevc_vt_biwgt_4t_4x8multiple_msa(), hevc_vt_biwgt_4t_6w_msa(), hevc_vt_biwgt_4t_8x2_msa(), hevc_vt_biwgt_4t_8x4multiple_msa(), hevc_vt_biwgt_4t_8x6_msa(), hevc_vt_biwgt_8t_12w_msa(), hevc_vt_biwgt_8t_16multx2mult_msa(), hevc_vt_biwgt_8t_4w_msa(), hevc_vt_biwgt_8t_8w_msa(), init_obmc_weight(), init_obmc_weight_row(), interpolate_lpc(), mc_block(), silk_decode_lpc(), and try_8x8basis_TMPL().

static void init_obmc_weight_row ( Plane p,
uint8_t obmc_weight,
int  stride,
int  left,
int  right,
int  wy 
)
static

Definition at line 1310 of file diracdec.c.

Referenced by init_obmc_weight().

static void init_obmc_weight ( Plane p,
uint8_t obmc_weight,
int  stride,
int  left,
int  right,
int  top,
int  bottom 
)
static

Definition at line 1324 of file diracdec.c.

Referenced by init_obmc_weights().

static void init_obmc_weights ( DiracContext s,
Plane p,
int  by 
)
static

Definition at line 1343 of file diracdec.c.

Referenced by dirac_decode_frame_internal().

static int mc_subpel ( DiracContext s,
DiracBlock block,
const uint8_t src[5],
int  x,
int  y,
int  ref,
int  plane 
)
static

For block x,y, determine which of the hpel planes to do bilinear interpolation from and set src[] to the location in each hpel plane to MC from.

Returns
the index of the put_dirac_pixels_tab function to use 0 for 1 plane (fpel,hpel), 1 for 2 planes (qpel), 2 for 4 planes (qpel), and 3 for epel

Definition at line 1383 of file diracdec.c.

Referenced by block_mc().

static void add_dc ( uint16_t *  dst,
int  dc,
int  stride,
uint8_t obmc_weight,
int  xblen,
int  yblen 
)
static

Definition at line 1478 of file diracdec.c.

Referenced by block_mc().

static void block_mc ( DiracContext s,
DiracBlock block,
uint16_t *  mctmp,
uint8_t obmc_weight,
int  plane,
int  dstx,
int  dsty 
)
static

Definition at line 1494 of file diracdec.c.

Referenced by mc_row().

static void mc_row ( DiracContext s,
DiracBlock block,
uint16_t *  mctmp,
int  plane,
int  dsty 
)
static

Definition at line 1530 of file diracdec.c.

Referenced by dirac_decode_frame_internal().

static void select_dsp_funcs ( DiracContext s,
int  width,
int  height,
int  xblen,
int  yblen 
)
static

Definition at line 1546 of file diracdec.c.

Referenced by dirac_decode_frame_internal().

static void interpolate_refplane ( DiracContext s,
DiracFrame ref,
int  plane,
int  width,
int  height 
)
static

Definition at line 1566 of file diracdec.c.

Referenced by dirac_decode_frame_internal().

static int dirac_decode_frame_internal ( DiracContext s)
static

Dirac Specification -> 13.0 Transform data syntax.

transform_data()

Definition at line 1602 of file diracdec.c.

Referenced by dirac_decode_data_unit().

static int get_buffer_with_edge ( AVCodecContext avctx,
AVFrame f,
int  flags 
)
static

Definition at line 1687 of file diracdec.c.

Referenced by dirac_decode_data_unit(), and dirac_decode_picture_header().

static int dirac_decode_picture_header ( DiracContext s)
static

Dirac Specification -> 11.1.1 Picture Header.

picture_header()

Definition at line 1714 of file diracdec.c.

Referenced by dirac_decode_data_unit().

static int get_delayed_pic ( DiracContext s,
AVFrame picture,
int *  got_frame 
)
static

Definition at line 1800 of file diracdec.c.

Referenced by dirac_decode_frame().

static int dirac_decode_data_unit ( AVCodecContext avctx,
const uint8_t buf,
int  size 
)
static

Definition at line 1835 of file diracdec.c.

Referenced by dirac_decode_frame().

static int dirac_decode_frame ( AVCodecContext avctx,
void data,
int *  got_frame,
AVPacket pkt 
)
static

Definition at line 1930 of file diracdec.c.

Variable Documentation

const uint8_t default_qmat[][4][4]
static
Initial value:
= {
{ { 5, 3, 3, 0}, { 0, 4, 4, 1}, { 0, 5, 5, 2}, { 0, 6, 6, 3} },
{ { 4, 2, 2, 0}, { 0, 4, 4, 2}, { 0, 5, 5, 3}, { 0, 7, 7, 5} },
{ { 5, 3, 3, 0}, { 0, 4, 4, 1}, { 0, 5, 5, 2}, { 0, 6, 6, 3} },
{ { 8, 4, 4, 0}, { 0, 4, 4, 0}, { 0, 4, 4, 0}, { 0, 4, 4, 0} },
{ { 8, 4, 4, 0}, { 0, 4, 4, 0}, { 0, 4, 4, 0}, { 0, 4, 4, 0} },
{ { 0, 4, 4, 8}, { 0, 8, 8, 12}, { 0, 13, 13, 17}, { 0, 17, 17, 21} },
{ { 3, 1, 1, 0}, { 0, 4, 4, 2}, { 0, 6, 6, 5}, { 0, 9, 9, 7} },
}

Definition at line 241 of file diracdec.c.

Referenced by dirac_unpack_idwt_params().

const int qscale_tab[MAX_QUANT+1]
static
Initial value:
= {
4, 5, 6, 7, 8, 10, 11, 13,
16, 19, 23, 27, 32, 38, 45, 54,
64, 76, 91, 108, 128, 152, 181, 215,
256, 304, 362, 431, 512, 609, 724, 861,
1024, 1218, 1448, 1722, 2048, 2435, 2896, 3444,
4096, 4871, 5793, 6889, 8192, 9742, 11585, 13777,
16384, 19484, 23170, 27554, 32768, 38968, 46341, 55109,
65536, 77936
}

Definition at line 251 of file diracdec.c.

Referenced by codeblock(), and lowdelay_subband().

const int qoffset_intra_tab[MAX_QUANT+1]
static
Initial value:
= {
1, 2, 3, 4, 4, 5, 6, 7,
8, 10, 12, 14, 16, 19, 23, 27,
32, 38, 46, 54, 64, 76, 91, 108,
128, 152, 181, 216, 256, 305, 362, 431,
512, 609, 724, 861, 1024, 1218, 1448, 1722,
2048, 2436, 2897, 3445, 4096, 4871, 5793, 6889,
8192, 9742, 11585, 13777, 16384, 19484, 23171, 27555,
32768, 38968
}

Definition at line 262 of file diracdec.c.

Referenced by codeblock(), and lowdelay_subband().

const int qoffset_inter_tab[MAX_QUANT+1]
static
Initial value:
= {
1, 2, 2, 3, 3, 4, 4, 5,
6, 7, 9, 10, 12, 14, 17, 20,
24, 29, 34, 41, 48, 57, 68, 81,
96, 114, 136, 162, 192, 228, 272, 323,
384, 457, 543, 646, 768, 913, 1086, 1292,
1536, 1827, 2172, 2583, 3072, 3653, 4344, 5166,
6144, 7307, 8689, 10333, 12288, 14613, 17378, 20666,
24576, 29226
}

Definition at line 273 of file diracdec.c.

Referenced by codeblock().

const uint8_t epel_weights[4][4][4]
static
Initial value:
= {
{{ 16, 0, 0, 0 },
{ 12, 4, 0, 0 },
{ 8, 8, 0, 0 },
{ 4, 12, 0, 0 }},
{{ 12, 0, 4, 0 },
{ 9, 3, 3, 1 },
{ 6, 6, 2, 2 },
{ 3, 9, 1, 3 }},
{{ 8, 0, 8, 0 },
{ 6, 2, 6, 2 },
{ 4, 4, 4, 4 },
{ 2, 6, 2, 6 }},
{{ 4, 0, 12, 0 },
{ 3, 1, 9, 3 },
{ 2, 2, 6, 6 },
{ 1, 3, 3, 9 }}
}

Definition at line 1356 of file diracdec.c.

Referenced by mc_subpel().

AVCodec ff_dirac_decoder
Initial value:
= {
.name = "dirac",
.long_name = NULL_IF_CONFIG_SMALL("BBC Dirac VC-2"),
.priv_data_size = sizeof(DiracContext),
.close = dirac_decode_end,
.capabilities = CODEC_CAP_DELAY,
}
static av_cold int dirac_decode_end(AVCodecContext *avctx)
Definition: diracdec.c:450
static av_cold int init(AVCodecContext *avctx)
Definition: avrndec.c:35
static void dirac_decode_flush(AVCodecContext *avctx)
Definition: diracdec.c:442
static av_cold int dirac_decode_init(AVCodecContext *avctx)
Definition: diracdec.c:418
static int dirac_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPacket *pkt)
Definition: diracdec.c:1930
#define CODEC_CAP_DELAY
Encoder or decoder requires flushing with NULL input at the end in order to give the complete and cor...
Definition: avcodec.h:824
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:175
static void flush(AVCodecContext *avctx)
Definition: aacdec.c:514
static int decode(AVCodecContext *avctx, void *data, int *got_sub, AVPacket *avpkt)
Definition: ccaption_dec.c:522

Definition at line 2026 of file diracdec.c.