FFmpeg
|
Sierra VMD audio & video decoders by Vladimir "VAG" Gneushev (vagsoft at mail.ru) for more information on the Sierra VMD format, visit: http://www.pcisys.net/~melanson/codecs/. More...
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "libavutil/avassert.h"
#include "libavutil/channel_layout.h"
#include "libavutil/common.h"
#include "libavutil/intreadwrite.h"
#include "avcodec.h"
#include "internal.h"
#include "bytestream.h"
Go to the source code of this file.
Data Structures | |
struct | VmdVideoContext |
struct | VmdAudioContext |
Macros | |
#define | VMD_HEADER_SIZE 0x330 |
#define | PALETTE_COUNT 256 |
#define | QUEUE_SIZE 0x1000 |
#define | QUEUE_MASK 0x0FFF |
#define | BLOCK_TYPE_AUDIO 1 |
#define | BLOCK_TYPE_INITIAL 2 |
#define | BLOCK_TYPE_SILENCE 3 |
Functions | |
static void | lz_unpack (const unsigned char *src, int src_len, unsigned char *dest, int dest_len) |
static int | rle_unpack (const unsigned char *src, unsigned char *dest, int src_count, int src_size, int dest_len) |
static int | vmd_decode (VmdVideoContext *s, AVFrame *frame) |
static av_cold int | vmdvideo_decode_init (AVCodecContext *avctx) |
static int | vmdvideo_decode_frame (AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt) |
static av_cold int | vmdvideo_decode_end (AVCodecContext *avctx) |
static av_cold int | vmdaudio_decode_init (AVCodecContext *avctx) |
static void | decode_audio_s16 (int16_t *out, const uint8_t *buf, int buf_size, int channels) |
static int | vmdaudio_decode_frame (AVCodecContext *avctx, void *data, int *got_frame_ptr, AVPacket *avpkt) |
Variables | |
static const uint16_t | vmdaudio_table [128] |
AVCodec | ff_vmdvideo_decoder |
AVCodec | ff_vmdaudio_decoder |
Sierra VMD audio & video decoders by Vladimir "VAG" Gneushev (vagsoft at mail.ru) for more information on the Sierra VMD format, visit: http://www.pcisys.net/~melanson/codecs/.
The video decoder outputs PAL8 colorspace data. The decoder expects a 0x330-byte VMD file header to be transmitted via extradata during codec initialization. Each encoded frame that is sent to this decoder is expected to be prepended with the appropriate 16-byte frame information record from the VMD file.
The audio decoder, like the video decoder, expects each encoded data chunk to be prepended with the appropriate 16-byte frame information record from the VMD file. It does not require the 0x330-byte VMD file header, but it does need the audio setup parameters passed in through normal libavcodec API means.
Definition in file vmdav.c.
#define VMD_HEADER_SIZE 0x330 |
Definition at line 54 of file vmdav.c.
Referenced by vmdvideo_decode_init().
#define PALETTE_COUNT 256 |
Definition at line 55 of file vmdav.c.
Referenced by vmd_decode(), vmdvideo_decode_frame(), and vmdvideo_decode_init().
#define QUEUE_SIZE 0x1000 |
Definition at line 76 of file vmdav.c.
Referenced by lz_unpack().
#define QUEUE_MASK 0x0FFF |
Definition at line 77 of file vmdav.c.
Referenced by lz_unpack().
#define BLOCK_TYPE_INITIAL 2 |
Definition at line 472 of file vmdav.c.
Referenced by vmdaudio_decode_frame().
#define BLOCK_TYPE_SILENCE 3 |
Definition at line 473 of file vmdav.c.
Referenced by vmdaudio_decode_frame().
|
static |
Definition at line 79 of file vmdav.c.
Referenced by vmd_decode().
|
static |
Definition at line 151 of file vmdav.c.
Referenced by vmd_decode().
|
static |
Definition at line 195 of file vmdav.c.
Referenced by vmdvideo_decode_frame().
|
static |
|
static |
|
static |
|
static |
|
static |
Definition at line 528 of file vmdav.c.
Referenced by vmdaudio_decode_frame().
|
static |
|
static |
Definition at line 480 of file vmdav.c.
Referenced by decode_audio_s16().
AVCodec ff_vmdvideo_decoder |
AVCodec ff_vmdaudio_decoder |