27 #define MAX_YUV4_HEADER 80 
   28 #define MAX_FRAME_HEADER 80 
   34     char *tokstart, *tokend, *header_end;
 
   38         rated =  0, aspectn =  0, aspectd = 0;
 
   46         if (header[i] == 
'\n') {
 
   53     if (i == MAX_YUV4_HEADER)
 
   58     header_end = &header[i + 1]; 
 
   59     for (tokstart = &header[strlen(
Y4M_MAGIC) + 1];
 
   60          tokstart < header_end; tokstart++) {
 
   61         if (*tokstart == 0x20)
 
   63         switch (*tokstart++) {
 
   65             width    = strtol(tokstart, &tokend, 10);
 
   69             height   = strtol(tokstart, &tokend, 10);
 
   73             if (strncmp(
"420jpeg", tokstart, 7) == 0) {
 
   76             } 
else if (strncmp(
"420mpeg2", tokstart, 8) == 0) {
 
   79             } 
else if (strncmp(
"420paldv", tokstart, 8) == 0) {
 
   82             } 
else if (strncmp(
"420p16", tokstart, 6) == 0) {
 
   84             } 
else if (strncmp(
"422p16", tokstart, 6) == 0) {
 
   86             } 
else if (strncmp(
"444p16", tokstart, 6) == 0) {
 
   88             } 
else if (strncmp(
"420p14", tokstart, 6) == 0) {
 
   90             } 
else if (strncmp(
"422p14", tokstart, 6) == 0) {
 
   92             } 
else if (strncmp(
"444p14", tokstart, 6) == 0) {
 
   94             } 
else if (strncmp(
"420p12", tokstart, 6) == 0) {
 
   96             } 
else if (strncmp(
"422p12", tokstart, 6) == 0) {
 
   98             } 
else if (strncmp(
"444p12", tokstart, 6) == 0) {
 
  100             } 
else if (strncmp(
"420p10", tokstart, 6) == 0) {
 
  102             } 
else if (strncmp(
"422p10", tokstart, 6) == 0) {
 
  104             } 
else if (strncmp(
"444p10", tokstart, 6) == 0) {
 
  106             } 
else if (strncmp(
"420p9", tokstart, 5) == 0) {
 
  108             } 
else if (strncmp(
"422p9", tokstart, 5) == 0) {
 
  110             } 
else if (strncmp(
"444p9", tokstart, 5) == 0) {
 
  112             } 
else if (strncmp(
"420", tokstart, 3) == 0) {
 
  115             } 
else if (strncmp(
"411", tokstart, 3) == 0) {
 
  117             } 
else if (strncmp(
"422", tokstart, 3) == 0) {
 
  119             } 
else if (strncmp(
"444alpha", tokstart, 8) == 0 ) {
 
  121                        "YUV4MPEG stream.\n");
 
  123             } 
else if (strncmp(
"444", tokstart, 3) == 0) {
 
  125             } 
else if (strncmp(
"mono16", tokstart, 6) == 0) {
 
  127             } 
else if (strncmp(
"mono", tokstart, 4) == 0) {
 
  134             while (tokstart < header_end && *tokstart != 0x20)
 
  138             switch (*tokstart++){
 
  153                        "interlaced and non-interlaced frames.\n");
 
  160             sscanf(tokstart, 
"%d:%d", &raten, &rated); 
 
  161             while (tokstart < header_end && *tokstart != 0x20)
 
  165             sscanf(tokstart, 
"%d:%d", &aspectn, &aspectd); 
 
  166             while (tokstart < header_end && *tokstart != 0x20)
 
  170             if (strncmp(
"YSCSS=", tokstart, 6) == 0) {
 
  173                 if (strncmp(
"420JPEG", tokstart, 7) == 0)
 
  175                 else if (strncmp(
"420MPEG2", tokstart, 8) == 0)
 
  177                 else if (strncmp(
"420PALDV", tokstart, 8) == 0)
 
  179                 else if (strncmp(
"420P9", tokstart, 5) == 0)
 
  181                 else if (strncmp(
"422P9", tokstart, 5) == 0)
 
  183                 else if (strncmp(
"444P9", tokstart, 5) == 0)
 
  185                 else if (strncmp(
"420P10", tokstart, 6) == 0)
 
  187                 else if (strncmp(
"422P10", tokstart, 6) == 0)
 
  189                 else if (strncmp(
"444P10", tokstart, 6) == 0)
 
  191                 else if (strncmp(
"420P12", tokstart, 6) == 0)
 
  193                 else if (strncmp(
"422P12", tokstart, 6) == 0)
 
  195                 else if (strncmp(
"444P12", tokstart, 6) == 0)
 
  197                 else if (strncmp(
"420P14", tokstart, 6) == 0)
 
  199                 else if (strncmp(
"422P14", tokstart, 6) == 0)
 
  201                 else if (strncmp(
"444P14", tokstart, 6) == 0)
 
  203                 else if (strncmp(
"420P16", tokstart, 6) == 0)
 
  205                 else if (strncmp(
"422P16", tokstart, 6) == 0)
 
  207                 else if (strncmp(
"444P16", tokstart, 6) == 0)
 
  209                 else if (strncmp(
"411", tokstart, 3) == 0)
 
  211                 else if (strncmp(
"422", tokstart, 3) == 0)
 
  213                 else if (strncmp(
"444", tokstart, 3) == 0)
 
  216             while (tokstart < header_end && *tokstart != 0x20)
 
  222     if (width == -1 || 
height == -1) {
 
  231             pix_fmt = alt_pix_fmt;
 
  234     if (raten <= 0 || rated <= 0) {
 
  240     if (aspectn == 0 && aspectd == 0) {
 
  250     av_reduce(&raten, &rated, raten, rated, (1UL << 31) - 1);
 
  278         if (header[i] == 
'\n') {
 
  287     else if (i == MAX_FRAME_HEADER)
 
  322     .
name           = 
"yuv4mpegpipe",
 
#define AVERROR_INVALIDDATA
Invalid data found when processing input. 
 
static enum AVPixelFormat pix_fmt
 
int64_t avio_size(AVIOContext *s)
Get the filesize. 
 
mpeg2/4 4:2:0, h264 default for 4:2:0 
 
#define AV_PIX_FMT_YUV444P14
 
planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples) 
 
AVRational sample_aspect_ratio
sample aspect ratio (0 if unknown) 
 
int64_t avio_seek(AVIOContext *s, int64_t offset, int whence)
fseek() equivalent for AVIOContext. 
 
AVFormatInternal * internal
An opaque field for libavformat internal usage. 
 
enum AVPixelFormat pix_fmt
Pixel format, see AV_PIX_FMT_xxx. 
 
#define AV_PIX_FMT_YUV420P12
 
AVStream * avformat_new_stream(AVFormatContext *s, const AVCodec *c)
Add a new stream to a media file. 
 
#define AVERROR_EOF
End of file. 
 
#define AV_PIX_FMT_YUV444P16
 
static av_always_inline int64_t avio_tell(AVIOContext *s)
ftell() equivalent for AVIOContext. 
 
static const uint8_t header[24]
 
#define AV_PIX_FMT_YUV422P12
 
int duration
Duration of this packet in AVStream->time_base units, 0 if unknown. 
 
enum AVChromaLocation chroma_sample_location
This defines the location of chroma samples. 
 
static int yuv4_read_packet(AVFormatContext *s, AVPacket *pkt)
 
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered. 
 
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
 
#define AV_PIX_FMT_YUV444P10
 
AVRational avg_frame_rate
Average framerate. 
 
planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples) 
 
int avio_r8(AVIOContext *s)
 
AVCodecContext * codec
Codec context associated with this stream. 
 
int av_reduce(int *dst_num, int *dst_den, int64_t num, int64_t den, int64_t max)
Reduce a fraction. 
 
unsigned char * buf
Buffer must have AVPROBE_PADDING_SIZE of extra allocated bytes filled with zero. 
 
#define AV_PIX_FMT_YUV422P9
 
#define AV_PIX_FMT_GRAY16
 
int width
picture width / height. 
 
ITU-R 601, SMPTE 274M 296M S314M(DV 4:1:1), mpeg2 4:2:2. 
 
static int yuv4_read_seek(AVFormatContext *s, int stream_index, int64_t pts, int flags)
 
#define AV_PIX_FMT_YUV444P9
 
#define AV_PIX_FMT_YUV420P16
 
#define AV_PIX_FMT_YUV420P14
 
enum AVMediaType codec_type
 
static int yuv4_read_header(AVFormatContext *s)
 
AVIOContext * pb
I/O context. 
 
BYTE int const BYTE int int int height
 
#define AV_PIX_FMT_YUV420P10
 
rational number numerator/denominator 
 
#define AV_PIX_FMT_YUV420P9
 
int error
contains the error code or 0 if no error happened 
 
This structure contains the data a format has to probe a file. 
 
#define AV_PIX_FMT_YUV422P14
 
static int64_t pts
Global timestamp for the audio frames. 
 
#define AV_PIX_FMT_YUV422P10
 
static av_always_inline AVRational av_inv_q(AVRational q)
Invert a rational. 
 
#define AV_PIX_FMT_YUV444P12
 
int64_t duration
Decoding: duration of the stream, in stream time base. 
 
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples) 
 
planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) 
 
int eof_reached
true if eof reached 
 
int avpicture_get_size(enum AVPixelFormat pix_fmt, int width, int height)
Calculate the size in bytes that a picture of the given width and height would occupy if stored in th...
 
AVInputFormat ff_yuv4mpegpipe_demuxer
 
static int yuv4_probe(AVProbeData *pd)
 
#define Y4M_FRAME_MAGIC_LEN
 
enum AVFieldOrder field_order
Field order. 
 
AVChromaLocation
Location of chroma samples. 
 
mpeg1 4:2:0, jpeg 4:2:0, h263 4:2:0 
 
AVRational time_base
This is the fundamental unit of time (in seconds) in terms of which frame timestamps are represented...
 
AVPixelFormat
Pixel format. 
 
This structure stores compressed data. 
 
#define AV_PIX_FMT_YUV422P16
 
int64_t pts
Presentation timestamp in AVStream->time_base units; the time at which the decompressed packet will b...