summaryrefslogtreecommitdiff
path: root/libavformat
Commit message (Collapse)AuthorAge
* avformat/libopenmpt: Probe file format from file data if possibleJörn Heusipp2018-03-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When building with libopenmpt 0.3, use the libopenmpt file header probing functions for probing. libopenmpt probing functions are allocation-free and designed to be as fast as possible. For libopenmpt 0.2, or when libopenmpt 0.3 file header probing cannot probe successfully due to too small probe buffer, test the filename against the file extensions supported by the libopenmpt library that is actually linked, instead of relying on a hard-coded file extension list. File extension testing is also allocation-free and designed to be fast in libopenmpt. Avoiding a hard-coded file extension list is useful because later libopenmpt versions will likely add support for more module file formats. libopenmpt file header probing is tested regularly against the FATE suite and other diverse file collections by libopenmpt upstream in order to avoid false positives. FATE passes with './configure --enable-libopenmpt' as well as with './configure --enable-libopenmpt --enable-libmodplug'. libopenmpt probing adds about 5%..10% cpu time (depending on precise usage pattern and host CPU and compiler version used for libopenmpt) compared to all current internal FFmpeg probing functions combined in tools/probetest for all of its module formats combined (currently 41 modules formats in libopenmpt 0.3.4 and 234 file formats in FFmpeg). Signed-off-by: Jörn Heusipp <osmanx@problemloesungsmaschine.de> Reviewed-by: Josh de Kock <josh@itanimul.li> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/libopenmpt: Update file extensions list for libopenmpt 0.3Jörn Heusipp2018-03-20
| | | | | | Signed-off-by: Jörn Heusipp <osmanx@problemloesungsmaschine.de> Reviewed-by: Josh de Kock <josh@itanimul.li> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* http: fix potentially dangerous whitespace skipping codewm42018-03-18
| | | | | | | | | | | | | If the string consists entirely of whitespace, this could in theory continue to write '\0' before the start of the memory allocation. In practice, it didn't really happen: the generic HTTP header parsing code already skips leading whitespaces, so the string is either empty, or consists a non-whitespace. (The generic code and the cookie code actually have different ideas about what bytes are whitespace: the former uses av_isspace(), the latter uses WHITESPACES. Fortunately, av_isspace() is a super set of the http.c specific WHITESPACES, so there's probably no case where the above assumption could have been broken.)
* http: avoid out of bound accesses on broken Set-Cookie headerswm42018-03-18
| | | | | | | | It's trivial to craft a HTTP response that will make the code for skipping trailing whitespace access and possibly overwrite bytes outside of the memory allocation. Why this can happen is blindingly obvious: it accesses cstr[strlen(cstr)-1] without checking whether the string is empty.
* http: do not print a warning message for expired cookieswm42018-03-18
| | | | | | | libavformat prints a warning that the cookie couldn't be parsed (see callers of parse_cookie()). This is obviously not true - it could be parsed, but was simply ignored. Don't return an error to avoid the warning.
* avformat/hlsenc: reindent after previous commitsSteven Liu2018-03-18
| | | | Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
* avformat/hlsenc: fix fmp4 single init file problemSteven Liu2018-03-18
| | | | | | fix ticket: #7021 Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
* avformat/hlsenc: fix memleak problem about fmp4_init_filenameSteven Liu2018-03-18
| | | | | | | move fmp4_init_filename init in if else for first fmp4_init_filename set value operation. Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
* avformat/hlsenc: reindent after previous commitsSteven Liu2018-03-18
| | | | Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
* avformat/hlsenc: fix write wrong init file URI string problemSteven Liu2018-03-18
| | | | | | fmp4_init_filename should append after base_output_dirname Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
* lavf/dashenc: remove unneeded call to dash_freeRodger Combs2018-03-18
|
* libavformat/dashenc: Option to set timeout for socket I/O operationRavindra2018-03-18
|
* avformat/codec2: don't include avcodec objectsJames Almer2018-03-17
| | | | | | They belong in avcodec. Signed-off-by: James Almer <jamrial@gmail.com>
* avformat/movenc: move the concatenated eac3 packet referenceJames Almer2018-03-15
| | | | | | | Simplifies code. Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: James Almer <jamrial@gmail.com>
* avformat/dashdec: Correct spelling mistakessanilraut2018-03-15
| | | | Signed-off-by: Steven Liu <lingjiujianke@gmail.com>
* avformat/hlsenc: Option to set timeout for socket I/O operationRavindra2018-03-14
| | | | Reviewed-by: Steven Liu <lq@chinaffmpeg.org>
* avformat/pcm: decrease delay when reading PCM streams.Philipp M. Scholl2018-03-13
| | | | | | | | | | | | | | | | | | Thanks for the discussion. Here's the next version, now with /25 and removed ff_log2(). The blocksize of the PCM decoder is hard-coded. This creates unnecessary delay when reading low-rate (<100Hz) streams. This creates issues when multiplexing multiple streams, since other inputs are only opened/read after a low-rate input block was completely read. This patch decreases the blocksize for low-rate inputs, so approximately a block is read every 40ms. This decreases the startup delay when multiplexing inputs with different rates. Signed-off-by: Philipp M. Scholl <pscholl@bawue.de> Reviewed-by: Paul B Mahol <onemda@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/hlsenc: fix for zero EXTINF tag durationVishwanath Dixit2018-03-12
| | | | | | | This is the fix for bug https://trac.ffmpeg.org/ticket/7073 Tested-by: Brainiarc7 Reviewed-by: Steven Liu <lq@chinaffmpeg.org>
* avformat/mov: Fix integer overflows related to sample_durationMichael Niedermayer2018-03-12
| | | | | | | | | | Fixes: runtime error: signed integer overflow: -9166684017437101870 + -2495066639299164439 cannot be represented in type Fixes: Chromium bug 791349 Reported-by: Matt Wolenetz <wolenetz@google.com> Reviewed-by: Matt Wolenetz <wolenetz@google.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* lavf/mov.c: Use the correct offset to shift timestamp when seeking.Sasi Inguva2018-03-10
| | | | | | | | Fixes seek for files with empty edits and files with negative ctts (dts_shift > 0). Added fate samples and tests. Signed-off-by: Sasi Inguva <isasi@isasi.mtv.corp.google.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/img2dec: fix infinite loopMichael Niedermayer2018-03-10
| | | | | | | | Fixes: kira-poc Found-by: Kira <kira_cxy@foxmail.com> Change suggested by Kira Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/oggparsedaala: Do not adjust AV_NOPTS_VALUEMichael Niedermayer2018-03-10
| | | | | | Fixes: potential signed integer overflow Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/oggparseogm: Check lb against psizeMichael Niedermayer2018-03-10
| | | | | | | | No testcase, this was found during code review Found-by: Matt Wolenetz <wolenetz@google.com> Reviewed-by: Matt Wolenetz <wolenetz@google.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/oggparseogm: Fix undefined shift in ogm_packet()Michael Niedermayer2018-03-10
| | | | | | | | Fixes: shift exponent 48 is too large for 32-bit type 'int' Fixes: Chromium bug 786793 Reported-by: Matt Wolenetz <wolenetz@google.com> Reviewed-by: Matt Wolenetz <wolenetz@google.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/avidec: Fix integer overflow in cum_len checkMichael Niedermayer2018-03-10
| | | | | | | | | Fixes: signed integer overflow: 3775922176 * 4278190080 cannot be represented in type 'long' Fixes: Chromium bug 791237 Reported-by: Matt Wolenetz <wolenetz@google.com> Reviewed-by: Matt Wolenetz <wolenetz@google.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/oggparsetheora: Do not adjust AV_NOPTS_VALUEMichael Niedermayer2018-03-10
| | | | | | | | Fixes: Chromium bug 795653 Fixes: signed integer overflow: 9223372036854775807 + 1 cannot be represented in type 'long' Reported-by: Matt Wolenetz <wolenetz@google.com> Reviewed-by: Matt Wolenetz <wolenetz@google.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/mxfdec: do not allow more partitions than INT_MAX/2Marton Balint2018-03-09
| | | | | | | Some math (e.g: partition binary search) overflows if we have that many parititions. Signed-off-by: Marton Balint <cus@passwd.hu>
* avformat/mxfdec: use binary search in mxf_absolute_bodysid_offsetMarton Balint2018-03-09
| | | | Signed-off-by: Marton Balint <cus@passwd.hu>
* avformat/mxfdec: fix opAtom audio demuxingMarton Balint2018-03-09
| | | | | | | | | Consider edit rate when determining edit_units_per_packet and also make sure that checks are done in edit rate time base and not in stream time base. Fixes some errors reported with the sample in ticket #5863. Signed-off-by: Marton Balint <cus@passwd.hu>
* avformat/mov: print the projection type when reporting it as unsupportedJames Almer2018-03-09
| | | | | Reviewed-by: Derek Buitenhuis <derek.buitenhuis@gmail.com> Signed-off-by: James Almer <jamrial@gmail.com>
* ffmpeg: Fix stts_data memory allocationXiaohan Wang2018-03-09
| | | | | | | | | In this loop, |i| is the "index". And the memory allocated should be at least the current "count", which is |i + 1|. BUG=801821 Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* sbc: add raw muxer for SBCAurelien Jacobs2018-03-07
|
* sbc: add raw demuxer for SBCAurelien Jacobs2018-03-07
|
* avformat/utils: Fix integer overflow of fps_first/last_dtsMichael Niedermayer2018-03-07
| | | | | | | Fixes: runtime error: signed integer overflow: 7738135736989908991 - -7898362169240453118 cannot be represented in type 'long' Fixes: Chromium bug 796778 Reported-by: Matt Wolenetz <wolenetz@google.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/oggdec: Fix metadata memleak on multiple headersMichael Niedermayer2018-03-07
| | | | | | | Fixes: Chromium bug 800123 Reported-by: Matt Wolenetz <wolenetz@google.com> Reviewed-by: Matt Wolenetz <wolenetz@google.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* libavformat/oggparsevorbis: Fix memleak on multiple headersMichael Niedermayer2018-03-07
| | | | | | | Fixes: Chromium bug 800123 Reported-by: Matt Wolenetz <wolenetz@google.com> Reviewed-by: Matt Wolenetz <wolenetz@google.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/mov: Fix integer overflow in mov_get_stsc_samples()Michael Niedermayer2018-03-07
| | | | | | | | Fixes: runtime error: signed integer overflow: 5 * -2147483647 cannot be represented in type 'int' Fixes: Chromium bug 817338 Reviewed-by: Matt Wolenetz <wolenetz@google.com> Reported-by: Matt Wolenetz <wolenetz@google.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/internal: Document the freeing behavior of ff_alloc_extradata()Michael Niedermayer2018-03-07
| | | | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/isom: don't free extradata before calling ff_get_extradata()James Almer2018-03-06
| | | | | | | | | | | ff_get_extradata() frees any existing extradata before allocating now, and using av_free() here leaves a dangling pointer that will result in a double free. Fixes a regression since 0ca33b1d4eb2a2a2e78ff3a37f1647917635b0d2. Tested-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: James Almer <jamrial@gmail.com>
* libavformat/tls_libtls: pass numeric hostnames to tls_connect_cbs()Stefan _2018-03-07
| | | | | | | Numeric hosts in certificates are not very common, but supported by LibreSSL. Forward the IP address to make verification work in this case. Fixes ticket #7029
* avformat/utils: simplify ff_alloc_extradata()James Almer2018-03-06
| | | | | | | Cosmetic refactor Reviewed-by: 74a2fa708af88d225ed708af758f236f869b1a57 Signed-off-by: James Almer <jamrial@gmail.com>
* avformat/utils: free existing extradata before trying to allocate a new oneJames Almer2018-03-06
| | | | | | | | This prevents leaks in the rare cases the function is called when extradata already exists. Reviewed-by: Paul B Mahol <onemda@gmail.com> Signed-off-by: James Almer <jamrial@gmail.com>
* avformat/mov: Initialize a potential gap in ctts_data in mov_build_indexMatt Wolenetz2018-03-05
| | | | | | | | | | | | | | | | | | | | | | | | | | mov_read_ctts ignores ctts entries having count <= 0. Generally, the aggregate of all ctts entries' count fields resulting from mov_read_ctts can be less than the corresponding sample_count. mov_build_index attempts to normalize any existing ctts_data counts to be 1, to make a 1-1 mapping of a ctts_data entry to a sample. That 1-1 mapping left a tail of uninitialized ctts_data entries when the aggregate, normalized ctts_count < sample_count. Even more generally, later usage of ctts_data may depend on the entire ctts_allocated_size having been initialized. This change memsets the entire allocation of the normalized ctts_data in mov_build_index, to prevent use of uninitialized data later. BUG=816787 Change-Id: I7fd7db255e3aeed076ee32c90cb2df211741c052 Reviewed-on: https://chromium-review.googlesource.com/947110 Reviewed-by: Xiaohan Wang <xhwang@chromium.org> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/mov: Add manu/modl to mov_read_udta_string.Tianqiang Liu2018-03-03
| | | | | | Documentation: http://mp4ra.org/atoms.html Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/dashenc: Use HTTP DELETE for HTTP base protoSerhii Marchuk2018-03-03
|
* avformat/dashenc: fix for segment open issue when persistent connection is ↵Vishwanath Dixit2018-03-03
| | | | enabled
* avformat/mxg: return reference counted packetsJames Almer2018-03-02
| | | | | Reviewed-by: wm4 <nfxjfg@googlemail.com> Signed-off-by: James Almer <jamrial@gmail.com>
* avformat/hlsenc: add reference stream index for split segmentSteven Liu2018-03-02
| | | | | | | | | fix ticket: #7044 Get the first video stream to reference for split segment when there have more than one video stream Signed-off-by: Steven Liu <lq@chinaffmpeg.org> Reviewed-by: Karthick Jeyapal <kjeyapal@akamai.com>
* ffmpeg: Fix memset size on ctts_data in mov_read_trun() (round 2)Xiaohan Wang2018-03-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | The allocated size of sc->ctts_data is (st->nb_index_entries + entries) * sizeof(*sc->ctts_data). The size to memset at offset sc->ctts_data + sc->ctts_count should be (st->nb_index_entries + entries - sc->ctts_count) * sizeof(*sc->ctts_data)) The current code missed |entries| I believe, which was introduced in https://patchwork.ffmpeg.org/patch/5541/. However, after offline discussion, it seems the original code is much more clear to read (before https://patchwork.ffmpeg.org/patch/5541/). Hence this CL revert the memset logic to it's previous state by remembering the |old_ctts_allocated_size|, and only memset the newly allocated entries. BUG=812567 Change-Id: Ibe94c7138e5818bfaae76866bfa6619a9b8a2b6b Reviewed-on: https://chromium-review.googlesource.com/934925 Reviewed-by: Dale Curtis <dalecurtis@chromium.org> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/mxfdec: always use a stream which matches the first index table ↵Marton Balint2018-03-01
| | | | | | | | | | | when seeking Obviously this is still not perfect, but better then it was. Using the first index table and mxf->current_edit_unit is still hardcoded in many places, so this change has hopefully the less chance of breaking anything that works now. Signed-off-by: Marton Balint <cus@passwd.hu>