66 uint64_t packet_size = (uint64_t)avpkt->
size * 8;
83 y = (uint16_t*)(
frame->data[0] +
i *
frame->linesize[0]);
84 u = (uint16_t*)(
frame->data[1] +
i *
frame->linesize[1]);
85 v = (uint16_t*)(
frame->data[2] +
i *
frame->linesize[2]);
87 for (j = 0; j < avctx->
width; j += 2) {
88 *
u++ = (
src[0] << 2) | (
src[1] >> 6);
89 *v++ = ((
src[2] << 6) | (
src[3] >> 2)) & 0x3ff;
90 *y++ = ((
src[1] << 4) | (
src[2] >> 4)) & 0x3ff;
91 *y++ = ((
src[3] << 8) | (
src[4])) & 0x3ff;
126 int buf_size = avpkt->
size;
139 .p.name =
"bitpacked",
147 .codec_tags = (
const uint32_t []){
148 MKTAG(
'U',
'Y',
'V',
'Y'),
const FFCodec ff_bitpacked_decoder
Libavcodec external API header.
static int bitpacked_decode(AVCodecContext *avctx, AVFrame *frame, int *got_frame, AVPacket *avpkt)
static int bitpacked_decode_yuv422p10(AVCodecContext *avctx, AVFrame *frame, const AVPacket *avpkt)
static av_cold int bitpacked_init_decoder(AVCodecContext *avctx)
static int bitpacked_decode_uyvy422(AVCodecContext *avctx, AVFrame *frame, const AVPacket *avpkt)
#define i(width, name, range_min, range_max)
#define FF_CODEC_TAGS_END
FFCodec.codec_tags termination value.
#define FF_CODEC_DECODE_CB(func)
#define CODEC_LONG_NAME(str)
int(* init)(AVBSFContext *ctx)
static const uint8_t frame_size[4]
#define AV_CODEC_CAP_FRAME_THREADS
Codec supports frame-level multithreading.
void av_buffer_unref(AVBufferRef **buf)
Free a given reference and automatically free the buffer if there are no more references to it.
AVBufferRef * av_buffer_ref(const AVBufferRef *buf)
Create a new reference to an AVBuffer.
#define AVERROR_PATCHWELCOME
Not yet implemented in FFmpeg, patches welcome.
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
int av_image_fill_arrays(uint8_t *dst_data[4], int dst_linesize[4], const uint8_t *src, enum AVPixelFormat pix_fmt, int width, int height, int align)
Setup the data pointers and linesizes based on the specified image parameters and the provided array.
#define u(width, name, range_min, range_max)
Multithreading API for decoders.
#define MKTAG(a, b, c, d)
#define AV_PIX_FMT_YUV422P10
@ AV_PIX_FMT_UYVY422
packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1
int ff_thread_get_buffer(AVCodecContext *avctx, AVFrame *f, int flags)
Wrapper around get_buffer() for frame-multithreaded codecs.
main external API structure.
enum AVPixelFormat pix_fmt
Pixel format, see AV_PIX_FMT_xxx.
int width
picture width / height.
unsigned int codec_tag
fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A').
int bits_per_coded_sample
bits per sample/pixel from the demuxer (needed for huffyuv).
This structure describes decoded (raw) audio or video data.
This structure stores compressed data.
AVBufferRef * buf
A reference to the reference-counted buffer where the packet data is stored.
int(* decode)(AVCodecContext *avctx, AVFrame *frame, const AVPacket *pkt)