Go to the documentation of this file.
29 #define MAX_YUV4_HEADER 80
30 #define MAX_FRAME_HEADER 80
36 char *tokstart, *tokend, *header_end;
40 rated = 0, aspectn = 0, aspectd = 0;
63 tokstart < header_end; tokstart++) {
64 if (*tokstart == 0x20)
66 switch (*tokstart++) {
68 width = strtol(tokstart, &tokend, 10);
72 height = strtol(tokstart, &tokend, 10);
76 if (strncmp(
"420jpeg", tokstart, 7) == 0) {
79 }
else if (strncmp(
"420mpeg2", tokstart, 8) == 0) {
82 }
else if (strncmp(
"420paldv", tokstart, 8) == 0) {
85 }
else if (strncmp(
"420p16", tokstart, 6) == 0) {
87 }
else if (strncmp(
"422p16", tokstart, 6) == 0) {
89 }
else if (strncmp(
"444p16", tokstart, 6) == 0) {
91 }
else if (strncmp(
"420p14", tokstart, 6) == 0) {
93 }
else if (strncmp(
"422p14", tokstart, 6) == 0) {
95 }
else if (strncmp(
"444p14", tokstart, 6) == 0) {
97 }
else if (strncmp(
"420p12", tokstart, 6) == 0) {
99 }
else if (strncmp(
"422p12", tokstart, 6) == 0) {
101 }
else if (strncmp(
"444p12", tokstart, 6) == 0) {
103 }
else if (strncmp(
"420p10", tokstart, 6) == 0) {
105 }
else if (strncmp(
"422p10", tokstart, 6) == 0) {
107 }
else if (strncmp(
"444p10", tokstart, 6) == 0) {
109 }
else if (strncmp(
"420p9", tokstart, 5) == 0) {
111 }
else if (strncmp(
"422p9", tokstart, 5) == 0) {
113 }
else if (strncmp(
"444p9", tokstart, 5) == 0) {
115 }
else if (strncmp(
"420", tokstart, 3) == 0) {
118 }
else if (strncmp(
"411", tokstart, 3) == 0) {
120 }
else if (strncmp(
"422", tokstart, 3) == 0) {
122 }
else if (strncmp(
"444alpha", tokstart, 8) == 0 ) {
124 "YUV4MPEG stream.\n");
126 }
else if (strncmp(
"444", tokstart, 3) == 0) {
128 }
else if (strncmp(
"mono16", tokstart, 6) == 0) {
130 }
else if (strncmp(
"mono12", tokstart, 6) == 0) {
132 }
else if (strncmp(
"mono10", tokstart, 6) == 0) {
134 }
else if (strncmp(
"mono9", tokstart, 5) == 0) {
136 }
else if (strncmp(
"mono", tokstart, 4) == 0) {
143 while (tokstart < header_end && *tokstart != 0x20)
147 switch (*tokstart++){
162 "interlaced and non-interlaced frames.\n");
169 sscanf(tokstart,
"%d:%d", &raten, &rated);
170 while (tokstart < header_end && *tokstart != 0x20)
174 sscanf(tokstart,
"%d:%d", &aspectn, &aspectd);
175 while (tokstart < header_end && *tokstart != 0x20)
179 if (strncmp(
"YSCSS=", tokstart, 6) == 0) {
182 if (strncmp(
"420JPEG", tokstart, 7) == 0)
184 else if (strncmp(
"420MPEG2", tokstart, 8) == 0)
186 else if (strncmp(
"420PALDV", tokstart, 8) == 0)
188 else if (strncmp(
"420P9", tokstart, 5) == 0)
190 else if (strncmp(
"422P9", tokstart, 5) == 0)
192 else if (strncmp(
"444P9", tokstart, 5) == 0)
194 else if (strncmp(
"420P10", tokstart, 6) == 0)
196 else if (strncmp(
"422P10", tokstart, 6) == 0)
198 else if (strncmp(
"444P10", tokstart, 6) == 0)
200 else if (strncmp(
"420P12", tokstart, 6) == 0)
202 else if (strncmp(
"422P12", tokstart, 6) == 0)
204 else if (strncmp(
"444P12", tokstart, 6) == 0)
206 else if (strncmp(
"420P14", tokstart, 6) == 0)
208 else if (strncmp(
"422P14", tokstart, 6) == 0)
210 else if (strncmp(
"444P14", tokstart, 6) == 0)
212 else if (strncmp(
"420P16", tokstart, 6) == 0)
214 else if (strncmp(
"422P16", tokstart, 6) == 0)
216 else if (strncmp(
"444P16", tokstart, 6) == 0)
218 else if (strncmp(
"411", tokstart, 3) == 0)
220 else if (strncmp(
"422", tokstart, 3) == 0)
222 else if (strncmp(
"444", tokstart, 3) == 0)
224 }
else if (strncmp(
"COLORRANGE=", tokstart, 11) == 0) {
226 if (strncmp(
"FULL",tokstart, 4) == 0)
228 else if (strncmp(
"LIMITED", tokstart, 7) == 0)
231 while (tokstart < header_end && *tokstart != 0x20)
249 if (raten <= 0 || rated <= 0) {
255 if (aspectn == 0 && aspectd == 0) {
265 av_reduce(&raten, &rated, raten, rated, (1UL << 31) - 1);
276 if ((
int)
s->packet_size < 0)
277 return s->packet_size;
301 else if (
s->pb->eof_reached)
317 pkt->
pts = (off -
s->internal->data_offset) /
s->packet_size;
329 pos =
pts *
s->packet_size;
331 if (
avio_seek(
s->pb, pos +
s->internal->data_offset, SEEK_SET) < 0)
346 .
name =
"yuv4mpegpipe",
void av_packet_unref(AVPacket *pkt)
Wipe the packet.
AVPixelFormat
Pixel format.
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFrame structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample they are references to shared objects When the negotiation mechanism computes the intersection of the formats supported at each end of a all references to both lists are replaced with a reference to the intersection And when a single format is eventually chosen for a link amongst the remaining all references to the list are updated That means that if a filter requires that its input and output have the same format amongst a supported all it has to do is use a reference to the same list of formats query_formats can leave some formats unset and return AVERROR(EAGAIN) to cause the negotiation mechanism toagain later. That can be used by filters with complex requirements to use the format negotiated on one link to set the formats supported on another. Frame references ownership and permissions
AVStream * avformat_new_stream(AVFormatContext *s, const AVCodec *c)
Add a new stream to a media file.
enum AVMediaType codec_type
General type of the encoded data.
#define AVERROR_EOF
End of file.
@ AVCOL_RANGE_JPEG
the normal 2^n-1 "JPEG" YUV ranges
#define Y4M_FRAME_MAGIC_LEN
AVRational avg_frame_rate
Average framerate.
#define AV_PIX_FMT_YUV420P10
int64_t duration
Duration of this packet in AVStream->time_base units, 0 if unknown.
int64_t avio_size(AVIOContext *s)
Get the filesize.
#define AV_PIX_FMT_YUV422P9
static av_always_inline int64_t avio_tell(AVIOContext *s)
ftell() equivalent for AVIOContext.
#define AV_PIX_FMT_GRAY16
int64_t duration
Decoding: duration of the stream, in stream time base.
int av_reduce(int *dst_num, int *dst_den, int64_t num, int64_t den, int64_t max)
Reduce a fraction.
#define AV_PIX_FMT_YUV444P10
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
#define AV_PIX_FMT_YUV422P16
static int yuv4_probe(const AVProbeData *pd)
#define AV_PIX_FMT_YUV444P16
unsigned char * buf
Buffer must have AVPROBE_PADDING_SIZE of extra allocated bytes filled with zero.
#define AV_PIX_FMT_YUV420P9
#define AV_PIX_FMT_YUV420P16
static enum AVPixelFormat pix_fmt
@ AV_PIX_FMT_YUV420P
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
#define AV_PIX_FMT_GRAY10
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.
@ AVCHROMA_LOC_LEFT
MPEG-2/4 4:2:0, H.264 default for 4:2:0.
Rational number (pair of numerator and denominator).
@ AVCHROMA_LOC_TOPLEFT
ITU-R 601, SMPTE 274M 296M S314M(DV 4:1:1), mpeg2 4:2:2.
This structure contains the data a format has to probe a file.
#define AV_PIX_FMT_YUV422P10
@ AV_PIX_FMT_GRAY8
Y , 8bpp.
@ AVCOL_RANGE_UNSPECIFIED
static int yuv4_read_packet(AVFormatContext *s, AVPacket *pkt)
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
#define AV_PIX_FMT_YUV422P12
#define AV_PIX_FMT_YUV444P12
@ AVCHROMA_LOC_UNSPECIFIED
AVRational sample_aspect_ratio
sample aspect ratio (0 if unknown)
static const uint8_t header[24]
int avio_r8(AVIOContext *s)
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.
AVChromaLocation
Location of chroma samples.
#define i(width, name, range_min, range_max)
int64_t pts
Presentation timestamp in AVStream->time_base units; the time at which the decompressed packet will b...
static av_always_inline AVRational av_inv_q(AVRational q)
Invert a rational.
enum AVColorRange color_range
Video only.
@ AVCOL_RANGE_MPEG
the normal 219*2^(n-8) "MPEG" YUV ranges
#define AV_PIX_FMT_YUV444P9
enum AVFieldOrder field_order
Video only.
int64_t avio_seek(AVIOContext *s, int64_t offset, int whence)
fseek() equivalent for AVIOContext.
#define AV_PIX_FMT_YUV420P12
enum AVChromaLocation chroma_location
#define AV_PIX_FMT_YUV422P14
@ AVCHROMA_LOC_CENTER
MPEG-1 4:2:0, JPEG 4:2:0, H.263 4:2:0.
static int yuv4_read_header(AVFormatContext *s)
@ AV_PIX_FMT_YUV444P
planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples)
@ AV_PIX_FMT_YUV422P
planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples)
AVInputFormat ff_yuv4mpegpipe_demuxer
static int yuv4_read_seek(AVFormatContext *s, int stream_index, int64_t pts, int flags)
enum AVCodecID codec_id
Specific type of the encoded data (the codec used).
This structure stores compressed data.
@ AV_PIX_FMT_YUV411P
planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples)
#define flags(name, subs,...)
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
#define AV_PIX_FMT_YUV444P14
#define AV_PIX_FMT_GRAY12
AVColorRange
MPEG vs JPEG YUV range.
#define AV_PIX_FMT_YUV420P14