FFmpeg
Data Structures | Macros | Enumerations | Functions | Variables
on2avc.c File Reference
#include "libavutil/channel_layout.h"
#include "libavutil/ffmath.h"
#include "libavutil/float_dsp.h"
#include "libavutil/mem_internal.h"
#include "avcodec.h"
#include "bytestream.h"
#include "codec_internal.h"
#include "fft.h"
#include "get_bits.h"
#include "internal.h"
#include "on2avcdata.h"

Go to the source code of this file.

Data Structures

struct  On2AVCContext
 

Macros

#define ON2AVC_SUBFRAME_SIZE   1024
 
#define CMUL1_R(s, t, is, it)   s[is + 0] * t[it + 0] - s[is + 1] * t[it + 1]
 
#define CMUL1_I(s, t, is, it)   s[is + 0] * t[it + 1] + s[is + 1] * t[it + 0]
 
#define CMUL2_R(s, t, is, it)   s[is + 0] * t[it + 0] + s[is + 1] * t[it + 1]
 
#define CMUL2_I(s, t, is, it)   s[is + 0] * t[it + 1] - s[is + 1] * t[it + 0]
 
#define CMUL0(dst, id, s0, s1, s2, s3, t0, t1, t2, t3, is, it)
 
#define CMUL1(dst, s0, s1, s2, s3, t0, t1, t2, t3, is, it)
 
#define CMUL2(dst, s0, s1, s2, s3, t0, t1, t2, t3, is, it)
 

Enumerations

enum  WindowTypes {
  WINDOW_TYPE_LONG = 0, WINDOW_TYPE_LONG_STOP, WINDOW_TYPE_LONG_START, WINDOW_TYPE_8SHORT = 3,
  WINDOW_TYPE_EXT4, WINDOW_TYPE_EXT5, WINDOW_TYPE_EXT6, WINDOW_TYPE_EXT7
}
 

Functions

static void on2avc_read_ms_info (On2AVCContext *c, GetBitContext *gb)
 
static int on2avc_decode_band_types (On2AVCContext *c, GetBitContext *gb)
 
static int on2avc_decode_band_scales (On2AVCContext *c, GetBitContext *gb)
 
static float on2avc_scale (int v, float scale)
 
static int on2avc_decode_quads (On2AVCContext *c, GetBitContext *gb, float *dst, int dst_size, int type, float band_scale)
 
static int get_egolomb (GetBitContext *gb)
 
static int on2avc_decode_pairs (On2AVCContext *c, GetBitContext *gb, float *dst, int dst_size, int type, float band_scale)
 
static int on2avc_read_channel_data (On2AVCContext *c, GetBitContext *gb, int ch)
 
static int on2avc_apply_ms (On2AVCContext *c)
 
static void zero_head_and_tail (float *src, int len, int order0, int order1)
 
static void pretwiddle (float *src, float *dst, int dst_len, int tab_step, int step, int order0, int order1, const double *const *tabs)
 
static void twiddle (float *src1, float *src2, int src2_len, const double *tab, int tab_len, int step, int order0, int order1, const double *const *tabs)
 
static void combine_fft (float *s0, float *s1, float *s2, float *s3, float *dst, const float *t0, const float *t1, const float *t2, const float *t3, int len, int step)
 
static void wtf_end_512 (On2AVCContext *c, float *out, float *src, float *tmp0, float *tmp1)
 
static void wtf_end_1024 (On2AVCContext *c, float *out, float *src, float *tmp0, float *tmp1)
 
static void wtf_40 (On2AVCContext *c, float *out, float *src, int size)
 
static void wtf_44 (On2AVCContext *c, float *out, float *src, int size)
 
static int on2avc_reconstruct_channel_ext (On2AVCContext *c, AVFrame *dst, int offset)
 
static int on2avc_reconstruct_channel (On2AVCContext *c, int channel, AVFrame *dst, int offset)
 
static int on2avc_decode_subframe (On2AVCContext *c, const uint8_t *buf, int buf_size, AVFrame *dst, int offset)
 
static int on2avc_decode_frame (AVCodecContext *avctx, AVFrame *frame, int *got_frame_ptr, AVPacket *avpkt)
 
static av_cold void on2avc_free_vlcs (On2AVCContext *c)
 
static av_cold int on2avc_decode_init (AVCodecContext *avctx)
 
static av_cold int on2avc_decode_close (AVCodecContext *avctx)
 

Variables

const FFCodec ff_on2avc_decoder
 

Macro Definition Documentation

◆ ON2AVC_SUBFRAME_SIZE

#define ON2AVC_SUBFRAME_SIZE   1024

Definition at line 37 of file on2avc.c.

◆ CMUL1_R

#define CMUL1_R (   s,
  t,
  is,
  it 
)    s[is + 0] * t[it + 0] - s[is + 1] * t[it + 1]

Definition at line 381 of file on2avc.c.

◆ CMUL1_I

#define CMUL1_I (   s,
  t,
  is,
  it 
)    s[is + 0] * t[it + 1] + s[is + 1] * t[it + 0]

Definition at line 383 of file on2avc.c.

◆ CMUL2_R

#define CMUL2_R (   s,
  t,
  is,
  it 
)    s[is + 0] * t[it + 0] + s[is + 1] * t[it + 1]

Definition at line 385 of file on2avc.c.

◆ CMUL2_I

#define CMUL2_I (   s,
  t,
  is,
  it 
)    s[is + 0] * t[it + 1] - s[is + 1] * t[it + 0]

Definition at line 387 of file on2avc.c.

◆ CMUL0

#define CMUL0 (   dst,
  id,
  s0,
  s1,
  s2,
  s3,
  t0,
  t1,
  t2,
  t3,
  is,
  it 
)
Value:
dst[id] = s0[is] * t0[it] + s1[is] * t1[it] \
+ s2[is] * t2[it] + s3[is] * t3[it]; \
dst[id + 1] = s0[is] * t0[it + 1] + s1[is] * t1[it + 1] \
+ s2[is] * t2[it + 1] + s3[is] * t3[it + 1];

Definition at line 390 of file on2avc.c.

◆ CMUL1

#define CMUL1 (   dst,
  s0,
  s1,
  s2,
  s3,
  t0,
  t1,
  t2,
  t3,
  is,
  it 
)
Value:
*dst++ = CMUL1_R(s0, t0, is, it) \
+ CMUL1_R(s1, t1, is, it) \
+ CMUL1_R(s2, t2, is, it) \
+ CMUL1_R(s3, t3, is, it); \
*dst++ = CMUL1_I(s0, t0, is, it) \
+ CMUL1_I(s1, t1, is, it) \
+ CMUL1_I(s2, t2, is, it) \
+ CMUL1_I(s3, t3, is, it);

Definition at line 396 of file on2avc.c.

◆ CMUL2

#define CMUL2 (   dst,
  s0,
  s1,
  s2,
  s3,
  t0,
  t1,
  t2,
  t3,
  is,
  it 
)
Value:
*dst++ = CMUL2_R(s0, t0, is, it) \
+ CMUL2_R(s1, t1, is, it) \
+ CMUL2_R(s2, t2, is, it) \
+ CMUL2_R(s3, t3, is, it); \
*dst++ = CMUL2_I(s0, t0, is, it) \
+ CMUL2_I(s1, t1, is, it) \
+ CMUL2_I(s2, t2, is, it) \
+ CMUL2_I(s3, t3, is, it);

Definition at line 406 of file on2avc.c.

Enumeration Type Documentation

◆ WindowTypes

Enumerator
WINDOW_TYPE_LONG 
WINDOW_TYPE_LONG_STOP 
WINDOW_TYPE_LONG_START 
WINDOW_TYPE_8SHORT 
WINDOW_TYPE_EXT4 
WINDOW_TYPE_EXT5 
WINDOW_TYPE_EXT6 
WINDOW_TYPE_EXT7 

Definition at line 39 of file on2avc.c.

Function Documentation

◆ on2avc_read_ms_info()

static void on2avc_read_ms_info ( On2AVCContext c,
GetBitContext gb 
)
static

Definition at line 91 of file on2avc.c.

Referenced by on2avc_decode_subframe().

◆ on2avc_decode_band_types()

static int on2avc_decode_band_types ( On2AVCContext c,
GetBitContext gb 
)
static

Definition at line 112 of file on2avc.c.

Referenced by on2avc_read_channel_data().

◆ on2avc_decode_band_scales()

static int on2avc_decode_band_scales ( On2AVCContext c,
GetBitContext gb 
)
static

Definition at line 142 of file on2avc.c.

Referenced by on2avc_read_channel_data().

◆ on2avc_scale()

static float on2avc_scale ( int  v,
float  scale 
)
inlinestatic

Definition at line 189 of file on2avc.c.

Referenced by on2avc_decode_pairs(), and on2avc_decode_quads().

◆ on2avc_decode_quads()

static int on2avc_decode_quads ( On2AVCContext c,
GetBitContext gb,
float dst,
int  dst_size,
int  type,
float  band_scale 
)
static

Definition at line 195 of file on2avc.c.

Referenced by on2avc_read_channel_data().

◆ get_egolomb()

static int get_egolomb ( GetBitContext gb)
inlinestatic

Definition at line 212 of file on2avc.c.

Referenced by on2avc_decode_pairs().

◆ on2avc_decode_pairs()

static int on2avc_decode_pairs ( On2AVCContext c,
GetBitContext gb,
float dst,
int  dst_size,
int  type,
float  band_scale 
)
static

Definition at line 228 of file on2avc.c.

Referenced by on2avc_read_channel_data().

◆ on2avc_read_channel_data()

static int on2avc_read_channel_data ( On2AVCContext c,
GetBitContext gb,
int  ch 
)
static

Definition at line 256 of file on2avc.c.

Referenced by on2avc_decode_subframe().

◆ on2avc_apply_ms()

static int on2avc_apply_ms ( On2AVCContext c)
static

Definition at line 293 of file on2avc.c.

Referenced by on2avc_decode_subframe().

◆ zero_head_and_tail()

static void zero_head_and_tail ( float src,
int  len,
int  order0,
int  order1 
)
static

Definition at line 318 of file on2avc.c.

Referenced by wtf_end_1024(), and wtf_end_512().

◆ pretwiddle()

static void pretwiddle ( float src,
float dst,
int  dst_len,
int  tab_step,
int  step,
int  order0,
int  order1,
const double *const *  tabs 
)
static

Definition at line 324 of file on2avc.c.

Referenced by twiddle(), wtf_end_1024(), and wtf_end_512().

◆ twiddle()

static void twiddle ( float src1,
float src2,
int  src2_len,
const double tab,
int  tab_len,
int  step,
int  order0,
int  order1,
const double *const *  tabs 
)
static

Definition at line 351 of file on2avc.c.

Referenced by wtf_40(), and wtf_44().

◆ combine_fft()

static void combine_fft ( float s0,
float s1,
float s2,
float s3,
float dst,
const float t0,
const float t1,
const float t2,
const float t3,
int  len,
int  step 
)
static

Definition at line 416 of file on2avc.c.

Referenced by wtf_end_1024(), and wtf_end_512().

◆ wtf_end_512()

static void wtf_end_512 ( On2AVCContext c,
float out,
float src,
float tmp0,
float tmp1 
)
static

Definition at line 465 of file on2avc.c.

Referenced by wtf_40(), and wtf_44().

◆ wtf_end_1024()

static void wtf_end_1024 ( On2AVCContext c,
float out,
float src,
float tmp0,
float tmp1 
)
static

Definition at line 498 of file on2avc.c.

Referenced by wtf_40(), and wtf_44().

◆ wtf_40()

static void wtf_40 ( On2AVCContext c,
float out,
float src,
int  size 
)
static

Definition at line 531 of file on2avc.c.

Referenced by on2avc_decode_init().

◆ wtf_44()

static void wtf_44 ( On2AVCContext c,
float out,
float src,
int  size 
)
static

Definition at line 617 of file on2avc.c.

Referenced by on2avc_decode_init().

◆ on2avc_reconstruct_channel_ext()

static int on2avc_reconstruct_channel_ext ( On2AVCContext c,
AVFrame dst,
int  offset 
)
static

Definition at line 691 of file on2avc.c.

Referenced by on2avc_decode_subframe().

◆ on2avc_reconstruct_channel()

static int on2avc_reconstruct_channel ( On2AVCContext c,
int  channel,
AVFrame dst,
int  offset 
)
static

Definition at line 736 of file on2avc.c.

Referenced by on2avc_decode_subframe().

◆ on2avc_decode_subframe()

static int on2avc_decode_subframe ( On2AVCContext c,
const uint8_t *  buf,
int  buf_size,
AVFrame dst,
int  offset 
)
static

Definition at line 801 of file on2avc.c.

Referenced by on2avc_decode_frame().

◆ on2avc_decode_frame()

static int on2avc_decode_frame ( AVCodecContext avctx,
AVFrame frame,
int got_frame_ptr,
AVPacket avpkt 
)
static

Definition at line 842 of file on2avc.c.

◆ on2avc_free_vlcs()

static av_cold void on2avc_free_vlcs ( On2AVCContext c)
static

Definition at line 899 of file on2avc.c.

Referenced by on2avc_decode_close().

◆ on2avc_decode_init()

static av_cold int on2avc_decode_init ( AVCodecContext avctx)
static

Definition at line 908 of file on2avc.c.

◆ on2avc_decode_close()

static av_cold int on2avc_decode_close ( AVCodecContext avctx)
static

Definition at line 987 of file on2avc.c.

Variable Documentation

◆ ff_on2avc_decoder

const FFCodec ff_on2avc_decoder
Initial value:
= {
.p.name = "on2avc",
.p.long_name = NULL_IF_CONFIG_SMALL("On2 Audio for Video Codec"),
.p.type = AVMEDIA_TYPE_AUDIO,
.priv_data_size = sizeof(On2AVCContext),
.p.capabilities = AV_CODEC_CAP_DR1,
.p.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_FLTP,
}

Definition at line 1007 of file on2avc.c.

AV_SAMPLE_FMT_FLTP
@ AV_SAMPLE_FMT_FLTP
float, planar
Definition: samplefmt.h:66
on2avc_decode_init
static av_cold int on2avc_decode_init(AVCodecContext *avctx)
Definition: on2avc.c:908
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:39
is
The official guide to swscale for confused that is
Definition: swscale.txt:28
CMUL1_I
#define CMUL1_I(s, t, is, it)
Definition: on2avc.c:383
t0
#define t0
Definition: regdef.h:28
AV_CODEC_ID_ON2AVC
@ AV_CODEC_ID_ON2AVC
Definition: codec_id.h:492
t1
#define t1
Definition: regdef.h:29
CMUL2_R
#define CMUL2_R(s, t, is, it)
Definition: on2avc.c:385
init
static int init
Definition: av_tx.c:47
s3
#define s3
Definition: regdef.h:40
FF_CODEC_DECODE_CB
#define FF_CODEC_DECODE_CB(func)
Definition: codec_internal.h:254
AVMEDIA_TYPE_AUDIO
@ AVMEDIA_TYPE_AUDIO
Definition: avutil.h:202
s1
#define s1
Definition: regdef.h:38
s2
#define s2
Definition: regdef.h:39
on2avc_decode_close
static av_cold int on2avc_decode_close(AVCodecContext *avctx)
Definition: on2avc.c:987
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
NULL_IF_CONFIG_SMALL
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
Definition: internal.h:117
id
enum AVCodecID id
Definition: extract_extradata_bsf.c:324
AV_SAMPLE_FMT_NONE
@ AV_SAMPLE_FMT_NONE
Definition: samplefmt.h:56
on2avc_decode_frame
static int on2avc_decode_frame(AVCodecContext *avctx, AVFrame *frame, int *got_frame_ptr, AVPacket *avpkt)
Definition: on2avc.c:842
CMUL2_I
#define CMUL2_I(s, t, is, it)
Definition: on2avc.c:387
t3
#define t3
Definition: regdef.h:31
AVSampleFormat
AVSampleFormat
Audio sample formats.
Definition: samplefmt.h:55
FF_CODEC_CAP_INIT_THREADSAFE
#define FF_CODEC_CAP_INIT_THREADSAFE
The codec does not modify any global variables in the init function, allowing to call the init functi...
Definition: codec_internal.h:31
t2
#define t2
Definition: regdef.h:30
CMUL1_R
#define CMUL1_R(s, t, is, it)
Definition: on2avc.c:381
s0
#define s0
Definition: regdef.h:37
it
s EdgeDetect Foobar g libavfilter vf_edgedetect c libavfilter vf_foobar c edit libavfilter and add an entry for foobar following the pattern of the other filters edit libavfilter allfilters and add an entry for foobar following the pattern of the other filters configure make j< whatever > ffmpeg ffmpeg i you should get a foobar png with Lena edge detected That s it
Definition: writing_filters.txt:31
On2AVCContext
Definition: on2avc.c:50