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