40 uint32_t lq[64], cq[64];
46 16, 11, 10, 16, 24, 40, 51, 61,
47 12, 12, 14, 19, 26, 58, 60, 55,
48 14, 13, 16, 24, 40, 57, 69, 56,
49 14, 17, 22, 29, 51, 87, 80, 62,
50 18, 22, 37, 56, 68, 109, 103, 77,
51 24, 35, 55, 64, 81, 104, 113, 92,
52 49, 64, 78, 87, 103, 121, 120, 101,
53 72, 92, 95, 98, 112, 100, 103, 99
57 17, 18, 24, 47, 99, 99, 99, 99,
58 18, 21, 26, 66, 99, 99, 99, 99,
59 24, 26, 56, 99, 99, 99, 99, 99,
60 47, 66, 99, 99, 99, 99, 99, 99,
61 99, 99, 99, 99, 99, 99, 99, 99,
62 99, 99, 99, 99, 99, 99, 99, 99,
63 99, 99, 99, 99, 99, 99, 99, 99,
64 99, 99, 99, 99, 99, 99, 99, 99
88 if (size < 2 * 64 * 4) {
92 for (i = 0; i < 64; i++, buf += 4)
94 for (i = 0; i < 64; i++, buf += 4)
105 quality =
FFMAX(quality, 1);
106 for (i = 0; i < 64; i++) {
134 "Can't allocate decompression buffer.\n");
142 }
else if (quality != c->
quality)
153 int buf_size = avpkt->
size;
156 int orig_size = buf_size;
161 NUV_UNCOMPRESSED =
'0',
163 NUV_RTJPEG_IN_LZO =
'2',
175 if (buf[0] ==
'D' && buf[1] ==
'R') {
180 ret =
get_quant(avctx, c, buf, buf_size);
188 if (buf[0] !=
'V' || buf_size < 12) {
194 case NUV_RTJPEG_IN_LZO:
208 if (comptype == NUV_RTJPEG_IN_LZO || comptype == NUV_LZO) {
210 int inlen = buf_size;
230 if (comptype == NUV_RTJPEG_IN_LZO || comptype == NUV_LZO)
236 if (keyframe && c->
pic.
data[0])
252 case NUV_UNCOMPRESSED: {
254 if (buf_size < c->
width * height * 3 / 2) {
256 height = buf_size / c->
width / 3 * 2;
261 case NUV_RTJPEG_IN_LZO:
av_cold void ff_dsputil_init(DSPContext *c, AVCodecContext *avctx)
static av_cold int decode_end(AVCodecContext *avctx)
This structure describes decoded (raw) audio or video data.
int avpicture_fill(AVPicture *picture, uint8_t *ptr, enum AVPixelFormat pix_fmt, int width, int height)
Fill in the AVPicture fields.
int buffer_hints
codec suggestion on buffer type if != 0
void(* release_buffer)(struct AVCodecContext *c, AVFrame *pic)
Called to release buffers which were allocated with get_buffer.
#define RTJPEG_FILE_VERSION
static int get_quant(AVCodecContext *avctx, NuvContext *c, const uint8_t *buf, int size)
extract quantization tables from codec data into our context
enum AVPixelFormat pix_fmt
Pixel format, see AV_PIX_FMT_xxx.
static void get_quant_quality(NuvContext *c, int quality)
set quantization tables from a quality value
static const uint8_t fallback_lquant[]
four components are given, that's all.
int(* reget_buffer)(struct AVCodecContext *c, AVFrame *pic)
Called at the beginning of a frame to get cr buffer for it.
void av_freep(void *arg)
Free a memory block which has been allocated with av_malloc(z)() or av_realloc() and set the pointer ...
void av_picture_copy(AVPicture *dst, const AVPicture *src, enum AVPixelFormat pix_fmt, int width, int height)
Copy image src to dst.
static int decode(MimicContext *ctx, int quality, int num_coeffs, int is_iframe)
int ff_rtjpeg_decode_frame_yuv420(RTJpegContext *c, AVFrame *f, const uint8_t *buf, int buf_size)
decode one rtjpeg YUV420 frame
uint8_t * extradata
some codecs need / can use extradata like Huffman tables.
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
#define MKTAG(a, b, c, d)
static int init(AVCodecParserContext *s)
#define FF_BUFFER_HINTS_READABLE
void * av_fast_realloc(void *ptr, unsigned int *size, size_t min_size)
Reallocate the given block if it is not large enough, otherwise do nothing.
int reference
is this picture used as reference The values for this are the same as the MpegEncContext.picture_structure variable, that is 1->top field, 2->bottom field, 3->frame/both fields.
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
void av_log(void *avcl, int level, const char *fmt,...)
const char * name
Name of the codec implementation.
static av_cold int decode_init(AVCodecContext *avctx)
unsigned char * decomp_buf
int av_image_check_size(unsigned int w, unsigned int h, int log_offset, void *log_ctx)
Check if the given dimension of an image is valid, meaning that all bytes of the image can be address...
enum AVPictureType pict_type
Picture type of the frame, see ?_TYPE below.
int width
picture width / height.
int av_lzo1x_decode(void *out, int *outlen, const void *in, int *inlen)
Decodes LZO 1x compressed data.
main external API structure.
static void close(AVCodecParserContext *s)
static void copy_frame(AVFrame *f, const uint8_t *src, int width, int height)
copy frame data from buffer to AVFrame, handling stride.
unsigned int codec_tag
fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A').
#define FF_INPUT_BUFFER_PADDING_SIZE
#define FF_BUFFER_HINTS_REUSABLE
#define FF_BUFFER_HINTS_PRESERVE
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes.
static const uint8_t fallback_cquant[]
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
common internal and external API header
#define AVERROR_INVALIDDATA
static int codec_reinit(AVCodecContext *avctx, int width, int height, int quality)
#define RTJPEG_HEADER_SIZE
int key_frame
1 -> keyframe, 0-> not
#define FF_BUFFER_HINTS_VALID
static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
This structure stores compressed data.