FFmpeg
|
Xan video decoder for Wing Commander III computer game by Mario Brito (mbrit) and Mike Melanson ( o@st udent .dei .uc.p tmelan) son@ pcisy s.ne tMore...
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "libavutil/intreadwrite.h"
#include "libavutil/mem.h"
#include "avcodec.h"
#include "bytestream.h"
#include "get_bits.h"
#include "internal.h"
Go to the source code of this file.
Data Structures | |
struct | XanContext |
Macros | |
#define | BITSTREAM_READER_LE |
#define | RUNTIME_GAMMA 0 |
#define | VGA__TAG MKTAG('V', 'G', 'A', ' ') |
#define | PALT_TAG MKTAG('P', 'A', 'L', 'T') |
#define | SHOT_TAG MKTAG('S', 'H', 'O', 'T') |
#define | PALETTE_COUNT 256 |
#define | PALETTE_SIZE (PALETTE_COUNT * 3) |
#define | PALETTES_MAX 256 |
Typedefs | |
typedef struct XanContext | XanContext |
Functions | |
static av_cold int | xan_decode_end (AVCodecContext *avctx) |
static av_cold int | xan_decode_init (AVCodecContext *avctx) |
static int | xan_huffman_decode (unsigned char *dest, int dest_len, const unsigned char *src, int src_len) |
static void | xan_unpack (unsigned char *dest, int dest_len, const unsigned char *src, int src_len) |
unpack simple compression More... | |
static void | xan_wc3_output_pixel_run (XanContext *s, AVFrame *frame, const unsigned char *pixel_buffer, int x, int y, int pixel_count) |
static void | xan_wc3_copy_pixel_run (XanContext *s, AVFrame *frame, int x, int y, int pixel_count, int motion_x, int motion_y) |
static int | xan_wc3_decode_frame (XanContext *s, AVFrame *frame) |
static int | xan_decode_frame (AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt) |
Variables | |
static const uint8_t | gamma_lookup [256] |
This is a gamma correction that xan3 applies to all palette entries. More... | |
AVCodec | ff_xan_wc3_decoder |
Detailed Description
Xan video decoder for Wing Commander III computer game by Mario Brito (mbrit) and Mike Melanson ( o@st udent .dei .uc.p tmelan) son@ pcisy s.ne t
The xan_wc3 decoder outputs PAL8 data.
Definition in file xan.c.
Macro Definition Documentation
#define PALETTE_COUNT 256 |
Definition at line 48 of file xan.c.
Referenced by xan_decode_frame().
#define PALETTE_SIZE (PALETTE_COUNT * 3) |
Definition at line 49 of file xan.c.
Referenced by xan_decode_frame().
#define PALETTES_MAX 256 |
Definition at line 50 of file xan.c.
Referenced by xan_decode_frame().
Definition at line 46 of file xan.c.
Referenced by xan_decode_frame().
Definition at line 47 of file xan.c.
Referenced by xan_decode_frame().
Definition at line 45 of file xan.c.
Referenced by xan_decode_frame().
Typedef Documentation
typedef struct XanContext XanContext |
Function Documentation
|
static |
Definition at line 627 of file xan.c.
Referenced by xan_decode_init().
|
static |
|
static |
|
static |
Definition at line 104 of file xan.c.
Referenced by xan_wc3_decode_frame().
|
static |
unpack simple compression
- Parameters
-
dest destination buffer of dest_len, must be padded with at least 130 bytes
Definition at line 142 of file xan.c.
Referenced by xan_wc3_decode_frame().
|
inlinestatic |
Definition at line 226 of file xan.c.
Referenced by xan_wc3_decode_frame().
|
static |
Definition at line 284 of file xan.c.
Referenced by xan_decode_frame().
|
inlinestatic |
Definition at line 196 of file xan.c.
Referenced by xan_wc3_decode_frame().
Variable Documentation
AVCodec ff_xan_wc3_decoder |
|
static |
This is a gamma correction that xan3 applies to all palette entries.
There is a peculiarity, namely that the values are clamped to 253 - it seems likely that this table was calculated by a buggy fixed-point implementation, the one above under RUNTIME_GAMMA behaves like this for example. The exponent value of 0.8 can be explained by this as well, since 0.8 = 4/5 and thus pow(x, 0.8) is still easy to calculate. Also, the input values are first rotated to the left by 2.
Definition at line 493 of file xan.c.
Referenced by xan_decode_frame().
Generated on Fri Dec 20 2024 06:56:17 for FFmpeg by 1.8.11