FFmpeg
demux_utils.c
Go to the documentation of this file.
1 /*
2  * Various utility demuxing functions
3  * Copyright (c) 2000, 2001, 2002 Fabrice Bellard
4  *
5  * This file is part of FFmpeg.
6  *
7  * FFmpeg is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * FFmpeg is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with FFmpeg; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20  */
21 
22 #include "libavutil/mem.h"
23 
24 #include "libavutil/avassert.h"
25 #include "libavcodec/bytestream.h"
27 #include "avformat.h"
28 #include "avformat_internal.h"
29 #include "avio_internal.h"
30 #include "demux.h"
31 #include "internal.h"
32 
34 {
35  return cffstream(st)->parser;
36 }
37 
39 {
40  ffstream(st)->need_parsing = type;
41 }
42 
44  int64_t start, int64_t end, const char *title)
45 {
47  AVChapter *chapter = NULL;
48  int ret;
49 
50  if (end != AV_NOPTS_VALUE && start > end) {
51  av_log(s, AV_LOG_ERROR, "Chapter end time %"PRId64" before start %"PRId64"\n", end, start);
52  return NULL;
53  }
54 
55  if (!s->nb_chapters) {
56  fci->chapter_ids_monotonic = 1;
57  } else if (!fci->chapter_ids_monotonic || s->chapters[s->nb_chapters-1]->id >= id) {
58  for (unsigned i = 0; i < s->nb_chapters; i++)
59  if (s->chapters[i]->id == id)
60  chapter = s->chapters[i];
61  if (!chapter)
62  fci->chapter_ids_monotonic = 0;
63  }
64 
65  if (!chapter) {
66  chapter = av_mallocz(sizeof(*chapter));
67  if (!chapter)
68  return NULL;
69  ret = av_dynarray_add_nofree(&s->chapters, &s->nb_chapters, chapter);
70  if (ret < 0) {
71  av_free(chapter);
72  return NULL;
73  }
74  }
75  av_dict_set(&chapter->metadata, "title", title, 0);
76  chapter->id = id;
77  chapter->time_base = time_base;
78  chapter->start = start;
79  chapter->end = end;
80 
81  return chapter;
82 }
83 
84 #if FF_API_AVSTREAM_SIDE_DATA
85 void av_format_inject_global_side_data(AVFormatContext *s)
86 {
87  FFFormatContext *const si = ffformatcontext(s);
88  si->inject_global_side_data = 1;
89  for (unsigned i = 0; i < s->nb_streams; i++) {
90  AVStream *st = s->streams[i];
91  ffstream(st)->inject_global_side_data = 1;
92  }
93 }
94 #endif
95 
97 {
99  int ret;
100  for (unsigned i = 0; i < s->nb_streams; i++)
101  if (s->streams[i]->disposition & AV_DISPOSITION_ATTACHED_PIC &&
102  s->streams[i]->discard < AVDISCARD_ALL) {
103  if (s->streams[i]->attached_pic.size <= 0) {
105  "Attached picture on stream %d has invalid size, "
106  "ignoring\n", i);
107  continue;
108  }
109 
111  &s->streams[i]->attached_pic,
112  av_packet_ref, 0);
113  if (ret < 0)
114  return ret;
115  }
116  return 0;
117 }
118 
120  AVBufferRef **buf, int size)
121 {
122  AVStream *st = st0;
123  AVPacket *pkt;
124  int ret;
125 
126  if (!st && !(st = avformat_new_stream(s, NULL)))
127  return AVERROR(ENOMEM);
128  pkt = &st->attached_pic;
129  if (buf) {
130  av_assert1(*buf);
132  pkt->buf = *buf;
133  pkt->data = (*buf)->data;
134  pkt->size = (*buf)->size - AV_INPUT_BUFFER_PADDING_SIZE;
135  *buf = NULL;
136  } else {
137  ret = av_get_packet(pb, pkt, size);
138  if (ret < 0)
139  goto fail;
140  }
143 
144  pkt->stream_index = st->index;
146 
147  return 0;
148 fail:
149  if (!st0)
150  ff_remove_stream(s, st);
151  return ret;
152 }
153 
155  uint64_t channel_layout, int32_t sample_rate,
157 {
158  uint32_t flags = 0;
159  int size = 4;
160  uint8_t *data;
161  if (!pkt)
162  return AVERROR(EINVAL);
163 
164  if (sample_rate) {
165  size += 4;
167  }
168  if (width || height) {
169  size += 8;
171  }
173  if (!data)
174  return AVERROR(ENOMEM);
175  bytestream_put_le32(&data, flags);
176  if (sample_rate)
177  bytestream_put_le32(&data, sample_rate);
178  if (width || height) {
179  bytestream_put_le32(&data, width);
180  bytestream_put_le32(&data, height);
181  }
182  return 0;
183 }
184 
186 {
187  if (ffifmt(s->iformat)->read_play)
188  return ffifmt(s->iformat)->read_play(s);
189  if (s->pb)
190  return avio_pause(s->pb, 0);
191  return AVERROR(ENOSYS);
192 }
193 
195 {
196  if (ffifmt(s->iformat)->read_pause)
197  return ffifmt(s->iformat)->read_pause(s);
198  if (s->pb)
199  return avio_pause(s->pb, 1);
200  return AVERROR(ENOSYS);
201 }
202 
204 {
205  static const uint8_t avci100_1080p_extradata[] = {
206  // SPS
207  0x00, 0x00, 0x00, 0x01, 0x67, 0x7a, 0x10, 0x29,
208  0xb6, 0xd4, 0x20, 0x22, 0x33, 0x19, 0xc6, 0x63,
209  0x23, 0x21, 0x01, 0x11, 0x98, 0xce, 0x33, 0x19,
210  0x18, 0x21, 0x02, 0x56, 0xb9, 0x3d, 0x7d, 0x7e,
211  0x4f, 0xe3, 0x3f, 0x11, 0xf1, 0x9e, 0x08, 0xb8,
212  0x8c, 0x54, 0x43, 0xc0, 0x78, 0x02, 0x27, 0xe2,
213  0x70, 0x1e, 0x30, 0x10, 0x10, 0x14, 0x00, 0x00,
214  0x03, 0x00, 0x04, 0x00, 0x00, 0x03, 0x00, 0xca,
215  0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
216  // PPS
217  0x00, 0x00, 0x00, 0x01, 0x68, 0xce, 0x33, 0x48,
218  0xd0
219  };
220  static const uint8_t avci100_1080i_extradata[] = {
221  // SPS
222  0x00, 0x00, 0x00, 0x01, 0x67, 0x7a, 0x10, 0x29,
223  0xb6, 0xd4, 0x20, 0x22, 0x33, 0x19, 0xc6, 0x63,
224  0x23, 0x21, 0x01, 0x11, 0x98, 0xce, 0x33, 0x19,
225  0x18, 0x21, 0x03, 0x3a, 0x46, 0x65, 0x6a, 0x65,
226  0x24, 0xad, 0xe9, 0x12, 0x32, 0x14, 0x1a, 0x26,
227  0x34, 0xad, 0xa4, 0x41, 0x82, 0x23, 0x01, 0x50,
228  0x2b, 0x1a, 0x24, 0x69, 0x48, 0x30, 0x40, 0x2e,
229  0x11, 0x12, 0x08, 0xc6, 0x8c, 0x04, 0x41, 0x28,
230  0x4c, 0x34, 0xf0, 0x1e, 0x01, 0x13, 0xf2, 0xe0,
231  0x3c, 0x60, 0x20, 0x20, 0x28, 0x00, 0x00, 0x03,
232  0x00, 0x08, 0x00, 0x00, 0x03, 0x01, 0x94, 0x20,
233  // PPS
234  0x00, 0x00, 0x00, 0x01, 0x68, 0xce, 0x33, 0x48,
235  0xd0
236  };
237  static const uint8_t avci50_1080p_extradata[] = {
238  // SPS
239  0x00, 0x00, 0x00, 0x01, 0x67, 0x6e, 0x10, 0x28,
240  0xa6, 0xd4, 0x20, 0x32, 0x33, 0x0c, 0x71, 0x18,
241  0x88, 0x62, 0x10, 0x19, 0x19, 0x86, 0x38, 0x8c,
242  0x44, 0x30, 0x21, 0x02, 0x56, 0x4e, 0x6f, 0x37,
243  0xcd, 0xf9, 0xbf, 0x81, 0x6b, 0xf3, 0x7c, 0xde,
244  0x6e, 0x6c, 0xd3, 0x3c, 0x05, 0xa0, 0x22, 0x7e,
245  0x5f, 0xfc, 0x00, 0x0c, 0x00, 0x13, 0x8c, 0x04,
246  0x04, 0x05, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00,
247  0x00, 0x03, 0x00, 0x32, 0x84, 0x00, 0x00, 0x00,
248  // PPS
249  0x00, 0x00, 0x00, 0x01, 0x68, 0xee, 0x31, 0x12,
250  0x11
251  };
252  static const uint8_t avci50_1080i_extradata[] = {
253  // SPS
254  0x00, 0x00, 0x00, 0x01, 0x67, 0x6e, 0x10, 0x28,
255  0xa6, 0xd4, 0x20, 0x32, 0x33, 0x0c, 0x71, 0x18,
256  0x88, 0x62, 0x10, 0x19, 0x19, 0x86, 0x38, 0x8c,
257  0x44, 0x30, 0x21, 0x02, 0x56, 0x4e, 0x6e, 0x61,
258  0x87, 0x3e, 0x73, 0x4d, 0x98, 0x0c, 0x03, 0x06,
259  0x9c, 0x0b, 0x73, 0xe6, 0xc0, 0xb5, 0x18, 0x63,
260  0x0d, 0x39, 0xe0, 0x5b, 0x02, 0xd4, 0xc6, 0x19,
261  0x1a, 0x79, 0x8c, 0x32, 0x34, 0x24, 0xf0, 0x16,
262  0x81, 0x13, 0xf7, 0xff, 0x80, 0x02, 0x00, 0x01,
263  0xf1, 0x80, 0x80, 0x80, 0xa0, 0x00, 0x00, 0x03,
264  0x00, 0x20, 0x00, 0x00, 0x06, 0x50, 0x80, 0x00,
265  // PPS
266  0x00, 0x00, 0x00, 0x01, 0x68, 0xee, 0x31, 0x12,
267  0x11
268  };
269  static const uint8_t avci100_720p_extradata[] = {
270  // SPS
271  0x00, 0x00, 0x00, 0x01, 0x67, 0x7a, 0x10, 0x29,
272  0xb6, 0xd4, 0x20, 0x2a, 0x33, 0x1d, 0xc7, 0x62,
273  0xa1, 0x08, 0x40, 0x54, 0x66, 0x3b, 0x8e, 0xc5,
274  0x42, 0x02, 0x10, 0x25, 0x64, 0x2c, 0x89, 0xe8,
275  0x85, 0xe4, 0x21, 0x4b, 0x90, 0x83, 0x06, 0x95,
276  0xd1, 0x06, 0x46, 0x97, 0x20, 0xc8, 0xd7, 0x43,
277  0x08, 0x11, 0xc2, 0x1e, 0x4c, 0x91, 0x0f, 0x01,
278  0x40, 0x16, 0xec, 0x07, 0x8c, 0x04, 0x04, 0x05,
279  0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x03,
280  0x00, 0x64, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00,
281  // PPS
282  0x00, 0x00, 0x00, 0x01, 0x68, 0xce, 0x31, 0x12,
283  0x11
284  };
285  static const uint8_t avci50_720p_extradata[] = {
286  // SPS
287  0x00, 0x00, 0x00, 0x01, 0x67, 0x6e, 0x10, 0x20,
288  0xa6, 0xd4, 0x20, 0x32, 0x33, 0x0c, 0x71, 0x18,
289  0x88, 0x62, 0x10, 0x19, 0x19, 0x86, 0x38, 0x8c,
290  0x44, 0x30, 0x21, 0x02, 0x56, 0x4e, 0x6f, 0x37,
291  0xcd, 0xf9, 0xbf, 0x81, 0x6b, 0xf3, 0x7c, 0xde,
292  0x6e, 0x6c, 0xd3, 0x3c, 0x0f, 0x01, 0x6e, 0xff,
293  0xc0, 0x00, 0xc0, 0x01, 0x38, 0xc0, 0x40, 0x40,
294  0x50, 0x00, 0x00, 0x03, 0x00, 0x10, 0x00, 0x00,
295  0x06, 0x48, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
296  // PPS
297  0x00, 0x00, 0x00, 0x01, 0x68, 0xee, 0x31, 0x12,
298  0x11
299  };
300 
301  const uint8_t *data = NULL;
302  int ret, size = 0;
303 
304  if (st->codecpar->width == 1920) {
306  data = avci100_1080p_extradata;
307  size = sizeof(avci100_1080p_extradata);
308  } else {
309  data = avci100_1080i_extradata;
310  size = sizeof(avci100_1080i_extradata);
311  }
312  } else if (st->codecpar->width == 1440) {
314  data = avci50_1080p_extradata;
315  size = sizeof(avci50_1080p_extradata);
316  } else {
317  data = avci50_1080i_extradata;
318  size = sizeof(avci50_1080i_extradata);
319  }
320  } else if (st->codecpar->width == 1280) {
321  data = avci100_720p_extradata;
322  size = sizeof(avci100_720p_extradata);
323  } else if (st->codecpar->width == 960) {
324  data = avci50_720p_extradata;
325  size = sizeof(avci50_720p_extradata);
326  }
327 
328  if (!size)
329  return 0;
330 
331  if ((ret = ff_alloc_extradata(st->codecpar, size)) < 0)
332  return ret;
333  memcpy(st->codecpar->extradata, data, size);
334 
335  return 0;
336 }
337 
338 int ff_get_extradata(void *logctx, AVCodecParameters *par, AVIOContext *pb, int size)
339 {
340  int ret = ff_alloc_extradata(par, size);
341  if (ret < 0)
342  return ret;
343  ret = ffio_read_size(pb, par->extradata, size);
344  if (ret < 0) {
345  av_freep(&par->extradata);
346  par->extradata_size = 0;
347  av_log(logctx, AV_LOG_ERROR, "Failed to read extradata of size %d\n", size);
348  return ret;
349  }
350 
351  return ret;
352 }
353 
355 {
356  for (unsigned i = 0; i < s->nb_streams; i++)
357  if (s->streams[i]->id == id)
358  return i;
359  return -1;
360 }
av_packet_unref
void av_packet_unref(AVPacket *pkt)
Wipe the packet.
Definition: packet.c:429
AV_LOG_WARNING
#define AV_LOG_WARNING
Something somehow does not look correct.
Definition: log.h:215
AVCodecParameters::extradata
uint8_t * extradata
Extra binary data needed for initializing the decoder, codec-dependent.
Definition: codec_par.h:69
AVChapter::metadata
AVDictionary * metadata
Definition: avformat.h:1263
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
AVCodecParameters::codec_type
enum AVMediaType codec_type
General type of the encoded data.
Definition: codec_par.h:51
AVCodecParameters
This struct describes the properties of an encoded stream.
Definition: codec_par.h:47
ffformatcontext
static av_always_inline FFFormatContext * ffformatcontext(AVFormatContext *s)
Definition: internal.h:127
avformat_new_stream
AVStream * avformat_new_stream(AVFormatContext *s, const struct AVCodec *c)
Add a new stream to a media file.
AV_DISPOSITION_ATTACHED_PIC
#define AV_DISPOSITION_ATTACHED_PIC
The stream is stored in the file as an attached picture/"cover art" (e.g.
Definition: avformat.h:674
AV_FIELD_PROGRESSIVE
@ AV_FIELD_PROGRESSIVE
Definition: defs.h:202
FFInputFormat::read_pause
int(* read_pause)(struct AVFormatContext *)
Pause playing - only meaningful if using a network-based format (RTSP).
Definition: demux.h:121
int64_t
long long int64_t
Definition: coverity.c:34
FormatContextInternal::raw_packet_buffer
PacketList raw_packet_buffer
Raw packets from the demuxer, prior to parsing and decoding.
Definition: avformat_internal.h:75
AVPacket::data
uint8_t * data
Definition: packet.h:539
AVChapter::start
int64_t start
Definition: avformat.h:1262
data
const char data[16]
Definition: mxf.c:149
AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE
@ AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE
Definition: packet.h:616
cffstream
static const av_always_inline FFStream * cffstream(const AVStream *st)
Definition: internal.h:363
AV_PKT_FLAG_KEY
#define AV_PKT_FLAG_KEY
The packet contains a keyframe.
Definition: packet.h:594
FormatContextInternal
Definition: avformat_internal.h:33
ff_generate_avci_extradata
int ff_generate_avci_extradata(AVStream *st)
Generate standard extradata for AVC-Intra based on width/height and field order.
Definition: demux_utils.c:203
avformat_queue_attached_pictures
int avformat_queue_attached_pictures(AVFormatContext *s)
Definition: demux_utils.c:96
ff_remove_stream
void ff_remove_stream(AVFormatContext *s, AVStream *st)
Remove a stream from its AVFormatContext and free it.
Definition: avformat.c:121
ffstream
static av_always_inline FFStream * ffstream(AVStream *st)
Definition: internal.h:358
fail
#define fail()
Definition: checkasm.h:188
AVStreamParseType
AVStreamParseType
Definition: avformat.h:591
avpriv_new_chapter
AVChapter * avpriv_new_chapter(AVFormatContext *s, int64_t id, AVRational time_base, int64_t start, int64_t end, const char *title)
Add a new chapter.
Definition: demux_utils.c:43
AVChapter
Definition: avformat.h:1259
FFInputFormat::read_play
int(* read_play)(struct AVFormatContext *)
Start/resume playing - only meaningful if using a network-based format (RTSP).
Definition: demux.h:115
type
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf type
Definition: writing_filters.txt:86
AVStream::attached_pic
AVPacket attached_pic
For streams with AV_DISPOSITION_ATTACHED_PIC disposition, this packet will contain the attached pictu...
Definition: avformat.h:846
avassert.h
AV_PKT_DATA_PARAM_CHANGE
@ AV_PKT_DATA_PARAM_CHANGE
An AV_PKT_DATA_PARAM_CHANGE side data packet is laid out as follows:
Definition: packet.h:69
pkt
AVPacket * pkt
Definition: movenc.c:60
AV_LOG_ERROR
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition: log.h:209
AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS
@ AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS
Definition: packet.h:617
AVChapter::end
int64_t end
chapter start/end time in time_base units
Definition: avformat.h:1262
s
#define s(width, name)
Definition: cbs_vp9.c:198
AVCodecParameters::width
int width
Video only.
Definition: codec_par.h:134
avpriv_stream_set_need_parsing
void avpriv_stream_set_need_parsing(AVStream *st, enum AVStreamParseType type)
Definition: demux_utils.c:38
av_read_play
int av_read_play(AVFormatContext *s)
Start playing a network-based stream (e.g.
Definition: demux_utils.c:185
channels
channels
Definition: aptx.h:31
ff_add_attached_pic
int ff_add_attached_pic(AVFormatContext *s, AVStream *st0, AVIOContext *pb, AVBufferRef **buf, int size)
Add an attached pic to an AVStream.
Definition: demux_utils.c:119
FFFormatContext
Definition: internal.h:64
FFStream::need_parsing
enum AVStreamParseType need_parsing
Definition: internal.h:325
AVDISCARD_ALL
@ AVDISCARD_ALL
discard all
Definition: defs.h:221
AVFormatContext
Format I/O context.
Definition: avformat.h:1300
internal.h
AVStream::codecpar
AVCodecParameters * codecpar
Codec parameters associated with this stream.
Definition: avformat.h:771
AVPacket::buf
AVBufferRef * buf
A reference to the reference-counted buffer where the packet data is stored.
Definition: packet.h:522
NULL
#define NULL
Definition: coverity.c:32
avpriv_packet_list_put
int avpriv_packet_list_put(PacketList *packet_buffer, AVPacket *pkt, int(*copy)(AVPacket *dst, const AVPacket *src), int flags)
Append an AVPacket to the list.
Definition: packet.c:543
AVRational
Rational number (pair of numerator and denominator).
Definition: rational.h:58
avio_pause
int avio_pause(AVIOContext *h, int pause)
Pause and resume playing - only meaningful if using a network streaming protocol (e....
Definition: aviobuf.c:1225
av_packet_ref
int av_packet_ref(AVPacket *dst, const AVPacket *src)
Setup a new reference to the data described by a given packet.
Definition: packet.c:437
AVCodecParameters::extradata_size
int extradata_size
Size of the extradata content in bytes.
Definition: codec_par.h:73
AVIOContext
Bytestream IO Context.
Definition: avio.h:160
AVPacket::size
int size
Definition: packet.h:540
height
#define height
Definition: dsp.h:85
size
int size
Definition: twinvq_data.h:10344
AV_NOPTS_VALUE
#define AV_NOPTS_VALUE
Undefined timestamp value.
Definition: avutil.h:248
AVPacket::flags
int flags
A combination of AV_PKT_FLAG values.
Definition: packet.h:545
avformat_internal.h
i
#define i(width, name, range_min, range_max)
Definition: cbs_h2645.c:256
avio_internal.h
AVChapter::id
int64_t id
unique ID to identify the chapter
Definition: avformat.h:1260
av_assert1
#define av_assert1(cond)
assert() equivalent, that does not lie in speed critical code.
Definition: avassert.h:56
av_mallocz
void * av_mallocz(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
Definition: mem.c:256
demux.h
av_read_pause
int av_read_pause(AVFormatContext *s)
Pause a network-based stream (e.g.
Definition: demux_utils.c:194
AVCodecParameters::field_order
enum AVFieldOrder field_order
Video only.
Definition: codec_par.h:161
av_get_packet
int av_get_packet(AVIOContext *s, AVPacket *pkt, int size)
Allocate and read the payload of a packet and initialize its fields with default values.
Definition: utils.c:91
AVCodecParserContext
Definition: avcodec.h:2748
AVStream::disposition
int disposition
Stream disposition - a combination of AV_DISPOSITION_* flags.
Definition: avformat.h:817
ret
ret
Definition: filter_design.txt:187
AVStream
Stream structure.
Definition: avformat.h:748
avformat.h
AV_INPUT_BUFFER_PADDING_SIZE
#define AV_INPUT_BUFFER_PADDING_SIZE
Definition: defs.h:40
id
enum AVCodecID id
Definition: dts2pts.c:367
av_dynarray_add_nofree
int av_dynarray_add_nofree(void *tab_ptr, int *nb_ptr, void *elem)
Add an element to a dynamic array.
Definition: mem.c:315
AVStream::index
int index
stream index in AVFormatContext
Definition: avformat.h:754
FormatContextInternal::chapter_ids_monotonic
int chapter_ids_monotonic
Set if chapter ids are strictly monotonic.
Definition: avformat_internal.h:95
av_packet_new_side_data
uint8_t * av_packet_new_side_data(AVPacket *pkt, enum AVPacketSideDataType type, size_t size)
Allocate new information of a packet.
Definition: packet.c:231
av_stream_get_parser
struct AVCodecParserContext * av_stream_get_parser(const AVStream *st)
Definition: demux_utils.c:33
ffifmt
static const FFInputFormat * ffifmt(const AVInputFormat *fmt)
Definition: demux.h:138
ff_get_extradata
int ff_get_extradata(void *logctx, AVCodecParameters *par, AVIOContext *pb, int size)
Allocate extradata with additional AV_INPUT_BUFFER_PADDING_SIZE at end which is always set to 0 and f...
Definition: demux_utils.c:338
ff_fc_internal
static av_always_inline FormatContextInternal * ff_fc_internal(AVFormatContext *s)
Definition: avformat_internal.h:107
AVPacket::stream_index
int stream_index
Definition: packet.h:541
AVMEDIA_TYPE_VIDEO
@ AVMEDIA_TYPE_VIDEO
Definition: avutil.h:201
mem.h
AVBufferRef
A reference to a data buffer.
Definition: buffer.h:82
packet_internal.h
ff_find_stream_index
int ff_find_stream_index(const AVFormatContext *s, int id)
Find stream index based on format-specific stream ID.
Definition: demux_utils.c:354
av_free
#define av_free(p)
Definition: tableprint_vlc.h:33
AVPacket
This structure stores compressed data.
Definition: packet.h:516
av_freep
#define av_freep(p)
Definition: tableprint_vlc.h:34
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:88
ff_add_param_change
int ff_add_param_change(AVPacket *pkt, int32_t channels, uint64_t channel_layout, int32_t sample_rate, int32_t width, int32_t height)
Add side data to a packet for changing parameters to the given values.
Definition: demux_utils.c:154
int32_t
int32_t
Definition: audioconvert.c:56
bytestream.h
flags
#define flags(name, subs,...)
Definition: cbs_av1.c:482
av_log
#define av_log(a,...)
Definition: tableprint_vlc.h:27
FFStream::parser
struct AVCodecParserContext * parser
Definition: internal.h:326
ffio_read_size
int ffio_read_size(AVIOContext *s, unsigned char *buf, int size)
Read size bytes from AVIOContext into buf.
Definition: aviobuf.c:662
width
#define width
Definition: dsp.h:85
AVChapter::time_base
AVRational time_base
time base in which the start/end timestamps are specified
Definition: avformat.h:1261
ff_alloc_extradata
int ff_alloc_extradata(AVCodecParameters *par, int size)
Allocate extradata with additional AV_INPUT_BUFFER_PADDING_SIZE at end which is always set to 0.
Definition: utils.c:227