FFmpeg
Data Structures | Macros | Functions | Variables
dxv.c File Reference
#include <stdint.h>
#include "libavutil/imgutils.h"
#include "mathops.h"
#include "avcodec.h"
#include "bytestream.h"
#include "internal.h"
#include "lzf.h"
#include "texturedsp.h"
#include "thread.h"

Go to the source code of this file.

Data Structures

struct  DXVContext
 
struct  OpcodeTable
 

Macros

#define CHECKPOINT(x)
 

Functions

static void decompress_indices (uint8_t *dst, const uint8_t *src)
 
static int extract_component (int yo0, int yo1, int code)
 
static int cocg_block (uint8_t *plane0, ptrdiff_t stride0, uint8_t *plane1, ptrdiff_t stride1, const uint8_t *block)
 
static void yao_subblock (uint8_t *dst, uint8_t *yo_indices, ptrdiff_t stride, const uint8_t *block)
 
static int yo_block (uint8_t *dst, ptrdiff_t stride, uint8_t *unused0, ptrdiff_t unused1, const uint8_t *block)
 
static int yao_block (uint8_t *plane0, ptrdiff_t stride0, uint8_t *plane3, ptrdiff_t stride1, const uint8_t *block)
 
static int decompress_texture_thread (AVCodecContext *avctx, void *arg, int slice, int thread_nb)
 
static int dxv_decompress_dxt1 (AVCodecContext *avctx)
 
static int fill_ltable (GetByteContext *gb, uint32_t *table, int *nb_elements)
 
static int fill_optable (unsigned *table0, OpcodeTable *table1, int nb_elements)
 
static int get_opcodes (GetByteContext *gb, uint32_t *table, uint8_t *dst, int op_size, int nb_elements)
 
static int dxv_decompress_opcodes (GetByteContext *gb, void *dstp, size_t op_size)
 
static int dxv_decompress_cgo (DXVContext *ctx, GetByteContext *gb, uint8_t *tex_data, int tex_size, uint8_t *op_data, int *oindex, int op_size, uint8_t **dstp, int *statep, uint8_t **tab0, uint8_t **tab1, int offset)
 
static int dxv_decompress_cocg (DXVContext *ctx, GetByteContext *gb, uint8_t *tex_data, int tex_size, uint8_t *op_data0, uint8_t *op_data1, int max_op_size0, int max_op_size1)
 
static int dxv_decompress_yo (DXVContext *ctx, GetByteContext *gb, uint8_t *tex_data, int tex_size, uint8_t *op_data, int max_op_size)
 
static int dxv_decompress_ycg6 (AVCodecContext *avctx)
 
static int dxv_decompress_yg10 (AVCodecContext *avctx)
 
static int dxv_decompress_dxt5 (AVCodecContext *avctx)
 
static int dxv_decompress_lzf (AVCodecContext *avctx)
 
static int dxv_decompress_raw (AVCodecContext *avctx)
 
static int dxv_decode (AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
 
static int dxv_init (AVCodecContext *avctx)
 
static int dxv_close (AVCodecContext *avctx)
 

Variables

AVCodec ff_dxv_decoder
 

Macro Definition Documentation

#define CHECKPOINT (   x)
Value:
do { \
if (state == 0) { \
value = bytestream2_get_le32(gbc); \
state = 16; \
} \
op = value & 0x3; \
value >>= 2; \
state--; \
switch (op) { \
case 1: \
idx = x; \
break; \
case 2: \
idx = (bytestream2_get_byte(gbc) + 2) * x; \
if (idx > pos) { \
av_log(avctx, AV_LOG_ERROR, "idx %d > %d\n", idx, pos); \
} \
break; \
case 3: \
idx = (bytestream2_get_le16(gbc) + 0x102) * x; \
if (idx > pos) { \
av_log(avctx, AV_LOG_ERROR, "idx %d > %d\n", idx, pos); \
} \
break; \
} \
} while(0)
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
Definition: error.h:59
GLsizei GLboolean const GLfloat * value
Definition: opengl_enc.c:108
#define av_log(a,...)
static av_always_inline int bytestream2_get_bytes_left(GetByteContext *g)
Definition: bytestream.h:154
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition: log.h:194
unsigned int pos
Definition: spdifenc.c:410
static struct @318 state
if(ret)
static int op(uint8_t **dst, const uint8_t *dst_end, GetByteContext *gb, int pixel, int count, int *x, int width, int linesize)
Perform decode operation.
Definition: anm.c:75
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several the filter must be ready for frames arriving randomly on any input any filter with several inputs will most likely require some kind of queuing mechanism It is perfectly acceptable to have a limited queue and to drop frames when the inputs are too unbalanced request_frame For filters that do not use the this method is called when a frame is wanted on an output For a it should directly call filter_frame on the corresponding output For a if there are queued frames already one of these frames should be pushed If the filter should request a frame on one of its repeatedly until at least one frame has been pushed Return or at least make progress towards producing a it should return

Definition at line 256 of file dxv.c.

Referenced by dxv_decompress_dxt1(), and dxv_decompress_dxt5().

Function Documentation

static void decompress_indices ( uint8_t dst,
const uint8_t src 
)
static

Definition at line 66 of file dxv.c.

Referenced by cocg_block(), and yao_subblock().

static int extract_component ( int  yo0,
int  yo1,
int  code 
)
static

Definition at line 82 of file dxv.c.

Referenced by cocg_block(), and yao_subblock().

static int cocg_block ( uint8_t plane0,
ptrdiff_t  stride0,
uint8_t plane1,
ptrdiff_t  stride1,
const uint8_t block 
)
static

Definition at line 111 of file dxv.c.

Referenced by dxv_decode().

static void yao_subblock ( uint8_t dst,
uint8_t yo_indices,
ptrdiff_t  stride,
const uint8_t block 
)
static

Definition at line 141 of file dxv.c.

Referenced by yao_block(), and yo_block().

static int yo_block ( uint8_t dst,
ptrdiff_t  stride,
uint8_t unused0,
ptrdiff_t  unused1,
const uint8_t block 
)
static

Definition at line 160 of file dxv.c.

Referenced by dxv_decode().

static int yao_block ( uint8_t plane0,
ptrdiff_t  stride0,
uint8_t plane3,
ptrdiff_t  stride1,
const uint8_t block 
)
static

Definition at line 174 of file dxv.c.

Referenced by dxv_decode().

static int decompress_texture_thread ( AVCodecContext avctx,
void arg,
int  slice,
int  thread_nb 
)
static

Definition at line 193 of file dxv.c.

Referenced by dxv_decode().

static int dxv_decompress_dxt1 ( AVCodecContext avctx)
static

Definition at line 288 of file dxv.c.

Referenced by dxv_decode().

static int fill_ltable ( GetByteContext gb,
uint32_t *  table,
int nb_elements 
)
static

Definition at line 343 of file dxv.c.

Referenced by dxv_decompress_opcodes().

static int fill_optable ( unsigned *  table0,
OpcodeTable table1,
int  nb_elements 
)
static

Definition at line 387 of file dxv.c.

Referenced by get_opcodes().

static int get_opcodes ( GetByteContext gb,
uint32_t *  table,
uint8_t dst,
int  op_size,
int  nb_elements 
)
static

Definition at line 428 of file dxv.c.

Referenced by dxv_decompress_opcodes().

static int dxv_decompress_opcodes ( GetByteContext gb,
void dstp,
size_t  op_size 
)
static

Definition at line 470 of file dxv.c.

Referenced by dxv_decompress_cocg(), and dxv_decompress_yo().

static int dxv_decompress_cgo ( DXVContext ctx,
GetByteContext gb,
uint8_t tex_data,
int  tex_size,
uint8_t op_data,
int oindex,
int  op_size,
uint8_t **  dstp,
int statep,
uint8_t **  tab0,
uint8_t **  tab1,
int  offset 
)
static

Definition at line 495 of file dxv.c.

Referenced by dxv_decompress_cocg(), and dxv_decompress_yo().

static int dxv_decompress_cocg ( DXVContext ctx,
GetByteContext gb,
uint8_t tex_data,
int  tex_size,
uint8_t op_data0,
uint8_t op_data1,
int  max_op_size0,
int  max_op_size1 
)
static

Definition at line 735 of file dxv.c.

Referenced by dxv_decompress_ycg6(), and dxv_decompress_yg10().

static int dxv_decompress_yo ( DXVContext ctx,
GetByteContext gb,
uint8_t tex_data,
int  tex_size,
uint8_t op_data,
int  max_op_size 
)
static

Definition at line 791 of file dxv.c.

Referenced by dxv_decompress_ycg6().

static int dxv_decompress_ycg6 ( AVCodecContext avctx)
static

Definition at line 833 of file dxv.c.

Referenced by dxv_decode().

static int dxv_decompress_yg10 ( AVCodecContext avctx)
static

Definition at line 849 of file dxv.c.

Referenced by dxv_decode().

static int dxv_decompress_dxt5 ( AVCodecContext avctx)
static

Definition at line 866 of file dxv.c.

Referenced by dxv_decode().

static int dxv_decompress_lzf ( AVCodecContext avctx)
static

Definition at line 1023 of file dxv.c.

Referenced by dxv_decode().

static int dxv_decompress_raw ( AVCodecContext avctx)
static

Definition at line 1029 of file dxv.c.

Referenced by dxv_decode().

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

Definition at line 1041 of file dxv.c.

static int dxv_init ( AVCodecContext avctx)
static

Definition at line 1231 of file dxv.c.

static int dxv_close ( AVCodecContext avctx)
static

Definition at line 1251 of file dxv.c.

Variable Documentation

AVCodec ff_dxv_decoder
Initial value:
= {
.name = "dxv",
.long_name = NULL_IF_CONFIG_SMALL("Resolume DXV"),
.init = dxv_init,
.decode = dxv_decode,
.close = dxv_close,
.priv_data_size = sizeof(DXVContext),
.capabilities = AV_CODEC_CAP_DR1 |
.caps_internal = FF_CODEC_CAP_INIT_THREADSAFE |
}
#define FF_CODEC_CAP_INIT_CLEANUP
The codec allows calling the close function for deallocation even if the init function returned a fai...
Definition: internal.h:48
#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: internal.h:40
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:153
static int dxv_close(AVCodecContext *avctx)
Definition: dxv.c:1251
#define AV_CODEC_CAP_FRAME_THREADS
Codec supports frame-level multithreading.
Definition: codec.h:106
Definition: dxv.c:35
#define AV_CODEC_CAP_SLICE_THREADS
Codec supports slice-based (or partition-based) multithreading.
Definition: codec.h:110
static int dxv_init(AVCodecContext *avctx)
Definition: dxv.c:1231
static int dxv_decode(AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
Definition: dxv.c:1041
#define AV_CODEC_CAP_DR1
Codec uses get_buffer() for allocating buffers and supports custom allocators.
Definition: codec.h:50

Definition at line 1265 of file dxv.c.