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/common.h"
#include "libavutil/intreadwrite.h"
#include "avcodec.h"
#include "internal.h"
Include dependency graph for vmnc.c:

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 *got_frame, 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 36 of file vmnc.c.

Enumerator
HT_RAW 
HT_BKG 
HT_FG 
HT_SUB 
HT_CLR 

Definition at line 46 of file vmnc.c.

Function Documentation

static av_cold int decode_end ( AVCodecContext avctx)
static

Definition at line 510 of file vmnc.c.

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

Definition at line 289 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 229 of file vmnc.c.

Referenced by decode_frame().

static av_cold int decode_init ( AVCodecContext avctx)
static

Definition at line 470 of file vmnc.c.

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

Definition at line 88 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 206 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 176 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 119 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 76 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 *got_frame, AVPacket *avpkt)
Definition: vmnc.c:289
static av_cold int init(AVCodecContext *avctx)
Definition: avrndec.c:35
#define CODEC_CAP_DR1
Codec uses get_buffer() for allocating buffers and supports custom allocators.
static av_cold int decode_end(AVCodecContext *avctx)
Definition: vmnc.c:510
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
static void close(AVCodecParserContext *s)
Definition: h264_parser.c:375
static av_cold int decode_init(AVCodecContext *avctx)
Definition: vmnc.c:470
static int decode(AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
Definition: crystalhd.c:868

Definition at line 522 of file vmnc.c.