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/version.h"
23 
24 #include "libavutil/avassert.h"
25 #include "libavcodec/bytestream.h"
27 #include "avformat.h"
28 #include "avio_internal.h"
29 #include "demux.h"
30 #include "internal.h"
31 
33 {
34  return cffstream(st)->parser;
35 }
36 
38 {
39  ffstream(st)->need_parsing = type;
40 }
41 
43  int64_t start, int64_t end, const char *title)
44 {
45  FFFormatContext *const si = ffformatcontext(s);
46  AVChapter *chapter = NULL;
47  int ret;
48 
49  if (end != AV_NOPTS_VALUE && start > end) {
50  av_log(s, AV_LOG_ERROR, "Chapter end time %"PRId64" before start %"PRId64"\n", end, start);
51  return NULL;
52  }
53 
54  if (!s->nb_chapters) {
55  si->chapter_ids_monotonic = 1;
56  } else if (!si->chapter_ids_monotonic || s->chapters[s->nb_chapters-1]->id >= id) {
57  for (unsigned i = 0; i < s->nb_chapters; i++)
58  if (s->chapters[i]->id == id)
59  chapter = s->chapters[i];
60  if (!chapter)
61  si->chapter_ids_monotonic = 0;
62  }
63 
64  if (!chapter) {
65  chapter = av_mallocz(sizeof(*chapter));
66  if (!chapter)
67  return NULL;
68  ret = av_dynarray_add_nofree(&s->chapters, &s->nb_chapters, chapter);
69  if (ret < 0) {
70  av_free(chapter);
71  return NULL;
72  }
73  }
74  av_dict_set(&chapter->metadata, "title", title, 0);
75  chapter->id = id;
76  chapter->time_base = time_base;
77  chapter->start = start;
78  chapter->end = end;
79 
80  return chapter;
81 }
82 
84 {
85  FFFormatContext *const si = ffformatcontext(s);
87  for (unsigned i = 0; i < s->nb_streams; i++) {
88  AVStream *st = s->streams[i];
90  }
91 }
92 
94 {
95  FFFormatContext *const si = ffformatcontext(s);
96  int ret;
97  for (unsigned i = 0; i < s->nb_streams; i++)
98  if (s->streams[i]->disposition & AV_DISPOSITION_ATTACHED_PIC &&
99  s->streams[i]->discard < AVDISCARD_ALL) {
100  if (s->streams[i]->attached_pic.size <= 0) {
102  "Attached picture on stream %d has invalid size, "
103  "ignoring\n", i);
104  continue;
105  }
106 
108  &s->streams[i]->attached_pic,
109  av_packet_ref, 0);
110  if (ret < 0)
111  return ret;
112  }
113  return 0;
114 }
115 
117  AVBufferRef **buf, int size)
118 {
119  AVStream *st = st0;
120  AVPacket *pkt;
121  int ret;
122 
123  if (!st && !(st = avformat_new_stream(s, NULL)))
124  return AVERROR(ENOMEM);
125  pkt = &st->attached_pic;
126  if (buf) {
127  av_assert1(*buf);
129  pkt->buf = *buf;
130  pkt->data = (*buf)->data;
131  pkt->size = (*buf)->size - AV_INPUT_BUFFER_PADDING_SIZE;
132  *buf = NULL;
133  } else {
134  ret = av_get_packet(pb, pkt, size);
135  if (ret < 0)
136  goto fail;
137  }
140 
141  pkt->stream_index = st->index;
143 
144  return 0;
145 fail:
146  if (!st0)
147  ff_remove_stream(s, st);
148  return ret;
149 }
150 
152  uint64_t channel_layout, int32_t sample_rate,
154 {
155  uint32_t flags = 0;
156  int size = 4;
157  uint8_t *data;
158  if (!pkt)
159  return AVERROR(EINVAL);
160 
161 #if FF_API_OLD_CHANNEL_LAYOUT
163  if (channels) {
164  size += 4;
165  flags |= AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT;
166  }
167  if (channel_layout) {
168  size += 8;
169  flags |= AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_LAYOUT;
170  }
172 #endif
173  if (sample_rate) {
174  size += 4;
176  }
177  if (width || height) {
178  size += 8;
180  }
182  if (!data)
183  return AVERROR(ENOMEM);
184  bytestream_put_le32(&data, flags);
185 #if FF_API_OLD_CHANNEL_LAYOUT
187  if (channels)
188  bytestream_put_le32(&data, channels);
189  if (channel_layout)
190  bytestream_put_le64(&data, channel_layout);
192 #endif
193  if (sample_rate)
194  bytestream_put_le32(&data, sample_rate);
195  if (width || height) {
196  bytestream_put_le32(&data, width);
197  bytestream_put_le32(&data, height);
198  }
199  return 0;
200 }
201 
203 {
204  if (s->iformat->read_play)
205  return s->iformat->read_play(s);
206  if (s->pb)
207  return avio_pause(s->pb, 0);
208  return AVERROR(ENOSYS);
209 }
210 
212 {
213  if (s->iformat->read_pause)
214  return s->iformat->read_pause(s);
215  if (s->pb)
216  return avio_pause(s->pb, 1);
217  return AVERROR(ENOSYS);
218 }
219 
221 {
222  static const uint8_t avci100_1080p_extradata[] = {
223  // SPS
224  0x00, 0x00, 0x00, 0x01, 0x67, 0x7a, 0x10, 0x29,
225  0xb6, 0xd4, 0x20, 0x22, 0x33, 0x19, 0xc6, 0x63,
226  0x23, 0x21, 0x01, 0x11, 0x98, 0xce, 0x33, 0x19,
227  0x18, 0x21, 0x02, 0x56, 0xb9, 0x3d, 0x7d, 0x7e,
228  0x4f, 0xe3, 0x3f, 0x11, 0xf1, 0x9e, 0x08, 0xb8,
229  0x8c, 0x54, 0x43, 0xc0, 0x78, 0x02, 0x27, 0xe2,
230  0x70, 0x1e, 0x30, 0x10, 0x10, 0x14, 0x00, 0x00,
231  0x03, 0x00, 0x04, 0x00, 0x00, 0x03, 0x00, 0xca,
232  0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
233  // PPS
234  0x00, 0x00, 0x00, 0x01, 0x68, 0xce, 0x33, 0x48,
235  0xd0
236  };
237  static const uint8_t avci100_1080i_extradata[] = {
238  // SPS
239  0x00, 0x00, 0x00, 0x01, 0x67, 0x7a, 0x10, 0x29,
240  0xb6, 0xd4, 0x20, 0x22, 0x33, 0x19, 0xc6, 0x63,
241  0x23, 0x21, 0x01, 0x11, 0x98, 0xce, 0x33, 0x19,
242  0x18, 0x21, 0x03, 0x3a, 0x46, 0x65, 0x6a, 0x65,
243  0x24, 0xad, 0xe9, 0x12, 0x32, 0x14, 0x1a, 0x26,
244  0x34, 0xad, 0xa4, 0x41, 0x82, 0x23, 0x01, 0x50,
245  0x2b, 0x1a, 0x24, 0x69, 0x48, 0x30, 0x40, 0x2e,
246  0x11, 0x12, 0x08, 0xc6, 0x8c, 0x04, 0x41, 0x28,
247  0x4c, 0x34, 0xf0, 0x1e, 0x01, 0x13, 0xf2, 0xe0,
248  0x3c, 0x60, 0x20, 0x20, 0x28, 0x00, 0x00, 0x03,
249  0x00, 0x08, 0x00, 0x00, 0x03, 0x01, 0x94, 0x20,
250  // PPS
251  0x00, 0x00, 0x00, 0x01, 0x68, 0xce, 0x33, 0x48,
252  0xd0
253  };
254  static const uint8_t avci50_1080p_extradata[] = {
255  // SPS
256  0x00, 0x00, 0x00, 0x01, 0x67, 0x6e, 0x10, 0x28,
257  0xa6, 0xd4, 0x20, 0x32, 0x33, 0x0c, 0x71, 0x18,
258  0x88, 0x62, 0x10, 0x19, 0x19, 0x86, 0x38, 0x8c,
259  0x44, 0x30, 0x21, 0x02, 0x56, 0x4e, 0x6f, 0x37,
260  0xcd, 0xf9, 0xbf, 0x81, 0x6b, 0xf3, 0x7c, 0xde,
261  0x6e, 0x6c, 0xd3, 0x3c, 0x05, 0xa0, 0x22, 0x7e,
262  0x5f, 0xfc, 0x00, 0x0c, 0x00, 0x13, 0x8c, 0x04,
263  0x04, 0x05, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00,
264  0x00, 0x03, 0x00, 0x32, 0x84, 0x00, 0x00, 0x00,
265  // PPS
266  0x00, 0x00, 0x00, 0x01, 0x68, 0xee, 0x31, 0x12,
267  0x11
268  };
269  static const uint8_t avci50_1080i_extradata[] = {
270  // SPS
271  0x00, 0x00, 0x00, 0x01, 0x67, 0x6e, 0x10, 0x28,
272  0xa6, 0xd4, 0x20, 0x32, 0x33, 0x0c, 0x71, 0x18,
273  0x88, 0x62, 0x10, 0x19, 0x19, 0x86, 0x38, 0x8c,
274  0x44, 0x30, 0x21, 0x02, 0x56, 0x4e, 0x6e, 0x61,
275  0x87, 0x3e, 0x73, 0x4d, 0x98, 0x0c, 0x03, 0x06,
276  0x9c, 0x0b, 0x73, 0xe6, 0xc0, 0xb5, 0x18, 0x63,
277  0x0d, 0x39, 0xe0, 0x5b, 0x02, 0xd4, 0xc6, 0x19,
278  0x1a, 0x79, 0x8c, 0x32, 0x34, 0x24, 0xf0, 0x16,
279  0x81, 0x13, 0xf7, 0xff, 0x80, 0x02, 0x00, 0x01,
280  0xf1, 0x80, 0x80, 0x80, 0xa0, 0x00, 0x00, 0x03,
281  0x00, 0x20, 0x00, 0x00, 0x06, 0x50, 0x80, 0x00,
282  // PPS
283  0x00, 0x00, 0x00, 0x01, 0x68, 0xee, 0x31, 0x12,
284  0x11
285  };
286  static const uint8_t avci100_720p_extradata[] = {
287  // SPS
288  0x00, 0x00, 0x00, 0x01, 0x67, 0x7a, 0x10, 0x29,
289  0xb6, 0xd4, 0x20, 0x2a, 0x33, 0x1d, 0xc7, 0x62,
290  0xa1, 0x08, 0x40, 0x54, 0x66, 0x3b, 0x8e, 0xc5,
291  0x42, 0x02, 0x10, 0x25, 0x64, 0x2c, 0x89, 0xe8,
292  0x85, 0xe4, 0x21, 0x4b, 0x90, 0x83, 0x06, 0x95,
293  0xd1, 0x06, 0x46, 0x97, 0x20, 0xc8, 0xd7, 0x43,
294  0x08, 0x11, 0xc2, 0x1e, 0x4c, 0x91, 0x0f, 0x01,
295  0x40, 0x16, 0xec, 0x07, 0x8c, 0x04, 0x04, 0x05,
296  0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x03,
297  0x00, 0x64, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00,
298  // PPS
299  0x00, 0x00, 0x00, 0x01, 0x68, 0xce, 0x31, 0x12,
300  0x11
301  };
302  static const uint8_t avci50_720p_extradata[] = {
303  // SPS
304  0x00, 0x00, 0x00, 0x01, 0x67, 0x6e, 0x10, 0x20,
305  0xa6, 0xd4, 0x20, 0x32, 0x33, 0x0c, 0x71, 0x18,
306  0x88, 0x62, 0x10, 0x19, 0x19, 0x86, 0x38, 0x8c,
307  0x44, 0x30, 0x21, 0x02, 0x56, 0x4e, 0x6f, 0x37,
308  0xcd, 0xf9, 0xbf, 0x81, 0x6b, 0xf3, 0x7c, 0xde,
309  0x6e, 0x6c, 0xd3, 0x3c, 0x0f, 0x01, 0x6e, 0xff,
310  0xc0, 0x00, 0xc0, 0x01, 0x38, 0xc0, 0x40, 0x40,
311  0x50, 0x00, 0x00, 0x03, 0x00, 0x10, 0x00, 0x00,
312  0x06, 0x48, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
313  // PPS
314  0x00, 0x00, 0x00, 0x01, 0x68, 0xee, 0x31, 0x12,
315  0x11
316  };
317 
318  const uint8_t *data = NULL;
319  int ret, size = 0;
320 
321  if (st->codecpar->width == 1920) {
323  data = avci100_1080p_extradata;
324  size = sizeof(avci100_1080p_extradata);
325  } else {
326  data = avci100_1080i_extradata;
327  size = sizeof(avci100_1080i_extradata);
328  }
329  } else if (st->codecpar->width == 1440) {
331  data = avci50_1080p_extradata;
332  size = sizeof(avci50_1080p_extradata);
333  } else {
334  data = avci50_1080i_extradata;
335  size = sizeof(avci50_1080i_extradata);
336  }
337  } else if (st->codecpar->width == 1280) {
338  data = avci100_720p_extradata;
339  size = sizeof(avci100_720p_extradata);
340  } else if (st->codecpar->width == 960) {
341  data = avci50_720p_extradata;
342  size = sizeof(avci50_720p_extradata);
343  }
344 
345  if (!size)
346  return 0;
347 
348  if ((ret = ff_alloc_extradata(st->codecpar, size)) < 0)
349  return ret;
350  memcpy(st->codecpar->extradata, data, size);
351 
352  return 0;
353 }
354 
355 int ff_get_extradata(void *logctx, AVCodecParameters *par, AVIOContext *pb, int size)
356 {
357  int ret = ff_alloc_extradata(par, size);
358  if (ret < 0)
359  return ret;
360  ret = ffio_read_size(pb, par->extradata, size);
361  if (ret < 0) {
362  av_freep(&par->extradata);
363  par->extradata_size = 0;
364  av_log(logctx, AV_LOG_ERROR, "Failed to read extradata of size %d\n", size);
365  return ret;
366  }
367 
368  return ret;
369 }
370 
372 {
373  for (unsigned i = 0; i < s->nb_streams; i++)
374  if (s->streams[i]->id == id)
375  return i;
376  return -1;
377 }
av_packet_unref
void av_packet_unref(AVPacket *pkt)
Wipe the packet.
Definition: avpacket.c:422
FF_ENABLE_DEPRECATION_WARNINGS
#define FF_ENABLE_DEPRECATION_WARNINGS
Definition: internal.h:83
AV_LOG_WARNING
#define AV_LOG_WARNING
Something somehow does not look correct.
Definition: log.h:186
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: avpacket.c:536
AVCodecParameters::extradata
uint8_t * extradata
Extra binary data needed for initializing the decoder, codec-dependent.
Definition: codec_par.h:75
FFStream::inject_global_side_data
int inject_global_side_data
Internal data to inject global side data.
Definition: internal.h:355
AVChapter::metadata
AVDictionary * metadata
Definition: avformat.h:1176
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
avformat_new_stream
AVStream * avformat_new_stream(AVFormatContext *s, const AVCodec *c)
Add a new stream to a media file.
Definition: options.c:237
AVCodecParameters::codec_type
enum AVMediaType codec_type
General type of the encoded data.
Definition: codec_par.h:57
AVCodecParameters
This struct describes the properties of an encoded stream.
Definition: codec_par.h:53
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:73
ffformatcontext
static av_always_inline FFFormatContext * ffformatcontext(AVFormatContext *s)
Definition: internal.h:192
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:879
AVPacket::data
uint8_t * data
Definition: packet.h:374
AVChapter::start
int64_t start
Definition: avformat.h:1175
data
const char data[16]
Definition: mxf.c:143
AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE
@ AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE
Definition: packet.h:458
cffstream
static const av_always_inline FFStream * cffstream(const AVStream *st)
Definition: internal.h:412
AV_PKT_FLAG_KEY
#define AV_PKT_FLAG_KEY
The packet contains a keyframe.
Definition: packet.h:429
sample_rate
sample_rate
Definition: ffmpeg_filter.c:153
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:220
avformat_queue_attached_pictures
int avformat_queue_attached_pictures(AVFormatContext *s)
Definition: demux_utils.c:93
ff_remove_stream
void ff_remove_stream(AVFormatContext *s, AVStream *st)
Remove a stream from its AVFormatContext and free it.
Definition: avformat.c:76
ffstream
static av_always_inline FFStream * ffstream(AVStream *st)
Definition: internal.h:407
fail
#define fail()
Definition: checkasm.h:131
AVStreamParseType
AVStreamParseType
Definition: avformat.h:796
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:42
AVChapter
Definition: avformat.h:1172
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:1037
avassert.h
pkt
AVPacket * pkt
Definition: movenc.c:59
AV_LOG_ERROR
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition: log.h:180
AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS
@ AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS
Definition: packet.h:459
AVChapter::end
int64_t end
chapter start/end time in time_base units
Definition: avformat.h:1175
width
#define width
s
#define s(width, name)
Definition: cbs_vp9.c:256
AVCodecParameters::width
int width
Video only.
Definition: codec_par.h:127
avpriv_stream_set_need_parsing
void avpriv_stream_set_need_parsing(AVStream *st, enum AVStreamParseType type)
Definition: demux_utils.c:37
av_read_play
int av_read_play(AVFormatContext *s)
Start playing a network-based stream (e.g.
Definition: demux_utils.c:202
channels
channels
Definition: aptx.h:32
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:116
FFFormatContext
Definition: internal.h:72
FFStream::need_parsing
enum AVStreamParseType need_parsing
Definition: internal.h:380
AVDISCARD_ALL
@ AVDISCARD_ALL
discard all
Definition: defs.h:54
AVFormatContext
Format I/O context.
Definition: avformat.h:1213
internal.h
AVStream::codecpar
AVCodecParameters * codecpar
Codec parameters associated with this stream.
Definition: avformat.h:1108
AVPacket::buf
AVBufferRef * buf
A reference to the reference-counted buffer where the packet data is stored.
Definition: packet.h:357
NULL
#define NULL
Definition: coverity.c:32
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:1329
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: avpacket.c:430
FFFormatContext::inject_global_side_data
int inject_global_side_data
Definition: internal.h:152
AVCodecParameters::extradata_size
int extradata_size
Size of the extradata content in bytes.
Definition: codec_par.h:79
AVIOContext
Bytestream IO Context.
Definition: avio.h:162
AVPacket::size
int size
Definition: packet.h:375
id
enum AVCodecID id
Definition: extract_extradata_bsf.c:324
av_format_inject_global_side_data
void av_format_inject_global_side_data(AVFormatContext *s)
This function will cause global side data to be injected in the next packet of each stream as well as...
Definition: demux_utils.c:83
size
int size
Definition: twinvq_data.h:10344
AV_NOPTS_VALUE
#define AV_NOPTS_VALUE
Undefined timestamp value.
Definition: avutil.h:248
height
#define height
AVPacket::flags
int flags
A combination of AV_PKT_FLAG values.
Definition: packet.h:380
FFFormatContext::raw_packet_buffer
PacketList raw_packet_buffer
Raw packets from the demuxer, prior to parsing and decoding.
Definition: internal.h:117
i
#define i(width, name, range_min, range_max)
Definition: cbs_h2645.c:269
avio_internal.h
AVChapter::id
int64_t id
unique ID to identify the chapter
Definition: avformat.h:1173
av_assert1
#define av_assert1(cond)
assert() equivalent, that does not lie in speed critical code.
Definition: avassert.h:53
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:264
demux.h
av_read_pause
int av_read_pause(AVFormatContext *s)
Pause a network-based stream (e.g.
Definition: demux_utils.c:211
AVCodecParameters::field_order
enum AVFieldOrder field_order
Video only.
Definition: codec_par.h:142
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:102
AVCodecParserContext
Definition: avcodec.h:2789
version.h
AVStream::disposition
int disposition
Stream disposition - a combination of AV_DISPOSITION_* flags.
Definition: avformat.h:1008
ret
ret
Definition: filter_design.txt:187
AVStream
Stream structure.
Definition: avformat.h:948
avformat.h
AV_INPUT_BUFFER_PADDING_SIZE
#define AV_INPUT_BUFFER_PADDING_SIZE
Definition: defs.h:40
FFFormatContext::chapter_ids_monotonic
int chapter_ids_monotonic
Set if chapter ids are strictly monotonic.
Definition: internal.h:184
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:323
AVStream::index
int index
stream index in AVFormatContext
Definition: avformat.h:956
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: avpacket.c:230
av_stream_get_parser
struct AVCodecParserContext * av_stream_get_parser(const AVStream *st)
Definition: demux_utils.c:32
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:355
AVPacket::stream_index
int stream_index
Definition: packet.h:376
FF_DISABLE_DEPRECATION_WARNINGS
#define FF_DISABLE_DEPRECATION_WARNINGS
Definition: internal.h:82
AVMEDIA_TYPE_VIDEO
@ AVMEDIA_TYPE_VIDEO
Definition: avutil.h:201
AVBufferRef
A reference to a data buffer.
Definition: buffer.h:82
packet_internal.h
AV_FIELD_PROGRESSIVE
@ AV_FIELD_PROGRESSIVE
Definition: codec_par.h:39
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:371
av_free
#define av_free(p)
Definition: tableprint_vlc.h:33
AVPacket
This structure stores compressed data.
Definition: packet.h:351
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:70
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:151
int32_t
int32_t
Definition: audioconvert.c:56
bytestream.h
flags
#define flags(name, subs,...)
Definition: cbs_av1.c:561
av_log
#define av_log(a,...)
Definition: tableprint_vlc.h:27
FFStream::parser
struct AVCodecParserContext * parser
Definition: internal.h:381
ffio_read_size
int ffio_read_size(AVIOContext *s, unsigned char *buf, int size)
Read size bytes from AVIOContext into buf.
Definition: aviobuf.c:691
AVChapter::time_base
AVRational time_base
time base in which the start/end timestamps are specified
Definition: avformat.h:1174
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:238