proresdec_lgpl.c File Reference

This is a decoder for Apple ProRes 422 SD/HQ/LT/Proxy and ProRes 4444. More...

#include <stdint.h>
#include "libavutil/intmath.h"
#include "avcodec.h"
#include "dsputil.h"
#include "internal.h"
#include "proresdata.h"
#include "proresdsp.h"
#include "get_bits.h"
Include dependency graph for proresdec_lgpl.c:

Go to the source code of this file.

Data Structures

struct  ProresThreadData
 
struct  ProresContext
 

Macros

#define LONG_BITSTREAM_READER
 
#define LSB2SIGN(x)   (-((x) & 1))
 
#define TOSIGNED(x)   (((x) >> 1) ^ LSB2SIGN(x))
 
#define MOVE_DATA_PTR(nbytes)   buf += (nbytes); buf_size -= (nbytes)
 

Functions

static av_cold int decode_init (AVCodecContext *avctx)
 
static int decode_frame_header (ProresContext *ctx, const uint8_t *buf, const int data_size, AVCodecContext *avctx)
 
static int decode_picture_header (ProresContext *ctx, const uint8_t *buf, const int data_size, AVCodecContext *avctx)
 
static int decode_vlc_codeword (GetBitContext *gb, unsigned codebook)
 Read an unsigned rice/exp golomb codeword. More...
 
static void decode_dc_coeffs (GetBitContext *gb, int16_t *out, int nblocks)
 Decode DC coefficients for all blocks in a slice. More...
 
static void decode_ac_coeffs (GetBitContext *gb, int16_t *out, int blocks_per_slice, int plane_size_factor, const uint8_t *scan)
 Decode AC coefficients for all blocks in a slice. More...
 
static void decode_slice_plane (ProresContext *ctx, ProresThreadData *td, const uint8_t *buf, int data_size, uint16_t *out_ptr, int linesize, int mbs_per_slice, int blocks_per_mb, int plane_size_factor, const int16_t *qmat, int is_chroma)
 Decode a slice plane (luma or chroma). More...
 
static int decode_slice (AVCodecContext *avctx, void *tdata)
 
static int decode_picture (ProresContext *ctx, int pic_num, AVCodecContext *avctx)
 
static int decode_frame (AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
 
static av_cold int decode_close (AVCodecContext *avctx)
 

Variables

AVCodec ff_prores_lgpl_decoder
 

Detailed Description

This is a decoder for Apple ProRes 422 SD/HQ/LT/Proxy and ProRes 4444.

It is used for storing and editing high definition video data in Apple's Final Cut Pro.

See also
http://wiki.multimedia.cx/index.php?title=Apple_ProRes

Definition in file proresdec_lgpl.c.

Macro Definition Documentation

#define LONG_BITSTREAM_READER

Definition at line 31 of file proresdec_lgpl.c.

#define LSB2SIGN (   x)    (-((x) & 1))

Definition at line 333 of file proresdec_lgpl.c.

#define MOVE_DATA_PTR (   nbytes)    buf += (nbytes); buf_size -= (nbytes)

Definition at line 598 of file proresdec_lgpl.c.

Referenced by decode_frame().

#define TOSIGNED (   x)    (((x) >> 1) ^ LSB2SIGN(x))

Definition at line 334 of file proresdec_lgpl.c.

Referenced by decode_dc_coeffs().

Function Documentation

static void decode_ac_coeffs ( GetBitContext gb,
int16_t *  out,
int  blocks_per_slice,
int  plane_size_factor,
const uint8_t scan 
)
inlinestatic

Decode AC coefficients for all blocks in a slice.

Definition at line 367 of file proresdec_lgpl.c.

Referenced by decode_slice_plane().

static av_cold int decode_close ( AVCodecContext avctx)
static

Definition at line 648 of file proresdec_lgpl.c.

static void decode_dc_coeffs ( GetBitContext gb,
int16_t *  out,
int  nblocks 
)
inlinestatic

Decode DC coefficients for all blocks in a slice.

Definition at line 339 of file proresdec_lgpl.c.

Referenced by decode_slice_plane().

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

Definition at line 600 of file proresdec_lgpl.c.

static int decode_frame_header ( ProresContext ctx,
const uint8_t buf,
const int  data_size,
AVCodecContext avctx 
)
static

Definition at line 99 of file proresdec_lgpl.c.

Referenced by decode_frame().

static av_cold int decode_init ( AVCodecContext avctx)
static

Definition at line 81 of file proresdec_lgpl.c.

static int decode_picture ( ProresContext ctx,
int  pic_num,
AVCodecContext avctx 
)
static

Definition at line 567 of file proresdec_lgpl.c.

Referenced by decode_frame().

static int decode_picture_header ( ProresContext ctx,
const uint8_t buf,
const int  data_size,
AVCodecContext avctx 
)
static

Definition at line 211 of file proresdec_lgpl.c.

Referenced by decode_frame().

static int decode_slice ( AVCodecContext avctx,
void tdata 
)
static

Definition at line 469 of file proresdec_lgpl.c.

Referenced by decode_picture().

static void decode_slice_plane ( ProresContext ctx,
ProresThreadData td,
const uint8_t buf,
int  data_size,
uint16_t *  out_ptr,
int  linesize,
int  mbs_per_slice,
int  blocks_per_mb,
int  plane_size_factor,
const int16_t *  qmat,
int  is_chroma 
)
static

Decode a slice plane (luma or chroma).

Definition at line 412 of file proresdec_lgpl.c.

Referenced by decode_slice().

static int decode_vlc_codeword ( GetBitContext gb,
unsigned  codebook 
)
inlinestatic

Read an unsigned rice/exp golomb codeword.

Definition at line 295 of file proresdec_lgpl.c.

Referenced by decode_ac_coeffs(), and decode_dc_coeffs().

Variable Documentation

AVCodec ff_prores_lgpl_decoder
Initial value:
= {
.name = "prores_lgpl",
.priv_data_size = sizeof(ProresContext),
.long_name = NULL_IF_CONFIG_SMALL("Apple ProRes (iCodec Pro)")
}
static av_cold int init(AVCodecContext *avctx)
Definition: avrndec.c:35
#define CODEC_CAP_DR1
Codec uses get_buffer() for allocating buffers and supports custom allocators.
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
static av_cold int decode_close(AVCodecContext *avctx)
static av_cold int decode_init(AVCodecContext *avctx)
static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
static void close(AVCodecParserContext *s)
Definition: h264_parser.c:375
#define CODEC_CAP_SLICE_THREADS
Codec supports slice-based (or partition-based) multithreading.
struct ProresContext ProresContext
static int decode(AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
Definition: crystalhd.c:868

Definition at line 658 of file proresdec_lgpl.c.