FFmpeg
Data Structures | Functions | Variables
sheervideo.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "libavutil/intreadwrite.h"
#include "avcodec.h"
#include "get_bits.h"
#include "internal.h"
#include "thread.h"
#include "sheervideodata.h"

Go to the source code of this file.

Data Structures

struct  SheerVideoContext
 

Functions

static void decode_ca4i (AVCodecContext *avctx, AVFrame *p, GetBitContext *gb)
 
static void decode_ca4p (AVCodecContext *avctx, AVFrame *p, GetBitContext *gb)
 
static void decode_ybr10i (AVCodecContext *avctx, AVFrame *p, GetBitContext *gb)
 
static void decode_ybr10 (AVCodecContext *avctx, AVFrame *p, GetBitContext *gb)
 
static void decode_yry10i (AVCodecContext *avctx, AVFrame *p, GetBitContext *gb)
 
static void decode_yry10 (AVCodecContext *avctx, AVFrame *p, GetBitContext *gb)
 
static void decode_ca2i (AVCodecContext *avctx, AVFrame *p, GetBitContext *gb)
 
static void decode_ca2p (AVCodecContext *avctx, AVFrame *p, GetBitContext *gb)
 
static void decode_c82i (AVCodecContext *avctx, AVFrame *p, GetBitContext *gb)
 
static void decode_c82p (AVCodecContext *avctx, AVFrame *p, GetBitContext *gb)
 
static void decode_ybyr (AVCodecContext *avctx, AVFrame *p, GetBitContext *gb)
 
static void decode_byryi (AVCodecContext *avctx, AVFrame *p, GetBitContext *gb)
 
static void decode_byry (AVCodecContext *avctx, AVFrame *p, GetBitContext *gb)
 
static void decode_ybri (AVCodecContext *avctx, AVFrame *p, GetBitContext *gb)
 
static void decode_ybr (AVCodecContext *avctx, AVFrame *p, GetBitContext *gb)
 
static void decode_aybri (AVCodecContext *avctx, AVFrame *p, GetBitContext *gb)
 
static void decode_aybr (AVCodecContext *avctx, AVFrame *p, GetBitContext *gb)
 
static void decode_argxi (AVCodecContext *avctx, AVFrame *p, GetBitContext *gb)
 
static void decode_argx (AVCodecContext *avctx, AVFrame *p, GetBitContext *gb)
 
static void decode_rgbxi (AVCodecContext *avctx, AVFrame *p, GetBitContext *gb)
 
static void decode_rgbx (AVCodecContext *avctx, AVFrame *p, GetBitContext *gb)
 
static void decode_argbi (AVCodecContext *avctx, AVFrame *p, GetBitContext *gb)
 
static void decode_argb (AVCodecContext *avctx, AVFrame *p, GetBitContext *gb)
 
static void decode_rgbi (AVCodecContext *avctx, AVFrame *p, GetBitContext *gb)
 
static void decode_rgb (AVCodecContext *avctx, AVFrame *p, GetBitContext *gb)
 
static int build_vlc (VLC *vlc, const uint8_t *len, int count)
 
static int decode_frame (AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
 
static av_cold int decode_end (AVCodecContext *avctx)
 

Variables

AVCodec ff_sheervideo_decoder
 

Function Documentation

◆ decode_ca4i()

static void decode_ca4i ( AVCodecContext avctx,
AVFrame p,
GetBitContext gb 
)
static

Definition at line 40 of file sheervideo.c.

Referenced by decode_frame().

◆ decode_ca4p()

static void decode_ca4p ( AVCodecContext avctx,
AVFrame p,
GetBitContext gb 
)
static

Definition at line 84 of file sheervideo.c.

Referenced by decode_frame().

◆ decode_ybr10i()

static void decode_ybr10i ( AVCodecContext avctx,
AVFrame p,
GetBitContext gb 
)
static

Definition at line 172 of file sheervideo.c.

Referenced by decode_frame().

◆ decode_ybr10()

static void decode_ybr10 ( AVCodecContext avctx,
AVFrame p,
GetBitContext gb 
)
static

Definition at line 211 of file sheervideo.c.

Referenced by decode_frame().

◆ decode_yry10i()

static void decode_yry10i ( AVCodecContext avctx,
AVFrame p,
GetBitContext gb 
)
static

Definition at line 287 of file sheervideo.c.

Referenced by decode_frame().

◆ decode_yry10()

static void decode_yry10 ( AVCodecContext avctx,
AVFrame p,
GetBitContext gb 
)
static

Definition at line 329 of file sheervideo.c.

Referenced by decode_frame().

◆ decode_ca2i()

static void decode_ca2i ( AVCodecContext avctx,
AVFrame p,
GetBitContext gb 
)
static

Definition at line 412 of file sheervideo.c.

Referenced by decode_frame().

◆ decode_ca2p()

static void decode_ca2p ( AVCodecContext avctx,
AVFrame p,
GetBitContext gb 
)
static

Definition at line 462 of file sheervideo.c.

Referenced by decode_frame().

◆ decode_c82i()

static void decode_c82i ( AVCodecContext avctx,
AVFrame p,
GetBitContext gb 
)
static

Definition at line 564 of file sheervideo.c.

Referenced by decode_frame().

◆ decode_c82p()

static void decode_c82p ( AVCodecContext avctx,
AVFrame p,
GetBitContext gb 
)
static

Definition at line 614 of file sheervideo.c.

Referenced by decode_frame().

◆ decode_ybyr()

static void decode_ybyr ( AVCodecContext avctx,
AVFrame p,
GetBitContext gb 
)
static

Definition at line 716 of file sheervideo.c.

Referenced by decode_frame().

◆ decode_byryi()

static void decode_byryi ( AVCodecContext avctx,
AVFrame p,
GetBitContext gb 
)
static

Definition at line 799 of file sheervideo.c.

Referenced by decode_frame().

◆ decode_byry()

static void decode_byry ( AVCodecContext avctx,
AVFrame p,
GetBitContext gb 
)
static

Definition at line 873 of file sheervideo.c.

Referenced by decode_frame().

◆ decode_ybri()

static void decode_ybri ( AVCodecContext avctx,
AVFrame p,
GetBitContext gb 
)
static

Definition at line 956 of file sheervideo.c.

Referenced by decode_frame().

◆ decode_ybr()

static void decode_ybr ( AVCodecContext avctx,
AVFrame p,
GetBitContext gb 
)
static

Definition at line 1024 of file sheervideo.c.

Referenced by decode_frame().

◆ decode_aybri()

static void decode_aybri ( AVCodecContext avctx,
AVFrame p,
GetBitContext gb 
)
static

Definition at line 1100 of file sheervideo.c.

Referenced by decode_frame().

◆ decode_aybr()

static void decode_aybr ( AVCodecContext avctx,
AVFrame p,
GetBitContext gb 
)
static

Definition at line 1178 of file sheervideo.c.

Referenced by decode_frame().

◆ decode_argxi()

static void decode_argxi ( AVCodecContext avctx,
AVFrame p,
GetBitContext gb 
)
static

Definition at line 1266 of file sheervideo.c.

Referenced by decode_frame().

◆ decode_argx()

static void decode_argx ( AVCodecContext avctx,
AVFrame p,
GetBitContext gb 
)
static

Definition at line 1310 of file sheervideo.c.

Referenced by decode_frame().

◆ decode_rgbxi()

static void decode_rgbxi ( AVCodecContext avctx,
AVFrame p,
GetBitContext gb 
)
static

Definition at line 1398 of file sheervideo.c.

Referenced by decode_frame().

◆ decode_rgbx()

static void decode_rgbx ( AVCodecContext avctx,
AVFrame p,
GetBitContext gb 
)
static

Definition at line 1437 of file sheervideo.c.

Referenced by decode_frame().

◆ decode_argbi()

static void decode_argbi ( AVCodecContext avctx,
AVFrame p,
GetBitContext gb 
)
static

Definition at line 1513 of file sheervideo.c.

Referenced by decode_frame().

◆ decode_argb()

static void decode_argb ( AVCodecContext avctx,
AVFrame p,
GetBitContext gb 
)
static

Definition at line 1579 of file sheervideo.c.

Referenced by decode_frame().

◆ decode_rgbi()

static void decode_rgbi ( AVCodecContext avctx,
AVFrame p,
GetBitContext gb 
)
static

Definition at line 1655 of file sheervideo.c.

Referenced by decode_frame().

◆ decode_rgb()

static void decode_rgb ( AVCodecContext avctx,
AVFrame p,
GetBitContext gb 
)
static

Definition at line 1714 of file sheervideo.c.

Referenced by decode_frame().

◆ build_vlc()

static int build_vlc ( VLC vlc,
const uint8_t len,
int  count 
)
static

Definition at line 1781 of file sheervideo.c.

Referenced by decode_frame().

◆ decode_frame()

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

Definition at line 1804 of file sheervideo.c.

◆ decode_end()

static av_cold int decode_end ( AVCodecContext avctx)
static

Definition at line 2079 of file sheervideo.c.

Variable Documentation

◆ ff_sheervideo_decoder

AVCodec ff_sheervideo_decoder
Initial value:
= {
.name = "sheervideo",
.long_name = NULL_IF_CONFIG_SMALL("BitJazz SheerVideo"),
.priv_data_size = sizeof(SheerVideoContext),
.init_thread_copy = ONLY_IF_THREADS_ENABLED(decode_init_thread_copy),
.close = decode_end,
.decode = decode_frame,
}

Definition at line 2089 of file sheervideo.c.

SheerVideoContext
Definition: sheervideo.c:33
AV_CODEC_ID_SHEERVIDEO
@ AV_CODEC_ID_SHEERVIDEO
Definition: avcodec.h:434
AV_CODEC_CAP_FRAME_THREADS
#define AV_CODEC_CAP_FRAME_THREADS
Codec supports frame-level multithreading.
Definition: avcodec.h:1037
decode_end
static av_cold int decode_end(AVCodecContext *avctx)
Definition: sheervideo.c:2079
ONLY_IF_THREADS_ENABLED
#define ONLY_IF_THREADS_ENABLED(x)
Define a function with only the non-default version specified.
Definition: internal.h:227
AV_CODEC_CAP_DR1
#define AV_CODEC_CAP_DR1
Codec uses get_buffer() for allocating buffers and supports custom allocators.
Definition: avcodec.h:981
NULL_IF_CONFIG_SMALL
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
Definition: internal.h:188
init_thread_copy
the pkt_dts and pkt_pts fields in AVFrame will work as usual Restrictions on codec whose streams don t reset across will not work because their bitstreams cannot be decoded in parallel *The contents of buffers must not be read before as well as code calling up to before the decode process starts Call have add an init_thread_copy() which re-allocates them for other threads. Add AV_CODEC_CAP_FRAME_THREADS to the codec capabilities. There will be very little speed gain at this point but it should work. If there are inter-frame dependencies
AVMEDIA_TYPE_VIDEO
@ AVMEDIA_TYPE_VIDEO
Definition: avutil.h:201
decode_frame
static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
Definition: sheervideo.c:1804