FFmpeg
Data Structures | Macros | Functions | Variables
v210dec.c File Reference
#include "avcodec.h"
#include "internal.h"
#include "v210dec.h"
#include "libavutil/bswap.h"
#include "libavutil/internal.h"
#include "libavutil/mem.h"
#include "libavutil/intreadwrite.h"
#include "thread.h"

Go to the source code of this file.

Data Structures

struct  ThreadData
 Used for passing data between threads. More...
 

Macros

#define READ_PIXELS(a, b, c)
 
#define V210DEC_FLAGS   AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_VIDEO_PARAM
 

Functions

static void v210_planar_unpack_c (const uint32_t *src, uint16_t *y, uint16_t *u, uint16_t *v, int width)
 
av_cold void ff_v210dec_init (V210DecContext *s)
 
static av_cold int decode_init (AVCodecContext *avctx)
 
static int v210_decode_slice (AVCodecContext *avctx, void *arg, int jobnr, int threadnr)
 
static int decode_frame (AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
 

Variables

static const AVOption v210dec_options []
 
static const AVClass v210dec_class
 
AVCodec ff_v210_decoder
 

Macro Definition Documentation

◆ READ_PIXELS

#define READ_PIXELS (   a,
  b,
  c 
)
Value:
do { \
val = av_le2ne32(*src++); \
*a++ = val & 0x3FF; \
*b++ = (val >> 10) & 0x3FF; \
*c++ = (val >> 20) & 0x3FF; \
} while (0)

Definition at line 33 of file v210dec.c.

◆ V210DEC_FLAGS

Definition at line 203 of file v210dec.c.

Function Documentation

◆ v210_planar_unpack_c()

static void v210_planar_unpack_c ( const uint32_t *  src,
uint16_t *  y,
uint16_t *  u,
uint16_t *  v,
int  width 
)
static

Definition at line 47 of file v210dec.c.

Referenced by ff_v210dec_init().

◆ ff_v210dec_init()

av_cold void ff_v210dec_init ( V210DecContext s)

Definition at line 60 of file v210dec.c.

Referenced by checkasm_check_v210dec(), decode_frame(), and decode_init().

◆ decode_init()

static av_cold int decode_init ( AVCodecContext avctx)
static

Definition at line 67 of file v210dec.c.

◆ v210_decode_slice()

static int v210_decode_slice ( AVCodecContext avctx,
void *  arg,
int  jobnr,
int  threadnr 
)
static

Definition at line 81 of file v210dec.c.

Referenced by decode_frame().

◆ decode_frame()

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

Definition at line 140 of file v210dec.c.

Variable Documentation

◆ v210dec_options

const AVOption v210dec_options[]
static
Initial value:
= {
{"custom_stride", "Custom V210 stride", 0x42, AV_OPT_TYPE_INT,
{.i64 = 0}, INT_MIN, INT_MAX, V210DEC_FLAGS},
{NULL}
}

Definition at line 204 of file v210dec.c.

◆ v210dec_class

const AVClass v210dec_class
static
Initial value:
= {
.class_name = "V210 Decoder",
.item_name = av_default_item_name,
.option = v210dec_options,
}

Definition at line 210 of file v210dec.c.

◆ ff_v210_decoder

AVCodec ff_v210_decoder
Initial value:
= {
.name = "v210",
.long_name = NULL_IF_CONFIG_SMALL("Uncompressed 4:2:2 10-bit"),
.priv_data_size = sizeof(V210DecContext),
.capabilities = AV_CODEC_CAP_DR1 |
.priv_class = &v210dec_class,
}

Definition at line 217 of file v210dec.c.

v210dec_options
static const AVOption v210dec_options[]
Definition: v210dec.c:204
init
static av_cold int init(AVCodecContext *avctx)
Definition: avrndec.c:31
decode_init
static av_cold int decode_init(AVCodecContext *avctx)
Definition: v210dec.c:67
b
#define b
Definition: input.c:41
val
static double val(void *priv, double ch)
Definition: aeval.c:76
decode
static void decode(AVCodecContext *dec_ctx, AVPacket *pkt, AVFrame *frame, FILE *outfile)
Definition: decode_audio.c:71
V210DecContext
Definition: v210dec.h:26
AV_CODEC_CAP_FRAME_THREADS
#define AV_CODEC_CAP_FRAME_THREADS
Codec supports frame-level multithreading.
Definition: codec.h:108
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:235
src
#define src
Definition: vp8dsp.c:255
decode_frame
static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
Definition: v210dec.c:140
c
Undefined Behavior In the C some operations are like signed integer dereferencing freed accessing outside allocated Undefined Behavior must not occur in a C it is not safe even if the output of undefined operations is unused The unsafety may seem nit picking but Optimizing compilers have in fact optimized code on the assumption that no undefined Behavior occurs Optimizing code based on wrong assumptions can and has in some cases lead to effects beyond the output of computations The signed integer overflow problem in speed critical code Code which is highly optimized and works with signed integers sometimes has the problem that often the output of the computation does not c
Definition: undefined.txt:32
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
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:117
AV_CODEC_ID_V210
@ AV_CODEC_ID_V210
Definition: codec_id.h:176
a
The reader does not expect b to be semantically here and if the code is changed by maybe adding a a division or other the signedness will almost certainly be mistaken To avoid this confusion a new type was SUINT is the C unsigned type but it holds a signed int to use the same example SUINT a
Definition: undefined.txt:41
AV_CODEC_CAP_SLICE_THREADS
#define AV_CODEC_CAP_SLICE_THREADS
Codec supports slice-based (or partition-based) multithreading.
Definition: codec.h:112
v210dec_class
static const AVClass v210dec_class
Definition: v210dec.c:210
av_le2ne32
#define av_le2ne32(x)
Definition: bswap.h:96
V210DEC_FLAGS
#define V210DEC_FLAGS
Definition: v210dec.c:203
AV_OPT_TYPE_INT
@ AV_OPT_TYPE_INT
Definition: opt.h:225
AVMEDIA_TYPE_VIDEO
@ AVMEDIA_TYPE_VIDEO
Definition: avutil.h:201