FFmpeg
Data Structures | Macros | Typedefs | Functions | Variables
interplayacm.c File Reference
#include "libavutil/intreadwrite.h"
#include "libavutil/mem.h"
#include "libavutil/thread.h"
#include "avcodec.h"
#include "codec_internal.h"
#include "decode.h"
#include "get_bits.h"

Go to the source code of this file.

Data Structures

struct  InterplayACMContext
 

Macros

#define BITSTREAM_READER_LE
 
#define set_pos(s, r, c, idx)
 

Typedefs

typedef int(* filler) (InterplayACMContext *s, unsigned ind, unsigned col)
 

Functions

static av_cold void decode_init_static (void)
 
static av_cold int decode_init (AVCodecContext *avctx)
 
static int zero (InterplayACMContext *s, unsigned ind, unsigned col)
 
static int bad (InterplayACMContext *s, unsigned ind, unsigned col)
 
static int linear (InterplayACMContext *s, unsigned ind, unsigned col)
 
static int k13 (InterplayACMContext *s, unsigned ind, unsigned col)
 
static int k12 (InterplayACMContext *s, unsigned ind, unsigned col)
 
static int k24 (InterplayACMContext *s, unsigned ind, unsigned col)
 
static int k23 (InterplayACMContext *s, unsigned ind, unsigned col)
 
static int k35 (InterplayACMContext *s, unsigned ind, unsigned col)
 
static int k34 (InterplayACMContext *s, unsigned ind, unsigned col)
 
static int k45 (InterplayACMContext *s, unsigned ind, unsigned col)
 
static int k44 (InterplayACMContext *s, unsigned ind, unsigned col)
 
static int t15 (InterplayACMContext *s, unsigned ind, unsigned col)
 
static int t27 (InterplayACMContext *s, unsigned ind, unsigned col)
 
static int t37 (InterplayACMContext *s, unsigned ind, unsigned col)
 
static int fill_block (InterplayACMContext *s)
 
static void juggle (int *wrap_p, int *block_p, unsigned sub_len, unsigned sub_count)
 
static void juggle_block (InterplayACMContext *s)
 
static int decode_block (InterplayACMContext *s)
 
static int decode_frame (AVCodecContext *avctx, AVFrame *frame, int *got_frame_ptr, AVPacket *pkt)
 
static av_cold int decode_close (AVCodecContext *avctx)
 

Variables

static const int8_t map_1bit [] = { -1, +1 }
 
static const int8_t map_2bit_near [] = { -2, -1, +1, +2 }
 
static const int8_t map_2bit_far [] = { -3, -2, +2, +3 }
 
static const int8_t map_3bit [] = { -4, -3, -2, -1, +1, +2, +3, +4 }
 
static int mul_3x3 [3 *3 *3]
 
static int mul_3x5 [5 *5 *5]
 
static int mul_2x11 [11 *11]
 
static const filler filler_list []
 
const FFCodec ff_interplay_acm_decoder
 

Macro Definition Documentation

◆ BITSTREAM_READER_LE

#define BITSTREAM_READER_LE

Definition at line 25 of file interplayacm.c.

◆ set_pos

#define set_pos (   s,
  r,
  c,
  idx 
)
Value:
do { \
unsigned pos = ((r) << s->level) + (c); \
s->block[pos] = s->midbuf[(idx)]; \
} while (0)

Definition at line 116 of file interplayacm.c.

Typedef Documentation

◆ filler

typedef int(* filler) (InterplayACMContext *s, unsigned ind, unsigned col)

Definition at line 421 of file interplayacm.c.

Function Documentation

◆ decode_init_static()

static av_cold void decode_init_static ( void  )
static

Definition at line 62 of file interplayacm.c.

Referenced by decode_init().

◆ decode_init()

static av_cold int decode_init ( AVCodecContext avctx)
static

Definition at line 77 of file interplayacm.c.

◆ zero()

static int zero ( InterplayACMContext s,
unsigned  ind,
unsigned  col 
)
static

Definition at line 121 of file interplayacm.c.

◆ bad()

static int bad ( InterplayACMContext s,
unsigned  ind,
unsigned  col 
)
static

Definition at line 130 of file interplayacm.c.

Referenced by amv_init().

◆ linear()

static int linear ( InterplayACMContext s,
unsigned  ind,
unsigned  col 
)
static

Definition at line 135 of file interplayacm.c.

Referenced by resample_init().

◆ k13()

static int k13 ( InterplayACMContext s,
unsigned  ind,
unsigned  col 
)
static

Definition at line 148 of file interplayacm.c.

◆ k12()

static int k12 ( InterplayACMContext s,
unsigned  ind,
unsigned  col 
)
static

Definition at line 173 of file interplayacm.c.

◆ k24()

static int k24 ( InterplayACMContext s,
unsigned  ind,
unsigned  col 
)
static

Definition at line 191 of file interplayacm.c.

◆ k23()

static int k23 ( InterplayACMContext s,
unsigned  ind,
unsigned  col 
)
static

Definition at line 217 of file interplayacm.c.

◆ k35()

static int k35 ( InterplayACMContext s,
unsigned  ind,
unsigned  col 
)
static

Definition at line 235 of file interplayacm.c.

◆ k34()

static int k34 ( InterplayACMContext s,
unsigned  ind,
unsigned  col 
)
static

Definition at line 269 of file interplayacm.c.

◆ k45()

static int k45 ( InterplayACMContext s,
unsigned  ind,
unsigned  col 
)
static

Definition at line 294 of file interplayacm.c.

◆ k44()

static int k44 ( InterplayACMContext s,
unsigned  ind,
unsigned  col 
)
static

Definition at line 321 of file interplayacm.c.

◆ t15()

static int t15 ( InterplayACMContext s,
unsigned  ind,
unsigned  col 
)
static

◆ t27()

static int t27 ( InterplayACMContext s,
unsigned  ind,
unsigned  col 
)
static

Definition at line 368 of file interplayacm.c.

Referenced by itxfm_wrap().

◆ t37()

static int t37 ( InterplayACMContext s,
unsigned  ind,
unsigned  col 
)
static

Definition at line 397 of file interplayacm.c.

◆ fill_block()

static int fill_block ( InterplayACMContext s)
static

Definition at line 434 of file interplayacm.c.

Referenced by decode_block().

◆ juggle()

static void juggle ( int wrap_p,
int block_p,
unsigned  sub_len,
unsigned  sub_count 
)
static

Definition at line 449 of file interplayacm.c.

Referenced by juggle_block().

◆ juggle_block()

static void juggle_block ( InterplayACMContext s)
static

Definition at line 476 of file interplayacm.c.

Referenced by decode_block().

◆ decode_block()

static int decode_block ( InterplayACMContext s)
static

Definition at line 529 of file interplayacm.c.

Referenced by decode_frame().

◆ decode_frame()

static int decode_frame ( AVCodecContext avctx,
AVFrame frame,
int got_frame_ptr,
AVPacket pkt 
)
static

Definition at line 558 of file interplayacm.c.

◆ decode_close()

static av_cold int decode_close ( AVCodecContext avctx)
static

Definition at line 625 of file interplayacm.c.

Variable Documentation

◆ map_1bit

const int8_t map_1bit[] = { -1, +1 }
static

Definition at line 31 of file interplayacm.c.

Referenced by k12(), k13(), k34(), and k35().

◆ map_2bit_near

const int8_t map_2bit_near[] = { -2, -1, +1, +2 }
static

Definition at line 32 of file interplayacm.c.

Referenced by k23(), and k24().

◆ map_2bit_far

const int8_t map_2bit_far[] = { -3, -2, +2, +3 }
static

Definition at line 33 of file interplayacm.c.

Referenced by k34(), and k35().

◆ map_3bit

const int8_t map_3bit[] = { -4, -3, -2, -1, +1, +2, +3, +4 }
static

Definition at line 34 of file interplayacm.c.

Referenced by k44(), and k45().

◆ mul_3x3

int mul_3x3[3 *3 *3]
static

Definition at line 36 of file interplayacm.c.

Referenced by decode_init_static(), and t15().

◆ mul_3x5

int mul_3x5[5 *5 *5]
static

Definition at line 37 of file interplayacm.c.

Referenced by decode_init_static(), and t27().

◆ mul_2x11

int mul_2x11[11 * 11]
static

Definition at line 38 of file interplayacm.c.

Referenced by decode_init_static(), and t37().

◆ filler_list

const filler filler_list[]
static
Initial value:

Definition at line 423 of file interplayacm.c.

Referenced by fill_block().

◆ ff_interplay_acm_decoder

const FFCodec ff_interplay_acm_decoder
Initial value:
= {
.p.name = "interplayacm",
CODEC_LONG_NAME("Interplay ACM"),
.p.type = AVMEDIA_TYPE_AUDIO,
.init = decode_init,
.close = decode_close,
.p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_DR1,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
.priv_data_size = sizeof(InterplayACMContext),
}

Definition at line 638 of file interplayacm.c.

FF_CODEC_CAP_INIT_CLEANUP
#define FF_CODEC_CAP_INIT_CLEANUP
The codec allows calling the close function for deallocation even if the init function returned a fai...
Definition: codec_internal.h:42
r
const char * r
Definition: vf_curves.c:127
k45
static int k45(InterplayACMContext *s, unsigned ind, unsigned col)
Definition: interplayacm.c:294
AV_CODEC_ID_INTERPLAY_ACM
@ AV_CODEC_ID_INTERPLAY_ACM
Definition: codec_id.h:518
decode_frame
static int decode_frame(AVCodecContext *avctx, AVFrame *frame, int *got_frame_ptr, AVPacket *pkt)
Definition: interplayacm.c:558
linear
static int linear(InterplayACMContext *s, unsigned ind, unsigned col)
Definition: interplayacm.c:135
k44
static int k44(InterplayACMContext *s, unsigned ind, unsigned col)
Definition: interplayacm.c:321
t15
static int t15(InterplayACMContext *s, unsigned ind, unsigned col)
Definition: interplayacm.c:339
FF_CODEC_DECODE_CB
#define FF_CODEC_DECODE_CB(func)
Definition: codec_internal.h:287
s
#define s(width, name)
Definition: cbs_vp9.c:198
AVMEDIA_TYPE_AUDIO
@ AVMEDIA_TYPE_AUDIO
Definition: avutil.h:202
k35
static int k35(InterplayACMContext *s, unsigned ind, unsigned col)
Definition: interplayacm.c:235
k34
static int k34(InterplayACMContext *s, unsigned ind, unsigned col)
Definition: interplayacm.c:269
CODEC_LONG_NAME
#define CODEC_LONG_NAME(str)
Definition: codec_internal.h:272
decode_init
static av_cold int decode_init(AVCodecContext *avctx)
Definition: interplayacm.c:77
k12
static int k12(InterplayACMContext *s, unsigned ind, unsigned col)
Definition: interplayacm.c:173
decode_close
static av_cold int decode_close(AVCodecContext *avctx)
Definition: interplayacm.c:625
InterplayACMContext
Definition: interplayacm.c:40
c
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
Definition: undefined.txt:32
AV_CODEC_CAP_DR1
#define AV_CODEC_CAP_DR1
Codec uses get_buffer() or get_encode_buffer() for allocating buffers and supports custom allocators.
Definition: codec.h:52
t27
static int t27(InterplayACMContext *s, unsigned ind, unsigned col)
Definition: interplayacm.c:368
zero
static int zero(InterplayACMContext *s, unsigned ind, unsigned col)
Definition: interplayacm.c:121
k23
static int k23(InterplayACMContext *s, unsigned ind, unsigned col)
Definition: interplayacm.c:217
pos
unsigned int pos
Definition: spdifenc.c:414
t37
static int t37(InterplayACMContext *s, unsigned ind, unsigned col)
Definition: interplayacm.c:397
k13
static int k13(InterplayACMContext *s, unsigned ind, unsigned col)
Definition: interplayacm.c:148
AV_CODEC_CAP_DELAY
#define AV_CODEC_CAP_DELAY
Encoder or decoder requires flushing with NULL input at the end in order to give the complete and cor...
Definition: codec.h:76
bad
static int bad(InterplayACMContext *s, unsigned ind, unsigned col)
Definition: interplayacm.c:130
k24
static int k24(InterplayACMContext *s, unsigned ind, unsigned col)
Definition: interplayacm.c:191