FFmpeg
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
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 
85 {
87  int ret;
88  for (unsigned i = 0; i < s->nb_streams; i++)
89  if (s->streams[i]->disposition & AV_DISPOSITION_ATTACHED_PIC &&
90  s->streams[i]->discard < AVDISCARD_ALL) {
91  if (s->streams[i]->attached_pic.size <= 0) {
93  "Attached picture on stream %d has invalid size, "
94  "ignoring\n", i);
95  continue;
96  }
97 
99  &s->streams[i]->attached_pic,
100  av_packet_ref, 0);
101  if (ret < 0)
102  return ret;
103  }
104  return 0;
105 }
106 
108  AVBufferRef **buf, int size)
109 {
110  AVStream *st = st0;
111  AVPacket *pkt;
112  int ret;
113 
114  if (!st && !(st = avformat_new_stream(s, NULL)))
115  return AVERROR(ENOMEM);
116  pkt = &st->attached_pic;
117  if (buf) {
118  av_assert1(*buf);
120  pkt->buf = *buf;
121  pkt->data = (*buf)->data;
122  pkt->size = (*buf)->size - AV_INPUT_BUFFER_PADDING_SIZE;
123  *buf = NULL;
124  } else {
125  ret = av_get_packet(pb, pkt, size);
126  if (ret < 0)
127  goto fail;
128  }
131 
132  pkt->stream_index = st->index;
134 
135  return 0;
136 fail:
137  if (!st0)
138  ff_remove_stream(s, st);
139  return ret;
140 }
141 
143  uint64_t channel_layout, int32_t sample_rate,
145 {
146  uint32_t flags = 0;
147  int size = 4;
148  uint8_t *data;
149  if (!pkt)
150  return AVERROR(EINVAL);
151 
152  if (sample_rate) {
153  size += 4;
155  }
156  if (width || height) {
157  size += 8;
159  }
161  if (!data)
162  return AVERROR(ENOMEM);
163  bytestream_put_le32(&data, flags);
164  if (sample_rate)
165  bytestream_put_le32(&data, sample_rate);
166  if (width || height) {
167  bytestream_put_le32(&data, width);
168  bytestream_put_le32(&data, height);
169  }
170  return 0;
171 }
172 
174 {
175  if (ffifmt(s->iformat)->read_play)
176  return ffifmt(s->iformat)->read_play(s);
177  if (s->pb)
178  return avio_pause(s->pb, 0);
179  return AVERROR(ENOSYS);
180 }
181 
183 {
184  if (ffifmt(s->iformat)->read_pause)
185  return ffifmt(s->iformat)->read_pause(s);
186  if (s->pb)
187  return avio_pause(s->pb, 1);
188  return AVERROR(ENOSYS);
189 }
190 
192 {
193  static const uint8_t avci100_1080p_extradata[] = {
194  // SPS
195  0x00, 0x00, 0x00, 0x01, 0x67, 0x7a, 0x10, 0x29,
196  0xb6, 0xd4, 0x20, 0x22, 0x33, 0x19, 0xc6, 0x63,
197  0x23, 0x21, 0x01, 0x11, 0x98, 0xce, 0x33, 0x19,
198  0x18, 0x21, 0x02, 0x56, 0xb9, 0x3d, 0x7d, 0x7e,
199  0x4f, 0xe3, 0x3f, 0x11, 0xf1, 0x9e, 0x08, 0xb8,
200  0x8c, 0x54, 0x43, 0xc0, 0x78, 0x02, 0x27, 0xe2,
201  0x70, 0x1e, 0x30, 0x10, 0x10, 0x14, 0x00, 0x00,
202  0x03, 0x00, 0x04, 0x00, 0x00, 0x03, 0x00, 0xca,
203  0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
204  // PPS
205  0x00, 0x00, 0x00, 0x01, 0x68, 0xce, 0x33, 0x48,
206  0xd0
207  };
208  static const uint8_t avci100_1080i_extradata[] = {
209  // SPS
210  0x00, 0x00, 0x00, 0x01, 0x67, 0x7a, 0x10, 0x29,
211  0xb6, 0xd4, 0x20, 0x22, 0x33, 0x19, 0xc6, 0x63,
212  0x23, 0x21, 0x01, 0x11, 0x98, 0xce, 0x33, 0x19,
213  0x18, 0x21, 0x03, 0x3a, 0x46, 0x65, 0x6a, 0x65,
214  0x24, 0xad, 0xe9, 0x12, 0x32, 0x14, 0x1a, 0x26,
215  0x34, 0xad, 0xa4, 0x41, 0x82, 0x23, 0x01, 0x50,
216  0x2b, 0x1a, 0x24, 0x69, 0x48, 0x30, 0x40, 0x2e,
217  0x11, 0x12, 0x08, 0xc6, 0x8c, 0x04, 0x41, 0x28,
218  0x4c, 0x34, 0xf0, 0x1e, 0x01, 0x13, 0xf2, 0xe0,
219  0x3c, 0x60, 0x20, 0x20, 0x28, 0x00, 0x00, 0x03,
220  0x00, 0x08, 0x00, 0x00, 0x03, 0x01, 0x94, 0x20,
221  // PPS
222  0x00, 0x00, 0x00, 0x01, 0x68, 0xce, 0x33, 0x48,
223  0xd0
224  };
225  static const uint8_t avci50_1080p_extradata[] = {
226  // SPS
227  0x00, 0x00, 0x00, 0x01, 0x67, 0x6e, 0x10, 0x28,
228  0xa6, 0xd4, 0x20, 0x32, 0x33, 0x0c, 0x71, 0x18,
229  0x88, 0x62, 0x10, 0x19, 0x19, 0x86, 0x38, 0x8c,
230  0x44, 0x30, 0x21, 0x02, 0x56, 0x4e, 0x6f, 0x37,
231  0xcd, 0xf9, 0xbf, 0x81, 0x6b, 0xf3, 0x7c, 0xde,
232  0x6e, 0x6c, 0xd3, 0x3c, 0x05, 0xa0, 0x22, 0x7e,
233  0x5f, 0xfc, 0x00, 0x0c, 0x00, 0x13, 0x8c, 0x04,
234  0x04, 0x05, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00,
235  0x00, 0x03, 0x00, 0x32, 0x84, 0x00, 0x00, 0x00,
236  // PPS
237  0x00, 0x00, 0x00, 0x01, 0x68, 0xee, 0x31, 0x12,
238  0x11
239  };
240  static const uint8_t avci50_1080i_extradata[] = {
241  // SPS
242  0x00, 0x00, 0x00, 0x01, 0x67, 0x6e, 0x10, 0x28,
243  0xa6, 0xd4, 0x20, 0x32, 0x33, 0x0c, 0x71, 0x18,
244  0x88, 0x62, 0x10, 0x19, 0x19, 0x86, 0x38, 0x8c,
245  0x44, 0x30, 0x21, 0x02, 0x56, 0x4e, 0x6e, 0x61,
246  0x87, 0x3e, 0x73, 0x4d, 0x98, 0x0c, 0x03, 0x06,
247  0x9c, 0x0b, 0x73, 0xe6, 0xc0, 0xb5, 0x18, 0x63,
248  0x0d, 0x39, 0xe0, 0x5b, 0x02, 0xd4, 0xc6, 0x19,
249  0x1a, 0x79, 0x8c, 0x32, 0x34, 0x24, 0xf0, 0x16,
250  0x81, 0x13, 0xf7, 0xff, 0x80, 0x02, 0x00, 0x01,
251  0xf1, 0x80, 0x80, 0x80, 0xa0, 0x00, 0x00, 0x03,
252  0x00, 0x20, 0x00, 0x00, 0x06, 0x50, 0x80, 0x00,
253  // PPS
254  0x00, 0x00, 0x00, 0x01, 0x68, 0xee, 0x31, 0x12,
255  0x11
256  };
257  static const uint8_t avci100_720p_extradata[] = {
258  // SPS
259  0x00, 0x00, 0x00, 0x01, 0x67, 0x7a, 0x10, 0x29,
260  0xb6, 0xd4, 0x20, 0x2a, 0x33, 0x1d, 0xc7, 0x62,
261  0xa1, 0x08, 0x40, 0x54, 0x66, 0x3b, 0x8e, 0xc5,
262  0x42, 0x02, 0x10, 0x25, 0x64, 0x2c, 0x89, 0xe8,
263  0x85, 0xe4, 0x21, 0x4b, 0x90, 0x83, 0x06, 0x95,
264  0xd1, 0x06, 0x46, 0x97, 0x20, 0xc8, 0xd7, 0x43,
265  0x08, 0x11, 0xc2, 0x1e, 0x4c, 0x91, 0x0f, 0x01,
266  0x40, 0x16, 0xec, 0x07, 0x8c, 0x04, 0x04, 0x05,
267  0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x03,
268  0x00, 0x64, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00,
269  // PPS
270  0x00, 0x00, 0x00, 0x01, 0x68, 0xce, 0x31, 0x12,
271  0x11
272  };
273  static const uint8_t avci50_720p_extradata[] = {
274  // SPS
275  0x00, 0x00, 0x00, 0x01, 0x67, 0x6e, 0x10, 0x20,
276  0xa6, 0xd4, 0x20, 0x32, 0x33, 0x0c, 0x71, 0x18,
277  0x88, 0x62, 0x10, 0x19, 0x19, 0x86, 0x38, 0x8c,
278  0x44, 0x30, 0x21, 0x02, 0x56, 0x4e, 0x6f, 0x37,
279  0xcd, 0xf9, 0xbf, 0x81, 0x6b, 0xf3, 0x7c, 0xde,
280  0x6e, 0x6c, 0xd3, 0x3c, 0x0f, 0x01, 0x6e, 0xff,
281  0xc0, 0x00, 0xc0, 0x01, 0x38, 0xc0, 0x40, 0x40,
282  0x50, 0x00, 0x00, 0x03, 0x00, 0x10, 0x00, 0x00,
283  0x06, 0x48, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
284  // PPS
285  0x00, 0x00, 0x00, 0x01, 0x68, 0xee, 0x31, 0x12,
286  0x11
287  };
288 
289  const uint8_t *data = NULL;
290  int ret, size = 0;
291 
292  if (st->codecpar->width == 1920) {
294  data = avci100_1080p_extradata;
295  size = sizeof(avci100_1080p_extradata);
296  } else {
297  data = avci100_1080i_extradata;
298  size = sizeof(avci100_1080i_extradata);
299  }
300  } else if (st->codecpar->width == 1440) {
302  data = avci50_1080p_extradata;
303  size = sizeof(avci50_1080p_extradata);
304  } else {
305  data = avci50_1080i_extradata;
306  size = sizeof(avci50_1080i_extradata);
307  }
308  } else if (st->codecpar->width == 1280) {
309  data = avci100_720p_extradata;
310  size = sizeof(avci100_720p_extradata);
311  } else if (st->codecpar->width == 960) {
312  data = avci50_720p_extradata;
313  size = sizeof(avci50_720p_extradata);
314  }
315 
316  if (!size)
317  return 0;
318 
319  if ((ret = ff_alloc_extradata(st->codecpar, size)) < 0)
320  return ret;
321  memcpy(st->codecpar->extradata, data, size);
322 
323  return 0;
324 }
325 
326 int ff_get_extradata(void *logctx, AVCodecParameters *par, AVIOContext *pb, int size)
327 {
328  int ret = ff_alloc_extradata(par, size);
329  if (ret < 0)
330  return ret;
331  ret = ffio_read_size(pb, par->extradata, size);
332  if (ret < 0) {
333  av_freep(&par->extradata);
334  par->extradata_size = 0;
335  av_log(logctx, AV_LOG_ERROR, "Failed to read extradata of size %d\n", size);
336  return ret;
337  }
338 
339  return ret;
340 }
341 
343 {
344  for (unsigned i = 0; i < s->nb_streams; i++)
345  if (s->streams[i]->id == id)
346  return i;
347  return -1;
348 }
av_packet_unref
void av_packet_unref(AVPacket *pkt)
Wipe the packet.
Definition: packet.c:430
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:1228
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
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:671
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:535
AVChapter::start
int64_t start
Definition: avformat.h:1227
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:612
cffstream
static const av_always_inline FFStream * cffstream(const AVStream *st)
Definition: internal.h:352
AV_PKT_FLAG_KEY
#define AV_PKT_FLAG_KEY
The packet contains a keyframe.
Definition: packet.h:590
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:191
avformat_queue_attached_pictures
int avformat_queue_attached_pictures(AVFormatContext *s)
Definition: demux_utils.c:84
ff_remove_stream
void ff_remove_stream(AVFormatContext *s, AVStream *st)
Remove a stream from its AVFormatContext and free it.
Definition: avformat.c:113
ffstream
static av_always_inline FFStream * ffstream(AVStream *st)
Definition: internal.h:347
fail
#define fail()
Definition: checkasm.h:193
AVStreamParseType
AVStreamParseType
Definition: avformat.h:588
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:1224
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:843
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
flags
#define flags(name, subs,...)
Definition: cbs_av1.c:503
AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS
@ AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS
Definition: packet.h:613
AVChapter::end
int64_t end
chapter start/end time in time_base units
Definition: avformat.h:1227
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:173
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:107
FFStream::need_parsing
enum AVStreamParseType need_parsing
Definition: internal.h:314
AVDISCARD_ALL
@ AVDISCARD_ALL
discard all
Definition: defs.h:221
AVFormatContext
Format I/O context.
Definition: avformat.h:1265
internal.h
AVStream::codecpar
AVCodecParameters * codecpar
Codec parameters associated with this stream.
Definition: avformat.h:768
AVPacket::buf
AVBufferRef * buf
A reference to the reference-counted buffer where the packet data is stored.
Definition: packet.h:518
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:544
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:438
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:536
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:541
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:1225
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:182
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:94
AVCodecParserContext
Definition: avcodec.h:2573
AVStream::disposition
int disposition
Stream disposition - a combination of AV_DISPOSITION_* flags.
Definition: avformat.h:814
ret
ret
Definition: filter_design.txt:187
AVStream
Stream structure.
Definition: avformat.h:745
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:751
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:232
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:326
ff_fc_internal
static av_always_inline FormatContextInternal * ff_fc_internal(AVFormatContext *s)
Definition: avformat_internal.h:100
AVPacket::stream_index
int stream_index
Definition: packet.h:537
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:342
av_free
#define av_free(p)
Definition: tableprint_vlc.h:34
AVPacket
This structure stores compressed data.
Definition: packet.h:512
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
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:142
int32_t
int32_t
Definition: audioconvert.c:56
bytestream.h
av_log
#define av_log(a,...)
Definition: tableprint_vlc.h:27
FFStream::parser
struct AVCodecParserContext * parser
Definition: internal.h:315
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:1226
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:230