FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Functions | Variables
rasc.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "libavutil/avassert.h"
#include "libavutil/imgutils.h"
#include "libavutil/opt.h"
#include "avcodec.h"
#include "bytestream.h"
#include "internal.h"
#include <zlib.h>

Go to the source code of this file.

Data Structures

struct  RASCContext
 

Macros

#define KBND   MKTAG('K', 'B', 'N', 'D')
 
#define FINT   MKTAG('F', 'I', 'N', 'T')
 
#define INIT   MKTAG('I', 'N', 'I', 'T')
 
#define BNDL   MKTAG('B', 'N', 'D', 'L')
 
#define KFRM   MKTAG('K', 'F', 'R', 'M')
 
#define DLTA   MKTAG('D', 'L', 'T', 'A')
 
#define MOUS   MKTAG('M', 'O', 'U', 'S')
 
#define MPOS   MKTAG('M', 'P', 'O', 'S')
 
#define MOVE   MKTAG('M', 'O', 'V', 'E')
 
#define EMPT   MKTAG('E', 'M', 'P', 'T')
 
#define NEXT_LINE
 

Functions

static void clear_plane (AVCodecContext *avctx, AVFrame *frame)
 
static void copy_plane (AVCodecContext *avctx, AVFrame *src, AVFrame *dst)
 
static int init_frames (AVCodecContext *avctx)
 
static int decode_fint (AVCodecContext *avctx, AVPacket *avpkt, unsigned size)
 
static int decode_zlib (AVCodecContext *avctx, AVPacket *avpkt, unsigned size, unsigned uncompressed_size)
 
static int decode_move (AVCodecContext *avctx, AVPacket *avpkt, unsigned size)
 
static int decode_dlta (AVCodecContext *avctx, AVPacket *avpkt, unsigned size)
 
static int decode_kfrm (AVCodecContext *avctx, AVPacket *avpkt, unsigned size)
 
static int decode_mous (AVCodecContext *avctx, AVPacket *avpkt, unsigned size)
 
static int decode_mpos (AVCodecContext *avctx, AVPacket *avpkt, unsigned size)
 
static void draw_cursor (AVCodecContext *avctx)
 
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_close (AVCodecContext *avctx)
 
static void decode_flush (AVCodecContext *avctx)
 

Variables

static const AVOption options []
 
static const AVClass rasc_decoder_class
 
AVCodec ff_rasc_decoder
 

Macro Definition Documentation

#define KBND   MKTAG('K', 'B', 'N', 'D')

Definition at line 37 of file rasc.c.

Referenced by decode_frame().

#define FINT   MKTAG('F', 'I', 'N', 'T')

Definition at line 38 of file rasc.c.

Referenced by decode_frame().

#define INIT   MKTAG('I', 'N', 'I', 'T')

Definition at line 39 of file rasc.c.

Referenced by decode_frame().

#define BNDL   MKTAG('B', 'N', 'D', 'L')

Definition at line 40 of file rasc.c.

Referenced by decode_frame().

#define KFRM   MKTAG('K', 'F', 'R', 'M')

Definition at line 41 of file rasc.c.

Referenced by decode_frame().

#define DLTA   MKTAG('D', 'L', 'T', 'A')

Definition at line 42 of file rasc.c.

Referenced by decode_frame().

#define MOUS   MKTAG('M', 'O', 'U', 'S')

Definition at line 43 of file rasc.c.

Referenced by decode_frame().

#define MPOS   MKTAG('M', 'P', 'O', 'S')

Definition at line 44 of file rasc.c.

Referenced by decode_frame().

#define MOVE   MKTAG('M', 'O', 'V', 'E')

Definition at line 45 of file rasc.c.

Referenced by decode_frame().

#define EMPT   MKTAG('E', 'M', 'P', 'T')

Definition at line 46 of file rasc.c.

Referenced by decode_frame().

#define NEXT_LINE
Value:
if (cx >= w * s->bpp) { \
cx = 0; \
cy--; \
b1 -= s->frame1->linesize[0]; \
b2 -= s->frame2->linesize[0]; \
} \
len--;
uint8_t w
Definition: llviddspenc.c:38
#define s(width, name)
Definition: cbs_vp9.c:257
int len

Definition at line 317 of file rasc.c.

Referenced by decode_dlta().

Function Documentation

static void clear_plane ( AVCodecContext avctx,
AVFrame frame 
)
static

Definition at line 68 of file rasc.c.

Referenced by decode_fint(), decode_flush(), and init_frames().

static void copy_plane ( AVCodecContext avctx,
AVFrame src,
AVFrame dst 
)
static

Definition at line 79 of file rasc.c.

Referenced by decode_frame(), and image_copy().

static int init_frames ( AVCodecContext avctx)
static

Definition at line 92 of file rasc.c.

Referenced by decode_fint().

static int decode_fint ( AVCodecContext avctx,
AVPacket avpkt,
unsigned  size 
)
static

Definition at line 111 of file rasc.c.

Referenced by decode_frame(), and decode_kfrm().

static int decode_zlib ( AVCodecContext avctx,
AVPacket avpkt,
unsigned  size,
unsigned  uncompressed_size 
)
static

Definition at line 169 of file rasc.c.

Referenced by decode_dlta(), decode_mous(), and decode_move().

static int decode_move ( AVCodecContext avctx,
AVPacket avpkt,
unsigned  size 
)
static

Definition at line 202 of file rasc.c.

Referenced by decode_frame().

static int decode_dlta ( AVCodecContext avctx,
AVPacket avpkt,
unsigned  size 
)
static

Definition at line 326 of file rasc.c.

Referenced by decode_frame().

static int decode_kfrm ( AVCodecContext avctx,
AVPacket avpkt,
unsigned  size 
)
static

Definition at line 466 of file rasc.c.

Referenced by decode_frame().

static int decode_mous ( AVCodecContext avctx,
AVPacket avpkt,
unsigned  size 
)
static

Definition at line 529 of file rasc.c.

Referenced by decode_frame().

static int decode_mpos ( AVCodecContext avctx,
AVPacket avpkt,
unsigned  size 
)
static

Definition at line 569 of file rasc.c.

Referenced by decode_frame().

static void draw_cursor ( AVCodecContext avctx)
static

Definition at line 586 of file rasc.c.

Referenced by decode_frame().

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

Definition at line 664 of file rasc.c.

static av_cold int decode_init ( AVCodecContext avctx)
static

Definition at line 741 of file rasc.c.

static av_cold int decode_close ( AVCodecContext avctx)
static

Definition at line 763 of file rasc.c.

static void decode_flush ( AVCodecContext avctx)
static

Definition at line 778 of file rasc.c.

Variable Documentation

const AVOption options[]
static
Initial value:
= {
{ "skip_cursor", "skip the cursor", 0x42, AV_OPT_TYPE_BOOL, {.i64 = 0 }, 0, 1, AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_VIDEO_PARAM },
{ NULL },
}
#define NULL
Definition: coverity.c:32
#define AV_OPT_FLAG_VIDEO_PARAM
Definition: opt.h:279
#define AV_OPT_FLAG_DECODING_PARAM
a generic parameter which can be set by the user for demuxing or decoding
Definition: opt.h:277

Definition at line 786 of file rasc.c.

const AVClass rasc_decoder_class
static
Initial value:
= {
.class_name = "rasc decoder",
.item_name = av_default_item_name,
.option = options,
}
#define LIBAVUTIL_VERSION_INT
Definition: version.h:85
const char * av_default_item_name(void *ptr)
Return the context name.
Definition: log.c:191
static const AVOption options[]
Definition: rasc.c:786

Definition at line 791 of file rasc.c.

AVCodec ff_rasc_decoder
Initial value:
= {
.name = "rasc",
.long_name = NULL_IF_CONFIG_SMALL("RemotelyAnywhere Screen Capture"),
.priv_data_size = sizeof(RASCContext),
.close = decode_close,
.capabilities = AV_CODEC_CAP_DR1,
.caps_internal = FF_CODEC_CAP_INIT_THREADSAFE |
.priv_class = &rasc_decoder_class,
}
#define FF_CODEC_CAP_INIT_CLEANUP
The codec allows calling the close function for deallocation even if the init function returned a fai...
Definition: internal.h:48
static av_cold int decode_close(AVCodecContext *avctx)
Definition: rasc.c:763
static void flush(AVCodecContext *avctx)
static const AVClass rasc_decoder_class
Definition: rasc.c:791
static av_cold int init(AVCodecContext *avctx)
Definition: avrndec.c:35
static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
Definition: rasc.c:664
static void decode(AVCodecContext *dec_ctx, AVPacket *pkt, AVFrame *frame, FILE *outfile)
Definition: decode_audio.c:42
#define FF_CODEC_CAP_INIT_THREADSAFE
The codec does not modify any global variables in the init function, allowing to call the init functi...
Definition: internal.h:40
static av_cold int decode_init(AVCodecContext *avctx)
Definition: rasc.c:741
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:186
static void decode_flush(AVCodecContext *avctx)
Definition: rasc.c:778
#define AV_CODEC_CAP_DR1
Codec uses get_buffer() for allocating buffers and supports custom allocators.
Definition: avcodec.h:968

Definition at line 798 of file rasc.c.