libavcodec/smacker.c File Reference

Smacker decoder. More...

#include <stdio.h>
#include <stdlib.h>
#include "libavutil/channel_layout.h"
#include "avcodec.h"
#include "internal.h"
#include "mathops.h"
#include "get_bits.h"
#include "bytestream.h"
Include dependency graph for libavcodec/smacker.c:

Go to the source code of this file.

Data Structures

struct  SmackVContext
 
struct  HuffContext
 Context used for code reconstructing. More...
 
struct  DBCtx
 

Macros

#define BITSTREAM_READER_LE
 
#define SMKTREE_BITS   9
 
#define SMK_NODE   0x80000000
 

Typedefs

typedef struct SmackVContext SmackVContext
 
typedef struct HuffContext HuffContext
 Context used for code reconstructing. More...
 
typedef struct DBCtx DBCtx
 

Enumerations

enum  SmkBlockTypes { SMK_BLK_MONO = 0, SMK_BLK_FULL = 1, SMK_BLK_SKIP = 2, SMK_BLK_FILL = 3 }
 

Functions

static int smacker_decode_tree (GetBitContext *gb, HuffContext *hc, uint32_t prefix, int length)
 Decode local frame tree. More...
 
static int smacker_decode_bigtree (GetBitContext *gb, HuffContext *hc, DBCtx *ctx)
 Decode header tree. More...
 
static int smacker_decode_header_tree (SmackVContext *smk, GetBitContext *gb, int **recodes, int *last, int size)
 Store large tree as FFmpeg's vlc codes. More...
 
static int decode_header_trees (SmackVContext *smk)
 
static av_always_inline void last_reset (int *recode, int *last)
 
static av_always_inline int smk_get_code (GetBitContext *gb, int *recode, int *last)
 
static int decode_frame (AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
 
static av_cold int decode_init (AVCodecContext *avctx)
 
static av_cold int decode_end (AVCodecContext *avctx)
 
static av_cold int smka_decode_init (AVCodecContext *avctx)
 
static int smka_decode_frame (AVCodecContext *avctx, void *data, int *got_frame_ptr, AVPacket *avpkt)
 Decode Smacker audio data. More...
 

Variables

static const int block_runs [64]
 
AVCodec ff_smacker_decoder
 
AVCodec ff_smackaud_decoder
 

Detailed Description

Smacker decoder.

Definition in file libavcodec/smacker.c.

Macro Definition Documentation

#define BITSTREAM_READER_LE

Definition at line 39 of file libavcodec/smacker.c.

#define SMK_NODE   0x80000000

Definition at line 44 of file libavcodec/smacker.c.

Referenced by smacker_decode_bigtree(), and smk_get_code().

#define SMKTREE_BITS   9

Typedef Documentation

typedef struct DBCtx DBCtx
typedef struct HuffContext HuffContext

Context used for code reconstructing.

typedef struct SmackVContext SmackVContext

Enumeration Type Documentation

Enumerator
SMK_BLK_MONO 
SMK_BLK_FULL 
SMK_BLK_SKIP 
SMK_BLK_FILL 

Definition at line 89 of file libavcodec/smacker.c.

Function Documentation

static av_cold int decode_end ( AVCodecContext avctx)
static

Definition at line 556 of file libavcodec/smacker.c.

static int decode_frame ( AVCodecContext avctx,
void data,
int *  got_frame,
AVPacket avpkt 
)
static

Definition at line 368 of file libavcodec/smacker.c.

static int decode_header_trees ( SmackVContext smk)
static

Definition at line 293 of file libavcodec/smacker.c.

Referenced by decode_init().

static av_cold int decode_init ( AVCodecContext avctx)
static

Definition at line 528 of file libavcodec/smacker.c.

static av_always_inline void last_reset ( int *  recode,
int *  last 
)
static

Definition at line 344 of file libavcodec/smacker.c.

Referenced by decode_frame().

static int smacker_decode_bigtree ( GetBitContext gb,
HuffContext hc,
DBCtx ctx 
)
static

Decode header tree.

Definition at line 134 of file libavcodec/smacker.c.

Referenced by smacker_decode_header_tree().

static int smacker_decode_header_tree ( SmackVContext smk,
GetBitContext gb,
int **  recodes,
int *  last,
int  size 
)
static

Store large tree as FFmpeg's vlc codes.

Definition at line 179 of file libavcodec/smacker.c.

Referenced by decode_header_trees().

static int smacker_decode_tree ( GetBitContext gb,
HuffContext hc,
uint32_t  prefix,
int  length 
)
static

Decode local frame tree.

Definition at line 98 of file libavcodec/smacker.c.

Referenced by smacker_decode_header_tree(), and smka_decode_frame().

static av_always_inline int smk_get_code ( GetBitContext gb,
int *  recode,
int *  last 
)
static

Definition at line 349 of file libavcodec/smacker.c.

Referenced by decode_frame().

static int smka_decode_frame ( AVCodecContext avctx,
void data,
int *  got_frame_ptr,
AVPacket avpkt 
)
static

Decode Smacker audio data.

Definition at line 586 of file libavcodec/smacker.c.

static av_cold int smka_decode_init ( AVCodecContext avctx)
static

Definition at line 571 of file libavcodec/smacker.c.

Variable Documentation

const int block_runs[64]
static
Initial value:
= {
1, 2, 3, 4, 5, 6, 7, 8,
9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, 40,
41, 42, 43, 44, 45, 46, 47, 48,
49, 50, 51, 52, 53, 54, 55, 56,
57, 58, 59, 128, 256, 512, 1024, 2048 }

Definition at line 79 of file libavcodec/smacker.c.

Referenced by decode_frame().

AVCodec ff_smackaud_decoder
Initial value:
= {
.name = "smackaud",
.decode = smka_decode_frame,
.capabilities = CODEC_CAP_DR1,
.long_name = NULL_IF_CONFIG_SMALL("Smacker audio"),
}
static av_cold int smka_decode_init(AVCodecContext *avctx)
#define CODEC_CAP_DR1
Codec uses get_buffer() for allocating buffers and supports custom allocators.
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
static int smka_decode_frame(AVCodecContext *avctx, void *data, int *got_frame_ptr, AVPacket *avpkt)
Decode Smacker audio data.

Definition at line 774 of file libavcodec/smacker.c.

AVCodec ff_smacker_decoder
Initial value:
= {
.name = "smackvid",
.priv_data_size = sizeof(SmackVContext),
.capabilities = CODEC_CAP_DR1,
.long_name = NULL_IF_CONFIG_SMALL("Smacker video"),
}
static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
static av_cold int init(AVCodecContext *avctx)
Definition: avrndec.c:35
static av_cold int decode_init(AVCodecContext *avctx)
#define CODEC_CAP_DR1
Codec uses get_buffer() for allocating buffers and supports custom allocators.
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
static av_cold int decode_end(AVCodecContext *avctx)
static void close(AVCodecParserContext *s)
Definition: h264_parser.c:375
struct SmackVContext SmackVContext
static int decode(AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
Definition: crystalhd.c:868

Definition at line 762 of file libavcodec/smacker.c.