*/
/**
- * @file vmnc.c
+ * @file libavcodec/vmnc.c
* VMware Screen Codec (VMnc) decoder
* As Alex Beregszaszi discovered, this is effectively RFB data dump
*/
#include <stdio.h>
#include <stdlib.h>
+#include "libavutil/intreadwrite.h"
#include "avcodec.h"
enum EncTypes {
return src - ssrc;
}
-static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, const uint8_t *buf, int buf_size)
+static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPacket *avpkt)
{
+ const uint8_t *buf = avpkt->data;
+ int buf_size = avpkt->size;
VmncContext * const c = avctx->priv_data;
uint8_t *outptr;
const uint8_t *src = buf;
c->avctx = avctx;
- c->pic.data[0] = NULL;
c->width = avctx->width;
c->height = avctx->height;
- if (avcodec_check_dimensions(avctx, avctx->width, avctx->height) < 0) {
- return 1;
- }
- c->bpp = avctx->bits_per_sample;
+ c->bpp = avctx->bits_per_coded_sample;
c->bpp2 = c->bpp/8;
switch(c->bpp){
}
AVCodec vmnc_decoder = {
- "VMware video",
+ "vmnc",
CODEC_TYPE_VIDEO,
CODEC_ID_VMNC,
sizeof(VmncContext),
NULL,
decode_end,
decode_frame,
- .long_name = "VMware Screen Codec / VMware Video",
+ CODEC_CAP_DR1,
+ .long_name = NULL_IF_CONFIG_SMALL("VMware Screen Codec / VMware Video"),
};