summaryrefslogtreecommitdiffstats
path: root/libavformat
Commit message (Collapse)AuthorAgeFilesLines
* avformat: fix AVStream private fields markerwm42017-03-021-1/+9
| | | | | | | | | | | | Public fields were added after the private fields (negating the entire point of this). New private fields go into AVStreamInternal anyway. The new marker was set by guessing which fields are supposed to be private and wshich not. recommended_encoder_configuration is accessed by ffserver_config.c directly, and is supposed to use the public API. ffmpeg.c accesses AVStream.cur_dts, even though it's a private field, but that seems to be an older error.
* avcodec, avutil, avformat: remove AVOption requirement for some fieldswm42017-03-022-25/+27
| | | | | | | | | | Allow all struct fields to be accessed directly, as long as they're public. Before this change, many fields were "public", but could be accessed via AVOption only. This meant they were effectively not public, but were present for documentation purposes, which was incredibly confusing at best.
* lavf/flacdec: Return maximum score if the streaminfo header is valid.Carl Eugen Hoyos2017-03-021-1/+8
|
* avformat/oggdec: fix leak in ogg_restore()Michael Niedermayer2017-03-021-1/+5
| | | | | | | Fixes: asan_bug_leak Found-by: Thomas Guilbert <[email protected]> Signed-off-by: Michael Niedermayer <[email protected]>
* avformat/oggdec: Factor free_stream outMichael Niedermayer2017-03-021-7/+16
| | | | Signed-off-by: Michael Niedermayer <[email protected]>
* avformat/oggdec: remove unused parameter of ogg_restore()Michael Niedermayer2017-03-021-8/+5
| | | | Signed-off-by: Michael Niedermayer <[email protected]>
* lavf/matroskadec: Fix demuxing sipr.Carl Eugen Hoyos2017-02-281-1/+1
| | | | Regression since 2c8d876d
* avformat/hlsenc: don't use %s for strftime on msvcHendrik Leppkes2017-02-251-1/+2
| | | | | | | | | MSVC doesn't support the %s time format, and instead of returning an error the invalid parameter handler is invoked which (by default) terminates the process. Reviewed-by:Steven Liu <[email protected]> Signed-off-by: Hendrik Leppkes <[email protected]>
* avformat/hlsenc: fix hls_flags temp_file bugSteven Liu2017-02-251-28/+27
| | | | | | | | | refer to ticket id: #6170 rename file from temp to origin name after complete current segment Reviewed-by: Aman Gupta <[email protected]> Signed-off-by: Steven Liu <[email protected]>
* avcodec: add ScreenPressor decoderPaul B Mahol2017-02-221-0/+1
| | | | Signed-off-by: Paul B Mahol <[email protected]>
* avformat/matroskaenc: don't write DisplayUnit with value Unknown on WebM filesJames Almer2017-02-211-1/+1
| | | | | | | Value 4 (Unknown) is for the time being part of the Matroska spec but not supported by WebM Addresses ticket #6176
* avformat/sierravmd: Support for Shivers 2 stereo tracksNicolas Roy-Renaud2017-02-211-7/+13
| | | | | | Signed-off-by: Nicolas Roy-Renaud <[email protected]> Reviewed-by: Paul B Mahol <[email protected]> Signed-off-by: Michael Niedermayer <[email protected]>
* avformat/hlsenc: fix cid 1401346 Dereferencing pointer errorSteven Liu2017-02-211-2/+2
| | | | | | | check if proto is null before av_strcasecmp CID: 1401346 Signed-off-by: Steven Liu <[email protected]>
* avformat/mpl2dec: skip BOM when probingPaul B Mahol2017-02-211-0/+8
| | | | | | Fixes #5442. Signed-off-by: Paul B Mahol <[email protected]>
* lavf/mpeg: Initialize a stack variable used by memcmp().Carl Eugen Hoyos2017-02-211-1/+1
| | | | | | Silence a valgrind warning. Fixes ticket #6160.
* lavf/mov.c: Correct keyframe search in edit list to return the very first ↵Sasi Inguva2017-02-201-0/+12
| | | | | | | keyframe/frame with matching timestamp. Fixes ticket#5904 Signed-off-by: Sasi Inguva <[email protected]> Signed-off-by: Michael Niedermayer <[email protected]>
* avformat/fifo: assert on disallowed message type and state combinationsMarton Balint2017-02-191-1/+4
| | | | | | Fixes Coverity CID 1396277. Signed-off-by: Marton Balint <[email protected]>
* avformat/utils: Also fill dts==RELATIVE_TS_BASE packets in ↵Michael Niedermayer2017-02-191-2/+5
| | | | | | | | | | | | update_initial_durations() This dts value can end up in the list in the absence of durations and is in that case semantically identical to AV_NOPTS_VALUE. We can alternatively prevent storing RELATIVE_TS_BASE if there is no duration. Fixes Ticket3640 Signed-off-by: Michael Niedermayer <[email protected]>
* avformat/m4vdec: Detect raw mpeg4video with unidentified non mpeg headers ↵Michael Niedermayer2017-02-181-0/+3
| | | | | | | | | | | with a very low score Fixes Ticket 6018 This fixes a regression, and allows playback of files containing mpeg4video that are otherwise not supported Signed-off-by: Michael Niedermayer <[email protected]>
* avformat/hlsenc: set default http method to PUT when method is nullSteven Liu2017-02-181-10/+19
| | | | | | | | | | When the http method is not set, the method will use POST for ts, PUT for m3u8, it is not unify, now set it unify. This ticket id: #5315 Reviewed-by: Michael Niedermayer <[email protected]> Reviewed-by: Moritz Barsnick <[email protected]> Signed-off-by: Steven Liu <[email protected]>
* lavf/riff: Support decoding files with broken mediasubtype base guid.Thierry Foucu2017-02-172-0/+4
| | | | Fixes ticket #6100.
* avformat/dashenc: Only use temporary files when outputting to file protocolThomas Stephens2017-02-141-6/+23
| | | | | | | | | Skips using temporary files when outputting to a protocol other than "file", which enables dash to output content over network protocols. The logic has been copied from the HLS format. Reviewed-by: Steven Liu <[email protected]> Signed-off-by: Michael Niedermayer <[email protected]>
* HTTP: improve performance by reducing forward seeksJoel Cunningham2017-02-146-1/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 <[email protected]> Signed-off-by: Michael Niedermayer <[email protected]>
* avformat/http: Check for truncated buffers in http_connect()Michael Niedermayer2017-02-141-1/+10
| | | | | | Reported-by: SleepProgger <[email protected]> Reviewed-by: Steven Liu <[email protected]> Signed-off-by: Michael Niedermayer <[email protected]>
* avformat/hlsenc: fix stream level metadata handlingBela Bodecs2017-02-131-0/+1
| | | | | | | | hls-encoder currenlty does not provide stream level metadata to mpegts muxer. This patch fixes track #3848 bug. Signed-off-by: Bela Bodecs <[email protected]> Signed-off-by: Steven Liu <[email protected]>
* movenc: add support for track names in ISML manifestsJan Ekström2017-02-121-0/+18
| | | | | | | | | | | | This enables having multiple tracks of the same type which would be treated as different things by the media server (as opposed to different bit rate versions of the same track). According to the smooth streaming specification, just setting the systemLanguage tag is not enough to note that a track with the same attributes differs from another one. Reviewed-by: Martin Signed-off-by: Michael Niedermayer <[email protected]>
* lavf/mpegts: Make a pointer cast explicit.Carl Eugen Hoyos2017-02-121-1/+1
| | | | | | Silences an "assignment discards ‘const’ qualifier" warning. Reviewed-by: Marton Balint
* avcodec: add FM Screen Capture Codec decoderPaul B Mahol2017-02-121-0/+1
| | | | Signed-off-by: Paul B Mahol <[email protected]>
* avformat/flic: fix handling of EOF casePaul B Mahol2017-02-111-2/+2
| | | | Signed-off-by: Paul B Mahol <[email protected]>
* lavf/omadec: Fix packet duration for Atrac 3 lossless.Carl Eugen Hoyos2017-02-111-2/+7
|
* lavf/rtpdec_mpeg4: Constify a function parameter.Carl Eugen Hoyos2017-02-111-1/+1
| | | | Silences an "assignment discards ‘const’ qualifier" warning.
* lavf/omadec: Remove an unsed variable.Carl Eugen Hoyos2017-02-111-2/+2
|
* avcodec: add ATRAC Advanced Lossless decodersPaul B Mahol2017-02-113-39/+112
| | | | | | Only lossy part is decoded for now. Signed-off-by: Paul B Mahol <[email protected]>
* avformat/hlsenc: deprecate hls_wrap optionSteven Liu2017-02-112-1/+29
| | | | | | | | | | | | | | When user use the hls_wrap, there have many problem: 1. some platform refersh the old but usefull segment 2. CDN(Content Delivery Network) Deliver HLS not friendly The hls_wrap is used to wrap segments for use little space, now user can use hls_list_size and hls_flags delete_segments instead it. Reviewed-by: Michael Niedermayer <[email protected]> Reviewed-by: Carl Eugen Hoyos <[email protected]> Signed-off-by: Steven Liu <[email protected]>
* avformat/apetag: bump micro versionJames Almer2017-02-101-1/+1
| | | | | | | In case parsers care about the version that started writing correct flags. Signed-off-by: James Almer <[email protected]>
* avformat/apetag: reorder some code to improve readabilityJames Almer2017-02-101-6/+6
| | | | | | | | This way it's clear the size field accounts for the footer length plus every tag entry, but not the header. Reviewed-by: Paul B Mahol <[email protected]> Signed-off-by: James Almer <[email protected]>
* avformat/apetag: account for header size if present when returning the start ↵James Almer2017-02-102-1/+6
| | | | | | | | | | | position The size field in the header/footer accounts for the entire APE tag structure except the 32 bytes from header, for compatibility with APEv1. Reviewed-by: Paul B Mahol <[email protected]> Signed-off-by: James Almer <[email protected]>
* avformat/apetag: fix flag value to signal footer presenceJames Almer2017-02-101-4/+3
| | | | | | | | | | | | | | According to the spec[1], a value of 0 means the footer is present and a value of 1 means it's absent, the exact opposite of header presence flag where 1 means present and 0 absent. The reason for this is compatibility with APEv1 tags, where there's no header, footer presence was mandatory for all files, and the flags field was a zeroed reserved field. [1] http://wiki.hydrogenaud.io/index.php?title=Ape_Tags_Flags Reviewed-by: Paul B Mahol <[email protected]> Signed-off-by: James Almer <[email protected]>
* lavf/movenc: Remove two unused variables.Carl Eugen Hoyos2017-02-101-4/+1
|
* lavf/mov.c: Avoid heap allocation wraps in mov_read_{senc,saiz}()Matt Wolenetz2017-02-101-2/+7
| | | | | | | | Core of patch is from [email protected] Reference https://crbug.com/643952 (senc,saiz portions) Signed-off-by: Matt Wolenetz <[email protected]> Signed-off-by: Michael Niedermayer <[email protected]>
* lavf/mov.c: Avoid OOB in mov_read_udta_string()Matt Wolenetz2017-02-101-2/+2
| | | | | | | | Core of patch is from [email protected] Reference https://crbug.com/643952 (udta_string portion) Signed-off-by: Matt Wolenetz <[email protected]> Signed-off-by: Michael Niedermayer <[email protected]>
* lavf/mov.c: Avoid heap allocation wrap in mov_read_uuidMatt Wolenetz2017-02-081-1/+1
| | | | | | | | | Core of patch is from [email protected] Reference https://crbug.com/643951 Signed-off-by: Michael Niedermayer <[email protected]> Check value reduced as the code does not support values beyond INT_MAX Also the check is moved to a more common place and before integer truncation
* lavf/mov.c: Avoid heap allocation wrap in mov_read_hdlrMatt Wolenetz2017-02-081-0/+2
| | | | | | | | Core of patch is from [email protected] Reference https://crbug.com/643950 Signed-off-by: Michael Niedermayer <[email protected]> Check value reduced as the code does not support larger lengths
* matroska: demux BluRay text subtitlesPetri Hintukainen2017-02-071-0/+1
| | | | Signed-off-by: Michael Niedermayer <[email protected]>
* avformat/hlsenc: add hls_flag option to write segments to temporary file ↵Aman Gupta2017-02-071-0/+25
| | | | | | | | | | | | | | | | until complete Adds a `-hls_flags +temp_file` which will write segment data to filename.tmp, and then rename to filename when the segment is complete. This patch is similar in spirit to one used in Plex's ffmpeg fork, and allows a transcoding webserver to ensure incomplete segment files are never served up accidentally. Reviewed-by: Hendrik Leppkes <[email protected]> Reviewed-by: Bodecs Bela <[email protected]> Signed-off-by: Aman Gupta <[email protected]> Signed-off-by: Steven Liu <[email protected]>
* lavf/matroskadec: fix is_keyframe for early BlocksChris Cunningham2017-02-061-3/+7
| | | | | | | | | | | | | | | Blocks are marked as key frames whenever the "reference" field is zero. This breaks for non-keyframe Blocks with a reference timestamp of zero. The likelihood of reference timestamp being zero is increased by a longstanding bug in muxing that encodes reference timestamp as the absolute time of the referenced frame (rather than relative to the current Block timestamp, as described in MKV spec). Now using INT64_MIN to denote "no reference". Reported to chromium at http://crbug.com/497889 (contains sample)
* avformat/segment: remove last_cut check when detecting a new segmentMarton Balint2017-02-041-4/+1
| | | | | | | | | Not starting a new segment if the elapsed microsecs since the start of the day equals the the elapsed microsecs since the start of the day at the time of the last cut seems plain wrong to me, Deti do you remember the original reason behind this check? Signed-off-by: Marton Balint <[email protected]>
* lavf/isom: Support DTS Express in mov.Carl Eugen Hoyos2017-02-031-0/+1
| | | | Fixes ticket #6124.
* Merge commit '7f549b8338ed3775fec4bf10421ff5744e5866dd'Clément Bœsch2017-02-021-2/+3
|\ | | | | | | | | | | | | | | | | * commit '7f549b8338ed3775fec4bf10421ff5744e5866dd': riff: don't overwrite bps from WAVEFORMATEX if EXTENSIBLE doesn't contain that data. Only cosmetics, the change was already present. Merged-by: Clément Bœsch <[email protected]>
| * riff: don't overwrite bps from WAVEFORMATEX if EXTENSIBLE doesn't contain ↵Hendrik Leppkes2016-07-221-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | that data. According to the specification on the MSDN [1], 0 is valid for that particular field, and it should be ignored in that case. [1]: http://msdn.microsoft.com/en-us/library/windows/desktop/dd757714(v=vs.85).aspx Bug-Id: 950 Signed-off-by: Anton Khirnov <[email protected]>