23 #define _DEFAULT_SOURCE 
   42 #define GLOB_NOMAGIC 0 
   68             *width_ptr  = 
sizes[i][0];
 
   69             *height_ptr = 
sizes[i][1];
 
   83     while (p = strchr(p, 
'%')) {
 
   88         if (span = strspn(p, 
"*?[]{}"))
 
  108                             const char *path, 
int start_index, 
int start_index_range)
 
  111     int range, last_index, range1, first_index;
 
  114     for (first_index = start_index; first_index < start_index + start_index_range; first_index++) {
 
  125     if (first_index == start_index + start_index_range)
 
  129     last_index = first_index;
 
  138                                       last_index + range1) < 0)
 
  144             if (range >= (1 << 30))
 
  152     *pfirst_index = first_index;
 
  153     *plast_index  = last_index;
 
  182     int first_index = 1, last_index = 1;
 
  213 #if !HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 
  214         av_log(s1, 
AV_LOG_ERROR, 
"POSIX.1-2008 not supported, nanosecond file timestamps unavailable\n");
 
  240             char *p = s->
path, *q, *dup;
 
  245                    "use pattern_type 'glob' instead\n");
 
  250                 if ((p - s->
path) >= (
sizeof(s->
path) - 2))
 
  252                 if (*q == 
'%' && strspn(q + 1, 
"%*?[]{}"))
 
  254                 else if (strspn(q, 
"\\*?[]{}"))
 
  261             gerr = glob(s->
path, GLOB_NOCHECK|GLOB_BRACE|GLOB_NOMAGIC, 
NULL, &s->globstate);
 
  266             last_index = s->globstate.gl_pathc - 1;
 
  274                        "Could find no file with path '%s' and index in the range %d-%d\n",
 
  281             gerr = glob(s->
path, GLOB_NOCHECK|GLOB_BRACE|GLOB_NOMAGIC, 
NULL, &s->globstate);
 
  286             last_index = s->globstate.gl_pathc - 1;
 
  290                    "Pattern type 'glob' was selected but globbing " 
  291                    "is not supported by this libavformat build\n");
 
  296                    "Unknown value '%d' for pattern_type option\n", s->
pattern_type);
 
  305             st->
duration   = last_index - first_index + 1;
 
  319         const char *str = strrchr(s->
path, 
'.');
 
  323             int probe_buffer_size = 2048;
 
  331             probe_buffer_size = 
avio_read(s1->
pb, probe_buffer, probe_buffer_size);
 
  332             if (probe_buffer_size < 0) {
 
  334                 return probe_buffer_size;
 
  338             pd.
buf = probe_buffer;
 
  375     char filename_bytes[1024];
 
  376     char *filename = filename_bytes;
 
  378     int size[3]           = { 0 }, ret[3] = { 0 };
 
  393             filename = s->globstate.gl_pathv[s->
img_number];
 
  401         for (i = 0; i < 3; i++) {
 
  403                 !strcmp(filename_bytes, s->
path) &&
 
  418             filename[strlen(filename) - 1] = 
'U' + i;
 
  431             memset(header + ret, 0, 
sizeof(header) - ret);
 
  466         struct stat img_stat;
 
  467         if (stat(filename, &img_stat)) {
 
  471         pkt->
pts = (int64_t)img_stat.st_mtime;
 
  472 #
if HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC
 
  474             pkt->
pts = 1000000000*pkt->
pts + img_stat.st_mtim.tv_nsec;
 
  485     for (i = 0; i < 3; i++) {
 
  501     if (ret[0] <= 0 || ret[1] < 0 || ret[2] < 0) {
 
  505         } 
else if (ret[1] < 0) {
 
  507         } 
else if (ret[2] < 0) {
 
  522         for (i = 0; i < 3; i++) {
 
  535         globfree(&s->globstate);
 
  561 #define OFFSET(x) offsetof(VideoDemuxData, x) 
  562 #define DEC AV_OPT_FLAG_DECODING_PARAM 
  574     { 
"start_number", 
"set first number in the sequence",    
OFFSET(start_number), 
AV_OPT_TYPE_INT,    {.i64 = 0   }, INT_MIN, INT_MAX, 
DEC },
 
  575     { 
"start_number_range", 
"set range for looking at the first sequence number", 
OFFSET(start_number_range), 
AV_OPT_TYPE_INT, {.i64 = 5}, 1, INT_MAX, 
DEC },
 
  578     { 
"ts_from_file", 
"set frame timestamp from file's one", 
OFFSET(ts_from_file), 
AV_OPT_TYPE_INT,    {.i64 = 0   }, 0, 2,       
DEC, 
"ts_type" },
 
  585 #if CONFIG_IMAGE2_DEMUXER 
  586 static const AVClass img2_class = {
 
  602     .priv_class     = &img2_class,
 
  605 #if CONFIG_IMAGE2PIPE_DEMUXER 
  606 static const AVClass img2pipe_class = {
 
  613     .
name           = 
"image2pipe",
 
  618     .priv_class     = &img2pipe_class,
 
  631     if (ihsize < 12 || ihsize > 255)
 
  644     if (   
AV_RB64(b) == 0x444453207c000000
 
  661     if (w <= 0 || h <= 0)
 
  682     if (
AV_RB64(b) == 0x0000000c6a502020 ||
 
  698     for (i = 0; i < p->
buf_size - 3; i++) {
 
  720             if (state != 
SOF0 && state != 
SOS)
 
  778         || av_popcount(b[3]) != 1 || b[3] > 8
 
  784     while (++b < p->
buf + 128)
 
  796         && (
AV_RB64(b + 520) & 0xFFFFFFFFFFFF) == 0x001102ff0c00
 
  800     if (   (
AV_RB64(b + 8) & 0xFFFFFFFFFFFF) == 0x001102ff0c00
 
  820     if (
AV_RB64(b) == 0x89504e470d0a1a0a)
 
  831         (b[3] & ~3) == 0 && b[3] &&
 
  850     if (
AV_RB32(b) == 0x49492a00 ||
 
  860     if (
AV_RB32(b)     == 0x52494646 &&
 
  870     return b[0] == 
'P' && b[1] == magic + 
'0';
 
  879     if (b[2] == 
'\n' && (b[3] == 
'#' || (b[3] >= 
'0' && b[3] <= 
'9')))
 
  916 #define IMAGEAUTO_DEMUXER(imgname, codecid)\ 
  917 static const AVClass imgname ## _class = {\ 
  918     .class_name = AV_STRINGIFY(imgname) " demuxer",\ 
  919     .item_name  = av_default_item_name,\ 
  920     .option     = ff_img_options,\ 
  921     .version    = LIBAVUTIL_VERSION_INT,\ 
  923 AVInputFormat ff_image_ ## imgname ## _pipe_demuxer = {\ 
  924     .name           = AV_STRINGIFY(imgname) "_pipe",\ 
  925     .long_name      = NULL_IF_CONFIG_SMALL("piped " AV_STRINGIFY(imgname) " sequence"),\ 
  926     .priv_data_size = sizeof(VideoDemuxData),\ 
  927     .read_probe     = imgname ## _probe,\ 
  928     .read_header    = ff_img_read_header,\ 
  929     .read_packet    = ff_img_read_packet,\ 
  930     .priv_class     = & imgname ## _class,\ 
  931     .flags          = AVFMT_GENERIC_INDEX, \ 
  932     .raw_codec_id   = codecid,\ 
static enum AVPixelFormat pix_fmt
int height
Set by a private option. 
static int img_read_seek(AVFormatContext *s, int stream_index, int64_t timestamp, int flags)
int64_t avio_size(AVIOContext *s)
Get the filesize. 
static int pcx_probe(AVProbeData *p)
static int bmp_probe(AVProbeData *p)
void * av_realloc(void *ptr, size_t size)
Allocate, reallocate, or free a block of memory. 
int av_add_index_entry(AVStream *st, int64_t pos, int64_t timestamp, int size, int distance, int flags)
Add an index entry into a sorted list. 
static int qdraw_probe(AVProbeData *p)
#define AV_LOG_WARNING
Something somehow does not look correct. 
#define LIBAVUTIL_VERSION_INT
int64_t pos
byte position in stream, -1 if unknown 
int ffio_rewind_with_probe_data(AVIOContext *s, unsigned char **buf, int buf_size)
Rewind the AVIOContext using the specified buffer containing the first buf_size bytes of the file...
static int pgm_probe(AVProbeData *p)
static int j2k_probe(AVProbeData *p)
static int read_seek(AVFormatContext *ctx, int stream_index, int64_t timestamp, int flags)
static int img_read_close(struct AVFormatContext *s1)
enum AVCodecID codec_id
Specific type of the encoded data (the codec used). 
int64_t avio_seek(AVIOContext *s, int64_t offset, int whence)
fseek() equivalent for AVIOContext. 
#define AVIO_FLAG_READ
read-only 
AVIndexEntry * index_entries
Only used if the format does not support seeking natively. 
int64_t avio_skip(AVIOContext *s, int64_t offset)
Skip given number of bytes forward. 
AVInputFormat * av_probe_input_format3(AVProbeData *pd, int is_opened, int *score_ret)
Guess the file format. 
int ctx_flags
Flags signalling stream properties. 
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_WL32 unsigned int_TMPL AV_WL24 unsigned int_TMPL AV_WL16 uint64_t_TMPL AV_WB64 unsigned int_TMPL AV_WB32 unsigned int_TMPL AV_WB24 unsigned int_TMPL AV_RB16
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_WL32 unsigned int_TMPL AV_WL24 unsigned int_TMPL AV_RL16
MJPEG encoder and decoder. 
static int png_probe(AVProbeData *p)
This struct describes the properties of an encoded stream. 
char * pixel_format
Set by a private option. 
#define IMAGEAUTO_DEMUXER(imgname, codecid)
int avio_check(const char *url, int flags)
Return AVIO_FLAG_* access flags corresponding to the access permissions of the resource in url...
const char * class_name
The name of the class; usually it is the same name as the context structure type to which the AVClass...
static int dds_probe(AVProbeData *p)
int pattern_type
PatternType. 
static int pictor_probe(AVProbeData *p)
enum AVStreamParseType need_parsing
int ff_img_read_header(AVFormatContext *s1)
AVStream * avformat_new_stream(AVFormatContext *s, const AVCodec *c)
Add a new stream to a media file. 
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_WL32 unsigned int_TMPL AV_WL24 unsigned int_TMPL AV_WL16 uint64_t_TMPL AV_WB64 unsigned int_TMPL AV_RB32
AVStream ** streams
A list of all streams in the file. 
int flags
Flags modifying the (de)muxer behaviour. 
static int img_read_probe(AVProbeData *p)
#define AVERROR_EOF
End of file. 
static int webp_probe(AVProbeData *p)
static av_cold int read_close(AVFormatContext *ctx)
int av_match_ext(const char *filename, const char *extensions)
Return a positive value if the given filename has one of the given extensions, 0 otherwise. 
const AVOption ff_img_options[]
static av_always_inline int64_t avio_tell(AVIOContext *s)
ftell() equivalent for AVIOContext. 
static const uint8_t header[24]
enum AVCodecID video_codec_id
Forced video codec_id. 
int avio_read(AVIOContext *s, unsigned char *buf, int size)
Read size bytes from AVIOContext into buf. 
static int exr_probe(AVProbeData *p)
#define AV_PKT_FLAG_KEY
The packet contains a keyframe. 
static int is_glob(const char *path)
int av_new_packet(AVPacket *pkt, int size)
Allocate the payload of a packet and initialize its fields with default values. 
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered. 
int av_index_search_timestamp(AVStream *st, int64_t timestamp, int flags)
Get the index for a specific timestamp. 
static const int sizes[][2]
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
static int pgmyuv_probe(AVProbeData *p)
enum AVMediaType codec_type
General type of the encoded data. 
size_t av_strlcpy(char *dst, const char *src, size_t size)
Copy the string src to dst, but no more than size - 1 bytes, and null-terminate dst. 
int flags
A combination of AV_PKT_FLAG values. 
int buf_size
Size of buf except extra allocated bytes. 
unsigned char * buf
Buffer must have AVPROBE_PADDING_SIZE of extra allocated bytes filled with zero. 
static int find_image_range(AVIOContext *pb, int *pfirst_index, int *plast_index, const char *path, int start_index, int start_index_range)
Get index range of image files matched by path. 
char filename[1024]
input or output filename 
static int jpeg_probe(AVProbeData *p)
enum AVCodecID audio_codec_id
Forced audio codec_id. 
int av_strcasecmp(const char *a, const char *b)
Locale-independent case-insensitive compare. 
static int sgi_probe(AVProbeData *p)
#define FF_ARRAY_ELEMS(a)
int av_get_frame_filename(char *buf, int buf_size, const char *path, int number)
static int read_header(FFV1Context *f)
static int read_packet(void *opaque, uint8_t *buf, int buf_size)
char * av_strdup(const char *s)
Duplicate a string. 
AVIOContext * pb
I/O context. 
int split_planes
use independent file for each Y, U, V plane 
static int pbm_probe(AVProbeData *p)
void av_packet_unref(AVPacket *pkt)
Wipe the packet. 
int av_filename_number_test(const char *filename)
Check whether filename actually is a numbered sequence generator. 
Describe the class of an AVClass context structure. 
static int infer_size(int *width_ptr, int *height_ptr, int size)
offset must point to AVRational 
offset must point to two consecutive integers 
This structure contains the data a format has to probe a file. 
static int pnm_probe(const AVProbeData *p)
static int ppm_probe(AVProbeData *p)
static int sunrast_probe(AVProbeData *p)
int64_t duration
Decoding: duration of the stream, in stream time base. 
static int dpx_probe(AVProbeData *p)
static int tiff_probe(AVProbeData *p)
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_WL32 unsigned int_TMPL AV_WL24 unsigned int_TMPL AV_WL16 uint64_t_TMPL AV_RB64
int64_t start_time
Decoding: pts of the first frame of the stream in presentation order, in stream time base...
struct AVInputFormat * iformat
The input container format. 
enum AVCodecID ff_guess_image2_codec(const char *filename)
AVRational framerate
Set by a private option. 
struct AVCodecParserContext * parser
void * priv_data
Format private data. 
static int pam_probe(AVProbeData *p)
static int jpegls_probe(AVProbeData *p)
static int pgmx_probe(AVProbeData *p)
AVCodecParameters * codecpar
int avio_feof(AVIOContext *s)
feof() equivalent for AVIOContext. 
enum AVPixelFormat av_get_pix_fmt(const char *name)
Return the pixel format corresponding to name. 
static int pnm_magic_check(const AVProbeData *p, int magic)
int(* io_open)(struct AVFormatContext *s, AVIOContext **pb, const char *url, int flags, AVDictionary **options)
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_RL32
AVPixelFormat
Pixel format. 
This structure stores compressed data. 
int64_t pts
Presentation timestamp in AVStream->time_base units; the time at which the decompressed packet will b...
int ff_img_read_packet(AVFormatContext *s1, AVPacket *pkt)
AVInputFormat * av_iformat_next(const AVInputFormat *f)
If f is NULL, returns the first registered input format, if f is non-NULL, returns the next registere...