rtjpeg.c File Reference
#include "libavutil/common.h"
#include "get_bits.h"
#include "rtjpeg.h"
Include dependency graph for rtjpeg.c:

Go to the source code of this file.

Macros

#define PUT_COEFF(c)
 
#define ALIGN(a)
 aligns the bitstream to the given power of two More...
 
#define BLOCK(quant, dst, stride)
 

Functions

static int get_block (GetBitContext *gb, int16_t *block, const uint8_t *scan, const uint32_t *quant)
 read one block from stream More...
 
int ff_rtjpeg_decode_frame_yuv420 (RTJpegContext *c, AVFrame *f, const uint8_t *buf, int buf_size)
 decode one rtjpeg YUV420 frame More...
 
void ff_rtjpeg_decode_init (RTJpegContext *c, DSPContext *dsp, int width, int height, const uint32_t *lquant, const uint32_t *cquant)
 initialize an RTJpegContext, may be called multiple times More...
 

Macro Definition Documentation

#define ALIGN (   a)
Value:
n = (-get_bits_count(gb)) & (a - 1); \
if (n) {skip_bits(gb, n);}
initialize output if(nPeaks >3)%at least 3 peaks in spectrum for trying to find f0 nf0peaks
static int get_bits_count(const GetBitContext *s)
Definition: get_bits.h:193
static void skip_bits(GetBitContext *s, int n)
Definition: get_bits.h:265

aligns the bitstream to the given power of two

Definition at line 30 of file rtjpeg.c.

Referenced by get_block().

#define BLOCK (   quant,
  dst,
  stride 
)
Value:
do { \
int res = get_block(&gb, block, c->scan, quant); \
if (res < 0) \
return res; \
if (res > 0) \
c->dsp->idct_put(dst, stride, block); \
} while (0)
static int get_block(GetBitContext *gb, int16_t *block, const uint8_t *scan, const uint32_t *quant)
read one block from stream
Definition: rtjpeg.c:46
int stride
Definition: mace.c:144
initialize output if(nPeaks >3)%at least 3 peaks in spectrum for trying to find f0 nf0peaks
const uint8_t * quant
static double c[64]
else dst[i][x+y *dst_stride[i]]
Definition: vf_mcdeint.c:160
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several the filter must be ready for frames arriving randomly on any input any filter with several inputs will most likely require some kind of queuing mechanism It is perfectly acceptable to have a limited queue and to drop frames when the inputs are too unbalanced request_frame This method is called when a frame is wanted on an output For an it should directly call filter_frame on the corresponding output For a if there are queued frames already one of these frames should be pushed If the filter should request a frame on one of its repeatedly until at least one frame has been pushed Return it should return

Referenced by ff_rtjpeg_decode_frame_yuv420().

#define PUT_COEFF (   c)
Value:
i = scan[coeff--]; \
block[i] = (c) * quant[i];
synthesis window for stochastic i
static const double coeff[2][5]
Definition: vf_ow.c:64
const uint8_t * quant
static double c[64]

Definition at line 25 of file rtjpeg.c.

Referenced by get_block().

Function Documentation

int ff_rtjpeg_decode_frame_yuv420 ( RTJpegContext c,
AVFrame f,
const uint8_t buf,
int  buf_size 
)

decode one rtjpeg YUV420 frame

Parameters
ccontext, must be initialized via ff_rtjpeg_decode_init
fAVFrame to place decoded frame into. If parts of the frame are not coded they are left unchanged, so consider initializing it
bufbuffer containing input data
buf_sizelength of input data in bytes
Returns
number of bytes consumed from the input buffer

Definition at line 106 of file rtjpeg.c.

Referenced by decode_frame().

void ff_rtjpeg_decode_init ( RTJpegContext c,
DSPContext dsp,
int  width,
int  height,
const uint32_t *  lquant,
const uint32_t *  cquant 
)

initialize an RTJpegContext, may be called multiple times

Parameters
ccontext to initialize
dspspecifies the idct to use for decoding
widthwidth of image, will be rounded down to the nearest multiple of 16 for decoding
heightheight of image, will be rounded down to the nearest multiple of 16 for decoding
lquantluma quantization table to use
cquantchroma quantization table to use

Definition at line 156 of file rtjpeg.c.

Referenced by codec_reinit(), and decode_frame().

static int get_block ( GetBitContext gb,
int16_t *  block,
const uint8_t scan,
const uint32_t *  quant 
)
inlinestatic

read one block from stream

Parameters
gbcontains stream data
blockwhere data is written to
scanarray containing the mapping stream address -> block position
quantquantization factors
Returns
0 means the block is not coded, < 0 means an error occurred.

Note: GetBitContext is used to make the code simpler, since all data is aligned this could be done faster in a different way, e.g. as it is done in MPlayer libmpcodecs/native/rtjpegn.c.

Definition at line 46 of file rtjpeg.c.