vmnc.c File Reference

VMware Screen Codec (VMnc) decoder As Alex Beregszaszi discovered, this is effectively RFB data dump. More...

#include <stdio.h>
#include <stdlib.h>
#include "libavutil/intreadwrite.h"
#include "avcodec.h"

Go to the source code of this file.

Data Structures

struct  VmncContext
 

Typedefs

typedef struct VmncContext VmncContext
 

Enumerations

enum  EncTypes {
  MAGIC_WMVd = 0x574D5664, MAGIC_WMVe, MAGIC_WMVf, MAGIC_WMVg,
  MAGIC_WMVh, MAGIC_WMVi, MAGIC_WMVj
}
 
enum  HexTile_Flags {
  HT_RAW = 1, HT_BKG = 2, HT_FG = 4, HT_SUB = 8,
  HT_CLR = 16
}
 

Functions

static av_always_inline int vmnc_get_pixel (const uint8_t *buf, int bpp, int be)
 
static void load_cursor (VmncContext *c, const uint8_t *src)
 
static void put_cursor (uint8_t *dst, int stride, VmncContext *c, int dx, int dy)
 
static av_always_inline void paint_rect (uint8_t *dst, int dx, int dy, int w, int h, int color, int bpp, int stride)
 
static av_always_inline void paint_raw (uint8_t *dst, int w, int h, const uint8_t *src, int bpp, int be, int stride)
 
static int decode_hextile (VmncContext *c, uint8_t *dst, const uint8_t *src, int ssize, int w, int h, int stride)
 
static int decode_frame (AVCodecContext *avctx, void *data, int *data_size, AVPacket *avpkt)
 
static av_cold int decode_init (AVCodecContext *avctx)
 
static av_cold int decode_end (AVCodecContext *avctx)
 

Variables

AVCodec ff_vmnc_decoder
 

Detailed Description

VMware Screen Codec (VMnc) decoder As Alex Beregszaszi discovered, this is effectively RFB data dump.

Definition in file vmnc.c.

Typedef Documentation

typedef struct VmncContext VmncContext

Enumeration Type Documentation

enum EncTypes
Enumerator
MAGIC_WMVd 
MAGIC_WMVe 
MAGIC_WMVf 
MAGIC_WMVg 
MAGIC_WMVh 
MAGIC_WMVi 
MAGIC_WMVj 

Definition at line 34 of file vmnc.c.

Enumerator
HT_RAW 
HT_BKG 
HT_FG 
HT_SUB 
HT_CLR 

Definition at line 44 of file vmnc.c.

Function Documentation

static av_cold int decode_end ( AVCodecContext avctx)
static

Definition at line 499 of file vmnc.c.

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

Definition at line 287 of file vmnc.c.

static int decode_hextile ( VmncContext c,
uint8_t *  dst,
const uint8_t *  src,
int  ssize,
int  w,
int  h,
int  stride 
)
static

Definition at line 227 of file vmnc.c.

Referenced by decode_frame().

static av_cold int decode_init ( AVCodecContext avctx)
static

Definition at line 462 of file vmnc.c.

static void load_cursor ( VmncContext c,
const uint8_t *  src 
)
static

Definition at line 86 of file vmnc.c.

Referenced by decode_frame().

static av_always_inline void paint_raw ( uint8_t *  dst,
int  w,
int  h,
const uint8_t *  src,
int  bpp,
int  be,
int  stride 
)
static

Definition at line 204 of file vmnc.c.

Referenced by decode_frame(), and decode_hextile().

static av_always_inline void paint_rect ( uint8_t *  dst,
int  dx,
int  dy,
int  w,
int  h,
int  color,
int  bpp,
int  stride 
)
static

Definition at line 174 of file vmnc.c.

Referenced by decode_hextile().

static void put_cursor ( uint8_t *  dst,
int  stride,
VmncContext c,
int  dx,
int  dy 
)
static

Definition at line 117 of file vmnc.c.

Referenced by decode_frame().

static av_always_inline int vmnc_get_pixel ( const uint8_t *  buf,
int  bpp,
int  be 
)
static

Definition at line 74 of file vmnc.c.

Referenced by decode_hextile(), load_cursor(), and paint_raw().

Variable Documentation

AVCodec ff_vmnc_decoder
Initial value:
= {
.name = "vmnc",
.priv_data_size = sizeof(VmncContext),
.capabilities = CODEC_CAP_DR1,
.long_name = NULL_IF_CONFIG_SMALL("VMware Screen Codec / VMware Video"),
}
struct VmncContext VmncContext
static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPacket *avpkt)
Definition: vmnc.c:287
static int decode(MimicContext *ctx, int quality, int num_coeffs, int is_iframe)
Definition: mimic.c:228
static int init(AVCodecParserContext *s)
Definition: h264_parser.c:336
#define CODEC_CAP_DR1
Codec uses get_buffer() for allocating buffers and supports custom allocators.
Definition: avcodec.h:719
static av_cold int decode_end(AVCodecContext *avctx)
Definition: vmnc.c:499
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:191
static void close(AVCodecParserContext *s)
Definition: h264_parser.c:327
static av_cold int decode_init(AVCodecContext *avctx)
Definition: vmnc.c:462

Definition at line 512 of file vmnc.c.