#include "avcodec.h"
#include "bytestream.h"
#include "libavutil/bswap.h"
#include "libavcodec/dsputil.h"
#include "sanm_data.h"
Go to the source code of this file.
Data Structures | |
struct | SANMVideoContext |
struct | SANMFrameHeader |
Defines | |
#define | NGLYPHS 256 |
Typedefs | |
typedef int(* | frm_decoder )(SANMVideoContext *ctx) |
Enumerations | |
enum | GlyphEdge { LEFT_EDGE, TOP_EDGE, RIGHT_EDGE, BOTTOM_EDGE, NO_EDGE } |
enum | GlyphDir { DIR_LEFT, DIR_UP, DIR_RIGHT, DIR_DOWN, NO_DIR } |
Functions | |
static enum GlyphEdge | which_edge (int x, int y, int edge_size) |
Return enum GlyphEdge of box where point (x, y) lies. | |
static enum GlyphDir | which_direction (enum GlyphEdge edge0, enum GlyphEdge edge1) |
static void | interp_point (int8_t *points, int x0, int y0, int x1, int y1, int pos, int npoints) |
Interpolate two points. | |
static void | make_glyphs (int8_t *pglyphs, const int8_t *xvec, const int8_t *yvec, const int side_length) |
Construct glyphs by iterating through vectors coordinates. | |
static void | init_sizes (SANMVideoContext *ctx, int width, int height) |
static void | destroy_buffers (SANMVideoContext *ctx) |
static av_cold int | init_buffers (SANMVideoContext *ctx) |
static void | rotate_bufs (SANMVideoContext *ctx, int rotate_code) |
static av_cold int | decode_init (AVCodecContext *avctx) |
static av_cold int | decode_end (AVCodecContext *avctx) |
static int | rle_decode (SANMVideoContext *ctx, uint8_t *dst, const int out_size) |
static int | old_codec1 (SANMVideoContext *ctx, int top, int left, int width, int height) |
static void | codec37_mv (uint8_t *dst, const uint8_t *src, int height, int stride, int x, int y) |
static int | old_codec37 (SANMVideoContext *ctx, int top, int left, int width, int height) |
static int | process_block (SANMVideoContext *ctx, uint8_t *dst, uint8_t *prev1, uint8_t *prev2, int stride, int tbl, int size) |
static int | old_codec47 (SANMVideoContext *ctx, int top, int left, int width, int height) |
static int | process_frame_obj (SANMVideoContext *ctx) |
static int | decode_0 (SANMVideoContext *ctx) |
static int | decode_nop (SANMVideoContext *ctx) |
static void | copy_block (uint16_t *pdest, uint16_t *psrc, int block_size, int pitch) |
static void | fill_block (uint16_t *pdest, uint16_t color, int block_size, int pitch) |
static int | draw_glyph (SANMVideoContext *ctx, uint16_t *dst, int index, uint16_t fg_color, uint16_t bg_color, int block_size, int pitch) |
static int | opcode_0xf7 (SANMVideoContext *ctx, int cx, int cy, int block_size, int pitch) |
static int | opcode_0xf8 (SANMVideoContext *ctx, int cx, int cy, int block_size, int pitch) |
static int | good_mvec (SANMVideoContext *ctx, int cx, int cy, int mx, int my, int block_size) |
static int | codec2subblock (SANMVideoContext *ctx, int cx, int cy, int blk_size) |
static int | decode_2 (SANMVideoContext *ctx) |
static int | decode_3 (SANMVideoContext *ctx) |
static int | decode_4 (SANMVideoContext *ctx) |
static int | decode_5 (SANMVideoContext *ctx) |
static int | decode_6 (SANMVideoContext *ctx) |
static int | decode_8 (SANMVideoContext *ctx) |
static int | read_frame_header (SANMVideoContext *ctx, SANMFrameHeader *hdr) |
static void | fill_frame (uint16_t *pbuf, int buf_size, uint16_t color) |
static int | copy_output (SANMVideoContext *ctx, SANMFrameHeader *hdr) |
static int | decode_frame (AVCodecContext *avctx, void *data, int *got_frame_ptr, AVPacket *pkt) |
Variables | |
static const frm_decoder | v1_decoders [] |
AVCodec | ff_sanm_decoder |
#define NGLYPHS 256 |
typedef int(* frm_decoder)(SANMVideoContext *ctx) |
enum GlyphDir |
enum GlyphEdge |
static int codec2subblock | ( | SANMVideoContext * | ctx, | |
int | cx, | |||
int | cy, | |||
int | blk_size | |||
) | [static] |
static int copy_output | ( | SANMVideoContext * | ctx, | |
SANMFrameHeader * | hdr | |||
) | [static] |
static int decode_0 | ( | SANMVideoContext * | ctx | ) | [static] |
static int decode_2 | ( | SANMVideoContext * | ctx | ) | [static] |
static int decode_3 | ( | SANMVideoContext * | ctx | ) | [static] |
static int decode_4 | ( | SANMVideoContext * | ctx | ) | [static] |
static int decode_5 | ( | SANMVideoContext * | ctx | ) | [static] |
static int decode_6 | ( | SANMVideoContext * | ctx | ) | [static] |
static int decode_8 | ( | SANMVideoContext * | ctx | ) | [static] |
static av_cold int decode_end | ( | AVCodecContext * | avctx | ) | [static] |
static int decode_frame | ( | AVCodecContext * | avctx, | |
void * | data, | |||
int * | got_frame_ptr, | |||
AVPacket * | pkt | |||
) | [static] |
static av_cold int decode_init | ( | AVCodecContext * | avctx | ) | [static] |
static int decode_nop | ( | SANMVideoContext * | ctx | ) | [static] |
static void destroy_buffers | ( | SANMVideoContext * | ctx | ) | [static] |
Definition at line 224 of file sanm.c.
Referenced by decode_end(), ff_vaapi_common_end_frame(), and init_buffers().
static int draw_glyph | ( | SANMVideoContext * | ctx, | |
uint16_t * | dst, | |||
int | index, | |||
uint16_t | fg_color, | |||
uint16_t | bg_color, | |||
int | block_size, | |||
int | pitch | |||
) | [static] |
static void fill_frame | ( | uint16_t * | pbuf, | |
int | buf_size, | |||
uint16_t | color | |||
) | [static] |
static av_cold int init_buffers | ( | SANMVideoContext * | ctx | ) | [static] |
static void init_sizes | ( | SANMVideoContext * | ctx, | |
int | width, | |||
int | height | |||
) | [static] |
static void make_glyphs | ( | int8_t * | pglyphs, | |
const int8_t * | xvec, | |||
const int8_t * | yvec, | |||
const int | side_length | |||
) | [static] |
Construct glyphs by iterating through vectors coordinates.
pglyphs | pointer to table where glyphs are stored | |
xvec | pointer to x component of vectors coordinates | |
yvec | pointer to y component of vectors coordinates | |
side_length | glyph width/height. |
Definition at line 159 of file sanm.c.
Referenced by decode_init().
static int process_frame_obj | ( | SANMVideoContext * | ctx | ) | [static] |
static int read_frame_header | ( | SANMVideoContext * | ctx, | |
SANMFrameHeader * | hdr | |||
) | [static] |
static int rle_decode | ( | SANMVideoContext * | ctx, | |
uint8_t * | dst, | |||
const int | out_size | |||
) | [static] |
Definition at line 307 of file sanm.c.
Referenced by decode_5(), decode_8(), old_codec37(), and old_codec47().
static void rotate_bufs | ( | SANMVideoContext * | ctx, | |
int | rotate_code | |||
) | [static] |
Return enum GlyphEdge of box where point (x, y) lies.
x | x point coordinate | |
y | y point coordinate | |
edge_size | box width/height. |
Definition at line 96 of file sanm.c.
Referenced by make_glyphs().
Initial value:
{ .name = "sanm", .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_SANM, .priv_data_size = sizeof(SANMVideoContext), .init = decode_init, .close = decode_end, .decode = decode_frame, .capabilities = CODEC_CAP_DR1, .long_name = NULL_IF_CONFIG_SMALL("LucasArts SMUSH video"), }
const frm_decoder v1_decoders[] [static] |