FFmpeg
Data Structures | Macros | Functions | Variables
rasc.c File Reference
#include <stdio.h>
#include <string.h>
#include "libavutil/opt.h"
#include "avcodec.h"
#include "bytestream.h"
#include "codec_internal.h"
#include "decode.h"
#include "zlib_wrapper.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, const AVPacket *avpkt, unsigned size)
 
static int decode_zlib (AVCodecContext *avctx, const AVPacket *avpkt, unsigned size, unsigned uncompressed_size)
 
static int decode_move (AVCodecContext *avctx, const AVPacket *avpkt, unsigned size)
 
static int decode_dlta (AVCodecContext *avctx, const AVPacket *avpkt, unsigned size)
 
static int decode_kfrm (AVCodecContext *avctx, const AVPacket *avpkt, unsigned size)
 
static int decode_mous (AVCodecContext *avctx, const AVPacket *avpkt, unsigned size)
 
static int decode_mpos (AVCodecContext *avctx, const AVPacket *avpkt, unsigned size)
 
static void draw_cursor (AVCodecContext *avctx)
 
static int decode_frame (AVCodecContext *avctx, AVFrame *frame, 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
 
const FFCodec ff_rasc_decoder
 

Macro Definition Documentation

◆ KBND

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

Definition at line 36 of file rasc.c.

◆ FINT

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

Definition at line 37 of file rasc.c.

◆ INIT

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

Definition at line 38 of file rasc.c.

◆ BNDL

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

Definition at line 39 of file rasc.c.

◆ KFRM

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

Definition at line 40 of file rasc.c.

◆ DLTA

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

Definition at line 41 of file rasc.c.

◆ MOUS

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

Definition at line 42 of file rasc.c.

◆ MPOS

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

Definition at line 43 of file rasc.c.

◆ MOVE

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

Definition at line 44 of file rasc.c.

◆ EMPT

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

Definition at line 45 of file rasc.c.

◆ NEXT_LINE

#define NEXT_LINE
Value:
if (cx >= w * s->bpp) { \
cx = 0; \
cy--; \
b1 -= s->frame1->linesize[0]; \
b2 -= s->frame2->linesize[0]; \
} \
len--;

Definition at line 322 of file rasc.c.

Function Documentation

◆ clear_plane()

static void clear_plane ( AVCodecContext avctx,
AVFrame frame 
)
static

Definition at line 67 of file rasc.c.

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

◆ copy_plane()

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

Definition at line 81 of file rasc.c.

Referenced by decode_frame(), and image_copy().

◆ init_frames()

static int init_frames ( AVCodecContext avctx)
static

Definition at line 94 of file rasc.c.

Referenced by decode_fint().

◆ decode_fint()

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

Definition at line 113 of file rasc.c.

Referenced by decode_frame(), and decode_kfrm().

◆ decode_zlib()

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

Definition at line 173 of file rasc.c.

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

◆ decode_move()

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

Definition at line 207 of file rasc.c.

Referenced by decode_frame().

◆ decode_dlta()

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

Definition at line 331 of file rasc.c.

Referenced by decode_frame().

◆ decode_kfrm()

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

Definition at line 473 of file rasc.c.

Referenced by decode_frame().

◆ decode_mous()

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

Definition at line 537 of file rasc.c.

Referenced by decode_frame().

◆ decode_mpos()

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

Definition at line 577 of file rasc.c.

Referenced by decode_frame().

◆ draw_cursor()

static void draw_cursor ( AVCodecContext avctx)
static

Definition at line 594 of file rasc.c.

Referenced by decode_frame().

◆ decode_frame()

static int decode_frame ( AVCodecContext avctx,
AVFrame frame,
int got_frame,
AVPacket avpkt 
)
static

Definition at line 672 of file rasc.c.

◆ decode_init()

static av_cold int decode_init ( AVCodecContext avctx)
static

Definition at line 754 of file rasc.c.

◆ decode_close()

static av_cold int decode_close ( AVCodecContext avctx)
static

Definition at line 766 of file rasc.c.

◆ decode_flush()

static void decode_flush ( AVCodecContext avctx)
static

Definition at line 781 of file rasc.c.

Variable Documentation

◆ options

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 },
}

Definition at line 789 of file rasc.c.

◆ rasc_decoder_class

const AVClass rasc_decoder_class
static
Initial value:
= {
.class_name = "rasc decoder",
.item_name = av_default_item_name,
.option = options,
}

Definition at line 794 of file rasc.c.

◆ ff_rasc_decoder

const FFCodec ff_rasc_decoder
Initial value:
= {
.p.name = "rasc",
CODEC_LONG_NAME("RemotelyAnywhere Screen Capture"),
.p.type = AVMEDIA_TYPE_VIDEO,
.priv_data_size = sizeof(RASCContext),
.close = decode_close,
.flush = decode_flush,
.p.capabilities = AV_CODEC_CAP_DR1,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
.p.priv_class = &rasc_decoder_class,
}

Definition at line 801 of file rasc.c.

RASCContext
Definition: rasc.c:47
FF_CODEC_CAP_INIT_CLEANUP
#define FF_CODEC_CAP_INIT_CLEANUP
The codec allows calling the close function for deallocation even if the init function returned a fai...
Definition: codec_internal.h:42
AV_OPT_FLAG_VIDEO_PARAM
#define AV_OPT_FLAG_VIDEO_PARAM
Definition: opt.h:284
w
uint8_t w
Definition: llviddspenc.c:38
options
static const AVOption options[]
Definition: rasc.c:789
rasc_decoder_class
static const AVClass rasc_decoder_class
Definition: rasc.c:794
FF_CODEC_DECODE_CB
#define FF_CODEC_DECODE_CB(func)
Definition: codec_internal.h:306
s
#define s(width, name)
Definition: cbs_vp9.c:198
init
int(* init)(AVBSFContext *ctx)
Definition: dts2pts_bsf.c:365
decode_flush
static void decode_flush(AVCodecContext *avctx)
Definition: rasc.c:781
CODEC_LONG_NAME
#define CODEC_LONG_NAME(str)
Definition: codec_internal.h:272
LIBAVUTIL_VERSION_INT
#define LIBAVUTIL_VERSION_INT
Definition: version.h:85
NULL
#define NULL
Definition: coverity.c:32
av_default_item_name
const char * av_default_item_name(void *ptr)
Return the context name.
Definition: log.c:237
AV_CODEC_CAP_DR1
#define AV_CODEC_CAP_DR1
Codec uses get_buffer() or get_encode_buffer() for allocating buffers and supports custom allocators.
Definition: codec.h:52
AV_CODEC_ID_RASC
@ AV_CODEC_ID_RASC
Definition: codec_id.h:294
decode_init
static av_cold int decode_init(AVCodecContext *avctx)
Definition: rasc.c:754
AV_OPT_FLAG_DECODING_PARAM
#define AV_OPT_FLAG_DECODING_PARAM
a generic parameter which can be set by the user for demuxing or decoding
Definition: opt.h:282
decode_close
static av_cold int decode_close(AVCodecContext *avctx)
Definition: rasc.c:766
AVMEDIA_TYPE_VIDEO
@ AVMEDIA_TYPE_VIDEO
Definition: avutil.h:201
AV_OPT_TYPE_BOOL
@ AV_OPT_TYPE_BOOL
Definition: opt.h:244
decode_frame
static int decode_frame(AVCodecContext *avctx, AVFrame *frame, int *got_frame, AVPacket *avpkt)
Definition: rasc.c:672