FFmpeg
|
#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 "diractab.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 | DiracSlice |
Macros | |
#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 255 /* 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 | UNPACK_ARITH(n, type) |
#define | INTRA_DC_PRED(n, type) |
Dirac Specification -> 13.3 intra_dc_prediction(band) More... | |
#define | PARSE_VALUES(type, x, gb, ebits, buf1, buf2) |
#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_subband { subband_ll = 0, subband_hl = 1, subband_lh = 2, subband_hh = 3, subband_nb } |
Functions | |
static int | divide3 (int x) |
static DiracFrame * | remove_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 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 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 | decode_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_hq_slice (AVCodecContext *avctx, void *arg) |
VC-2 Specification -> 13.5.3 hq_slice(sx,sy) 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 int | 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 | epel_weights [4][4][4] |
AVCodec | ff_dirac_decoder |
Dirac Decoder.
Definition in file diracdec.c.
#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 47 of file diracdec.c.
Referenced by dirac_decode_picture_header().
Definition at line 48 of file diracdec.c.
Referenced by dirac_decode_frame().
#define MAX_FRAMES (MAX_REFERENCE_FRAMES + MAX_DELAY + 1) |
Definition at line 49 of file diracdec.c.
Referenced by dirac_decode_data_unit(), dirac_decode_end(), dirac_decode_frame(), dirac_decode_init(), dirac_decode_picture_header(), ff_opus_parse_packet(), and free_sequence_buffers().
Definition at line 50 of file diracdec.c.
#define MAX_BLOCKSIZE 32 /* maximum xblen/yblen we support */ |
Definition at line 51 of file diracdec.c.
Referenced by add_dc(), alloc_buffers(), alloc_sequence_buffers(), dirac_unpack_prediction_parameters(), filter_channel(), init_obmc_weights(), mlp_filter_channel(), and read_major_sync().
#define DIRAC_REF_MASK_REF1 1 |
DiracBlock->ref flags, if set then the block does MC from the given ref.
Definition at line 56 of file diracdec.c.
Referenced by decode_block_params().
#define DIRAC_REF_MASK_REF2 2 |
Definition at line 57 of file diracdec.c.
Referenced by decode_block_params().
#define DIRAC_REF_MASK_GLOBAL 4 |
Definition at line 58 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 64 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().
Definition at line 66 of file diracdec.c.
Referenced by alloc_sequence_buffers(), and init_planes().
Definition at line 69 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 409 of file diracdec.c.
Definition at line 461 of file diracdec.c.
#define PARSE_VALUES | ( | type, | |
x, | |||
gb, | |||
ebits, | |||
buf1, | |||
buf2 | |||
) |
Definition at line 693 of file diracdec.c.
Referenced by decode_subband().
#define CHECKEDREAD | ( | dst, | |
cond, | |||
errmsg | |||
) |
Referenced by dirac_unpack_idwt_params().
#define ROLLOFF | ( | i | ) |
#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 1975 of file diracdec.c.
Referenced by dirac_decode_data_unit(), and dirac_decode_frame().
enum dirac_subband |
Enumerator | |
---|---|
subband_ll | |
subband_hl | |
subband_lh | |
subband_hh | |
subband_nb |
Definition at line 223 of file diracdec.c.
|
inlinestatic |
Definition at line 232 of file diracdec.c.
Referenced by pred_block_dc().
|
static |
Definition at line 237 of file diracdec.c.
Referenced by dirac_decode_frame(), and dirac_decode_picture_header().
|
static |
Definition at line 255 of file diracdec.c.
Referenced by dirac_decode_frame(), and dirac_decode_picture_header().
|
static |
Definition at line 266 of file diracdec.c.
Referenced by dirac_decode_data_unit().
|
static |
Definition at line 304 of file diracdec.c.
Referenced by dirac_decode_data_unit().
|
static |
Definition at line 333 of file diracdec.c.
Referenced by dirac_decode_data_unit(), and dirac_decode_flush().
|
static |
Definition at line 365 of file diracdec.c.
|
static |
Definition at line 389 of file diracdec.c.
Referenced by dirac_decode_end().
|
static |
Definition at line 397 of file diracdec.c.
|
inlinestatic |
Definition at line 411 of file diracdec.c.
Referenced by codeblock().
|
inlinestatic |
Decode the coeffs in the rectangle defined by left, right, top, bottom [DIRAC_STD] 13.4.3.2 Codeblock unpacking loop.
Definition at line 497 of file diracdec.c.
Referenced by decode_subband_internal().
|
static |
Dirac Specification -> 13.4.2 Non-skipped subbands.
subband_coeffs()
Definition at line 602 of file diracdec.c.
Referenced by decode_subband_arith(), and decode_subband_golomb().
|
static |
Definition at line 640 of file diracdec.c.
Referenced by decode_component().
|
static |
Definition at line 647 of file diracdec.c.
Referenced by decode_component().
|
static |
Dirac Specification -> [DIRAC_STD] 13.4.1 core_transform_data()
Definition at line 659 of file diracdec.c.
Referenced by dirac_decode_frame_internal().
|
static |
Definition at line 705 of file diracdec.c.
Referenced by decode_hq_slice(), and decode_lowdelay_slice().
|
static |
Dirac Specification -> 13.5.2 Slices.
slice(sx,sy)
Definition at line 766 of file diracdec.c.
Referenced by decode_lowdelay().
|
static |
VC-2 Specification -> 13.5.3 hq_slice(sx,sy)
Definition at line 808 of file diracdec.c.
Referenced by decode_lowdelay().
|
static |
Dirac Specification -> 13.5.1 low_delay_transform_data()
Definition at line 854 of file diracdec.c.
Referenced by dirac_decode_frame_internal().
|
static |
Definition at line 940 of file diracdec.c.
Referenced by dirac_decode_picture_header().
|
static |
Unpack the motion compensation parameters Dirac Specification -> 11.2 Picture prediction data.
picture_prediction()
Definition at line 994 of file diracdec.c.
Referenced by dirac_decode_picture_header().
|
static |
Dirac Specification -> 11.3 Wavelet transform data.
wavelet_transform()
Definition at line 1113 of file diracdec.c.
Referenced by dirac_decode_picture_header().
|
inlinestatic |
Definition at line 1200 of file diracdec.c.
Referenced by dirac_unpack_block_motion_data().
|
inlinestatic |
Definition at line 1214 of file diracdec.c.
Referenced by decode_block_params().
|
inlinestatic |
Definition at line 1230 of file diracdec.c.
Referenced by decode_block_params().
|
inlinestatic |
Definition at line 1263 of file diracdec.c.
Referenced by decode_block_params(), decode_q_branch(), encode_q_branch(), encode_q_branch2(), and get_block_bits().
|
static |
Definition at line 1299 of file diracdec.c.
Referenced by decode_block_params().
|
static |
Definition at line 1315 of file diracdec.c.
Referenced by dirac_unpack_block_motion_data().
|
static |
Copies the current block to the other blocks covered by the current superblock split mode.
Definition at line 1355 of file diracdec.c.
Referenced by dirac_unpack_block_motion_data().
|
static |
Dirac Specification ->
Definition at line 1374 of file diracdec.c.
Referenced by dirac_decode_picture_header().
|
static |
Definition at line 1429 of file diracdec.c.
Referenced by apply_delogo(), check_decorrelate_stereo(), dv_init_enc_block(), encode_mb_internal(), ff_h264_biweight_pixels4_8_mmi(), ff_h264_weight_pixels16_8_mmi(), ff_lpc_calc_coefs(), ff_lpc_calc_ref_coefs_f(), find_form_factor(), 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(), lsp_quantize(), mc_block(), silk_decode_lpc(), and try_8x8basis_TMPL().
|
static |
Definition at line 1441 of file diracdec.c.
Referenced by init_obmc_weight().
|
static |
Definition at line 1455 of file diracdec.c.
Referenced by init_obmc_weights().
|
static |
Definition at line 1474 of file diracdec.c.
Referenced by dirac_decode_frame_internal().
|
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.
Definition at line 1514 of file diracdec.c.
Referenced by block_mc().
|
static |
Definition at line 1609 of file diracdec.c.
Referenced by block_mc().
|
static |
Definition at line 1625 of file diracdec.c.
Referenced by mc_row().
|
static |
Definition at line 1661 of file diracdec.c.
Referenced by dirac_decode_frame_internal().
|
static |
Definition at line 1677 of file diracdec.c.
Referenced by dirac_decode_frame_internal().
|
static |
Definition at line 1697 of file diracdec.c.
Referenced by dirac_decode_frame_internal().
|
static |
Dirac Specification -> 13.0 Transform data syntax.
transform_data()
Definition at line 1738 of file diracdec.c.
Referenced by dirac_decode_data_unit().
|
static |
Definition at line 1831 of file diracdec.c.
Referenced by dirac_decode_data_unit(), and dirac_decode_picture_header().
|
static |
Dirac Specification -> 11.1.1 Picture Header.
picture_header()
Definition at line 1858 of file diracdec.c.
Referenced by dirac_decode_data_unit().
|
static |
Definition at line 1944 of file diracdec.c.
Referenced by dirac_decode_frame().
|
static |
Definition at line 1979 of file diracdec.c.
Referenced by dirac_decode_frame().
|
static |
Definition at line 2114 of file diracdec.c.
|
static |
Definition at line 1487 of file diracdec.c.
Referenced by mc_subpel().
AVCodec ff_dirac_decoder |
Definition at line 2210 of file diracdec.c.