FFmpeg
img2dec.c
Go to the documentation of this file.
1 /*
2  * Image format
3  * Copyright (c) 2000, 2001, 2002 Fabrice Bellard
4  * Copyright (c) 2004 Michael Niedermayer
5  *
6  * This file is part of FFmpeg.
7  *
8  * FFmpeg is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * FFmpeg is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with FFmpeg; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21  */
22 
23 #include "config_components.h"
24 
25 #define _DEFAULT_SOURCE
26 #define _BSD_SOURCE
27 #include <sys/stat.h>
28 #include "libavutil/avassert.h"
29 #include "libavutil/avstring.h"
30 #include "libavutil/bprint.h"
31 #include "libavutil/log.h"
32 #include "libavutil/mem.h"
33 #include "libavutil/opt.h"
34 #include "libavutil/pixdesc.h"
35 #include "libavutil/intreadwrite.h"
36 #include "libavcodec/gif.h"
37 #include "avformat.h"
38 #include "avio_internal.h"
39 #include "demux.h"
40 #include "internal.h"
41 #include "img2.h"
42 #include "os_support.h"
44 #include "libavcodec/mjpeg.h"
45 #include "libavcodec/vbn.h"
46 #include "libavcodec/xwd.h"
47 #include "subtitles.h"
48 
49 #if HAVE_GLOB
50 /* Locally define as 0 (bitwise-OR no-op) any missing glob options that
51  are non-posix glibc/bsd extensions. */
52 #ifndef GLOB_NOMAGIC
53 #define GLOB_NOMAGIC 0
54 #endif
55 #ifndef GLOB_BRACE
56 #define GLOB_BRACE 0
57 #endif
58 
59 #endif /* HAVE_GLOB */
60 
61 static const int sizes[][2] = {
62  { 640, 480 },
63  { 720, 480 },
64  { 720, 576 },
65  { 352, 288 },
66  { 352, 240 },
67  { 160, 128 },
68  { 512, 384 },
69  { 640, 352 },
70  { 640, 240 },
71 };
72 
73 static int infer_size(int *width_ptr, int *height_ptr, int size)
74 {
75  int i;
76 
77  for (i = 0; i < FF_ARRAY_ELEMS(sizes); i++) {
78  if ((sizes[i][0] * sizes[i][1]) == size) {
79  *width_ptr = sizes[i][0];
80  *height_ptr = sizes[i][1];
81  return 0;
82  }
83  }
84 
85  return -1;
86 }
87 
88 /**
89  * Get index range of image files matched by path.
90  *
91  * @param pfirst_index pointer to index updated with the first number in the range
92  * @param plast_index pointer to index updated with the last number in the range
93  * @param path path which has to be matched by the image files in the range
94  * @param start_index minimum accepted value for the first index in the range
95  * @return -1 if no image file could be found
96  */
97 static int find_image_range(int *pfirst_index, int *plast_index,
98  const char *path, int start_index, int start_index_range)
99 {
100  int range, last_index, range1, first_index, ret;
101  AVBPrint filename;
102 
104  /* find the first image */
105  for (first_index = start_index; first_index < start_index + start_index_range; first_index++) {
106  av_bprint_clear(&filename);
107  ret = ff_bprint_get_frame_filename(&filename, path, first_index, 0);
108  if (ret < 0)
109  goto fail;
110  if (avio_check(filename.str, AVIO_FLAG_READ) > 0)
111  break;
112  }
113  if (first_index == start_index + start_index_range) {
114  ret = AVERROR(EINVAL);
115  goto fail;
116  }
117 
118  /* find the last image */
119  last_index = first_index;
120  for (;;) {
121  range = 0;
122  for (;;) {
123  if (!range)
124  range1 = 1;
125  else
126  range1 = 2 * range;
127  av_bprint_clear(&filename);
128  ret = ff_bprint_get_frame_filename(&filename, path, last_index + range1, 0);
129  if (ret < 0)
130  goto fail;
131  if (avio_check(filename.str, AVIO_FLAG_READ) <= 0)
132  break;
133  range = range1;
134  /* just in case... */
135  if (range >= (1 << 30)) {
136  ret = AVERROR(EINVAL);
137  goto fail;
138  }
139  }
140  /* we are sure than image last_index + range exists */
141  if (!range)
142  break;
143  last_index += range;
144  }
145  *pfirst_index = first_index;
146  *plast_index = last_index;
147  ret = 0;
148 fail:
149  av_bprint_finalize(&filename, NULL);
150  return ret;
151 }
152 
153 static int img_read_probe(const AVProbeData *p)
154 {
155  if (p->filename && ff_guess_image2_codec(p->filename)) {
156  if (av_filename_number_test(p->filename))
157  return AVPROBE_SCORE_MAX;
158  else if (p->filename[strcspn(p->filename, "*?{")]) // probably PT_GLOB
159  return AVPROBE_SCORE_EXTENSION + 2; // score chosen to be a tad above the image pipes
160  else if (p->buf_size == 0)
161  return 0;
162  else if (av_match_ext(p->filename, "raw") || av_match_ext(p->filename, "gif"))
163  return 5;
164  else
166  }
167  return 0;
168 }
169 
171 {
172  VideoDemuxData *s = s1->priv_data;
173  int first_index = 1, last_index = 1;
174  AVStream *st;
176 
178 
179  st = avformat_new_stream(s1, NULL);
180  if (!st) {
181  return AVERROR(ENOMEM);
182  }
183 
184  if (s->pixel_format &&
185  (pix_fmt = av_get_pix_fmt(s->pixel_format)) == AV_PIX_FMT_NONE) {
186  av_log(s1, AV_LOG_ERROR, "No such pixel format: %s.\n",
187  s->pixel_format);
188  return AVERROR(EINVAL);
189  }
190 
191  s->img_number = 0;
192  s->img_count = 0;
193 
194  /* find format */
195  if (s1->iformat->flags & AVFMT_NOFILE)
196  s->is_pipe = 0;
197  else {
198  s->is_pipe = 1;
200  }
201 
202  if (s->ts_from_file == 2) {
203 #if !HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC
204  av_log(s1, AV_LOG_ERROR, "POSIX.1-2008 not supported, nanosecond file timestamps unavailable\n");
205  return AVERROR(ENOSYS);
206 #endif
207  avpriv_set_pts_info(st, 64, 1, 1000000000);
208  } else if (s->ts_from_file)
209  avpriv_set_pts_info(st, 64, 1, 1);
210  else {
211  avpriv_set_pts_info(st, 64, s->framerate.den, s->framerate.num);
212  st->avg_frame_rate = st->r_frame_rate = s->framerate;
213  }
214 
215  if (s->width && s->height) {
216  st->codecpar->width = s->width;
217  st->codecpar->height = s->height;
218  }
219 
220  if (!s->is_pipe) {
221  if (s->pattern_type == PT_DEFAULT) {
222  if (s1->pb) {
223  s->pattern_type = PT_NONE;
224  } else
225  s->pattern_type = PT_SEQUENCE;
226  }
227  if (s->pattern_type == PT_SEQUENCE) {
228  if (find_image_range(&first_index, &last_index, s1->url,
229  s->start_number, s->start_number_range) < 0) {
230  if (s1->pb || avio_check(s1->url, AVIO_FLAG_READ) > 0) {
231  // Fallback to normal mode
232  s->pattern_type = PT_NONE;
233  } else {
234  av_log(s1, AV_LOG_ERROR,
235  "Could find no file or sequence with path '%s' and index in the range %d-%d\n",
236  s1->url, s->start_number, s->start_number + s->start_number_range - 1);
237  return AVERROR(ENOENT);
238  }
239  }
240  } else if (s->pattern_type == PT_GLOB) {
241 #if HAVE_GLOB
242  int gerr;
243  gerr = glob(s1->url, GLOB_NOCHECK|GLOB_BRACE|GLOB_NOMAGIC, NULL, &s->globstate);
244  if (gerr != 0) {
245  return AVERROR(ENOENT);
246  }
247  first_index = 0;
248  last_index = s->globstate.gl_pathc - 1;
249  s->use_glob = 1;
250 #else
251  av_log(s1, AV_LOG_ERROR,
252  "Pattern type 'glob' was selected but globbing "
253  "is not supported by this libavformat build\n");
254  return AVERROR(ENOSYS);
255 #endif
256  } else if (s->pattern_type != PT_NONE) {
257  av_log(s1, AV_LOG_ERROR,
258  "Unknown value '%d' for pattern_type option\n", s->pattern_type);
259  return AVERROR(EINVAL);
260  }
261  s->img_first = first_index;
262  s->img_last = last_index;
263  s->img_number = first_index;
264  /* compute duration */
265  if (!s->ts_from_file) {
266  st->start_time = 0;
267  st->duration = last_index - first_index + 1;
268  }
269  }
270 
271  if (s1->video_codec_id) {
273  st->codecpar->codec_id = s1->video_codec_id;
274  } else if (s1->audio_codec_id) {
276  st->codecpar->codec_id = s1->audio_codec_id;
277  } else if (ffifmt(s1->iformat)->raw_codec_id) {
280  } else {
281  const char *str = strrchr(s1->url, '.');
282  s->split_planes = str && !av_strcasecmp(str + 1, "y");
284  if (s1->pb) {
285  int probe_buffer_size = 2048;
286  uint8_t *probe_buffer = av_realloc(NULL, probe_buffer_size + AVPROBE_PADDING_SIZE);
287  const AVInputFormat *fmt = NULL;
288  void *fmt_iter = NULL;
289  AVProbeData pd = { 0 };
290 
291  if (!probe_buffer)
292  return AVERROR(ENOMEM);
293 
294  probe_buffer_size = avio_read(s1->pb, probe_buffer, probe_buffer_size);
295  if (probe_buffer_size < 0) {
296  av_free(probe_buffer);
297  return probe_buffer_size;
298  }
299  memset(probe_buffer + probe_buffer_size, 0, AVPROBE_PADDING_SIZE);
300 
301  pd.buf = probe_buffer;
302  pd.buf_size = probe_buffer_size;
303  pd.filename = s1->url;
304 
305  while ((fmt = av_demuxer_iterate(&fmt_iter))) {
306  const FFInputFormat *fmt2 = ffifmt(fmt);
307  if (fmt2->read_header != ff_img_read_header ||
308  !fmt2->read_probe ||
309  (fmt->flags & AVFMT_NOFILE) ||
310  !fmt2->raw_codec_id)
311  continue;
312  if (fmt2->read_probe(&pd) > 0) {
313  st->codecpar->codec_id = fmt2->raw_codec_id;
314  break;
315  }
316  }
317  if (s1->flags & AVFMT_FLAG_CUSTOM_IO) {
318  avio_seek(s1->pb, 0, SEEK_SET);
319  av_freep(&probe_buffer);
320  } else
321  ffio_rewind_with_probe_data(s1->pb, &probe_buffer, probe_buffer_size);
322  }
323  if (st->codecpar->codec_id == AV_CODEC_ID_NONE)
325  if (st->codecpar->codec_id == AV_CODEC_ID_LJPEG)
327  if (st->codecpar->codec_id == AV_CODEC_ID_ALIAS_PIX) // we cannot distinguish this from BRENDER_PIX
329  }
330  if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO &&
332  st->codecpar->format = pix_fmt;
333 
334  return 0;
335 }
336 
337 /**
338  * Add this frame's source path and basename to packet's sidedata
339  * as a dictionary, so it can be used by filters like 'drawtext'.
340  */
341 static int add_filename_as_pkt_side_data(char *filename, AVPacket *pkt) {
342  AVDictionary *d = NULL;
343  char *packed_metadata = NULL;
344  size_t metadata_len;
345  int ret;
346 
347  av_dict_set(&d, "lavf.image2dec.source_path", filename, 0);
348  av_dict_set(&d, "lavf.image2dec.source_basename", av_basename(filename), 0);
349 
350  packed_metadata = av_packet_pack_dictionary(d, &metadata_len);
351  av_dict_free(&d);
352  if (!packed_metadata)
353  return AVERROR(ENOMEM);
355  packed_metadata, metadata_len);
356  if (ret < 0) {
357  av_freep(&packed_metadata);
358  return ret;
359  }
360  return 0;
361 }
362 
364 {
365  VideoDemuxData *s = s1->priv_data;
366  AVBPrint filename;
367  int i, res;
368  int ret[3] = { 0 };
369  int64_t size[3] = { 0 };
370  AVIOContext *f[3] = { NULL };
371  AVCodecParameters *par = s1->streams[0]->codecpar;
372 
374  if (!s->is_pipe) {
375  /* loop over input */
376  if (s->loop && s->img_number > s->img_last) {
377  s->img_number = s->img_first;
378  }
379  if (s->img_number > s->img_last)
380  return AVERROR_EOF;
381  if (s->pattern_type == PT_NONE) {
382  av_bprintf(&filename, "%s", s1->url);
383  } else if (s->use_glob) {
384 #if HAVE_GLOB
385  av_bprintf(&filename, "%s", s->globstate.gl_pathv[s->img_number]);
386 #endif
387  } else {
388  int ret = ff_bprint_get_frame_filename(&filename, s1->url, s->img_number, 0);
389  if (ret < 0) {
390  av_bprint_finalize(&filename, NULL);
391  return ret;
392  }
393  }
394  if (!av_bprint_is_complete(&filename)) {
395  av_bprint_finalize(&filename, NULL);
396  return AVERROR(ENOMEM);
397  }
398  for (i = 0; i < 3; i++) {
399  if (s1->pb &&
400  !strcmp(filename.str, s1->url) &&
401  !s->loop &&
402  !s->split_planes) {
403  f[i] = s1->pb;
404  } else if ((res = s1->io_open(s1, &f[i], filename.str, AVIO_FLAG_READ, NULL)) < 0) {
405  if (i >= 1)
406  break;
407  av_log(s1, AV_LOG_ERROR, "Could not open file : %s\n",
408  filename.str);
409  av_bprint_finalize(&filename, NULL);
410  return res;
411  }
412  size[i] = avio_size(f[i]);
413 
414  if (!s->split_planes)
415  break;
416  filename.str[filename.len - 1] = 'U' + i;
417  }
418  av_bprint_finalize(&filename, NULL);
419 
420  if (par->codec_id == AV_CODEC_ID_NONE) {
421  AVProbeData pd = { 0 };
422  const FFInputFormat *ifmt;
424  int ret;
425  int score = 0;
426 
428  if (ret < 0) {
429  av_bprint_finalize(&filename, NULL);
430  return ret;
431  }
432  memset(header + ret, 0, sizeof(header) - ret);
433  avio_skip(f[0], -ret);
434  pd.buf = header;
435  pd.buf_size = ret;
436  pd.filename = filename.str;
437 
438  ifmt = ffifmt(av_probe_input_format3(&pd, 1, &score));
439  if (ifmt && ifmt->read_packet == ff_img_read_packet && ifmt->raw_codec_id)
440  par->codec_id = ifmt->raw_codec_id;
441  }
442 
443  if (par->codec_id == AV_CODEC_ID_RAWVIDEO && !par->width)
444  infer_size(&par->width, &par->height, size[0]);
445  } else {
446  f[0] = s1->pb;
447  if (avio_feof(f[0]) && s->loop && s->is_pipe)
448  avio_seek(f[0], 0, SEEK_SET);
449  if (avio_feof(f[0]))
450  return AVERROR_EOF;
451  if (s->frame_size > 0) {
452  size[0] = s->frame_size;
453  } else if (!ffstream(s1->streams[0])->parser) {
454  size[0] = avio_size(s1->pb);
455  } else {
456  size[0] = 4096;
457  }
458  }
459 
460  int total_size = 0;
461  for (int i = 0; i < 3; i++) {
462  if ((uint64_t)size[i] > INT_MAX - total_size)
463  return AVERROR_INVALIDDATA;
464 
465  total_size += size[i];
466  }
467 
468  res = av_new_packet(pkt, total_size);
469  if (res < 0) {
470  goto fail;
471  }
472  pkt->stream_index = 0;
474  if (s->ts_from_file) {
475  struct stat img_stat;
476  av_assert0(!s->is_pipe); // The ts_from_file option is not supported by piped input demuxers
477  if (stat(filename.str, &img_stat)) {
478  res = AVERROR(errno);
479  goto fail;
480  }
481  pkt->pts = (int64_t)img_stat.st_mtime;
482 #if HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC
483  if (s->ts_from_file == 2)
484  pkt->pts = 1000000000*pkt->pts + img_stat.st_mtim.tv_nsec;
485 #endif
486  av_add_index_entry(s1->streams[0], s->img_number, pkt->pts, 0, 0, AVINDEX_KEYFRAME);
487  } else if (!s->is_pipe) {
488  pkt->pts = s->pts;
489  }
490 
491  if (s->is_pipe)
492  pkt->pos = avio_tell(f[0]);
493 
494  /*
495  * export_path_metadata must be explicitly enabled via
496  * command line options for path metadata to be exported
497  * as packet side_data.
498  */
499  if (!s->is_pipe && s->export_path_metadata == 1) {
500  res = add_filename_as_pkt_side_data(filename.str, pkt);
501  if (res < 0)
502  goto fail;
503  }
504  av_bprint_finalize(&filename, NULL);
505 
506  pkt->size = 0;
507  for (i = 0; i < 3; i++) {
508  if (f[i]) {
509  ret[i] = avio_read(f[i], pkt->data + pkt->size, size[i]);
510  if (s->loop && s->is_pipe && ret[i] == AVERROR_EOF) {
511  if (avio_seek(f[i], 0, SEEK_SET) >= 0) {
512  pkt->pos = 0;
513  ret[i] = avio_read(f[i], pkt->data + pkt->size, size[i]);
514  }
515  }
516  if (!s->is_pipe && f[i] != s1->pb)
517  ff_format_io_close(s1, &f[i]);
518  if (ret[i] > 0)
519  pkt->size += ret[i];
520  }
521  }
522 
523  if (ret[0] <= 0 || ret[1] < 0 || ret[2] < 0) {
524  if (ret[0] < 0) {
525  res = ret[0];
526  } else if (ret[1] < 0) {
527  res = ret[1];
528  } else if (ret[2] < 0) {
529  res = ret[2];
530  } else {
531  res = AVERROR_EOF;
532  }
533  goto fail;
534  } else {
535  memset(pkt->data + pkt->size, 0, AV_INPUT_BUFFER_PADDING_SIZE);
536  s->img_count++;
537  s->img_number++;
538  s->pts++;
539  return 0;
540  }
541 
542 fail:
543  av_bprint_finalize(&filename, NULL);
544  if (!s->is_pipe) {
545  for (i = 0; i < 3; i++) {
546  if (f[i] != s1->pb)
547  ff_format_io_close(s1, &f[i]);
548  }
549  }
550  return res;
551 }
552 
553 static int img_read_close(struct AVFormatContext* s1)
554 {
555 #if HAVE_GLOB
556  VideoDemuxData *s = s1->priv_data;
557  if (s->use_glob) {
558  globfree(&s->globstate);
559  }
560 #endif
561  return 0;
562 }
563 
564 static int img_read_seek(AVFormatContext *s, int stream_index, int64_t timestamp, int flags)
565 {
566  VideoDemuxData *s1 = s->priv_data;
567  AVStream *st = s->streams[0];
568 
569  if (s1->ts_from_file) {
570  int index = av_index_search_timestamp(st, timestamp, flags);
571  if(index < 0)
572  return -1;
574  return 0;
575  }
576 
577  if (timestamp < 0 || !s1->loop && timestamp > s1->img_last - s1->img_first)
578  return -1;
579  s1->img_number = timestamp%(s1->img_last - s1->img_first + 1) + s1->img_first;
580  s1->pts = timestamp;
581  return 0;
582 }
583 
584 #define OFFSET(x) offsetof(VideoDemuxData, x)
585 #define DEC AV_OPT_FLAG_DECODING_PARAM
586 #define COMMON_OPTIONS \
587  { "framerate", "set the video framerate", OFFSET(framerate), AV_OPT_TYPE_VIDEO_RATE, {.str = "25"}, 0, INT_MAX, DEC }, \
588  { "pixel_format", "set video pixel format", OFFSET(pixel_format), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, DEC }, \
589  { "video_size", "set video size", OFFSET(width), AV_OPT_TYPE_IMAGE_SIZE, {.str = NULL}, 0, 0, DEC }, \
590  { "loop", "force loop over input file sequence", OFFSET(loop), AV_OPT_TYPE_BOOL, {.i64 = 0 }, 0, 1, DEC }, \
591  { NULL },
592 
593 #if CONFIG_IMAGE2_DEMUXER
594 const AVOption ff_img_options[] = {
595  { "pattern_type", "set pattern type", OFFSET(pattern_type), AV_OPT_TYPE_INT, {.i64=PT_DEFAULT}, 0, INT_MAX, DEC, .unit = "pattern_type"},
596  { "glob", "select glob pattern type", 0, AV_OPT_TYPE_CONST, {.i64=PT_GLOB }, INT_MIN, INT_MAX, DEC, .unit = "pattern_type" },
597  { "sequence", "select sequence pattern type", 0, AV_OPT_TYPE_CONST, {.i64=PT_SEQUENCE }, INT_MIN, INT_MAX, DEC, .unit = "pattern_type" },
598  { "none", "disable pattern matching", 0, AV_OPT_TYPE_CONST, {.i64=PT_NONE }, INT_MIN, INT_MAX, DEC, .unit = "pattern_type" },
599  { "start_number", "set first number in the sequence", OFFSET(start_number), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, DEC },
600  { "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 },
601  { "ts_from_file", "set frame timestamp from file's one", OFFSET(ts_from_file), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, 2, DEC, .unit = "ts_type" },
602  { "none", "none", 0, AV_OPT_TYPE_CONST, {.i64 = 0 }, 0, 2, DEC, .unit = "ts_type" },
603  { "sec", "second precision", 0, AV_OPT_TYPE_CONST, {.i64 = 1 }, 0, 2, DEC, .unit = "ts_type" },
604  { "ns", "nano second precision", 0, AV_OPT_TYPE_CONST, {.i64 = 2 }, 0, 2, DEC, .unit = "ts_type" },
605  { "export_path_metadata", "enable metadata containing input path information", OFFSET(export_path_metadata), AV_OPT_TYPE_BOOL, {.i64 = 0 }, 0, 1, DEC }, \
606  COMMON_OPTIONS
607 };
608 
609 static const AVClass img2_class = {
610  .class_name = "image2 demuxer",
611  .item_name = av_default_item_name,
612  .option = ff_img_options,
613  .version = LIBAVUTIL_VERSION_INT,
614 };
616  .p.name = "image2",
617  .p.long_name = NULL_IF_CONFIG_SMALL("image2 sequence"),
618  .p.flags = AVFMT_NOFILE,
619  .p.priv_class = &img2_class,
620  .priv_data_size = sizeof(VideoDemuxData),
626 };
627 #endif
628 
629 static const AVOption img2pipe_options[] = {
630  { "frame_size", "force frame size in bytes", OFFSET(frame_size), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, INT_MAX, DEC },
632 };
633 static const AVClass imagepipe_class = {
634  .class_name = "imagepipe demuxer",
635  .item_name = av_default_item_name,
636  .option = img2pipe_options,
637  .version = LIBAVUTIL_VERSION_INT,
638 };
639 
640 #if CONFIG_IMAGE2PIPE_DEMUXER
642  .p.name = "image2pipe",
643  .p.long_name = NULL_IF_CONFIG_SMALL("piped image2 sequence"),
644  .p.priv_class = &imagepipe_class,
645  .priv_data_size = sizeof(VideoDemuxData),
648 };
649 #endif
650 
651 static int bmp_probe(const AVProbeData *p)
652 {
653  const uint8_t *b = p->buf;
654  int ihsize;
655 
656  if (AV_RB16(b) != 0x424d)
657  return 0;
658 
659  ihsize = AV_RL32(b+14);
660  if (ihsize < 12 || ihsize > 255)
661  return 0;
662 
663  if (!AV_RN32(b + 6)) {
664  return AVPROBE_SCORE_EXTENSION + 1;
665  }
666  return AVPROBE_SCORE_EXTENSION / 4;
667 }
668 
669 static int cri_probe(const AVProbeData *p)
670 {
671  const uint8_t *b = p->buf;
672 
673  if ( AV_RL32(b) == 1
674  && AV_RL32(b + 4) == 4
675  && AV_RN32(b + 8) == AV_RN32("DVCC"))
676  return AVPROBE_SCORE_MAX - 1;
677  return 0;
678 }
679 
680 static int dds_probe(const AVProbeData *p)
681 {
682  const uint8_t *b = p->buf;
683 
684  if ( AV_RB64(b) == 0x444453207c000000
685  && AV_RL32(b + 8)
686  && AV_RL32(b + 12))
687  return AVPROBE_SCORE_MAX - 1;
688  return 0;
689 }
690 
691 static int dpx_probe(const AVProbeData *p)
692 {
693  const uint8_t *b = p->buf;
694  int w, h;
695  int is_big = (AV_RN32(b) == AV_RN32("SDPX"));
696 
697  if (p->buf_size < 0x304+8)
698  return 0;
699  w = is_big ? AV_RB32(p->buf + 0x304) : AV_RL32(p->buf + 0x304);
700  h = is_big ? AV_RB32(p->buf + 0x308) : AV_RL32(p->buf + 0x308);
701  if (w <= 0 || h <= 0)
702  return 0;
703 
704  if (is_big || AV_RN32(b) == AV_RN32("XPDS"))
705  return AVPROBE_SCORE_EXTENSION + 1;
706  return 0;
707 }
708 
709 static int exr_probe(const AVProbeData *p)
710 {
711  const uint8_t *b = p->buf;
712 
713  if (AV_RL32(b) == 20000630)
714  return AVPROBE_SCORE_EXTENSION + 1;
715  return 0;
716 }
717 
718 static int j2k_probe(const AVProbeData *p)
719 {
720  const uint8_t *b = p->buf;
721 
722  if (AV_RB64(b) == 0x0000000c6a502020 ||
723  AV_RB32(b) == 0xff4fff51)
724  return AVPROBE_SCORE_EXTENSION + 1;
725  return 0;
726 }
727 
728 static int jpeg_probe(const AVProbeData *p)
729 {
730  const uint8_t *b = p->buf;
731  int i, state = SOI, got_header = 0;
732 
733  if (AV_RB16(b) != 0xFFD8 ||
734  AV_RB32(b) == 0xFFD8FFF7)
735  return 0;
736 
737  b += 2;
738  for (i = 0; i < p->buf_size - 3; i++) {
739  int c;
740  if (b[i] != 0xFF)
741  continue;
742  c = b[i + 1];
743  switch (c) {
744  case SOI:
745  return 0;
746  case SOF0:
747  case SOF1:
748  case SOF2:
749  case SOF3:
750  case SOF5:
751  case SOF6:
752  case SOF7:
753  i += AV_RB16(&b[i + 2]) + 1;
754  if (state != SOI)
755  return 0;
756  state = SOF0;
757  break;
758  case SOS:
759  i += AV_RB16(&b[i + 2]) + 1;
760  if (state != SOF0 && state != SOS)
761  return 0;
762  state = SOS;
763  break;
764  case EOI:
765  if (state != SOS)
766  return 0;
767  state = EOI;
768  break;
769  case APP0:
770  if (c == APP0 && AV_RL32(&b[i + 4]) == MKTAG('J','F','I','F'))
771  got_header = 1;
772  /* fallthrough */
773  case APP1:
774  if (c == APP1 && AV_RL32(&b[i + 4]) == MKTAG('E','x','i','f'))
775  got_header = 1;
776  /* fallthrough */
777  case APP2:
778  case APP3:
779  case APP4:
780  case APP5:
781  case APP6:
782  case APP7:
783  case APP8:
784  case APP9:
785  case APP10:
786  case APP11:
787  case APP12:
788  case APP13:
789  case APP14:
790  case APP15:
791  case DQT: /* fallthrough */
792  case COM:
793  i += AV_RB16(&b[i + 2]) + 1;
794  break;
795  default:
796  if ( (c > TEM && c < SOF0)
797  || c == JPG)
798  return 0;
799  }
800  }
801 
802  if (state == EOI)
803  return AVPROBE_SCORE_EXTENSION + 1;
804  if (state == SOS)
805  return AVPROBE_SCORE_EXTENSION / 2 + got_header;
806  return AVPROBE_SCORE_EXTENSION / 8 + 1;
807 }
808 
809 static int jpegls_probe(const AVProbeData *p)
810 {
811  const uint8_t *b = p->buf;
812 
813  if (AV_RB32(b) == 0xffd8fff7)
814  return AVPROBE_SCORE_EXTENSION + 1;
815  return 0;
816 }
817 
818 static int jpegxl_probe(const AVProbeData *p)
819 {
820  const uint8_t *b = p->buf;
821 
822  /* ISOBMFF-based container */
823  /* 0x4a584c20 == "JXL " */
825  return AVPROBE_SCORE_EXTENSION + 1;
826  /* Raw codestreams all start with 0xff0a */
828  return 0;
829 #if CONFIG_IMAGE_JPEGXL_PIPE_DEMUXER
830  if (ff_jpegxl_parse_codestream_header(p->buf, p->buf_size, NULL, 5) >= 0)
831  return AVPROBE_SCORE_MAX - 2;
832 #endif
833  return 0;
834 }
835 
836 static int jpegxs_probe(const AVProbeData *p)
837 {
838  const uint8_t *b = p->buf;
839 
840  if (AV_RB32(b) == 0xff10ff50)
841  return AVPROBE_SCORE_EXTENSION + 1;
842  return 0;
843 }
844 
845 static int pcx_probe(const AVProbeData *p)
846 {
847  const uint8_t *b = p->buf;
848 
849  if ( p->buf_size < 128
850  || b[0] != 10
851  || b[1] > 5
852  || b[2] > 1
853  || av_popcount(b[3]) != 1 || b[3] > 8
854  || AV_RL16(&b[4]) > AV_RL16(&b[8])
855  || AV_RL16(&b[6]) > AV_RL16(&b[10])
856  || b[64])
857  return 0;
858  b += 73;
859  while (++b < p->buf + 128)
860  if (*b)
861  return AVPROBE_SCORE_EXTENSION / 4;
862 
863  return AVPROBE_SCORE_EXTENSION + 1;
864 }
865 
866 static int qdraw_probe(const AVProbeData *p)
867 {
868  const uint8_t *b = p->buf;
869 
870  if ( p->buf_size >= 528
871  && (AV_RB64(b + 520) & 0xFFFFFFFFFFFF) == 0x001102ff0c00
872  && AV_RB16(b + 520)
873  && AV_RB16(b + 518))
874  return AVPROBE_SCORE_MAX * 3 / 4;
875  if ( (AV_RB64(b + 8) & 0xFFFFFFFFFFFF) == 0x001102ff0c00
876  && AV_RB16(b + 8)
877  && AV_RB16(b + 6))
878  return AVPROBE_SCORE_EXTENSION / 4;
879  return 0;
880 }
881 
882 static int pictor_probe(const AVProbeData *p)
883 {
884  const uint8_t *b = p->buf;
885 
886  if (AV_RL16(b) == 0x1234)
887  return AVPROBE_SCORE_EXTENSION / 4;
888  return 0;
889 }
890 
891 static int png_probe(const AVProbeData *p)
892 {
893  const uint8_t *b = p->buf;
894 
895  if (AV_RB64(b) == 0x89504e470d0a1a0a)
896  return AVPROBE_SCORE_MAX - 1;
897  return 0;
898 }
899 
900 static int psd_probe(const AVProbeData *p)
901 {
902  const uint8_t *b = p->buf;
903  int ret = 0;
904  uint16_t color_mode;
905 
906  if (AV_RL32(b) == MKTAG('8','B','P','S')) {
907  ret += 1;
908  } else {
909  return 0;
910  }
911 
912  if ((b[4] == 0) && (b[5] == 1)) {/* version 1 is PSD, version 2 is PSB */
913  ret += 1;
914  } else {
915  return 0;
916  }
917 
918  if ((AV_RL32(b+6) == 0) && (AV_RL16(b+10) == 0))/* reserved must be 0 */
919  ret += 1;
920 
921  color_mode = AV_RB16(b+24);
922  if ((color_mode <= 9) && (color_mode != 5) && (color_mode != 6))
923  ret += 1;
924 
925  return AVPROBE_SCORE_EXTENSION + ret;
926 }
927 
928 static int sgi_probe(const AVProbeData *p)
929 {
930  const uint8_t *b = p->buf;
931 
932  if (AV_RB16(b) == 474 &&
933  (b[2] & ~1) == 0 &&
934  (b[3] & ~3) == 0 && b[3] &&
935  (AV_RB16(b + 4) & ~7) == 0 && AV_RB16(b + 4))
936  return AVPROBE_SCORE_EXTENSION + 1;
937  return 0;
938 }
939 
940 static int sunrast_probe(const AVProbeData *p)
941 {
942  const uint8_t *b = p->buf;
943 
944  if (AV_RB32(b) == 0x59a66a95)
945  return AVPROBE_SCORE_EXTENSION + 1;
946  return 0;
947 }
948 
949 static int svg_probe(const AVProbeData *p)
950 {
951  const uint8_t *b = p->buf;
952  const uint8_t *end = p->buf + p->buf_size;
953  while (b < end && av_isspace(*b))
954  b++;
955  if (b >= end - 5)
956  return 0;
957  if (!memcmp(b, "<svg", 4))
958  return AVPROBE_SCORE_EXTENSION + 1;
959  if (memcmp(p->buf, "<?xml", 5) && memcmp(b, "<!--", 4))
960  return 0;
961  while (b < end) {
963  if (!inc)
964  break;
965  b += inc;
966  if (b >= end - 4)
967  return 0;
968  if (!memcmp(b, "<svg", 4))
969  return AVPROBE_SCORE_EXTENSION + 1;
970  }
971  return 0;
972 }
973 
974 static int tiff_probe(const AVProbeData *p)
975 {
976  const uint8_t *b = p->buf;
977 
978  if (AV_RB32(b) == 0x49492a00 ||
979  AV_RB32(b) == 0x4D4D002a)
980  return AVPROBE_SCORE_EXTENSION + 1;
981  return 0;
982 }
983 
984 static int webp_probe(const AVProbeData *p)
985 {
986  const uint8_t *b = p->buf;
987 
988  if (AV_RB32(b) == 0x52494646 &&
989  AV_RB32(b + 8) == 0x57454250)
990  return AVPROBE_SCORE_MAX - 1;
991  return 0;
992 }
993 
994 static int pnm_magic_check(const AVProbeData *p, int magic)
995 {
996  const uint8_t *b = p->buf;
997 
998  return b[0] == 'P' && b[1] == magic + '0';
999 }
1000 
1001 static inline int pnm_probe(const AVProbeData *p)
1002 {
1003  const uint8_t *b = p->buf;
1004 
1005  while (b[2] == '\r')
1006  b++;
1007  if (b[2] == '\n' && (b[3] == '#' || (b[3] >= '0' && b[3] <= '9')))
1008  return AVPROBE_SCORE_EXTENSION + 2;
1009  return 0;
1010 }
1011 
1012 static int pbm_probe(const AVProbeData *p)
1013 {
1014  return pnm_magic_check(p, 1) || pnm_magic_check(p, 4) ? pnm_probe(p) : 0;
1015 }
1016 
1017 static int pfm_probe(const AVProbeData *p)
1018 {
1019  return pnm_magic_check(p, 'F' - '0') ||
1020  pnm_magic_check(p, 'f' - '0') ? pnm_probe(p) : 0;
1021 }
1022 
1023 static int phm_probe(const AVProbeData *p)
1024 {
1025  return pnm_magic_check(p, 'H' - '0') ||
1026  pnm_magic_check(p, 'h' - '0') ? pnm_probe(p) : 0;
1027 }
1028 
1029 static inline int pgmx_probe(const AVProbeData *p)
1030 {
1031  return pnm_magic_check(p, 2) || pnm_magic_check(p, 5) ? pnm_probe(p) : 0;
1032 }
1033 
1034 static int pgm_probe(const AVProbeData *p)
1035 {
1036  int ret = pgmx_probe(p);
1037  return ret && !av_match_ext(p->filename, "pgmyuv") ? ret : 0;
1038 }
1039 
1040 static int pgmyuv_probe(const AVProbeData *p) // custom FFmpeg format recognized by file extension
1041 {
1042  int ret = pgmx_probe(p);
1043  return ret && av_match_ext(p->filename, "pgmyuv") ? ret : 0;
1044 }
1045 
1046 static int pgx_probe(const AVProbeData *p)
1047 {
1048  const uint8_t *b = p->buf;
1049  if (!memcmp(b, "PG ML ", 6))
1050  return AVPROBE_SCORE_EXTENSION + 1;
1051  return 0;
1052 }
1053 
1054 static int ppm_probe(const AVProbeData *p)
1055 {
1056  return pnm_magic_check(p, 3) || pnm_magic_check(p, 6) ? pnm_probe(p) : 0;
1057 }
1058 
1059 static int pam_probe(const AVProbeData *p)
1060 {
1061  return pnm_magic_check(p, 7) ? pnm_probe(p) : 0;
1062 }
1063 
1064 static int hdr_probe(const AVProbeData *p)
1065 {
1066  if (!memcmp(p->buf, "#?RADIANCE\n", 11))
1067  return AVPROBE_SCORE_MAX;
1068  return 0;
1069 }
1070 
1071 static int xbm_probe(const AVProbeData *p)
1072 {
1073  if (!memcmp(p->buf, "/* XBM X10 format */", 20))
1074  return AVPROBE_SCORE_MAX;
1075 
1076  if (!memcmp(p->buf, "#define", 7))
1077  return AVPROBE_SCORE_MAX - 1;
1078  return 0;
1079 }
1080 
1081 static int xpm_probe(const AVProbeData *p)
1082 {
1083  const uint8_t *b = p->buf;
1084 
1085  if (AV_RB64(b) == 0x2f2a2058504d202a && *(b+8) == '/')
1086  return AVPROBE_SCORE_MAX - 1;
1087  return 0;
1088 }
1089 
1090 static int xwd_probe(const AVProbeData *p)
1091 {
1092  const uint8_t *b = p->buf;
1093  unsigned width, bpp, bpad, lsize;
1094 
1095  if ( p->buf_size < XWD_HEADER_SIZE
1096  || AV_RB32(b ) < XWD_HEADER_SIZE // header size
1097  || AV_RB32(b + 4) != XWD_VERSION // version
1098  || AV_RB32(b + 8) != XWD_Z_PIXMAP // format
1099  || AV_RB32(b + 12) > 32 || !AV_RB32(b + 12) // depth
1100  || AV_RB32(b + 16) == 0 // width
1101  || AV_RB32(b + 20) == 0 // height
1102  || AV_RB32(b + 28) > 1 // byteorder
1103  || AV_RB32(b + 32) & ~56 || av_popcount(AV_RB32(b + 32)) != 1 // bitmap unit
1104  || AV_RB32(b + 36) > 1 // bitorder
1105  || AV_RB32(b + 40) & ~56 || av_popcount(AV_RB32(b + 40)) != 1 // padding
1106  || AV_RB32(b + 44) > 32 || !AV_RB32(b + 44) // bpp
1107  || AV_RB32(b + 68) > 256) // colours
1108  return 0;
1109 
1110  width = AV_RB32(b + 16);
1111  bpad = AV_RB32(b + 40);
1112  bpp = AV_RB32(b + 44);
1113  lsize = AV_RB32(b + 48);
1114  if (lsize < FFALIGN(width * bpp, bpad) >> 3)
1115  return 0;
1116 
1117  return AVPROBE_SCORE_MAX / 2 + 1;
1118 }
1119 
1120 static int gif_probe(const AVProbeData *p)
1121 {
1122  /* check magick */
1123  if (memcmp(p->buf, gif87a_sig, 6) && memcmp(p->buf, gif89a_sig, 6))
1124  return 0;
1125 
1126  /* width or height contains zero? */
1127  if (!AV_RL16(&p->buf[6]) || !AV_RL16(&p->buf[8]))
1128  return 0;
1129 
1130  return AVPROBE_SCORE_MAX - 1;
1131 }
1132 
1133 static int photocd_probe(const AVProbeData *p)
1134 {
1135  if (!memcmp(p->buf, "PCD_OPA", 7))
1136  return AVPROBE_SCORE_MAX - 1;
1137 
1138  if (p->buf_size < 0x807 || memcmp(p->buf + 0x800, "PCD_IPI", 7))
1139  return 0;
1140 
1141  return AVPROBE_SCORE_MAX - 1;
1142 }
1143 
1144 static int qoi_probe(const AVProbeData *p)
1145 {
1146  if (memcmp(p->buf, "qoif", 4))
1147  return 0;
1148 
1149  if (AV_RB32(p->buf + 4) == 0 || AV_RB32(p->buf + 8) == 0)
1150  return 0;
1151 
1152  if (p->buf[12] != 3 && p->buf[12] != 4)
1153  return 0;
1154 
1155  if (p->buf[13] > 1)
1156  return 0;
1157 
1158  return AVPROBE_SCORE_MAX - 1;
1159 }
1160 
1161 static int gem_probe(const AVProbeData *p)
1162 {
1163  const uint8_t *b = p->buf;
1164  if ( AV_RB16(b ) >= 1 && AV_RB16(b ) <= 3 &&
1165  AV_RB16(b + 2) >= 8 && AV_RB16(b + 2) <= 779 &&
1166  (AV_RB16(b + 4) > 0 && AV_RB16(b + 4) <= 32) && /* planes */
1167  (AV_RB16(b + 6) > 0 && AV_RB16(b + 6) <= 8) && /* pattern_size */
1168  AV_RB16(b + 8) &&
1169  AV_RB16(b + 10) &&
1170  AV_RB16(b + 12) &&
1171  AV_RB16(b + 14)) {
1172  if (AV_RN32(b + 16) == AV_RN32("STTT") ||
1173  AV_RN32(b + 16) == AV_RN32("TIMG") ||
1174  AV_RN32(b + 16) == AV_RN32("XIMG"))
1175  return AVPROBE_SCORE_EXTENSION + 1;
1176  return AVPROBE_SCORE_EXTENSION / 4;
1177  }
1178  return 0;
1179 }
1180 
1181 static int vbn_probe(const AVProbeData *p)
1182 {
1183  const uint8_t *b = p->buf;
1184  if (AV_RL32(b ) == VBN_MAGIC &&
1185  AV_RL32(b + 4) == VBN_MAJOR &&
1186  AV_RL32(b + 8) == VBN_MINOR)
1187  return AVPROBE_SCORE_MAX - 1;
1188  return 0;
1189 }
1190 
1191 #define IMAGEAUTO_DEMUXER_0(imgname, codecid)
1192 #define IMAGEAUTO_DEMUXER_1(imgname, codecid)\
1193 const FFInputFormat ff_image_ ## imgname ## _pipe_demuxer = {\
1194  .p.name = AV_STRINGIFY(imgname) "_pipe",\
1195  .p.long_name = NULL_IF_CONFIG_SMALL("piped " AV_STRINGIFY(imgname) " sequence"),\
1196  .p.priv_class = &imagepipe_class,\
1197  .p.flags = AVFMT_GENERIC_INDEX,\
1198  .priv_data_size = sizeof(VideoDemuxData),\
1199  .read_probe = imgname ## _probe,\
1200  .read_header = ff_img_read_header,\
1201  .read_packet = ff_img_read_packet,\
1202  .raw_codec_id = codecid,\
1203 };
1204 
1205 #define IMAGEAUTO_DEMUXER_2(imgname, codecid, enabled) \
1206  IMAGEAUTO_DEMUXER_ ## enabled(imgname, codecid)
1207 #define IMAGEAUTO_DEMUXER_3(imgname, codecid, config) \
1208  IMAGEAUTO_DEMUXER_2(imgname, codecid, config)
1209 #define IMAGEAUTO_DEMUXER_EXT(imgname, codecid, uppercase_name) \
1210  IMAGEAUTO_DEMUXER_3(imgname, AV_CODEC_ID_ ## codecid, \
1211  CONFIG_IMAGE_ ## uppercase_name ## _PIPE_DEMUXER)
1212 #define IMAGEAUTO_DEMUXER(imgname, codecid) \
1213  IMAGEAUTO_DEMUXER_EXT(imgname, codecid, codecid)
1214 
1215 IMAGEAUTO_DEMUXER(bmp, BMP)
1216 IMAGEAUTO_DEMUXER(cri, CRI)
1217 IMAGEAUTO_DEMUXER(dds, DDS)
1218 IMAGEAUTO_DEMUXER(dpx, DPX)
1219 IMAGEAUTO_DEMUXER(exr, EXR)
1220 IMAGEAUTO_DEMUXER(gem, GEM)
1221 IMAGEAUTO_DEMUXER(gif, GIF)
1222 IMAGEAUTO_DEMUXER_EXT(hdr, RADIANCE_HDR, HDR)
1223 IMAGEAUTO_DEMUXER_EXT(j2k, JPEG2000, J2K)
1224 IMAGEAUTO_DEMUXER_EXT(jpeg, MJPEG, JPEG)
1225 IMAGEAUTO_DEMUXER(jpegxs, JPEGXS)
1226 IMAGEAUTO_DEMUXER(jpegls, JPEGLS)
1227 IMAGEAUTO_DEMUXER(jpegxl, JPEGXL)
1228 IMAGEAUTO_DEMUXER(pam, PAM)
1229 IMAGEAUTO_DEMUXER(pbm, PBM)
1230 IMAGEAUTO_DEMUXER(pcx, PCX)
1231 IMAGEAUTO_DEMUXER(pfm, PFM)
1232 IMAGEAUTO_DEMUXER(pgm, PGM)
1233 IMAGEAUTO_DEMUXER(pgmyuv, PGMYUV)
1234 IMAGEAUTO_DEMUXER(pgx, PGX)
1235 IMAGEAUTO_DEMUXER(phm, PHM)
1236 IMAGEAUTO_DEMUXER(photocd, PHOTOCD)
1237 IMAGEAUTO_DEMUXER(pictor, PICTOR)
1238 IMAGEAUTO_DEMUXER(png, PNG)
1239 IMAGEAUTO_DEMUXER(ppm, PPM)
1240 IMAGEAUTO_DEMUXER(psd, PSD)
1241 IMAGEAUTO_DEMUXER(qdraw, QDRAW)
1242 IMAGEAUTO_DEMUXER(qoi, QOI)
1243 IMAGEAUTO_DEMUXER(sgi, SGI)
1244 IMAGEAUTO_DEMUXER(sunrast, SUNRAST)
1245 IMAGEAUTO_DEMUXER(svg, SVG)
1246 IMAGEAUTO_DEMUXER(tiff, TIFF)
1247 IMAGEAUTO_DEMUXER(vbn, VBN)
1248 IMAGEAUTO_DEMUXER(webp, WEBP)
1249 IMAGEAUTO_DEMUXER(xbm, XBM)
1250 IMAGEAUTO_DEMUXER(xpm, XPM)
1251 IMAGEAUTO_DEMUXER(xwd, XWD)
flags
const SwsFlags flags[]
Definition: swscale.c:61
AV_BPRINT_SIZE_UNLIMITED
#define AV_BPRINT_SIZE_UNLIMITED
AVPixelFormat
AVPixelFormat
Pixel format.
Definition: pixfmt.h:71
FFInputFormat::read_probe
int(* read_probe)(const AVProbeData *)
Tell if a given file has a chance of being parsed as this format.
Definition: demux.h:92
mjpeg.h
av_bprint_is_complete
static int av_bprint_is_complete(const AVBPrint *buf)
Test if the print buffer is complete (not truncated).
Definition: bprint.h:218
AVERROR
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
opt.h
AVCodecParameters::codec_type
enum AVMediaType codec_type
General type of the encoded data.
Definition: codec_par.h:51
pam_probe
static int pam_probe(const AVProbeData *p)
Definition: img2dec.c:1059
SOS
@ SOS
Definition: mjpeg.h:72
av_bprint_init
void av_bprint_init(AVBPrint *buf, unsigned size_init, unsigned size_max)
Definition: bprint.c:69
ff_jpegxl_parse_codestream_header
int ff_jpegxl_parse_codestream_header(const uint8_t *buf, int buflen, FFJXLMetadata *meta, int validate)
Definition: jpegxl_parse.c:258
APP1
@ APP1
Definition: mjpeg.h:80
AVCodecParameters
This struct describes the properties of an encoded stream.
Definition: codec_par.h:47
cri_probe
static int cri_probe(const AVProbeData *p)
Definition: img2dec.c:669
VideoDemuxData::img_number
int img_number
Definition: img2.h:44
avformat_new_stream
AVStream * avformat_new_stream(AVFormatContext *s, const struct AVCodec *c)
Add a new stream to a media file.
AV_RL64
uint64_t_TMPL AV_RL64
Definition: bytestream.h:91
AVERROR_EOF
#define AVERROR_EOF
End of file.
Definition: error.h:57
SOF0
@ SOF0
Definition: mjpeg.h:39
pnm_magic_check
static int pnm_magic_check(const AVProbeData *p, int magic)
Definition: img2dec.c:994
VBN_MINOR
#define VBN_MINOR
Definition: vbn.h:31
OFFSET
#define OFFSET(x)
Definition: img2dec.c:584
int64_t
long long int64_t
Definition: coverity.c:34
av_strcasecmp
int av_strcasecmp(const char *a, const char *b)
Locale-independent case-insensitive compare.
Definition: avstring.c:208
AV_CODEC_ID_RAWVIDEO
@ AV_CODEC_ID_RAWVIDEO
Definition: codec_id.h:65
av_isspace
static av_const int av_isspace(int c)
Locale-independent conversion of ASCII isspace.
Definition: avstring.h:218
pixdesc.h
AVFormatContext::streams
AVStream ** streams
A list of all streams in the file.
Definition: avformat.h:1332
webp_probe
static int webp_probe(const AVProbeData *p)
Definition: img2dec.c:984
ff_img_read_header
int ff_img_read_header(AVFormatContext *s1)
Definition: img2dec.c:170
AVPacket::data
uint8_t * data
Definition: packet.h:588
dds_probe
static int dds_probe(const AVProbeData *p)
Definition: img2dec.c:680
AVOption
AVOption.
Definition: opt.h:429
b
#define b
Definition: input.c:42
AVStream::avg_frame_rate
AVRational avg_frame_rate
Average framerate.
Definition: avformat.h:833
imagepipe_class
static const AVClass imagepipe_class
Definition: img2dec.c:633
AVFMT_FLAG_CUSTOM_IO
#define AVFMT_FLAG_CUSTOM_IO
The caller has supplied a custom AVIOContext, don't avio_close() it.
Definition: avformat.h:1423
psd_probe
static int psd_probe(const AVProbeData *p)
Definition: img2dec.c:900
ff_guess_image2_codec
enum AVCodecID ff_guess_image2_codec(const char *filename)
Definition: img2.c:126
qoi_probe
static int qoi_probe(const AVProbeData *p)
Definition: img2dec.c:1144
phm_probe
static int phm_probe(const AVProbeData *p)
Definition: img2dec.c:1023
pcx_probe
static int pcx_probe(const AVProbeData *p)
Definition: img2dec.c:845
AVDictionary
Definition: dict.c:32
AVProbeData::buf_size
int buf_size
Size of buf except extra allocated bytes.
Definition: avformat.h:454
img_read_seek
static int img_read_seek(AVFormatContext *s, int stream_index, int64_t timestamp, int flags)
Definition: img2dec.c:564
AVFormatContext::video_codec_id
enum AVCodecID video_codec_id
Forced video codec_id.
Definition: avformat.h:1468
av_popcount
#define av_popcount
Definition: common.h:154
FFInputFormat::read_header
int(* read_header)(struct AVFormatContext *)
Read the format header and initialize the AVFormatContext structure.
Definition: demux.h:99
avio_size
int64_t avio_size(AVIOContext *s)
Get the filesize.
Definition: aviobuf.c:326
os_support.h
AV_PKT_FLAG_KEY
#define AV_PKT_FLAG_KEY
The packet contains a keyframe.
Definition: packet.h:643
XWD_Z_PIXMAP
#define XWD_Z_PIXMAP
Definition: xwd.h:32
av_basename
const char * av_basename(const char *path)
Thread safe basename.
Definition: avstring.c:253
AVINDEX_KEYFRAME
#define AVINDEX_KEYFRAME
Definition: avformat.h:606
APP15
@ APP15
Definition: mjpeg.h:94
av_filename_number_test
int av_filename_number_test(const char *filename)
Check whether filename actually is a numbered sequence generator.
Definition: utils.c:121
AVPROBE_SCORE_MAX
#define AVPROBE_SCORE_MAX
maximum score
Definition: avformat.h:463
FF_JPEGXL_CONTAINER_SIGNATURE_LE
#define FF_JPEGXL_CONTAINER_SIGNATURE_LE
Definition: jpegxl.h:26
avpriv_set_pts_info
void avpriv_set_pts_info(AVStream *st, int pts_wrap_bits, unsigned int pts_num, unsigned int pts_den)
Set the time base and wrapping info for a given stream.
Definition: avformat.c:780
av_packet_add_side_data
int av_packet_add_side_data(AVPacket *pkt, enum AVPacketSideDataType type, uint8_t *data, size_t size)
Wrap an existing array as a packet side data.
Definition: packet.c:197
ffstream
static av_always_inline FFStream * ffstream(AVStream *st)
Definition: internal.h:362
APP4
@ APP4
Definition: mjpeg.h:83
fail
#define fail()
Definition: checkasm.h:218
svg_probe
static int svg_probe(const AVProbeData *p)
Definition: img2dec.c:949
read_seek
static int read_seek(AVFormatContext *ctx, int stream_index, int64_t timestamp, int flags)
Definition: libcdio.c:151
av_add_index_entry
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.
Definition: seek.c:122
SOF3
@ SOF3
Definition: mjpeg.h:42
read_close
static av_cold int read_close(AVFormatContext *ctx)
Definition: libcdio.c:143
avio_tell
static av_always_inline int64_t avio_tell(AVIOContext *s)
ftell() equivalent for AVIOContext.
Definition: avio.h:494
IMAGEAUTO_DEMUXER
#define IMAGEAUTO_DEMUXER(imgname, codecid)
Definition: img2dec.c:1212
pgmx_probe
static int pgmx_probe(const AVProbeData *p)
Definition: img2dec.c:1029
APP13
@ APP13
Definition: mjpeg.h:92
AVPROBE_PADDING_SIZE
#define AVPROBE_PADDING_SIZE
extra allocated bytes at the end of the probe buffer
Definition: avformat.h:465
img_read_close
static int img_read_close(struct AVFormatContext *s1)
Definition: img2dec.c:553
img2pipe_options
static const AVOption img2pipe_options[]
Definition: img2dec.c:629
ff_bprint_get_frame_filename
int ff_bprint_get_frame_filename(struct AVBPrint *buf, const char *path, int64_t number, int flags)
Return in 'buf' the path with 'd' replaced by a number.
Definition: utils.c:293
jpegxs_probe
static int jpegxs_probe(const AVProbeData *p)
Definition: img2dec.c:836
AVStream::duration
int64_t duration
Decoding: duration of the stream, in stream time base.
Definition: avformat.h:803
av_probe_input_format3
const AVInputFormat * av_probe_input_format3(const AVProbeData *pd, int is_opened, int *score_ret)
Guess the file format.
Definition: format.c:156
PT_NONE
@ PT_NONE
Definition: img2.h:36
loop
static int loop
Definition: ffplay.c:337
PT_GLOB
@ PT_GLOB
Definition: img2.h:34
gif89a_sig
static const uint8_t gif89a_sig[6]
Definition: gif.h:35
avassert.h
pictor_probe
static int pictor_probe(const AVProbeData *p)
Definition: img2dec.c:882
AV_LOG_ERROR
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition: log.h:210
AVInputFormat
Definition: avformat.h:544
FF_ARRAY_ELEMS
#define FF_ARRAY_ELEMS(a)
Definition: sinewin_tablegen.c:29
AVFormatContext::ctx_flags
int ctx_flags
Flags signalling stream properties.
Definition: avformat.h:1313
COM
@ COM
Definition: mjpeg.h:111
read_packet
static int read_packet(void *opaque, uint8_t *buf, int buf_size)
Definition: avio_read_callback.c:42
SOF5
@ SOF5
Definition: mjpeg.h:44
intreadwrite.h
s
#define s(width, name)
Definition: cbs_vp9.c:198
av_new_packet
int av_new_packet(AVPacket *pkt, int size)
Allocate the payload of a packet and initialize its fields with default values.
Definition: packet.c:98
APP12
@ APP12
Definition: mjpeg.h:91
img_read_probe
static int img_read_probe(const AVProbeData *p)
Definition: img2dec.c:153
AVFormatContext::flags
int flags
Flags modifying the (de)muxer behaviour.
Definition: avformat.h:1415
AVInputFormat::name
const char * name
A comma separated list of short names for the format.
Definition: avformat.h:549
AVFormatContext::iformat
const struct AVInputFormat * iformat
The input container format.
Definition: avformat.h:1276
APP3
@ APP3
Definition: mjpeg.h:82
pix_fmt
static enum AVPixelFormat pix_fmt
Definition: demux_decode.c:41
AVProbeData::buf
unsigned char * buf
Buffer must have AVPROBE_PADDING_SIZE of extra allocated bytes filled with zero.
Definition: avformat.h:453
PT_DEFAULT
@ PT_DEFAULT
Definition: img2.h:37
frame_size
int frame_size
Definition: mxfenc.c:2487
AVMEDIA_TYPE_AUDIO
@ AVMEDIA_TYPE_AUDIO
Definition: avutil.h:201
AVCodecParameters::width
int width
Video only.
Definition: codec_par.h:134
AVProbeData::filename
const char * filename
Definition: avformat.h:452
av_match_ext
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.
Definition: format.c:41
add_filename_as_pkt_side_data
static int add_filename_as_pkt_side_data(char *filename, AVPacket *pkt)
Add this frame's source path and basename to packet's sidedata as a dictionary, so it can be used by ...
Definition: img2dec.c:341
bmp_probe
static int bmp_probe(const AVProbeData *p)
Definition: img2dec.c:651
av_assert0
#define av_assert0(cond)
assert() equivalent, that is always enabled.
Definition: avassert.h:42
pgmyuv_probe
static int pgmyuv_probe(const AVProbeData *p)
Definition: img2dec.c:1040
AV_CODEC_ID_ALIAS_PIX
@ AV_CODEC_ID_ALIAS_PIX
Definition: codec_id.h:231
j2k_probe
static int j2k_probe(const AVProbeData *p)
Definition: img2dec.c:718
AV_RL16
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_WL32 unsigned int_TMPL AV_WL24 unsigned int_TMPL AV_RL16
Definition: bytestream.h:94
APP11
@ APP11
Definition: mjpeg.h:90
ff_image2_demuxer
const FFInputFormat ff_image2_demuxer
VideoDemuxData
Definition: img2.h:40
xpm_probe
static int xpm_probe(const AVProbeData *p)
Definition: img2dec.c:1081
APP5
@ APP5
Definition: mjpeg.h:84
if
if(ret)
Definition: filter_design.txt:179
xwd.h
FFStream::need_parsing
enum AVStreamParseType need_parsing
Definition: internal.h:314
AVFormatContext
Format I/O context.
Definition: avformat.h:1264
internal.h
AVFormatContext::audio_codec_id
enum AVCodecID audio_codec_id
Forced audio codec_id.
Definition: avformat.h:1474
AVStream::codecpar
AVCodecParameters * codecpar
Codec parameters associated with this stream.
Definition: avformat.h:767
LIBAVUTIL_VERSION_INT
#define LIBAVUTIL_VERSION_INT
Definition: version.h:85
gem_probe
static int gem_probe(const AVProbeData *p)
Definition: img2dec.c:1161
AVClass
Describe the class of an AVClass context structure.
Definition: log.h:76
ff_img_options
const AVOption ff_img_options[]
NULL
#define NULL
Definition: coverity.c:32
sizes
static const int sizes[][2]
Definition: img2dec.c:61
APP9
@ APP9
Definition: mjpeg.h:88
xwd_probe
static int xwd_probe(const AVProbeData *p)
Definition: img2dec.c:1090
AVFMTCTX_NOHEADER
#define AVFMTCTX_NOHEADER
signal that no header is present (streams are added dynamically)
Definition: avformat.h:1215
photocd_probe
static int photocd_probe(const AVProbeData *p)
Definition: img2dec.c:1133
state
static struct @553 state
av_default_item_name
const char * av_default_item_name(void *ptr)
Return the context name.
Definition: log.c:242
AVFormatContext::pb
AVIOContext * pb
I/O context.
Definition: avformat.h:1306
AV_RN32
#define AV_RN32(p)
Definition: intreadwrite.h:360
VBN_MAJOR
#define VBN_MAJOR
Definition: vbn.h:30
xbm_probe
static int xbm_probe(const AVProbeData *p)
Definition: img2dec.c:1071
AVProbeData
This structure contains the data a format has to probe a file.
Definition: avformat.h:451
VBN_MAGIC
#define VBN_MAGIC
Definition: vbn.h:29
TEM
@ TEM
Definition: mjpeg.h:113
jpegxl_probe
static int jpegxl_probe(const AVProbeData *p)
Definition: img2dec.c:818
index
int index
Definition: gxfenc.c:90
c
Undefined Behavior In the C some operations are like signed integer dereferencing freed accessing outside allocated Undefined Behavior must not occur in a C it is not safe even if the output of undefined operations is unused The unsafety may seem nit picking but Optimizing compilers have in fact optimized code on the assumption that no undefined Behavior occurs Optimizing code based on wrong assumptions can and has in some cases lead to effects beyond the output of computations The signed integer overflow problem in speed critical code Code which is highly optimized and works with signed integers sometimes has the problem that often the output of the computation does not c
Definition: undefined.txt:32
AVPROBE_SCORE_EXTENSION
#define AVPROBE_SCORE_EXTENSION
score for file extension
Definition: avformat.h:461
inc
static int inc(int num, int period)
Definition: perlin.c:34
DEC
#define DEC
Definition: img2dec.c:585
FFInputFormat::read_packet
int(* read_packet)(struct AVFormatContext *, AVPacket *pkt)
Read one packet and put it in 'pkt'.
Definition: demux.h:109
PT_SEQUENCE
@ PT_SEQUENCE
Definition: img2.h:35
sunrast_probe
static int sunrast_probe(const AVProbeData *p)
Definition: img2dec.c:940
f
f
Definition: af_crystalizer.c:122
AVIOContext
Bytestream IO Context.
Definition: avio.h:160
vbn_probe
static int vbn_probe(const AVProbeData *p)
Definition: img2dec.c:1181
AVPacket::size
int size
Definition: packet.h:589
NULL_IF_CONFIG_SMALL
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
Definition: internal.h:94
av_bprint_finalize
int av_bprint_finalize(AVBPrint *buf, char **ret_str)
Finalize a print buffer.
Definition: bprint.c:235
XWD_HEADER_SIZE
#define XWD_HEADER_SIZE
Definition: xwd.h:27
VideoDemuxData::img_first
int img_first
Definition: img2.h:42
AVFormatContext::url
char * url
input or output URL.
Definition: avformat.h:1380
gif.h
size
int size
Definition: twinvq_data.h:10344
pfm_probe
static int pfm_probe(const AVProbeData *p)
Definition: img2dec.c:1017
dpx_probe
static int dpx_probe(const AVProbeData *p)
Definition: img2dec.c:691
AV_RB32
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
Definition: bytestream.h:96
IMAGEAUTO_DEMUXER_EXT
#define IMAGEAUTO_DEMUXER_EXT(imgname, codecid, uppercase_name)
Definition: img2dec.c:1209
VideoDemuxData::img_last
int img_last
Definition: img2.h:43
avio_check
int avio_check(const char *url, int flags)
Return AVIO_FLAG_* access flags corresponding to the access permissions of the resource in url,...
Definition: avio.c:665
AVFMT_NOFILE
#define AVFMT_NOFILE
Demuxer will use avio_open, no opened file should be provided by the caller.
Definition: avformat.h:468
ff_format_io_close
int ff_format_io_close(AVFormatContext *s, AVIOContext **pb)
Definition: avformat.c:871
av_demuxer_iterate
const AVInputFormat * av_demuxer_iterate(void **opaque)
Iterate over all registered demuxers.
Definition: allformats.c:614
range
enum AVColorRange range
Definition: mediacodec_wrapper.c:2594
FFInputFormat::p
AVInputFormat p
The public AVInputFormat.
Definition: demux.h:70
header
static const uint8_t header[24]
Definition: sdr2.c:68
av_packet_pack_dictionary
uint8_t * av_packet_pack_dictionary(AVDictionary *dict, size_t *size)
Pack a dictionary for use in side_data.
Definition: packet.c:317
AVPacket::flags
int flags
A combination of AV_PKT_FLAG values.
Definition: packet.h:594
av_dict_free
void av_dict_free(AVDictionary **pm)
Free all the memory allocated for an AVDictionary struct and all keys and values.
Definition: dict.c:233
read_header
static int read_header(FFV1Context *f, RangeCoder *c)
Definition: ffv1dec.c:498
DQT
@ DQT
Definition: mjpeg.h:73
APP6
@ APP6
Definition: mjpeg.h:85
AV_PKT_DATA_STRINGS_METADATA
@ AV_PKT_DATA_STRINGS_METADATA
A list of zero terminated key/value strings.
Definition: packet.h:169
AV_CODEC_ID_MJPEG
@ AV_CODEC_ID_MJPEG
Definition: codec_id.h:59
bprint.h
gif_probe
static int gif_probe(const AVProbeData *p)
Definition: img2dec.c:1120
log.h
AV_CODEC_ID_NONE
@ AV_CODEC_ID_NONE
Definition: codec_id.h:50
i
#define i(width, name, range_min, range_max)
Definition: cbs_h2645.c:256
AVPacket::pts
int64_t pts
Presentation timestamp in AVStream->time_base units; the time at which the decompressed packet will b...
Definition: packet.h:581
EOI
@ EOI
Definition: mjpeg.h:71
avio_internal.h
gif87a_sig
static const uint8_t gif87a_sig[6]
Definition: gif.h:34
AVCodecParameters::height
int height
Definition: codec_par.h:135
img2.h
APP8
@ APP8
Definition: mjpeg.h:87
FF_JPEGXL_CODESTREAM_SIGNATURE_LE
#define FF_JPEGXL_CODESTREAM_SIGNATURE_LE
Definition: jpegxl.h:25
pgm_probe
static int pgm_probe(const AVProbeData *p)
Definition: img2dec.c:1034
FFInputFormat::raw_codec_id
enum AVCodecID raw_codec_id
Raw demuxers store their codec ID here.
Definition: demux.h:75
demux.h
infer_size
static int infer_size(int *width_ptr, int *height_ptr, int size)
Definition: img2dec.c:73
APP7
@ APP7
Definition: mjpeg.h:86
sgi_probe
static int sgi_probe(const AVProbeData *p)
Definition: img2dec.c:928
ret
ret
Definition: filter_design.txt:187
AVStream
Stream structure.
Definition: avformat.h:744
avio_seek
int64_t avio_seek(AVIOContext *s, int64_t offset, int whence)
fseek() equivalent for AVIOContext.
Definition: aviobuf.c:236
AVClass::class_name
const char * class_name
The name of the class; usually it is the same name as the context structure type to which the AVClass...
Definition: log.h:81
pgx_probe
static int pgx_probe(const AVProbeData *p)
Definition: img2dec.c:1046
SOF2
@ SOF2
Definition: mjpeg.h:41
pnm_probe
static int pnm_probe(const AVProbeData *p)
Definition: img2dec.c:1001
avformat.h
av_bprintf
void av_bprintf(AVBPrint *buf, const char *fmt,...)
Definition: bprint.c:122
AV_INPUT_BUFFER_PADDING_SIZE
#define AV_INPUT_BUFFER_PADDING_SIZE
Definition: defs.h:40
COMMON_OPTIONS
#define COMMON_OPTIONS
Definition: img2dec.c:586
APP14
@ APP14
Definition: mjpeg.h:93
AV_RL32
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_RL32
Definition: bytestream.h:92
av_get_pix_fmt
enum AVPixelFormat av_get_pix_fmt(const char *name)
Return the pixel format corresponding to name.
Definition: pixdesc.c:3388
ff_image2pipe_demuxer
const FFInputFormat ff_image2pipe_demuxer
jpeg_probe
static int jpeg_probe(const AVProbeData *p)
Definition: img2dec.c:728
subtitles.h
png_probe
static int png_probe(const AVProbeData *p)
Definition: img2dec.c:891
jpegls_probe
static int jpegls_probe(const AVProbeData *p)
Definition: img2dec.c:809
AVInputFormat::flags
int flags
Can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_SHOW_IDS, AVFMT_NOTIMESTAMPS,...
Definition: avformat.h:563
AV_PIX_FMT_NONE
@ AV_PIX_FMT_NONE
Definition: pixfmt.h:72
hdr_probe
static int hdr_probe(const AVProbeData *p)
Definition: img2dec.c:1064
APP2
@ APP2
Definition: mjpeg.h:81
ffifmt
static const FFInputFormat * ffifmt(const AVInputFormat *fmt)
Definition: demux.h:186
AV_OPT_TYPE_INT
@ AV_OPT_TYPE_INT
Underlying C type is int.
Definition: opt.h:259
av_bprint_clear
void av_bprint_clear(AVBPrint *buf)
Reset the string to "" but keep internal allocated data.
Definition: bprint.c:227
PROBE_BUF_MIN
#define PROBE_BUF_MIN
size of probe buffer, for guessing file type from file contents
Definition: internal.h:33
ppm_probe
static int ppm_probe(const AVProbeData *p)
Definition: img2dec.c:1054
avio_read
int avio_read(AVIOContext *s, unsigned char *buf, int size)
Read size bytes from AVIOContext into buf.
Definition: aviobuf.c:615
exr_probe
static int exr_probe(const AVProbeData *p)
Definition: img2dec.c:709
AVStream::r_frame_rate
AVRational r_frame_rate
Real base framerate of the stream.
Definition: avformat.h:878
AVFormatContext::io_open
int(* io_open)(struct AVFormatContext *s, AVIOContext **pb, const char *url, int flags, AVDictionary **options)
A callback for opening new IO streams.
Definition: avformat.h:1864
AVIndexEntry::pos
int64_t pos
Definition: avformat.h:599
VideoDemuxData::pts
int64_t pts
Definition: img2.h:45
Windows::Graphics::DirectX::Direct3D11::p
IDirect3DDxgiInterfaceAccess _COM_Outptr_ void ** p
Definition: vsrc_gfxcapture_winrt.hpp:53
AVPacket::stream_index
int stream_index
Definition: packet.h:590
find_image_range
static int find_image_range(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.
Definition: img2dec.c:97
avio_skip
int64_t avio_skip(AVIOContext *s, int64_t offset)
Skip given number of bytes forward.
Definition: aviobuf.c:321
ff_img_read_packet
int ff_img_read_packet(AVFormatContext *s1, AVPacket *pkt)
Definition: img2dec.c:363
APP0
@ APP0
Definition: mjpeg.h:79
FFStream::index_entries
AVIndexEntry * index_entries
Only used if the format does not support seeking natively.
Definition: internal.h:184
pbm_probe
static int pbm_probe(const AVProbeData *p)
Definition: img2dec.c:1012
AVIO_FLAG_READ
#define AVIO_FLAG_READ
read-only
Definition: avio.h:617
AVMEDIA_TYPE_VIDEO
@ AVMEDIA_TYPE_VIDEO
Definition: avutil.h:200
read_probe
static int read_probe(const AVProbeData *p)
Definition: cdg.c:30
mem.h
vbn.h
ffio_rewind_with_probe_data
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.
Definition: aviobuf.c:1151
SOI
@ SOI
Definition: mjpeg.h:70
AVCodecParameters::format
int format
Definition: codec_par.h:92
SOF1
@ SOF1
Definition: mjpeg.h:40
w
uint8_t w
Definition: llvidencdsp.c:39
VideoDemuxData::ts_from_file
int ts_from_file
Definition: img2.h:61
av_free
#define av_free(p)
Definition: tableprint_vlc.h:34
FFALIGN
#define FFALIGN(x, a)
Definition: macros.h:78
AVCodecParameters::codec_id
enum AVCodecID codec_id
Specific type of the encoded data (the codec used).
Definition: codec_par.h:55
AVPacket
This structure stores compressed data.
Definition: packet.h:565
AV_OPT_TYPE_BOOL
@ AV_OPT_TYPE_BOOL
Underlying C type is int.
Definition: opt.h:327
av_freep
#define av_freep(p)
Definition: tableprint_vlc.h:35
av_dict_set
int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags)
Set the given entry in *pm, overwriting an existing entry.
Definition: dict.c:86
AVPacket::pos
int64_t pos
byte position in stream, -1 if unknown
Definition: packet.h:608
tiff_probe
static int tiff_probe(const AVProbeData *p)
Definition: img2dec.c:974
FFInputFormat
Definition: demux.h:66
XWD_VERSION
#define XWD_VERSION
Definition: xwd.h:26
AVSTREAM_PARSE_FULL
@ AVSTREAM_PARSE_FULL
full parsing and repack
Definition: avformat.h:589
jpegxl_parse.h
APP10
@ APP10
Definition: mjpeg.h:89
av_log
#define av_log(a,...)
Definition: tableprint_vlc.h:27
FFStream::parser
struct AVCodecParserContext * parser
Definition: internal.h:315
AVERROR_INVALIDDATA
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
Definition: error.h:61
MKTAG
#define MKTAG(a, b, c, d)
Definition: macros.h:55
h
h
Definition: vp9dsp_template.c:2070
SOF7
@ SOF7
Definition: mjpeg.h:46
ff_subtitles_next_line
static av_always_inline int ff_subtitles_next_line(const char *ptr)
Get the number of characters to increment to jump to the next line, or to the end of the string.
Definition: subtitles.h:205
AVStream::start_time
int64_t start_time
Decoding: pts of the first frame of the stream in presentation order, in stream time base.
Definition: avformat.h:793
pkt
static AVPacket * pkt
Definition: demux_decode.c:55
avstring.h
width
#define width
Definition: dsp.h:89
AV_OPT_TYPE_CONST
@ AV_OPT_TYPE_CONST
Special option type for declaring named constants.
Definition: opt.h:299
AV_CODEC_ID_LJPEG
@ AV_CODEC_ID_LJPEG
Definition: codec_id.h:61
SOF6
@ SOF6
Definition: mjpeg.h:45
AVFormatContext::priv_data
void * priv_data
Format private data.
Definition: avformat.h:1292
qdraw_probe
static int qdraw_probe(const AVProbeData *p)
Definition: img2dec.c:866
AV_RB64
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
Definition: bytestream.h:95
JPG
@ JPG
Definition: mjpeg.h:47
AV_RB16
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
Definition: bytestream.h:98
av_realloc
void * av_realloc(void *ptr, size_t size)
Allocate, reallocate, or free a block of memory.
Definition: mem.c:155
av_index_search_timestamp
int av_index_search_timestamp(AVStream *st, int64_t timestamp, int flags)
Get the index for a specific timestamp.
Definition: seek.c:245
avio_feof
int avio_feof(AVIOContext *s)
Similar to feof() but also returns nonzero on read errors.
Definition: aviobuf.c:349