Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mpc-hc/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2017-08-04HACK avio: add a flag to skip the fstat on file opening for performance reasonsHendrik Leppkes
2017-06-24avformat/aviobuf: add support for specifying minimum packet size and marking ↵Marton Balint
flush points Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: Marton Balint <cus@passwd.hu>
2017-06-24avformat/aviobuf: fix flushing write buffers after seeking backward or forwardMarton Balint
This patch makes aviobuf work more like traditinal file IO, which is how people think about it. For example, in the past, aviobuf only flushed buffers until the current buffer position, even if more data was written to it previously, and a backward seek was used to reposition the IO context. From now, aviobuf will keep track of the written data, so no explicit seek will be required till the end of the buffer, or till the end of file before flushing. This fixes at least one regression, fate-vsynth3-flv was broken if flush_packets option was set to false, an explicit seek was removed in 4e3cc4bdd8acedbcc703607ed0efbb64bb5c3cc4. Also from now on, if a forward seek in the write buffer were to cause a gap between the already written data and the new file position, a flush will happen. The must_flush varable is also removed, which might have caused needless flushes with multiple seeks whithin the write buffer. Since we know the amount of data written to it, we will know when to flush. Signed-off-by: Marton Balint <cus@passwd.hu>
2017-04-14Merge commit '3f75e5116b900f1428aa13041fc7d6301bf1988a'James Almer
* commit '3f75e5116b900f1428aa13041fc7d6301bf1988a': avio: Keep track of the amount of data written Merged-by: James Almer <jamrial@gmail.com>
2017-03-21Merge commit '8ea35af7620e4f73f9e8c072e1c0fac9a04ec161'James Almer
* commit '8ea35af7620e4f73f9e8c072e1c0fac9a04ec161': avio: add a new flag for marking streams seekable by timestamp Merged-by: James Almer <jamrial@gmail.com>
2017-03-21Merge commit '75c1db6152c7c90c7ce28c9adb945028e5512c4f'James Almer
* commit '75c1db6152c7c90c7ce28c9adb945028e5512c4f': avio: cosmetics, prettify AVIO_SEEKABLE_NORMAL Merged-by: James Almer <jamrial@gmail.com>
2017-02-14HTTP: improve performance by reducing forward seeksJoel Cunningham
This commit optimizes HTTP performance by reducing forward seeks, instead favoring a read-ahead and discard on the current connection (referred to as a short seek) for seeks that are within a TCP window's worth of data. This improves performance because with TCP flow control, a window's worth of data will be in the local socket buffer already or in-flight from the sender once congestion control on the sender is fully utilizing the window. Note: this approach doesn't attempt to differentiate from a newly opened connection which may not be fully utilizing the window due to congestion control vs one that is. The receiver can't get at this information, so we assume worst case; that full window is in use (we did advertise it after all) and that data could be in-flight The previous behavior of closing the connection, then opening a new with a new HTTP range value results in a massive amounts of discarded and re-sent data when large TCP windows are used. This has been observed on MacOS/iOS which starts with an initial window of 256KB and grows up to 1MB depending on the bandwidth-product delay. When seeking within a window's worth of data and we close the connection, then open a new one within the same window's worth of data, we discard from the current offset till the end of the window. Then on the new connection the server ends up re-sending the previous data from new offset till the end of old window. Example (assumes full window utilization): TCP window size: 64KB Position: 32KB Forward seek position: 40KB * (Next window) 32KB |--------------| 96KB |---------------| 160KB * 40KB |---------------| 104KB Re-sent amount: 96KB - 40KB = 56KB For a real world test example, I have MP4 file of ~25MB, which ffplay only reads ~16MB and performs 177 seeks. With current ffmpeg, this results in 177 HTTP GETs and ~73MB worth of TCP data communication. With this patch, ffmpeg issues 4 HTTP GETs and 3 seeks for a total of ~22MB of TCP data communication. To support this feature, the short seek logic in avio_seek() has been extended to call a function to get the short seek threshold value. This callback has been plumbed to the URLProtocol structure, which now has infrastructure in HTTP and TCP to get the underlying receiver window size via SO_RCVBUF. If the underlying URL and protocol don't support returning a short seek threshold, the default s->short_seek_threshold is used This feature has been tested on Windows 7 and MacOS/iOS. Windows support is slightly complicated by the fact that when TCP window auto-tuning is enabled, SO_RCVBUF doesn't report the real window size, but it does if SO_RCVBUF was manually set (disabling auto-tuning). So we can only use this optimization on Windows in the later case Signed-off-by: Joel Cunningham <joel.cunningham@me.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-01-07libavformat/avio: Add avio_get_dyn_buf functionsoftworkz
This commit adds the avio_get_dyn_buf function which allows accessing the content of a DynBuffer without destroying it. This is required in matroskaenc for preliminary writing (correct) mkv headers. Context for this change is fixing regression bug #5977. Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-12-08avio: Keep track of the amount of data writtenLuca Barbato
Make avio_size() work with any write AVIOContext.
2016-09-30avio: add a new flag for marking streams seekable by timestampAnton Khirnov
2016-09-30avio: cosmetics, prettify AVIO_SEEKABLE_NORMALAnton Khirnov
Move the doxy above the definition, change the value itself to the (1 << n) pattern, which is more readable for flags.
2016-06-23Merge commit 'db7968bff4851c2be79b15b2cb2ae747424d2fca'Matthieu Bouron
* commit 'db7968bff4851c2be79b15b2cb2ae747424d2fca': avio: Allow custom IO users to get labels for the output bytestream Merged-by: Matthieu Bouron <matthieu.bouron@stupeflix.com>
2016-06-21Merge commit 'e9443105ea4e8bc1d826ddceeba2816488c6ce92'Clément Bœsch
* commit 'e9443105ea4e8bc1d826ddceeba2816488c6ce92': avio: Remove a leftover comment Merged-by: Clément Bœsch <u@pkh.me>
2016-06-21Merge commit '41ed7ab45fc693f7d7fc35664c0233f4c32d69bb'Clément Bœsch
* commit '41ed7ab45fc693f7d7fc35664c0233f4c32d69bb': cosmetics: Fix spelling mistakes Merged-by: Clément Bœsch <u@pkh.me>
2016-05-18avio: Allow custom IO users to get labels for the output bytestreamMartin Storsjö
This allows callers with avio write callbacks to get the bytestream positions that correspond to keyframes, suitable for live streaming. In the simplest form, a caller could expect that a header is written to the bytestream during the avformat_write_header, and the data output to the avio context during e.g. av_write_frame corresponds exactly to the current packet passed in. When combined with av_interleaved_write_frame, and with muxers that do buffering (most muxers that do some sort of fragmenting or clustering), the mapping from input data to bytestream positions is nontrivial. This allows callers to get directly information about what part of the bytestream is what, without having to resort to assumptions about the muxer behaviour. One keyframe/fragment/block can still be split into multiple (if they are larger than the aviocontext buffer), which would call the callback with e.g. AVIO_DATA_MARKER_SYNC_POINT, followed by AVIO_DATA_MARKER_UNKNOWN for the second time it is called with the following data. Signed-off-by: Martin Storsjö <martin@martin.st>
2016-05-06avio: Remove a leftover commentMartin Storsjö
The declarations that this comment referred to were removed in 2439f2ca8 - there is no unbuffered IO in this header now. Signed-off-by: Martin Storsjö <martin@martin.st>
2016-05-04cosmetics: Fix spelling mistakesVittorio Giovara
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2016-03-04avformat: Add a protocol blacklisting APIDerek Buitenhuis
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2016-02-02avformat: add protocol_whitelistMichael Niedermayer
Note to maintainers: update tools Note to maintainers: set a default whitelist for your protocol If that makes no sense then consider to set "none" and thus require the user to specify a white-list for sub-protocols to be opened Note, testing and checking for missing changes is needed Reviewed-by: Andreas Cadhalpun <andreas.cadhalpun@googlemail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-12-27avio: add detail to avio_printf() size warningReynaldo H. Verdejo Pinochet
Previous "currently size is limited" didn't give away much in terms of useful info. Signed-off-by: Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
2015-11-16avformat/aviobuf: Improve readability of aviobuf (Add comments and docs)Bryan Huh
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-08-01lavf/avio: add avio_accept and avio_handshakeStephan Holljes
Signed-off-by: Stephan Holljes <klaxa1337@googlemail.com>
2015-07-28Merge commit '059a934806d61f7af9ab3fd9f74994b838ea5eba'Michael Niedermayer
* commit '059a934806d61f7af9ab3fd9f74994b838ea5eba': lavc: Consistently prefix input buffer defines Conflicts: doc/examples/decoding_encoding.c libavcodec/4xm.c libavcodec/aac_adtstoasc_bsf.c libavcodec/aacdec.c libavcodec/aacenc.c libavcodec/ac3dec.h libavcodec/asvenc.c libavcodec/avcodec.h libavcodec/avpacket.c libavcodec/dvdec.c libavcodec/ffv1enc.c libavcodec/g2meet.c libavcodec/gif.c libavcodec/h264.c libavcodec/h264_mp4toannexb_bsf.c libavcodec/huffyuvdec.c libavcodec/huffyuvenc.c libavcodec/jpeglsenc.c libavcodec/libxvid.c libavcodec/mdec.c libavcodec/motionpixels.c libavcodec/mpeg4videodec.c libavcodec/mpegvideo.c libavcodec/noise_bsf.c libavcodec/nuv.c libavcodec/nvenc.c libavcodec/options.c libavcodec/parser.c libavcodec/pngenc.c libavcodec/proresenc_kostya.c libavcodec/qsvdec.c libavcodec/svq1enc.c libavcodec/tiffenc.c libavcodec/truemotion2.c libavcodec/utils.c libavcodec/utvideoenc.c libavcodec/vc1dec.c libavcodec/wmalosslessdec.c libavformat/adxdec.c libavformat/aiffdec.c libavformat/apc.c libavformat/apetag.c libavformat/avidec.c libavformat/bink.c libavformat/cafdec.c libavformat/flvdec.c libavformat/id3v2.c libavformat/isom.c libavformat/matroskadec.c libavformat/mov.c libavformat/mpc.c libavformat/mpc8.c libavformat/mpegts.c libavformat/mvi.c libavformat/mxfdec.c libavformat/mxg.c libavformat/nutdec.c libavformat/oggdec.c libavformat/oggparsecelt.c libavformat/oggparseflac.c libavformat/oggparseopus.c libavformat/oggparsespeex.c libavformat/omadec.c libavformat/rawdec.c libavformat/riffdec.c libavformat/rl2.c libavformat/rmdec.c libavformat/rtpdec_latm.c libavformat/rtpdec_mpeg4.c libavformat/rtpdec_qdm2.c libavformat/rtpdec_svq3.c libavformat/sierravmd.c libavformat/smacker.c libavformat/smush.c libavformat/spdifenc.c libavformat/takdec.c libavformat/tta.c libavformat/utils.c libavformat/vqf.c libavformat/westwood_vqa.c libavformat/xmv.c libavformat/xwma.c libavformat/yop.c Merged-by: Michael Niedermayer <michael@niedermayer.cc>
2015-07-27lavc: Consistently prefix input buffer definesVittorio Giovara
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-06-29avformat/avio: Move avio_delete() avio_move() to avpriv_ namespaceMichael Niedermayer
This was suggested in the discussion about these functions With this change the functions are available internally but are not part of the public API Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-22lavf/avio: Extend API with avio_move() and avio_delete()Mariusz Szczepańczyk
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-14doc: fix spelling errorsAndreas Cadhalpun
Neccessary -> Necessary formated -> formatted thee -> the eventhough -> even though seperately -> separately Reviewed-by: Michael Niedermayer <michaelni@gmx.at> Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
2015-06-11avformat/avio: move short seek threshold to the contextMichael Niedermayer
This allows us to adjust it internally. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-08Merge commit '252d6200c36e7eaa79f8d5205b7d731179e94897'Michael Niedermayer
* commit '252d6200c36e7eaa79f8d5205b7d731179e94897': avio: Add avio_put_str16be Conflicts: doc/APIchanges libavformat/avio.h libavformat/aviobuf.c libavformat/version.h The FFmpeg implementation is kept as requested by ubitux Doxy improvements merged Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-07avio: Add avio_put_str16beLuca Barbato
2015-04-03lavf/avio: Add new types to AVIODirEntryType, bump minor versionMariusz Szczepańczyk
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-27avformat/avio: Document the end of list case in avio_read_dir()Michael Niedermayer
This was mentioned in a previous review Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-27lavf: add directory listing APILukasz Marek
API allows protocol implementations to provide API that allows to list directory content. API is similar to POSIX opendir/readdir/closedir. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-03libavformat/avio: added avio_put_str16beMark Reid
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-25lavf/avio: clarify the buffer parameter of avio_alloc_contextYu Xiaolei
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-09-30avformat/aviobuf: fix avio_flush() for read streamswm4
avio_flush() did nothing useful for read streams. Fix it to behave as expected, and discard the currently read buffer properly. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-08-09lavf/avio: do not include bprint.h.Nicolas George
See f75786f and 04bc370.
2014-08-09avformat/avio: Fix "warning: struct AVBPrint declared inside parameter list"Michael Niedermayer
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-08-08lavf/avio: rename url_feof() to avio_feof()James Almer
It's a public function and should use the avio_ namespace Signed-off-by: James Almer <jamrial@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-07-25lavf/avio: do not include bprint.h.Nicolas George
C++ chokes on the definition of AVBPrint. Including avio.h from c++ code used to work. Fix trac ticket #3800. Signed-off-by: Nicolas George <george@nsup.org> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-07-23avio: Introduce avio_read_to_bprint(avioctx, bp, max_size)Andrey Utkin
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-03-27libavformat/aviobuf: keep track of the original buffer-size and restore it ↵Michael Niedermayer
after probe/ensure-seekback Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-02-18Merge commit '4d7ab5cfebef91820af2933ef2f622ea598e6b53'Michael Niedermayer
* commit '4d7ab5cfebef91820af2933ef2f622ea598e6b53': doxygen: Add a number of missing function parameter descriptions Conflicts: libavformat/avformat.h Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-02-17doxygen: Add a number of missing function parameter descriptionsDiego Biurrun
2014-02-17lavf/avio: Introduce avio_find_protocol_nameAlexander Strasser
Make it possible to find out what protocol will be chosen for a given URL. Signed-off-by: Alexander Strasser <eclipse7@gmx.net>
2013-10-19Do not leave positive values undefined when negative are defined as errorMichael Niedermayer
Define positive return values as non errors and leave further meaning undefined This allows future extensions to use these values Reviewed-by: Paul B Mahol <onemda@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-04-08avio.h: fix indentionMichael Niedermayer
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-04-08avformat: add writeout_count statisticMichael Niedermayer
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-03-15lavf/avio: fix two extreemly unreasonble typos.Clément Bœsch
2012-10-11Merge commit 'b522000e9b2ca36fe5b2751096b9a5f5ed8f87e6'Michael Niedermayer
* commit 'b522000e9b2ca36fe5b2751096b9a5f5ed8f87e6': avio: introduce avio_closep mpegtsenc: set muxing type notification to verbose vc1dec: Use correct spelling of "opposite" a64multienc: change mc_frame_counter to unsigned arm: call arm-specific rv34dsp init functions under if (ARCH_ARM) svq1: Drop a bunch of useless parentheses parseutils-test: do not print numerical error codes svq1: K&R formatting cosmetics Conflicts: doc/APIchanges libavcodec/svq1dec.c libavcodec/svq1enc.c libavformat/version.h libavutil/parseutils.c tests/ref/fate/parseutils Merged-by: Michael Niedermayer <michaelni@gmx.at>