FFmpeg
internal.h
Go to the documentation of this file.
1 /*
2  * copyright (c) 2001 Fabrice Bellard
3  *
4  * This file is part of FFmpeg.
5  *
6  * FFmpeg is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * FFmpeg is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with FFmpeg; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19  */
20 
21 #ifndef AVFORMAT_INTERNAL_H
22 #define AVFORMAT_INTERNAL_H
23 
24 #include <stdint.h>
25 
26 #include "libavutil/bprint.h"
27 #include "avformat.h"
28 #include "os_support.h"
29 
30 #define MAX_URL_SIZE 4096
31 
32 /** size of probe buffer, for guessing file type from file contents */
33 #define PROBE_BUF_MIN 2048
34 #define PROBE_BUF_MAX (1 << 20)
35 
36 #ifdef DEBUG
37 # define hex_dump_debug(class, buf, size) av_hex_dump_log(class, AV_LOG_DEBUG, buf, size)
38 #else
39 # define hex_dump_debug(class, buf, size) do { if (0) av_hex_dump_log(class, AV_LOG_DEBUG, buf, size); } while(0)
40 #endif
41 
42 typedef struct AVCodecTag {
43  enum AVCodecID id;
44  unsigned int tag;
45 } AVCodecTag;
46 
47 typedef struct CodecMime{
48  char str[32];
49  enum AVCodecID id;
50 } CodecMime;
51 
52 /*************************************************/
53 /* fractional numbers for exact pts handling */
54 
55 /**
56  * The exact value of the fractional number is: 'val + num / den'.
57  * num is assumed to be 0 <= num < den.
58  */
59 typedef struct FFFrac {
60  int64_t val, num, den;
61 } FFFrac;
62 
63 
65  /**
66  * Number of streams relevant for interleaving.
67  * Muxing only.
68  */
70 
71  /**
72  * This buffer is only needed when packets were already buffered but
73  * not decoded, for example to get the codec parameters in MPEG
74  * streams.
75  */
78 
79  /* av_seek_frame() support */
80  int64_t data_offset; /**< offset of the first packet */
81 
82  /**
83  * Raw packets from the demuxer, prior to parsing and decoding.
84  * This buffer is used for buffering packets until the codec can
85  * be identified, as parsing cannot be done without knowing the
86  * codec.
87  */
90  /**
91  * Packets split by the parser get queued here.
92  */
96 
97  /**
98  * Used to hold temporary packets.
99  */
101  /**
102  * Remaining size available for raw_packet_buffer, in bytes.
103  */
104 #define RAW_PACKET_BUFFER_SIZE 2500000
106 
107  /**
108  * Offset to remap timestamps to be non-negative.
109  * Expressed in timebase units.
110  * @see AVStream.mux_ts_offset
111  */
112  int64_t offset;
113 
114  /**
115  * Timebase for the timestamp offset.
116  */
118 
119 #if FF_API_COMPUTE_PKT_FIELDS2
120  int missing_ts_warning;
121 #endif
122 
124 
126 
127  /**
128  * Timestamp of the end of the shortest stream.
129  */
130  int64_t shortest_end;
131 
132  /**
133  * Whether or not avformat_init_output has already been called
134  */
136 
137  /**
138  * Whether or not avformat_init_output fully initialized streams
139  */
141 
142  /**
143  * ID3v2 tag useful for MP3 demuxing
144  */
146 
147  /*
148  * Prefer the codec framerate for avg_frame_rate computation.
149  */
151 
152  /**
153  * Set if chapter ids are strictly monotonic.
154  */
156 };
157 
159  /**
160  * Set to 1 if the codec allows reordering, so pts can be different
161  * from dts.
162  */
163  int reorder;
164 
165  /**
166  * bitstream filter to run on stream
167  * - encoding: Set by muxer using ff_stream_add_bitstream_filter
168  * - decoding: unused
169  */
171 
172  /**
173  * Whether or not check_bitstream should still be run on each packet
174  */
176 
177  /**
178  * The codec context used by avformat_find_stream_info, the parser, etc.
179  */
181  /**
182  * 1 if avctx has been initialized with the values from the codec parameters
183  */
185 
187 
188  /* the context for extracting extradata in find_stream_info()
189  * inited=1/bsf=NULL signals that extracting is not possible (codec not
190  * supported) */
191  struct {
194  int inited;
196 
197  /**
198  * Whether the internal avctx needs to be updated from codecpar (after a late change to codecpar)
199  */
201 
203 
205 
206 #define MAX_STD_TIMEBASES (30*12+30+3+6)
207  /**
208  * Stream information used internally by avformat_find_stream_info()
209  */
210  struct {
211  int64_t last_dts;
212  int64_t duration_gcd;
219 
220  /**
221  * 0 -> decoder has not been searched for yet.
222  * >0 -> decoder found
223  * <0 -> decoder with codec_id == -found_decoder has not been found
224  */
226 
227  int64_t last_duration;
228 
229  /**
230  * Those are used for average framerate estimation.
231  */
232  int64_t fps_first_dts;
234  int64_t fps_last_dts;
236 
237  } *info;
238 
241 
242  /**
243  * stream probing state
244  * -1 -> probing finished
245  * 0 -> no probing requested
246  * rest -> perform probing with request_probe being the minimum score to accept.
247  */
249  /**
250  * Indicates that everything up to the next keyframe
251  * should be discarded.
252  */
254 
255  /**
256  * Number of samples to skip at the start of the frame decoded from the next packet.
257  */
259 
260  /**
261  * If not 0, the number of samples that should be skipped from the start of
262  * the stream (the samples are removed from packets with pts==0, which also
263  * assumes negative timestamps do not happen).
264  * Intended for use with formats such as mp3 with ad-hoc gapless audio
265  * support.
266  */
268 
269  /**
270  * If not 0, the first audio sample that should be discarded from the stream.
271  * This is broken by design (needs global sample count), but can't be
272  * avoided for broken by design formats such as mp3 with ad-hoc gapless
273  * audio support.
274  */
276 
277  /**
278  * The sample after last sample that is intended to be discarded after
279  * first_discard_sample. Works on frame boundaries only. Used to prevent
280  * early EOF if the gapless info is broken (considered concatenated mp3s).
281  */
283 
284  /**
285  * Number of internally decoded frames, used internally in libavformat, do not access
286  * its lifetime differs from info which is why it is not in that structure.
287  */
289 
290  /**
291  * Timestamp offset added to timestamps before muxing
292  */
293  int64_t mux_ts_offset;
294 
295  /**
296  * Internal data to check for wrapping of the time stamp
297  */
299 
300  /**
301  * Options for behavior, when a wrap is detected.
302  *
303  * Defined by AV_PTS_WRAP_ values.
304  *
305  * If correction is enabled, there are two possibilities:
306  * If the first time stamp is near the wrap point, the wrap offset
307  * will be subtracted, which will create negative time stamps.
308  * Otherwise the offset will be added.
309  */
311 
312  /**
313  * Internal data to prevent doing update_initial_durations() twice
314  */
316 
317 #define MAX_REORDER_DELAY 16
318 
319  /**
320  * Internal data to generate dts from pts
321  */
324 
326 
327  /**
328  * Internal data to analyze DTS and detect faulty mpeg streams
329  */
333 
334  /**
335  * Internal data to inject global side data
336  */
338 
339  /**
340  * display aspect ratio (0 if unknown)
341  * - encoding: unused
342  * - decoding: Set by libavformat to calculate sample_aspect_ratio internally
343  */
345 
347 
348  /**
349  * last packet in packet_buffer for this stream when muxing.
350  */
352 };
353 
354 #ifdef __GNUC__
355 #define dynarray_add(tab, nb_ptr, elem)\
356 do {\
357  __typeof__(tab) _tab = (tab);\
358  __typeof__(elem) _elem = (elem);\
359  (void)sizeof(**_tab == _elem); /* check that types are compatible */\
360  av_dynarray_add(_tab, nb_ptr, _elem);\
361 } while(0)
362 #else
363 #define dynarray_add(tab, nb_ptr, elem)\
364 do {\
365  av_dynarray_add((tab), nb_ptr, (elem));\
366 } while(0)
367 #endif
368 
369 /**
370  * Automatically create sub-directories
371  *
372  * @param path will create sub-directories by path
373  * @return 0, or < 0 on error
374  */
375 int ff_mkdir_p(const char *path);
376 
377 char *ff_data_to_hex(char *buf, const uint8_t *src, int size, int lowercase);
378 
379 /**
380  * Parse a string of hexadecimal strings. Any space between the hexadecimal
381  * digits is ignored.
382  *
383  * @param data if non-null, the parsed data is written to this pointer
384  * @param p the string to parse
385  * @return the number of bytes written (or to be written, if data is null)
386  */
387 int ff_hex_to_data(uint8_t *data, const char *p);
388 
389 /**
390  * Add packet to an AVFormatContext's packet_buffer list, determining its
391  * interleaved position using compare() function argument.
392  * @return 0 on success, < 0 on error. pkt will always be blank on return.
393  */
395  int (*compare)(AVFormatContext *, const AVPacket *, const AVPacket *));
396 
398 
399 #define NTP_OFFSET 2208988800ULL
400 #define NTP_OFFSET_US (NTP_OFFSET * 1000000ULL)
401 
402 /** Get the current time since NTP epoch in microseconds. */
403 uint64_t ff_ntp_time(void);
404 
405 /**
406  * Get the NTP time stamp formatted as per the RFC-5905.
407  *
408  * @param ntp_time NTP time in micro seconds (since NTP epoch)
409  * @return the formatted NTP time stamp
410  */
411 uint64_t ff_get_formatted_ntp_time(uint64_t ntp_time_us);
412 
413 /**
414  * Append the media-specific SDP fragment for the media stream c
415  * to the buffer buff.
416  *
417  * Note, the buffer needs to be initialized, since it is appended to
418  * existing content.
419  *
420  * @param buff the buffer to append the SDP fragment to
421  * @param size the size of the buff buffer
422  * @param st the AVStream of the media to describe
423  * @param idx the global stream index
424  * @param dest_addr the destination address of the media stream, may be NULL
425  * @param dest_type the destination address type, may be NULL
426  * @param port the destination port of the media stream, 0 if unknown
427  * @param ttl the time to live of the stream, 0 if not multicast
428  * @param fmt the AVFormatContext, which might contain options modifying
429  * the generated SDP
430  */
431 void ff_sdp_write_media(char *buff, int size, AVStream *st, int idx,
432  const char *dest_addr, const char *dest_type,
433  int port, int ttl, AVFormatContext *fmt);
434 
435 /**
436  * Write a packet to another muxer than the one the user originally
437  * intended. Useful when chaining muxers, where one muxer internally
438  * writes a received packet to another muxer.
439  *
440  * @param dst the muxer to write the packet to
441  * @param dst_stream the stream index within dst to write the packet to
442  * @param pkt the packet to be written
443  * @param src the muxer the packet originally was intended for
444  * @param interleave 0->use av_write_frame, 1->av_interleaved_write_frame
445  * @return the value av_write_frame returned
446  */
447 int ff_write_chained(AVFormatContext *dst, int dst_stream, AVPacket *pkt,
449 
450 /**
451  * Read a whole line of text from AVIOContext. Stop reading after reaching
452  * either a \\n, a \\0 or EOF. The returned string is always \\0-terminated,
453  * and may be truncated if the buffer is too small.
454  *
455  * @param s the read-only AVIOContext
456  * @param buf buffer to store the read line
457  * @param maxlen size of the buffer
458  * @return the length of the string written in the buffer, not including the
459  * final \\0
460  */
461 int ff_get_line(AVIOContext *s, char *buf, int maxlen);
462 
463 /**
464  * Same as ff_get_line but strip the white-space characters in the text tail
465  *
466  * @param s the read-only AVIOContext
467  * @param buf buffer to store the read line
468  * @param maxlen size of the buffer
469  * @return the length of the string written in the buffer
470  */
471 int ff_get_chomp_line(AVIOContext *s, char *buf, int maxlen);
472 
473 /**
474  * Read a whole line of text from AVIOContext to an AVBPrint buffer. Stop
475  * reading after reaching a \\r, a \\n, a \\r\\n, a \\0 or EOF. The line
476  * ending characters are NOT included in the buffer, but they are skipped on
477  * the input.
478  *
479  * @param s the read-only AVIOContext
480  * @param bp the AVBPrint buffer
481  * @return the length of the read line, not including the line endings,
482  * negative on error.
483  */
484 int64_t ff_read_line_to_bprint(AVIOContext *s, AVBPrint *bp);
485 
486 /**
487  * Read a whole line of text from AVIOContext to an AVBPrint buffer overwriting
488  * its contents. Stop reading after reaching a \\r, a \\n, a \\r\\n, a \\0 or
489  * EOF. The line ending characters are NOT included in the buffer, but they
490  * are skipped on the input.
491  *
492  * @param s the read-only AVIOContext
493  * @param bp the AVBPrint buffer
494  * @return the length of the read line not including the line endings,
495  * negative on error, or if the buffer becomes truncated.
496  */
497 int64_t ff_read_line_to_bprint_overwrite(AVIOContext *s, AVBPrint *bp);
498 
499 #define SPACE_CHARS " \t\r\n"
500 
501 /**
502  * Callback function type for ff_parse_key_value.
503  *
504  * @param key a pointer to the key
505  * @param key_len the number of bytes that belong to the key, including the '='
506  * char
507  * @param dest return the destination pointer for the value in *dest, may
508  * be null to ignore the value
509  * @param dest_len the length of the *dest buffer
510  */
511 typedef void (*ff_parse_key_val_cb)(void *context, const char *key,
512  int key_len, char **dest, int *dest_len);
513 /**
514  * Parse a string with comma-separated key=value pairs. The value strings
515  * may be quoted and may contain escaped characters within quoted strings.
516  *
517  * @param str the string to parse
518  * @param callback_get_buf function that returns where to store the
519  * unescaped value string.
520  * @param context the opaque context pointer to pass to callback_get_buf
521  */
522 void ff_parse_key_value(const char *str, ff_parse_key_val_cb callback_get_buf,
523  void *context);
524 
525 /**
526  * Find stream index based on format-specific stream ID
527  * @return stream index, or < 0 on error
528  */
530 
531 /**
532  * Internal version of av_index_search_timestamp
533  */
534 int ff_index_search_timestamp(const AVIndexEntry *entries, int nb_entries,
535  int64_t wanted_timestamp, int flags);
536 
537 /**
538  * Internal version of av_add_index_entry
539  */
540 int ff_add_index_entry(AVIndexEntry **index_entries,
541  int *nb_index_entries,
542  unsigned int *index_entries_allocated_size,
543  int64_t pos, int64_t timestamp, int size, int distance, int flags);
544 
545 void ff_configure_buffers_for_index(AVFormatContext *s, int64_t time_tolerance);
546 
547 /**
548  * Add a new chapter.
549  *
550  * @param s media file handle
551  * @param id unique ID for this chapter
552  * @param start chapter start time in time_base units
553  * @param end chapter end time in time_base units
554  * @param title chapter title
555  *
556  * @return AVChapter or NULL on error
557  */
558 #if FF_API_CHAPTER_ID_INT
560 #else
561 AVChapter *avpriv_new_chapter(AVFormatContext *s, int64_t id, AVRational time_base,
562 #endif
563  int64_t start, int64_t end, const char *title);
564 
565 /**
566  * Ensure the index uses less memory than the maximum specified in
567  * AVFormatContext.max_index_size by discarding entries if it grows
568  * too large.
569  */
570 void ff_reduce_index(AVFormatContext *s, int stream_index);
571 
572 enum AVCodecID ff_guess_image2_codec(const char *filename);
573 
574 /**
575  * Perform a binary search using av_index_search_timestamp() and
576  * AVInputFormat.read_timestamp().
577  *
578  * @param target_ts target timestamp in the time base of the given stream
579  * @param stream_index stream number
580  */
581 int ff_seek_frame_binary(AVFormatContext *s, int stream_index,
582  int64_t target_ts, int flags);
583 
584 /**
585  * Update cur_dts of all streams based on the given timestamp and AVStream.
586  *
587  * Stream ref_st unchanged, others set cur_dts in their native time base.
588  * Only needed for timestamp wrapping or if (dts not set and pts!=dts).
589  * @param timestamp new dts expressed in time_base of param ref_st
590  * @param ref_st reference stream giving time_base of param timestamp
591  */
592 void ff_update_cur_dts(AVFormatContext *s, AVStream *ref_st, int64_t timestamp);
593 
594 int ff_find_last_ts(AVFormatContext *s, int stream_index, int64_t *ts, int64_t *pos,
595  int64_t (*read_timestamp)(struct AVFormatContext *, int , int64_t *, int64_t ));
596 
597 /**
598  * Perform a binary search using read_timestamp().
599  *
600  * @param target_ts target timestamp in the time base of the given stream
601  * @param stream_index stream number
602  */
603 int64_t ff_gen_search(AVFormatContext *s, int stream_index,
604  int64_t target_ts, int64_t pos_min,
605  int64_t pos_max, int64_t pos_limit,
606  int64_t ts_min, int64_t ts_max,
607  int flags, int64_t *ts_ret,
608  int64_t (*read_timestamp)(struct AVFormatContext *, int , int64_t *, int64_t ));
609 
610 /**
611  * Set the time base and wrapping info for a given stream. This will be used
612  * to interpret the stream's timestamps. If the new time base is invalid
613  * (numerator or denominator are non-positive), it leaves the stream
614  * unchanged.
615  *
616  * @param s stream
617  * @param pts_wrap_bits number of bits effectively used by the pts
618  * (used for wrap control)
619  * @param pts_num time base numerator
620  * @param pts_den time base denominator
621  */
622 void avpriv_set_pts_info(AVStream *s, int pts_wrap_bits,
623  unsigned int pts_num, unsigned int pts_den);
624 
625 /**
626  * Add side data to a packet for changing parameters to the given values.
627  * Parameters set to 0 aren't included in the change.
628  */
630  uint64_t channel_layout, int32_t sample_rate,
632 
633 /**
634  * Set the timebase for each stream from the corresponding codec timebase and
635  * print it.
636  */
638 
639 /**
640  * Read a transport packet from a media file.
641  *
642  * @param s media file handle
643  * @param pkt is filled
644  * @return 0 if OK, AVERROR_xxx on error
645  */
647 
648 /**
649  * Interleave an AVPacket per dts so it can be muxed.
650  *
651  * @param s an AVFormatContext for output. pkt resp. out will be added to
652  * resp. taken from its packet buffer.
653  * @param out the interleaved packet will be output here
654  * @param pkt the input packet; will be blank on return if not NULL
655  * @param flush 1 if no further packets are available as input and all
656  * remaining packets should be output
657  * @return 1 if a packet was output, 0 if no packet could be output
658  * (in which case out may be uninitialized), < 0 if an error occurred
659  */
661  AVPacket *pkt, int flush);
662 
664 
665 /**
666  * Return the frame duration in seconds. Return 0 if not available.
667  */
668 void ff_compute_frame_duration(AVFormatContext *s, int *pnum, int *pden, AVStream *st,
670 
671 unsigned int ff_codec_get_tag(const AVCodecTag *tags, enum AVCodecID id);
672 
673 enum AVCodecID ff_codec_get_id(const AVCodecTag *tags, unsigned int tag);
674 
675 int ff_is_intra_only(enum AVCodecID id);
676 
677 /**
678  * Select a PCM codec based on the given parameters.
679  *
680  * @param bps bits-per-sample
681  * @param flt floating-point
682  * @param be big-endian
683  * @param sflags signed flags. each bit corresponds to one byte of bit depth.
684  * e.g. the 1st bit indicates if 8-bit should be signed or
685  * unsigned, the 2nd bit indicates if 16-bit should be signed or
686  * unsigned, etc... This is useful for formats such as WAVE where
687  * only 8-bit is unsigned and all other bit depths are signed.
688  * @return a PCM codec id or AV_CODEC_ID_NONE
689  */
690 enum AVCodecID ff_get_pcm_codec_id(int bps, int flt, int be, int sflags);
691 
692 /**
693  * Chooses a timebase for muxing the specified stream.
694  *
695  * The chosen timebase allows sample accurate timestamps based
696  * on the framerate or sample rate for audio streams. It also is
697  * at least as precise as 1/min_precision would be.
698  */
699 AVRational ff_choose_timebase(AVFormatContext *s, AVStream *st, int min_precision);
700 
701 /**
702  * Chooses a timebase for muxing the specified stream.
703  */
705 
706 /**
707  * Generate standard extradata for AVC-Intra based on width/height and field
708  * order.
709  */
711 
712 /**
713  * Add a bitstream filter to a stream.
714  *
715  * @param st output stream to add a filter to
716  * @param name the name of the filter to add
717  * @param args filter-specific argument string
718  * @return >0 on success;
719  * AVERROR code on failure
720  */
721 int ff_stream_add_bitstream_filter(AVStream *st, const char *name, const char *args);
722 
723 /**
724  * Copy encoding parameters from source to destination stream
725  *
726  * @param dst pointer to destination AVStream
727  * @param src pointer to source AVStream
728  * @return >=0 on success, AVERROR code on error
729  */
731 
732 /**
733  * Wrap avpriv_io_move and log if error happens.
734  *
735  * @param url_src source path
736  * @param url_dst destination path
737  * @return 0 or AVERROR on failure
738  */
739 int ff_rename(const char *url_src, const char *url_dst, void *logctx);
740 
741 /**
742  * Allocate extradata with additional AV_INPUT_BUFFER_PADDING_SIZE at end
743  * which is always set to 0.
744  *
745  * Previously allocated extradata in par will be freed.
746  *
747  * @param size size of extradata
748  * @return 0 if OK, AVERROR_xxx on error
749  */
751 
752 /**
753  * Allocate extradata with additional AV_INPUT_BUFFER_PADDING_SIZE at end
754  * which is always set to 0 and fill it from pb.
755  *
756  * @param size size of extradata
757  * @return >= 0 if OK, AVERROR_xxx on error
758  */
760 
761 /**
762  * add frame for rfps calculation.
763  *
764  * @param dts timestamp of the i-th frame
765  * @return 0 if OK, AVERROR_xxx on error
766  */
767 int ff_rfps_add_frame(AVFormatContext *ic, AVStream *st, int64_t dts);
768 
770 
771 /**
772  * Flags for AVFormatContext.write_uncoded_frame()
773  */
775 
776  /**
777  * Query whether the feature is possible on this stream.
778  * The frame argument is ignored.
779  */
781 
782 };
783 
784 /**
785  * Copies the whilelists from one context to the other
786  */
788 
789 /**
790  * Returned by demuxers to indicate that data was consumed but discarded
791  * (ignored streams or junk data). The framework will re-call the demuxer.
792  */
793 #define FFERROR_REDO FFERRTAG('R','E','D','O')
794 
795 /**
796  * Utility function to open IO stream of output format.
797  *
798  * @param s AVFormatContext
799  * @param url URL or file name to open for writing
800  * @options optional options which will be passed to io_open callback
801  * @return >=0 on success, negative AVERROR in case of failure
802  */
804 
805 /*
806  * A wrapper around AVFormatContext.io_close that should be used
807  * instead of calling the pointer directly.
808  */
810 
811 /**
812  * Utility function to check if the file uses http or https protocol
813  *
814  * @param s AVFormatContext
815  * @param filename URL or file name to open for writing
816  */
817 int ff_is_http_proto(char *filename);
818 
819 /**
820  * Parse creation_time in AVFormatContext metadata if exists and warn if the
821  * parsing fails.
822  *
823  * @param s AVFormatContext
824  * @param timestamp parsed timestamp in microseconds, only set on successful parsing
825  * @param return_seconds set this to get the number of seconds in timestamp instead of microseconds
826  * @return 1 if OK, 0 if the metadata was not present, AVERROR(EINVAL) on parse error
827  */
828 int ff_parse_creation_time_metadata(AVFormatContext *s, int64_t *timestamp, int return_seconds);
829 
830 /**
831  * Standardize creation_time metadata in AVFormatContext to an ISO-8601
832  * timestamp string.
833  *
834  * @param s AVFormatContext
835  * @return <0 on error
836  */
838 
839 #define CONTAINS_PAL 2
840 /**
841  * Reshuffles the lines to use the user specified stride.
842  *
843  * @param ppkt input and output packet
844  * @return negative error code or
845  * 0 if no new packet was allocated
846  * non-zero if a new packet was allocated and ppkt has to be freed
847  * CONTAINS_PAL if in addition to a new packet the old contained a palette
848  */
849 int ff_reshuffle_raw_rgb(AVFormatContext *s, AVPacket **ppkt, AVCodecParameters *par, int expected_stride);
850 
851 /**
852  * Retrieves the palette from a packet, either from side data, or
853  * appended to the video data in the packet itself (raw video only).
854  * It is commonly used after a call to ff_reshuffle_raw_rgb().
855  *
856  * Use 0 for the ret parameter to check for side data only.
857  *
858  * @param pkt pointer to packet before calling ff_reshuffle_raw_rgb()
859  * @param ret return value from ff_reshuffle_raw_rgb(), or 0
860  * @param palette pointer to palette buffer
861  * @return negative error code or
862  * 1 if the packet has a palette, else 0
863  */
864 int ff_get_packet_palette(AVFormatContext *s, AVPacket *pkt, int ret, uint32_t *palette);
865 
866 /**
867  * Finalize buf into extradata and set its size appropriately.
868  */
869 int ff_bprint_to_codecpar_extradata(AVCodecParameters *par, struct AVBPrint *buf);
870 
871 /**
872  * Find the next packet in the interleaving queue for the given stream.
873  *
874  * @return a pointer to a packet if one was found, NULL otherwise.
875  */
876 const AVPacket *ff_interleaved_peek(AVFormatContext *s, int stream);
877 
878 int ff_get_muxer_ts_offset(AVFormatContext *s, int stream_index, int64_t *offset);
879 
880 int ff_lock_avformat(void);
881 int ff_unlock_avformat(void);
882 
883 /**
884  * Set AVFormatContext url field to the provided pointer. The pointer must
885  * point to a valid string. The existing url field is freed if necessary. Also
886  * set the legacy filename field to the same string which was provided in url.
887  */
888 void ff_format_set_url(AVFormatContext *s, char *url);
889 
890 void avpriv_register_devices(const AVOutputFormat * const o[], const AVInputFormat * const i[]);
891 
892 #endif /* AVFORMAT_INTERNAL_H */
AVStreamInternal::priv_pts
FFFrac * priv_pts
Definition: internal.h:204
be
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 be(in the first position) for now. Options ------- Then comes the options array. This is what will define the user accessible options. For example
ff_get_pcm_codec_id
enum AVCodecID ff_get_pcm_codec_id(int bps, int flt, int be, int sflags)
Select a PCM codec based on the given parameters.
Definition: utils.c:3143
name
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 default minimum maximum flags name is the option name
Definition: writing_filters.txt:88
ff_rfps_add_frame
int ff_rfps_add_frame(AVFormatContext *ic, AVStream *st, int64_t dts)
add frame for rfps calculation.
Definition: utils.c:3348
AVStreamInternal::reorder
int reorder
Set to 1 if the codec allows reordering, so pts can be different from dts.
Definition: internal.h:163
ff_ntp_time
uint64_t ff_ntp_time(void)
Get the current time since NTP epoch in microseconds.
Definition: utils.c:4709
ff_get_extradata
int ff_get_extradata(AVFormatContext *s, 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: utils.c:3332
out
FILE * out
Definition: movenc.c:54
AVFormatInternal::parse_queue_end
struct PacketList * parse_queue_end
Definition: internal.h:95
AVStreamInternal::avctx
AVCodecContext * avctx
The codec context used by avformat_find_stream_info, the parser, etc.
Definition: internal.h:180
AVCodecParameters
This struct describes the properties of an encoded stream.
Definition: codec_par.h:52
ff_compute_frame_duration
void ff_compute_frame_duration(AVFormatContext *s, int *pnum, int *pden, AVStream *st, AVCodecParserContext *pc, AVPacket *pkt)
Return the frame duration in seconds.
Definition: utils.c:943
ff_find_last_ts
int ff_find_last_ts(AVFormatContext *s, int stream_index, int64_t *ts, int64_t *pos, int64_t(*read_timestamp)(struct AVFormatContext *, int, int64_t *, int64_t))
Definition: utils.c:2213
AVFormatInternal::avoid_negative_ts_use_pts
int avoid_negative_ts_use_pts
Definition: internal.h:125
ff_format_output_open
int ff_format_output_open(AVFormatContext *s, const char *url, AVDictionary **options)
Utility function to open IO stream of output format.
Definition: utils.c:5682
AVCodecTag::id
enum AVCodecID id
Definition: internal.h:43
MAX_STD_TIMEBASES
#define MAX_STD_TIMEBASES
Definition: internal.h:206
ff_gen_search
int64_t ff_gen_search(AVFormatContext *s, int stream_index, int64_t target_ts, int64_t pos_min, int64_t pos_max, int64_t pos_limit, int64_t ts_min, int64_t ts_max, int flags, int64_t *ts_ret, int64_t(*read_timestamp)(struct AVFormatContext *, int, int64_t *, int64_t))
Perform a binary search using read_timestamp().
Definition: utils.c:2251
ff_get_formatted_ntp_time
uint64_t ff_get_formatted_ntp_time(uint64_t ntp_time_us)
Get the NTP time stamp formatted as per the RFC-5905.
Definition: utils.c:4714
ff_free_stream
void ff_free_stream(AVFormatContext *s, AVStream *st)
Definition: utils.c:4428
AVStreamInternal::last_dts_for_order_check
int64_t last_dts_for_order_check
Internal data to analyze DTS and detect faulty mpeg streams.
Definition: internal.h:330
AVStreamInternal::interleaver_chunk_size
int64_t interleaver_chunk_size
Definition: internal.h:239
ff_read_line_to_bprint_overwrite
int64_t ff_read_line_to_bprint_overwrite(AVIOContext *s, AVBPrint *bp)
Read a whole line of text from AVIOContext to an AVBPrint buffer overwriting its contents.
Definition: aviobuf.c:845
ff_add_index_entry
int ff_add_index_entry(AVIndexEntry **index_entries, int *nb_index_entries, unsigned int *index_entries_allocated_size, int64_t pos, int64_t timestamp, int size, int distance, int flags)
Internal version of av_add_index_entry.
Definition: utils.c:1954
PacketList
Definition: packet_internal.h:26
data
const char data[16]
Definition: mxf.c:142
AVStreamInternal::info
struct AVStreamInternal::@260 * info
Stream information used internally by avformat_find_stream_info()
ff_parse_creation_time_metadata
int ff_parse_creation_time_metadata(AVFormatContext *s, int64_t *timestamp, int return_seconds)
Parse creation_time in AVFormatContext metadata if exists and warn if the parsing fails.
Definition: utils.c:5704
AVFormatInternal::packet_buffer
struct PacketList * packet_buffer
This buffer is only needed when packets were already buffered but not decoded, for example to get the...
Definition: internal.h:76
ff_read_line_to_bprint
int64_t ff_read_line_to_bprint(AVIOContext *s, AVBPrint *bp)
Read a whole line of text from AVIOContext to an AVBPrint buffer.
Definition: aviobuf.c:814
AVStreamInternal::inject_global_side_data
int inject_global_side_data
Internal data to inject global side data.
Definition: internal.h:337
AVDictionary
Definition: dict.c:30
ff_get_chomp_line
int ff_get_chomp_line(AVIOContext *s, char *buf, int maxlen)
Same as ff_get_line but strip the white-space characters in the text tail.
Definition: aviobuf.c:806
AVStreamInternal::bsfc
AVBSFContext * bsfc
bitstream filter to run on stream
Definition: internal.h:170
ff_choose_chroma_location
enum AVChromaLocation ff_choose_chroma_location(AVFormatContext *s, AVStream *st)
Chooses a timebase for muxing the specified stream.
Definition: mux.c:106
AVWriteUncodedFrameFlags
AVWriteUncodedFrameFlags
Flags for AVFormatContext.write_uncoded_frame()
Definition: internal.h:774
os_support.h
sample_rate
sample_rate
Definition: ffmpeg_filter.c:170
AVBSFContext
The bitstream filter state.
Definition: bsf.h:49
AVStreamInternal::skip_samples
int skip_samples
Number of samples to skip at the start of the frame decoded from the next packet.
Definition: internal.h:258
AVIndexEntry
Definition: avformat.h:803
AVStreamInternal::last_duration
int64_t last_duration
Definition: internal.h:227
ff_seek_frame_binary
int ff_seek_frame_binary(AVFormatContext *s, int stream_index, int64_t target_ts, int flags)
Perform a binary search using av_index_search_timestamp() and AVInputFormat.read_timestamp().
Definition: utils.c:2145
ff_bprint_to_codecpar_extradata
int ff_bprint_to_codecpar_extradata(AVCodecParameters *par, struct AVBPrint *buf)
Finalize buf into extradata and set its size appropriately.
Definition: utils.c:5755
ff_sdp_write_media
void ff_sdp_write_media(char *buff, int size, AVStream *st, int idx, const char *dest_addr, const char *dest_type, int port, int ttl, AVFormatContext *fmt)
Append the media-specific SDP fragment for the media stream c to the buffer buff.
Definition: sdp.c:851
ff_unlock_avformat
int ff_unlock_avformat(void)
Definition: utils.c:84
ff_is_intra_only
int ff_is_intra_only(enum AVCodecID id)
Definition: utils.c:1006
CodecMime
Definition: internal.h:47
ff_guess_image2_codec
enum AVCodecID ff_guess_image2_codec(const char *filename)
Definition: img2.c:106
AVFormatInternal
Definition: internal.h:64
AVFormatInternal::prefer_codec_framerate
int prefer_codec_framerate
Definition: internal.h:150
ff_get_line
int ff_get_line(AVIOContext *s, char *buf, int maxlen)
Read a whole line of text from AVIOContext.
Definition: aviobuf.c:789
AVChapter
Definition: avformat.h:1185
AVFormatInternal::data_offset
int64_t data_offset
offset of the first packet
Definition: internal.h:80
ff_read_packet
int ff_read_packet(AVFormatContext *s, AVPacket *pkt)
Read a transport packet from a media file.
Definition: utils.c:811
ff_data_to_hex
char * ff_data_to_hex(char *buf, const uint8_t *src, int size, int lowercase)
Definition: utils.c:4896
AVFormatInternal::raw_packet_buffer_remaining_size
int raw_packet_buffer_remaining_size
Definition: internal.h:105
AVFormatInternal::offset
int64_t offset
Offset to remap timestamps to be non-negative.
Definition: internal.h:112
pkt
AVPacket * pkt
Definition: movenc.c:59
AVInputFormat
Definition: avformat.h:640
AVCodecTag
Definition: internal.h:42
ff_write_chained
int ff_write_chained(AVFormatContext *dst, int dst_stream, AVPacket *pkt, AVFormatContext *src, int interleave)
Write a packet to another muxer than the one the user originally intended.
Definition: mux.c:1328
ff_framehash_write_header
int ff_framehash_write_header(AVFormatContext *s)
Set the timebase for each stream from the corresponding codec timebase and print it.
Definition: framehash.c:23
AVStreamInternal::mux_ts_offset
int64_t mux_ts_offset
Timestamp offset added to timestamps before muxing.
Definition: internal.h:293
width
#define width
AVFormatInternal::shortest_end
int64_t shortest_end
Timestamp of the end of the shortest stream.
Definition: internal.h:130
AVStreamInternal::display_aspect_ratio
AVRational display_aspect_ratio
display aspect ratio (0 if unknown)
Definition: internal.h:344
s
#define s(width, name)
Definition: cbs_vp9.c:257
AVStreamInternal::codec_info_duration_fields
int64_t codec_info_duration_fields
Definition: internal.h:217
AVStreamInternal::pts_wrap_behavior
int pts_wrap_behavior
Options for behavior, when a wrap is detected.
Definition: internal.h:310
ff_rename
int ff_rename(const char *url_src, const char *url_dst, void *logctx)
Wrap avpriv_io_move and log if error happens.
Definition: avio.c:668
ff_is_http_proto
int ff_is_http_proto(char *filename)
Utility function to check if the file uses http or https protocol.
Definition: utils.c:5699
ff_interleave_add_packet
int ff_interleave_add_packet(AVFormatContext *s, AVPacket *pkt, int(*compare)(AVFormatContext *, const AVPacket *, const AVPacket *))
Add packet to an AVFormatContext's packet_buffer list, determining its interleaved position using com...
Definition: mux.c:830
channels
channels
Definition: aptx.h:33
AVStreamInternal::pkt
AVPacket * pkt
Definition: internal.h:193
key
const char * key
Definition: hwcontext_opencl.c:168
AVStreamInternal::update_initial_durations_done
int update_initial_durations_done
Internal data to prevent doing update_initial_durations() twice.
Definition: internal.h:315
AVStreamInternal::avctx_inited
int avctx_inited
1 if avctx has been initialized with the values from the codec parameters
Definition: internal.h:184
int32_t
int32_t
Definition: audio_convert.c:194
ff_hex_to_data
int ff_hex_to_data(uint8_t *data, const char *p)
Parse a string of hexadecimal strings.
Definition: utils.c:4917
AVStreamInternal::duration_gcd
int64_t duration_gcd
Definition: internal.h:212
context
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 default minimum maximum flags name is the option keep it simple and lowercase description are in without and describe what they for example set the foo of the bar offset is the offset of the field in your context
Definition: writing_filters.txt:91
AVFormatContext
Format I/O context.
Definition: avformat.h:1232
ff_update_cur_dts
void ff_update_cur_dts(AVFormatContext *s, AVStream *ref_st, int64_t timestamp)
Update cur_dts of all streams based on the given timestamp and AVStream.
Definition: utils.c:1927
AVStreamInternal::duration_count
int duration_count
Definition: internal.h:213
AVStreamInternal::nb_decoded_frames
int nb_decoded_frames
Number of internally decoded frames, used internally in libavformat, do not access its lifetime diffe...
Definition: internal.h:288
flush
static void flush(AVCodecContext *avctx)
Definition: aacdec_template.c:592
AVStreamInternal::codec_info_duration
int64_t codec_info_duration
Definition: internal.h:216
ff_choose_timebase
AVRational ff_choose_timebase(AVFormatContext *s, AVStream *st, int min_precision)
Chooses a timebase for muxing the specified stream.
Definition: mux.c:90
AVRational
Rational number (pair of numerator and denominator).
Definition: rational.h:58
AVStreamInternal::frame_delay_evidence
int frame_delay_evidence
Definition: internal.h:218
AVStreamInternal::skip_to_keyframe
int skip_to_keyframe
Indicates that everything up to the next keyframe should be discarded.
Definition: internal.h:253
AVFormatInternal::parse_pkt
AVPacket * parse_pkt
Packets split by the parser get queued here.
Definition: internal.h:93
ff_get_muxer_ts_offset
int ff_get_muxer_ts_offset(AVFormatContext *s, int stream_index, int64_t *offset)
Definition: mux.c:1050
ff_stream_add_bitstream_filter
int ff_stream_add_bitstream_filter(AVStream *st, const char *name, const char *args)
Add a bitstream filter to a stream.
Definition: utils.c:5576
AVStreamInternal::dts_misordered
uint8_t dts_misordered
Definition: internal.h:332
src
#define src
Definition: vp8dsp.c:255
AVProbeData
This structure contains the data a format has to probe a file.
Definition: avformat.h:441
ff_reshuffle_raw_rgb
int ff_reshuffle_raw_rgb(AVFormatContext *s, AVPacket **ppkt, AVCodecParameters *par, int expected_stride)
Reshuffles the lines to use the user specified stride.
Definition: rawutils.c:25
AVFormatInternal::streams_initialized
int streams_initialized
Whether or not avformat_init_output fully initialized streams.
Definition: internal.h:140
AVCodecID
AVCodecID
Identify the syntax and semantics of the bitstream.
Definition: codec_id.h:46
AVStreamInternal::fps_first_dts_idx
int fps_first_dts_idx
Definition: internal.h:233
interleave
static void interleave(uint8_t *dst, uint8_t *src, int w, int h, int dst_linesize, int src_linesize, enum FilterMode mode, int swap)
Definition: vf_il.c:114
options
const OptionDef options[]
AVFormatInternal::parse_queue
struct PacketList * parse_queue
Definition: internal.h:94
AVIOContext
Bytestream IO Context.
Definition: avio.h:161
AVStreamInternal::rfps_duration_sum
int64_t rfps_duration_sum
Definition: internal.h:214
ff_codec_get_id
enum AVCodecID ff_codec_get_id(const AVCodecTag *tags, unsigned int tag)
Definition: utils.c:3131
FFFrac::val
int64_t val
Definition: internal.h:60
AVStreamInternal::extract_extradata
struct AVStreamInternal::@259 extract_extradata
AVStreamInternal::fps_last_dts_idx
int fps_last_dts_idx
Definition: internal.h:235
AVStreamInternal::inited
int inited
Definition: internal.h:194
AVStreamInternal::request_probe
int request_probe
stream probing state -1 -> probing finished 0 -> no probing requested rest -> perform probing with re...
Definition: internal.h:248
avpriv_set_pts_info
void avpriv_set_pts_info(AVStream *s, int pts_wrap_bits, unsigned int pts_num, unsigned int pts_den)
Set the time base and wrapping info for a given stream.
Definition: utils.c:4945
bps
unsigned bps
Definition: movenc.c:1612
ff_copy_whiteblacklists
int ff_copy_whiteblacklists(AVFormatContext *dst, const AVFormatContext *src)
Copies the whilelists from one context to the other.
Definition: utils.c:160
AVStreamInternal::last_discard_sample
int64_t last_discard_sample
The sample after last sample that is intended to be discarded after first_discard_sample.
Definition: internal.h:282
AVStreamInternal::is_intra_only
int is_intra_only
Definition: internal.h:202
size
int size
Definition: twinvq_data.h:10344
AVStreamInternal::found_decoder
int found_decoder
0 -> decoder has not been searched for yet.
Definition: internal.h:225
ff_lock_avformat
int ff_lock_avformat(void)
Definition: utils.c:79
AVStreamInternal::pts_wrap_reference
int64_t pts_wrap_reference
Internal data to check for wrapping of the time stamp.
Definition: internal.h:298
AVFormatInternal::offset_timebase
AVRational offset_timebase
Timebase for the timestamp offset.
Definition: internal.h:117
AVFormatInternal::raw_packet_buffer
struct PacketList * raw_packet_buffer
Raw packets from the demuxer, prior to parsing and decoding.
Definition: internal.h:88
height
#define height
MAX_REORDER_DELAY
#define MAX_REORDER_DELAY
Definition: internal.h:317
offset
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 offset
Definition: writing_filters.txt:86
ff_interleaved_peek
const AVPacket * ff_interleaved_peek(AVFormatContext *s, int stream)
Find the next packet in the interleaving queue for the given stream.
Definition: mux.c:1066
AVStreamInternal::last_in_packet_buffer
struct PacketList * last_in_packet_buffer
last packet in packet_buffer for this stream when muxing.
Definition: internal.h:351
AVStreamInternal::pts_buffer
int64_t pts_buffer[MAX_REORDER_DELAY+1]
Definition: internal.h:325
AVChromaLocation
AVChromaLocation
Location of chroma samples.
Definition: pixfmt.h:605
ff_standardize_creation_time
int ff_standardize_creation_time(AVFormatContext *s)
Standardize creation_time metadata in AVFormatContext to an ISO-8601 timestamp string.
Definition: utils.c:5721
bprint.h
i
int i
Definition: input.c:407
AVStreamInternal
Definition: internal.h:158
AVOutputFormat
Definition: avformat.h:490
AVStreamInternal::start_skip_samples
int64_t start_skip_samples
If not 0, the number of samples that should be skipped from the start of the stream (the samples are ...
Definition: internal.h:267
uint8_t
uint8_t
Definition: audio_convert.c:194
AVStreamInternal::fps_first_dts
int64_t fps_first_dts
Those are used for average framerate estimation.
Definition: internal.h:232
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: utils.c:4641
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: utils.c:5077
AVFormatInternal::nb_interleaved_streams
int nb_interleaved_streams
Number of streams relevant for interleaving.
Definition: internal.h:69
AVCodecParserContext
Definition: avcodec.h:3377
AVStreamInternal::probe_data
AVProbeData probe_data
Definition: internal.h:346
ff_rfps_calculate
void ff_rfps_calculate(AVFormatContext *ic)
Definition: utils.c:3408
tag
uint32_t tag
Definition: movenc.c:1611
ret
ret
Definition: filter_design.txt:187
ff_get_packet_palette
int ff_get_packet_palette(AVFormatContext *s, AVPacket *pkt, int ret, uint32_t *palette)
Retrieves the palette from a packet, either from side data, or appended to the video data in the pack...
Definition: utils.c:5730
AVStream
Stream structure.
Definition: avformat.h:873
lowercase
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 default minimum maximum flags name is the option keep it simple and lowercase description are in lowercase
Definition: writing_filters.txt:89
pos
unsigned int pos
Definition: spdifenc.c:412
avformat.h
ff_format_set_url
void ff_format_set_url(AVFormatContext *s, char *url)
Set AVFormatContext url field to the provided pointer.
Definition: utils.c:5862
AVStreamInternal::interleaver_chunk_duration
int64_t interleaver_chunk_duration
Definition: internal.h:240
AVStreamInternal::fps_last_dts
int64_t fps_last_dts
Definition: internal.h:234
AVCodecContext
main external API structure.
Definition: avcodec.h:536
compare
static float compare(const AVFrame *haystack, const AVFrame *obj, int offx, int offy)
Definition: vf_find_rect.c:104
ff_stream_encode_params_copy
int ff_stream_encode_params_copy(AVStream *dst, const AVStream *src)
Copy encoding parameters from source to destination stream.
Definition: utils.c:4316
AVStreamInternal::pts_reorder_error_count
uint8_t pts_reorder_error_count[MAX_REORDER_DELAY+1]
Definition: internal.h:323
AVStreamInternal::first_discard_sample
int64_t first_discard_sample
If not 0, the first audio sample that should be discarded from the stream.
Definition: internal.h:275
ff_reduce_index
void ff_reduce_index(AVFormatContext *s, int stream_index)
Ensure the index uses less memory than the maximum specified in AVFormatContext.max_index_size by dis...
Definition: utils.c:1941
ff_codec_get_tag
unsigned int ff_codec_get_tag(const AVCodecTag *tags, enum AVCodecID id)
Definition: utils.c:3121
ff_parse_key_val_cb
void(* ff_parse_key_val_cb)(void *context, const char *key, int key_len, char **dest, int *dest_len)
Callback function type for ff_parse_key_value.
Definition: internal.h:511
ff_index_search_timestamp
int ff_index_search_timestamp(const AVIndexEntry *entries, int nb_entries, int64_t wanted_timestamp, int flags)
Internal version of av_index_search_timestamp.
Definition: utils.c:2022
AVFormatInternal::id3v2_meta
AVDictionary * id3v2_meta
ID3v2 tag useful for MP3 demuxing.
Definition: internal.h:145
CodecMime::str
char str[32]
Definition: internal.h:48
AVStreamInternal::dts_ordered
uint8_t dts_ordered
Definition: internal.h:331
AVFormatInternal::initialized
int initialized
Whether or not avformat_init_output has already been called.
Definition: internal.h:135
ff_format_io_close
void ff_format_io_close(AVFormatContext *s, AVIOContext **pb)
Definition: utils.c:5692
CodecMime::id
enum AVCodecID id
Definition: internal.h:49
FFFrac::num
int64_t num
Definition: internal.h:60
AVStreamInternal::need_context_update
int need_context_update
Whether the internal avctx needs to be updated from codecpar (after a late change to codecpar)
Definition: internal.h:200
AVFormatInternal::inject_global_side_data
int inject_global_side_data
Definition: internal.h:123
AVStreamInternal::orig_codec_id
enum AVCodecID orig_codec_id
Definition: internal.h:186
AVFormatInternal::chapter_ids_monotonic
int chapter_ids_monotonic
Set if chapter ids are strictly monotonic.
Definition: internal.h:155
ff_mkdir_p
int ff_mkdir_p(const char *path)
Automatically create sub-directories.
Definition: utils.c:4862
AVStreamInternal::pts_reorder_error
int64_t pts_reorder_error[MAX_REORDER_DELAY+1]
Internal data to generate dts from pts.
Definition: internal.h:322
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: utils.c:5370
AVFormatInternal::packet_buffer_end
struct PacketList * packet_buffer_end
Definition: internal.h:77
AVPacket
This structure stores compressed data.
Definition: packet.h:346
ff_read_frame_flush
void ff_read_frame_flush(AVFormatContext *s)
Flush the frame reader.
Definition: utils.c:1892
ff_find_stream_index
int ff_find_stream_index(AVFormatContext *s, int id)
Find stream index based on format-specific stream ID.
Definition: utils.c:5029
AVStreamInternal::bsf
AVBSFContext * bsf
Definition: internal.h:192
AV_WRITE_UNCODED_FRAME_QUERY
@ AV_WRITE_UNCODED_FRAME_QUERY
Query whether the feature is possible on this stream.
Definition: internal.h:780
AVStreamInternal::duration_error
double(* duration_error)[2][MAX_STD_TIMEBASES]
Definition: internal.h:215
convert_header.str
string str
Definition: convert_header.py:20
AVStreamInternal::last_dts
int64_t last_dts
Definition: internal.h:211
distance
static float distance(float x, float y, int band)
Definition: nellymoserenc.c:232
flags
#define flags(name, subs,...)
Definition: cbs_av1.c:561
AVFormatInternal::pkt
AVPacket * pkt
Used to hold temporary packets.
Definition: internal.h:100
FFFrac
The exact value of the fractional number is: 'val + num / den'.
Definition: internal.h:59
AVFormatInternal::raw_packet_buffer_end
struct PacketList * raw_packet_buffer_end
Definition: internal.h:89
FFFrac::den
int64_t den
Definition: internal.h:60
AVCodecTag::tag
unsigned int tag
Definition: internal.h:44
avpriv_register_devices
void avpriv_register_devices(const AVOutputFormat *const o[], const AVInputFormat *const i[])
Definition: allformats.c:668
ff_interleave_packet_per_dts
int ff_interleave_packet_per_dts(AVFormatContext *s, AVPacket *out, AVPacket *pkt, int flush)
Interleave an AVPacket per dts so it can be muxed.
Definition: mux.c:932
ff_configure_buffers_for_index
void ff_configure_buffers_for_index(AVFormatContext *s, int64_t time_tolerance)
Definition: utils.c:2065
ff_parse_key_value
void ff_parse_key_value(const char *str, ff_parse_key_val_cb callback_get_buf, void *context)
Parse a string with comma-separated key=value pairs.
Definition: utils.c:4975
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:3314
AVStreamInternal::bitstream_checked
int bitstream_checked
Whether or not check_bitstream should still be run on each packet.
Definition: internal.h:175