31#define FRAME_HEADER_SIZE 64
34#define SUBSAMPLE_420 0
35#define SUBSAMPLE_422 1
36#define YUVORDER_YUYV 0
37#define YUVORDER_UYVY 1
38#define NOT_COMPRESSED 0
40#define NO_DECIMATION 0
41#define DECIMATION_ENAB 1
64 uint8_t *y, *
u, *v, *y_end, *u_end, *v_end;
110 i++,
src += linelength, src_size -= linelength
117 if (src_size < linelength) {
122 if (
src[linelength - 1] !=
EOL) {
124 av_log(avctx,
AV_LOG_WARNING,
"Wrong line length %d or line not terminated properly (found 0x%02x)!\n", linelength,
src[linelength - 1]);
133 v = &
frame->data[2][(
i >> 1) *
frame->linesize[2]];
134 y_end = y +
frame->linesize[0] - 1;
135 u_end =
u +
frame->linesize[1] - 1;
136 v_end = v +
frame->linesize[2] - 1;
142 for (j = 0; j < linelength - 1; j++) {
162 for (j = 0; j < linelength - 4; ) {
163 if (y + 1 > y_end ||
u > u_end || v > v_end) {
const FFCodec ff_cpia_decoder
static av_cold void close(AVCodecParserContext *s)
Libavcodec external API header.
static void BS_FUNC skip(BSCTX *bc, unsigned int n)
Skip n bits in the buffer.
#define i(width, name, range_min, range_max)
#define FF_CODEC_DECODE_CB(func)
#define CODEC_LONG_NAME(str)
#define EOL
End Of Line marker.
#define FRAME_HEADER_SIZE
#define MAGIC_0
First header byte.
static av_cold int cpia_decode_init(AVCodecContext *avctx)
static int cpia_decode_frame(AVCodecContext *avctx, AVFrame *rframe, int *got_frame, AVPacket *avpkt)
#define MAGIC_1
Second header byte.
static av_cold int cpia_decode_end(AVCodecContext *avctx)
int ff_reget_buffer(AVCodecContext *avctx, AVFrame *frame, int flags)
Identical in function to ff_get_buffer(), except it reuses the existing buffer if available.
int(* init)(AVBSFContext *ctx)
#define FF_DECODE_ERROR_INVALID_BITSTREAM
#define AV_CODEC_CAP_DR1
Codec uses get_buffer() or get_encode_buffer() for allocating buffers and supports custom allocators.
#define AVERROR_PATCHWELCOME
Not yet implemented in FFmpeg, patches welcome.
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
#define AV_FRAME_FLAG_KEY
A flag to mark frames that are keyframes.
int av_frame_ref(AVFrame *dst, const AVFrame *src)
Set up a new reference to the data described by the source frame.
void av_frame_free(AVFrame **frame)
Free the frame and any dynamically allocated objects in it, e.g.
AVFrame * av_frame_alloc(void)
Allocate an AVFrame and set its fields to default values.
#define AV_LOG_WARNING
Something somehow does not look correct.
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
@ AV_PICTURE_TYPE_I
Intra.
@ AV_PICTURE_TYPE_P
Predicted.
#define u(width, name, range_min, range_max)
void avpriv_report_missing_feature(void *avc, const char *msg,...) av_printf_format(2
Log a generic warning message about a missing feature.
@ AV_PIX_FMT_YUV420P
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
static const uint8_t header[24]
main external API structure.
enum AVPixelFormat pix_fmt
Pixel format, see AV_PIX_FMT_xxx.
This structure describes decoded (raw) audio or video data.
This structure stores compressed data.