FFmpeg
Loading...
Searching...
No Matches
rasc.c File Reference
#include <stdio.h>
#include <string.h>
#include "libavutil/mem.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 dlta_room (unsigned cx, unsigned w, unsigned bpp, unsigned need)
 
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 av_cold 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 37 of file rasc.c.

Referenced by decode_frame().

◆ FINT

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

Definition at line 38 of file rasc.c.

Referenced by decode_frame().

◆ INIT

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

Definition at line 39 of file rasc.c.

Referenced by decode_frame().

◆ BNDL

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

Definition at line 40 of file rasc.c.

Referenced by decode_frame().

◆ KFRM

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

Definition at line 41 of file rasc.c.

Referenced by decode_frame().

◆ DLTA

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

Definition at line 42 of file rasc.c.

Referenced by decode_frame().

◆ MOUS

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

Definition at line 43 of file rasc.c.

Referenced by decode_frame().

◆ MPOS

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

Definition at line 44 of file rasc.c.

Referenced by decode_frame().

◆ MOVE

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

Definition at line 45 of file rasc.c.

Referenced by decode_frame().

◆ EMPT

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

Definition at line 46 of file rasc.c.

Referenced by decode_frame().

◆ 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--;
#define s(width, name)
Definition cbs_vp9.c:198
uint8_t w
Definition llvidencdsp.c:39
static double b1(void *priv, double x, double y)
Definition vf_xfade.c:2034
static double b2(void *priv, double x, double y)
Definition vf_xfade.c:2035
int len

Definition at line 328 of file rasc.c.

Referenced by decode_dlta().

Function Documentation

◆ clear_plane()

static void clear_plane ( AVCodecContext * avctx,
AVFrame * frame )
static

Definition at line 70 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 84 of file rasc.c.

Referenced by decode_frame(), and image_copy().

◆ init_frames()

static int init_frames ( AVCodecContext * avctx)
static

Definition at line 97 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 116 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 176 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 210 of file rasc.c.

Referenced by decode_frame().

◆ dlta_room()

static int dlta_room ( unsigned cx,
unsigned w,
unsigned bpp,
unsigned need )
inlinestatic

Definition at line 323 of file rasc.c.

Referenced by decode_dlta().

◆ decode_dlta()

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

Definition at line 337 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 487 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 551 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 591 of file rasc.c.

Referenced by decode_frame().

◆ draw_cursor()

static void draw_cursor ( AVCodecContext * avctx)
static

Definition at line 608 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 686 of file rasc.c.

◆ decode_init()

static av_cold int decode_init ( AVCodecContext * avctx)
static

Definition at line 768 of file rasc.c.

◆ decode_close()

static av_cold int decode_close ( AVCodecContext * avctx)
static

Definition at line 780 of file rasc.c.

◆ decode_flush()

static av_cold void decode_flush ( AVCodecContext * avctx)
static

Definition at line 797 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 },
}
#define NULL
Definition coverity.c:32
#define AV_OPT_FLAG_DECODING_PARAM
A generic parameter which can be set by the user for demuxing or decoding.
Definition opt.h:355
#define AV_OPT_FLAG_VIDEO_PARAM
Definition opt.h:357
@ AV_OPT_TYPE_BOOL
Underlying C type is int.
Definition opt.h:326

Definition at line 805 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,
}
const char * av_default_item_name(void *ptr)
Return the context name.
Definition log.c:241
#define LIBAVUTIL_VERSION_INT
Definition version.h:85

Definition at line 810 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),
.flush = decode_flush,
.p.capabilities = AV_CODEC_CAP_DR1,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
.p.priv_class = &rasc_decoder_class,
}
static av_cold void decode_flush(AVCodecContext *avctx)
Definition agm.c:1253
static av_cold void close(AVCodecParserContext *s)
Definition apv_parser.c:197
#define FF_CODEC_DECODE_CB(func)
#define CODEC_LONG_NAME(str)
#define FF_CODEC_CAP_INIT_CLEANUP
The codec allows calling the close function for deallocation even if the init function returned a fai...
int(* init)(AVBSFContext *ctx)
Definition dts2pts.c:608
#define AV_CODEC_CAP_DR1
Codec uses get_buffer() or get_encode_buffer() for allocating buffers and supports custom allocators.
Definition codec.h:49
@ AV_CODEC_ID_RASC
Definition codec_id.h:286
@ AVMEDIA_TYPE_VIDEO
Definition avutil.h:200
static av_cold int decode_init(AVCodecContext *avctx)
Definition 4xm.c:998
static int decode_frame(AVCodecContext *avctx, AVFrame *picture, int *got_frame, AVPacket *avpkt)
Definition 4xm.c:837
static av_cold int decode_close(AVCodecContext *avctx)
Definition aacdec.c:1220
static const AVClass rasc_decoder_class
Definition rasc.c:810

Definition at line 817 of file rasc.c.