22#include "config_components.h"
54#define GET_PACKET_SIZE(w, h) (((w + 47) / 48) * 48 * h * 8 / 3)
82 if (
s->nb_linesize != n) {
84 "pixel format has %d plane\n",
93 size_t linesize[4] = {0};
94 for (
int i = 0;
i < n;
i++) {
95 if (
s->linesize[
i] <
s->raw_bytes[
i]) {
97 "minimum required size is %d for width %d\n",
98 s->linesize[
i],
i,
s->raw_bytes[
i],
s->width);
101 if (
s->linesize[
i] >
s->raw_bytes[
i])
102 s->has_padding =
true;
103 linesize[
i] =
s->linesize[
i];
106 size_t plane_size[4] = {0};
108 s->frame_size = plane_size[0] + plane_size[1] + plane_size[2] + plane_size[3];
134 packet_size =
s->width *
s->height * pgroup / xinc;
146 if (packet_size == 0)
150 ctx->packet_size = packet_size;
163 if (!
s->has_padding) {
177 pkt->pts =
pkt->dts =
pkt->pos /
s->frame_size;
180 uint8_t *p =
pkt->data;
181 for (
int i = 0;
i <
s->nb_linesize;
i++) {
182 int shift = (
i == 1 ||
i == 2) ?
desc->log2_chroma_h : 0;
186 for (
int j = 0; j <
h; j++) {
188 if (ret !=
s->raw_bytes[
i]) {
195 memset(p, 0,
pkt->size - (p -
pkt->data));
201 p +=
s->raw_bytes[
i];
209#define OFFSET(x) offsetof(RawVideoDemuxerContext, x)
210#define DEC AV_OPT_FLAG_DECODING_PARAM
214#define BITPACKED_OPTION_OFFSET 1
217#define V210_OPTION_OFFSET 2
224 .class_name =
"rawvideo demuxer",
231 .p.name =
"rawvideo",
234 .p.extensions =
"yuv,cif,qcif,rgb",
243 .class_name =
"bitpacked demuxer",
249#if CONFIG_BITPACKED_DEMUXER
251 .p.name =
"bitpacked",
254 .p.extensions =
"bitpacked",
264 .class_name =
"v210(x) demuxer",
270#if CONFIG_V210_DEMUXER
275 .p.extensions =
"v210",
284#if CONFIG_V210X_DEMUXER
289 .p.extensions =
"yuv10",
static av_always_inline int64_t avio_tell(AVIOContext *s)
ftell() equivalent for AVIOContext.
int64_t avio_skip(AVIOContext *s, int64_t offset)
Skip given number of bytes forward.
int avio_read(AVIOContext *s, unsigned char *buf, int size)
Read size bytes from AVIOContext into buf.
static int read_packet(void *opaque, uint8_t *buf, int buf_size)
static av_unused const uint8_t * skip_bytes(CABACContext *c, int n)
Skip n bytes and reset the decoder.
#define i(width, name, range_min, range_max)
#define AV_CEIL_RSHIFT(a, b)
static const FFInputFormat * ffifmt(const AVInputFormat *fmt)
static enum AVPixelFormat pix_fmt
static int read_header(FFV1Context *f, RangeCoder *c)
@ AV_OPT_TYPE_IMAGE_SIZE
Underlying C type is two consecutive integers.
@ AV_OPT_TYPE_PIXEL_FMT
Underlying C type is enum AVPixelFormat.
@ AV_OPT_TYPE_FLAG_ARRAY
May be combined with another regular option type to declare an array option.
@ AV_OPT_TYPE_VIDEO_RATE
Underlying C type is AVRational.
@ AV_OPT_TYPE_INT
Underlying C type is int.
#define AV_PKT_FLAG_CORRUPT
The packet content is corrupted.
int av_new_packet(AVPacket *pkt, int size)
Allocate the payload of a packet and initialize its fields with default values.
AVStream * avformat_new_stream(AVFormatContext *s, const struct AVCodec *c)
Add a new stream to a media file.
#define AVERROR_EOF
End of file.
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
const char * av_default_item_name(void *ptr)
Return the context name.
int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq)
Rescale a 64-bit integer by 2 rational numbers.
int av_image_get_buffer_size(enum AVPixelFormat pix_fmt, int width, int height, int align)
Return the size in bytes of the amount of data required to store an image with the given parameters.
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...
int av_image_fill_plane_sizes(size_t sizes[4], enum AVPixelFormat pix_fmt, int height, const ptrdiff_t linesizes[4])
Fill plane sizes for an image with pixel format pix_fmt and height height.
int av_image_fill_linesizes(int linesizes[4], enum AVPixelFormat pix_fmt, int width)
Fill plane linesizes for an image with pixel format pix_fmt and width width.
#define LIBAVUTIL_VERSION_INT
static int shift(int a, int b)
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
#define MKTAG(a, b, c, d)
int av_pix_fmt_count_planes(enum AVPixelFormat pix_fmt)
int av_get_bits_per_pixel(const AVPixFmtDescriptor *pixdesc)
Return the number of bits per pixel used by the pixel format described by pixdesc.
const AVPixFmtDescriptor * av_pix_fmt_desc_get(enum AVPixelFormat pix_fmt)
#define AV_PIX_FMT_YUV422P10
AVPixelFormat
Pixel format.
@ AV_PIX_FMT_YUV420P
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
@ AV_PIX_FMT_UYVY422
packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1
#define AV_PIX_FMT_YUV422P16
static int rawvideo_read_header(AVFormatContext *ctx)
#define BITPACKED_OPTION_OFFSET
static int rawvideo_read_packet(AVFormatContext *ctx, AVPacket *pkt)
static const AVClass rawvideo_demuxer_class
#define V210_OPTION_OFFSET
static const AVClass v210_demuxer_class
#define GET_PACKET_SIZE(w, h)
static const AVClass bitpacked_demuxer_class
Describe the class of an AVClass context structure.
int height
The height of the video frame in pixels.
int bits_per_coded_sample
The number of bits per sample in the codedwords.
int width
The width of the video frame in pixels.
int64_t bit_rate
The average bitrate of the encoded data (in bits per second).
enum AVMediaType codec_type
General type of the encoded data.
uint32_t codec_tag
Additional information about the codec (corresponds to the AVI FOURCC).
enum AVCodecID codec_id
Specific type of the encoded data (the codec used).
This structure stores compressed data.
Descriptor that unambiguously describes how the bits of a pixel are stored in the up to 4 data planes...
Rational number (pair of numerator and denominator).
AVCodecParameters * codecpar
Codec parameters associated with this stream.
AVRational time_base
This is the fundamental unit of time (in seconds) in terms of which frame timestamps are represented.
AVRational framerate
AVRational describing framerate, set by a private option.
enum AVPixelFormat pix_fmt
int height
Integers describing video size, set by a private option.
static AVFormatContext * ctx