summaryrefslogtreecommitdiff
path: root/libavformat/options.c
Commit message (Collapse)AuthorAge
* avformat/utils: Move ff_format_io_close.* to options.c, avformat.cAndreas Rheinhardt2022-05-10
| | | | | | | These are not pure avio-functions, but auxiliary AVFormatContext functions. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avformat/demux: Add new demux.h headerAndreas Rheinhardt2022-05-10
| | | | | | And move those stuff already in demuxer-only files to it. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avformat/utils: Move stream_options, avformat_new_stream to options.cAndreas Rheinhardt2022-05-10
| | | | | | | | | This is the appropriate place given that AVStream is about to become an AVOpt-enabled struct. Also move av_disposition_(to|from)_string, as these are tied to the disposition stream option. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avformat/mux: Preserve sync even if later packet has negative tsAndreas Rheinhardt2022-01-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | write_packet() has code to shift the packets timestamps to make them nonnegative or even make them start at ts zero; this code inspects every packet that is written and if a packet with negative timestamp (whether this is dts or pts depends upon another flag; basically: Matroska uses pts, everyone else dts) is encountered, this is offset to make the timestamp zero. All further packets will be offset accordingly (with the offset converted according to the streams' timebases). This is based around an assumption, namely that the timestamps are indeed non-decreasing, so that the first packet with negative timestamps is the first packet with timestamps. This assumption is often fulfilled given that the default interleavement function by default interleaves per dts; yet there are scenarios in which it may not be fulfilled: a) av_write_frame() instead of av_interleaved_write_frame() is used. b) The audio_preload option is used. c) When the timestamps that are made nonnegative/zero are pts (i.e. with Matroska), because the packet with the smallest dts is not necessarily the packet with the smallest pts. d) Possibly with custom interleavement functions. In these cases the relative sync of the first few packet(s) is offset relative to the later packets. This contradicts the documentation ("When shifting is enabled, all output timestamps are shifted by the same amount"). Therefore this commit changes this: As soon as the first packet with valid timestamps is output, it is checked and recorded whether the timestamps need to be shifted. Further packets are no longer checked for needing to be offset; instead they are simply offset. In the cases above this leads to packets with negative timestamps (and the appropriate warnings) instead of desync. This will mostly be fixed in the next commit. This commit also factors handling the avoid_negative_ts stuff out of write_packet() in order to be able to return immediately. Tickets #4536 and #5784 as well as the matroska-avoid-negative-ts-test are examples of c); as has been said, some timestamps are now negative, yet the ref file update does not show it because ffmpeg.c sanitizes the timestamps (-copyts disables it; ffprobe and mkvinfo also show the original timestamps). Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avformat: introduce AVFormatContext io_close2 which returns an intMarton Balint2021-12-12
| | | | | | | | | | | | | | | | | Otherwise there is no way to detect an error returned by avio_close() because ff_format_io_close cannot get the return value. Checking the return value of the close function is important in order to check if all data was successfully written and the underlying close() operation was successful. It can also be useful even for read mode because it can return any pending AVIOContext error, so the user don't have to manually check AVIOContext->error. In order to still support if the user overrides io_close, the generic code only uses io_close2 if io_close is either NULL or the default io_close callback. Signed-off-by: Marton Balint <cus@passwd.hu>
* avformat/demux: allow total size of packets in raw_packet_buffer to reach ↵Marton Balint2021-11-14
| | | | | | | | | | | | | | probesize Previously this was hardcoded to 2500000 bytes, so probing of the stream codecs was always limited by this, and not probesize. Also keep track of the actual size of packets in raw_packet_buffer and not the remaining size for simplicity. Fixes ticket #5860. Signed-off-by: Marton Balint <cus@passwd.hu>
* avformat: Avoid allocation for AVFormatInternalAndreas Rheinhardt2021-09-17
| | | | | | | | | | | | | Do this by allocating AVFormatContext together with the data that is currently in AVFormatInternal; or rather: Put AVFormatContext at the beginning of a new structure called FFFormatContext (which encompasses more than just the internal fields and is a proper context in its own right, hence the name) and remove AVFormatInternal altogether. The biggest simplifications occured in avformat_alloc_context(), where one can now simply call avformat_free_context() in case of errors. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avutil: remove deprecated AVClass.child_class_nextJames Almer2021-04-27
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* avformat: Remove deprecated old open callbacksAndreas Rheinhardt2021-04-27
| | | | | Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com> Signed-off-by: James Almer <jamrial@gmail.com>
* avformat/utils: use av_packet_alloc() to allocate packetsJames Almer2021-03-17
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* avformat/mux: use av_packet_alloc() to allocate packetsJames Almer2021-03-17
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* avformat/options: use the iterate API in format_child_class_next()James Almer2020-10-19
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* AVFormatContext: switch to child_class_iterate()Anton Khirnov2020-06-10
|
* avformat/options: don't call avformat_free_context() within ↵James Almer2019-10-19
| | | | | | | | | avformat_alloc_context() avformat_free_context() expects AVFormatContext->internal to not be NULL. Reviewed-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com> Signed-off-by: James Almer <jamrial@gmail.com>
* avformat: migrate to AVFormatContext->urlMarton Balint2018-01-28
| | | | Signed-off-by: Marton Balint <cus@passwd.hu>
* avformat/options: log filename on openMichael Niedermayer2017-06-03
| | | | | | | | | | | The loglevel is choosen so that the main filename and any images of multi image sequences are shown only at debug level to avoid clutter. This makes exploits in playlists more visible. As they would show accesses to private/sensitive files Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/mux: implement AVFMT_FLAG_SHORTESTMichael Niedermayer2016-09-11
| | | | | | This will allow fixing several bugs with the -shortest option Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat: Add a protocol blacklisting APIDerek Buitenhuis2016-03-04
| | | | Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* Merge commit '9f61abc8111c7c43f49ca012e957a108b9cc7610'Derek Buitenhuis2016-02-10
|\ | | | | | | | | | | | | | | | | This also deprecates our old duplicated callbacks. * commit '9f61abc8111c7c43f49ca012e957a108b9cc7610': lavf: allow custom IO for all files Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
| * lavf: allow custom IO for all filesAnton Khirnov2016-01-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Some (de)muxers open additional files beyond the main IO context. Currently, they call avio_open() directly, which prevents the caller from using custom IO for such streams. This commit adds callbacks to AVFormatContext that default to avio_open2()/avio_close(), but can be overridden by the caller. All muxers and demuxers using AVIO are switched to using those callbacks instead of calling avio_open()/avio_close() directly. (de)muxers that use the URLProtocol layer directly instead of AVIO remain unconverted for now. This should be fixed in later commits.
* | Merge commit 'f046c3b5ac36848cce824b008e0347c621523041'Michael Niedermayer2015-07-03
|\| | | | | | | | | | | | | | | * commit 'f046c3b5ac36848cce824b008e0347c621523041': lavc: Move deprecation warning disabling to files including the table lavc: Disable deprectation warnings coming from options table Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * lavc: Move deprecation warning disabling to files including the tableVittorio Giovara2015-07-03
| | | | | | | | | | | | Unbreak build from 7a5902c556d84a367dd64a003a4e7244fc3a73d1. Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
* | avformat_alloc_context: initialize raw_packet_buffer_remaining_size.Reimar Döffinger2015-05-10
| | | | | | | | | | | | | | | | This currently works for most users because avformat_open_input sets it, but this patch fixes any applications not using that function. Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
* | Merge commit 'c86d8aed748adc3ba8df96fb1fe14aa45da77a31'Michael Niedermayer2015-02-28
|\| | | | | | | | | | | | | * commit 'c86d8aed748adc3ba8df96fb1fe14aa45da77a31': avio: Rename avclass symbols relating to avio Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * avio: Rename avclass symbols relating to avioMartin Storsjö2015-02-28
| | | | | | | | | | | | | | Don't prefix them ffio_url, which is misleading, sounding too much like the urlprotocol layer (like ffurl_*). Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge commit '9deaec782810d098bca11c9332fab2d2f4c5fb78'Michael Niedermayer2015-02-11
|\| | | | | | | | | | | | | | | | | | | | | | | | | * commit '9deaec782810d098bca11c9332fab2d2f4c5fb78': lavf: move internal fields from public to internal context Conflicts: libavformat/avformat.h libavformat/internal.h libavformat/mux.c libavformat/utils.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * lavf: move internal fields from public to internal contextwm42015-02-10
| | | | | | | | | | | | | | This is not an API change; the fields were explicitly declared private before. Signed-off-by: Anton Khirnov <anton@khirnov.net>
* | Merge commit '9257692ac15eff7b07540c1f61cebde0d8823fbd'Michael Niedermayer2014-11-18
|\| | | | | | | | | | | | | | | | | | | * commit '9257692ac15eff7b07540c1f61cebde0d8823fbd': lavf: Only initialize s->offset once when using avoid_negative_ts make_zero Conflicts: libavformat/mux.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * lavf: Only initialize s->offset once when using avoid_negative_ts make_zeroMartin Storsjö2014-11-17
| | | | | | | | | | | | | | | | | | | | When given a stream starting at dts=0, it would previously consider s->offset as uninitialized and set an offset when the second packet was written, ending up writing two packets with dts=0. By initializing this field to AV_NOPTS_VALUE, we make sure that we only initialize it once, on the first packet. Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge commit '33c859c142ef3f49b7a6227014ad92a680cf4d74'Michael Niedermayer2014-02-04
|\| | | | | | | | | | | | | | | | | | | | | | | * commit '33c859c142ef3f49b7a6227014ad92a680cf4d74': lavf: ignore attachment streams for interleaving purposes Conflicts: libavformat/avformat.h libavformat/internal.h libavformat/mux.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * lavf: ignore attachment streams for interleaving purposesAnton Khirnov2014-02-04
| | | | | | | | Those streams should never get any packets by definition.
* | Merge commit 'b5a138652ff8a5b987d3e1191e67fd9f6575527e'Michael Niedermayer2013-08-03
|\| | | | | | | | | | | | | | | | | | | | | | | | | * commit 'b5a138652ff8a5b987d3e1191e67fd9f6575527e': Give less generic names to global library option arrays Conflicts: libavcodec/options_table.h libavfilter/avfilter.c libavformat/options_table.h libswscale/options.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * Give less generic names to global library option arraysDiego Biurrun2013-08-02
| |
* | options: Fix warning about incompatible pointer typejamal2012-07-30
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | lavf: add proper enum type for fmt ctx duration esitmation methodMichael Bradshaw2012-06-28
| | | | | | | | Signed-off-by: Michael Bradshaw <mbradshaw@sorensonmedia.com>
* | lavf: separate muxer/demuxer class categoryMichael Niedermayer2012-06-19
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | lavf: add field for how duration is estimatedMichael Bradshaw2012-06-18
| | | | | | | | Signed-off-by: Michael Bradshaw <mbradshaw@sorensonmedia.com>
* | set some categories of some AVClass structsMichael Niedermayer2012-06-03
| | | | | | | | | | | | Please help setting the category for all remaining AVClasses Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2012-03-21
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: (27 commits) avconv: free packet in write_frame() when discarding due to frame number limit FATE: use +/- flag option syntax for vp8 emu-edge tests lavf: make av_interleave_packet_per_dts() private. lavf: deprecate av_read_packet(). oggdec: output correct timestamps for Vorbis avconv: pass input stream timestamps to audio encoders lavc: shrink encoded audio packet size after encoding. xa: set correct bit rate xa: do not set bit_rate, block_align, or bits_per_coded_sample xa: fix end-of-file handling xa: fix timestamp calculation bink: fix typo in FFALIGN() argument bink: align plane width to 8 when calculating bundle sizes doc: pass -Idoc texi2html and texi2pod doc: texi2pod: add -I flag movenc: Add a min_frag_duration option rtsp: Set the default delay to 0.1 s for the RTSP/SDP/RTP demuxers libavformat: Set the default for the max_delay option to -1 Generate manpages for AV{Format,Codec}Context AVOptions. doc/avconv: remove entries for AVOptions. ... Conflicts: doc/Makefile doc/ffmpeg.texi doc/muxers.texi ffmpeg.c libavcodec/Makefile libavcodec/options.c libavcodec/vp8.c libavformat/options.c tests/fate/demux.mak tests/ref/fate/truemotion1-15 tests/ref/fate/truemotion1-24 Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * Move AVFormatContext/AVCodecContext option tables to separate files.Anton Khirnov2012-03-20
| | | | | | | | This will allow us to automatically generate manpages for them.
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2012-01-28
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: (71 commits) movenc: Allow writing to a non-seekable output if using empty moov movenc: Support adding isml (smooth streaming live) metadata libavcodec: Don't crash in avcodec_encode_audio if time_base isn't set sunrast: Document the different Sun Raster file format types. sunrast: Add a check for experimental type. libspeexenc: use AVSampleFormat instead of deprecated/removed SampleFormat lavf: remove disabled FF_API_SET_PTS_INFO cruft lavf: remove disabled FF_API_OLD_INTERRUPT_CB cruft lavf: remove disabled FF_API_REORDER_PRIVATE cruft lavf: remove disabled FF_API_SEEK_PUBLIC cruft lavf: remove disabled FF_API_STREAM_COPY cruft lavf: remove disabled FF_API_PRELOAD cruft lavf: remove disabled FF_API_NEW_STREAM cruft lavf: remove disabled FF_API_RTSP_URL_OPTIONS cruft lavf: remove disabled FF_API_MUXRATE cruft lavf: remove disabled FF_API_FILESIZE cruft lavf: remove disabled FF_API_TIMESTAMP cruft lavf: remove disabled FF_API_LOOP_OUTPUT cruft lavf: remove disabled FF_API_LOOP_INPUT cruft lavf: remove disabled FF_API_AVSTREAM_QUALITY cruft ... Conflicts: doc/APIchanges libavcodec/8bps.c libavcodec/avcodec.h libavcodec/libx264.c libavcodec/mjpegbdec.c libavcodec/options.c libavcodec/sunrast.c libavcodec/utils.c libavcodec/version.h libavcodec/x86/h264_deblock.asm libavdevice/libdc1394.c libavdevice/v4l2.c libavformat/avformat.h libavformat/avio.c libavformat/avio.h libavformat/aviobuf.c libavformat/dv.c libavformat/mov.c libavformat/utils.c libavformat/version.h libavformat/wtv.c libavutil/Makefile libavutil/file.c libswscale/x86/input.asm libswscale/x86/swscale_mmx.c libswscale/x86/swscale_template.c tests/ref/lavf/ffm Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * lavf: remove disabled FF_API_MUXRATE cruftAnton Khirnov2012-01-27
| |
| * lavf: remove disabled FF_API_FLAG_RTP_HINT cruftAnton Khirnov2012-01-27
| |
| * lavf: remove disabled FF_API_OLD_AVIO cruftAnton Khirnov2012-01-27
| |
* | error_detection: put the old error detection constants back.Michael Niedermayer2012-01-21
| | | | | | | | | | | | | | The old constants are more useful to the end user and have orthogonal meanings to the new ones. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2012-01-21
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: rtpdec: Use our own SSRC in the SDES field when sending RRs Finalize changelog for 0.8 Release Prepare for 0.8 Release threads: change the default for threads back to 1 threads: update slice_count and slice_offset from user context aviocat: Remove useless includes doc/APIChanges: fill in missing dates and hashes Revert "avserver: fix build after the next bump." mpegaudiodec: switch error detection check to AV_EF_BUFFER lavf: rename fer option and document resulting (f_)err_detect options lavc: rename err_filter option to err_detect and document it mpegvideo: fix invalid memory access for small video dimensions movenc: Reorder entries in the MOVIentry struct, for tigheter packing rtsp: Remove extern declarations for variables that don't exist aviocat: Flush the output before closing Conflicts: Changelog RELEASE libavcodec/mpegaudiodec.c libavcodec/pthread.c libavformat/options.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * lavf: rename fer option and document resulting (f_)err_detect optionsDustin Brody2012-01-21
| | | | | | | | Signed-off-by: Anton Khirnov <anton@khirnov.net>
* | lavf: allow grouping packets in chunks of a user specified size and duration.Michael Niedermayer2011-12-01
| | | | | | | | | | | | This is similar to MP4Boxs -inter Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | lavf: add audio_preload option, this allows interleaving audio earlierMichael Niedermayer2011-12-01
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2011-11-15
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: binkvideo: simplify and remove invalid shifts pulse: compute frame_duration once and fix it lavf: simplify format_child_class_next() hwaccel: OS X Video Decoder Acceleration (VDA) support. doc: add support for an optional navigation bar in texi2html pages Conflicts: configure libavcodec/Makefile libavcodec/allcodecs.c libavcodec/vda.c libavcodec/vda.h libavcodec/vda_h264.c libavcodec/vda_internal.h libavcodec/version.h libavformat/options.c libavutil/avutil.h libavutil/pixfmt.h Merged-by: Michael Niedermayer <michaelni@gmx.at>