summaryrefslogtreecommitdiffstats
path: root/libavformat
Commit message (Collapse)AuthorAgeFilesLines
* movenc: write correct format hvcc when tag is hvc1John Stebbins2017-07-051-1/+4
| | | | | (cherry picked from commit 1ea9b7fdf99b60c0db95a2ce97b2108469bbb245) Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* movenc: move tags definitions to where they are usedJohn Stebbins2017-07-051-31/+31
| | | | | (cherry picked from commit 1c64bae648eeb39c8d8a8d81ee142b9eec9fae7b) Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* movenc: simplify codec_tag lookupJohn Stebbins2017-07-051-53/+15
| | | | | | | | | | | mux.c init_muxer() already sets codec_tag correctly in the cases simplified here. This also adds the capability to support alternative tags for the same codec_id. (cherry picked from commit f6f86f432fe51526a7aad2bdb025d6a45d239883) Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* avformat/hlsenc: copy codec_tag when stream copySteven Liu2017-07-051-0/+8
| | | | | | | | | | | | | when use fmp4 segment type in hls and use codec copy, there have an error message. error message: [mp4 @ 0x25df020] Tag avc1 incompatible with output codec id '28' ([33][0][0][0]) [hls @ 0x2615c80] Some of the provided format options in '(null)' are not recognized Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument this patch can fix it. Signed-off-by: Liu Qi <w_liuqi@kingsoft.com> Signed-off-by: Steven Liu <lq@onvideo.cn>
* avformat/hlsenc: optimize help message default value.Steven Liu2017-07-051-2/+2
| | | | | | show the hls_segment_type default always 0, show the flag name better Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
* movenc: use correct tag list for AVOutputFormat.codec_tagJohn Stebbins2017-07-041-3/+39
| | | | | | | | | | | | | | ff_mp4_obj_type contains the wrong type of tags for AVOutputFormat.codec_tag. AVOutputFormat.codec_tag is used to validate AVCodecParameters.codec_tag so needs to be the same type of tag. Creates new tag lists for mp4 and ismv. New tag lists support same list of codecs found in ff_mp4_obj_type. psp uses the same tag list as mp4 since these both use mp4_get_codec_tag to look up tags. (cherry picked from commit 713efb2c0d013a42be4051adb7cd90a7c2cbbb4f) Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* lavf: Remove codec_tag from dashenc and smoothstreamingencMartin Storsjö2017-07-042-2/+0
| | | | | | | | | Skip the codec_tag altogether here, to let the user (try to) set whichever codec/tag is preferred; the individual chained muxer will reject invalid codecs anyway. (cherry picked from commit 61f589e31e84ae02d7ac6837f30f19c437b1fc2e) Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* avfomat/hlsenc: support fmp4 format in hlsSteven Liu2017-07-031-16/+91
| | | | | | | | | | | add the fmp4 format into hlsenc because the fmp4 format add into hls from version 7. the spec link is: https://tools.ietf.org/html/draft-pantos-http-live-streaming-20 and the describe on WWDC https://developer.apple.com/videos/play/wwdc2017/515/ Signed-off-by: Steven Liu <lq@onvideo.cn>
* libavformat/avformat.h: Move docs inside of #ifMax Weber2017-06-301-1/+1
| | | | | | | Otherwise AVTimebaseSource gets av_apply_bitstream_filters' documentation in doxygen. Signed-off-by: Max Weber <mii7303@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/gdv: add decompression for 2 and 5 methodPaul B Mahol2017-06-291-3/+41
| | | | Signed-off-by: Paul B Mahol <onemda@gmail.com>
* Update mp4 object type for VP9KongQun Yang2017-06-281-1/+1
| | | | | | Updated to the standard value 0xB1 defined in mp4ra.org. Signed-off-by: James Almer <jamrial@gmail.com>
* Interplay MVE: Implement frame format 0x10Hein-Pieter van Braam2017-06-271-16/+52
| | | | | | | | | | | | | | | | | | | | This implements the 0x10 frame format for Interplay MVE movies. The format is a variation on the 0x06 format with some changes. In addition to the decoding map there's also a skip map. This skip map is used to determine what 8x8 blocks can change in a particular frame. This format expects to be able to copy an 8x8 block from before the last time it was changed. This can be an arbitrary time in the past. In order to implement this this decoder allocates two additional AVFrames where actual decoding happens. At the end of a frame decoding changed blocks are copied to a finished frame based on the skip map. The skip map's encoding is a little convulted, I'll refer to the code for details. Values in the decoding map are the same as in format 0x06. Signed-off-by: Hein-Pieter van Braam <hp@tmm.cx>
* Interplay MVE: Implement frame format 0x06Hein-Pieter van Braam2017-06-271-3/+12
| | | | | | | | | | | | | | | | | | | | | | | | | This implements the 0x06 frame format for Interplay MVE movies. The format is relatively simple. The video data consists of two parts: 16 bits per 8x8 block movement data a number of 8x8 blocks of pixel data For each 8x8 block of pixel data the movement data is consulted. There are 3 possible meanings of the movement data: * zero : copy the 8x8 block from the pixel data * negative : copy the 8x8 block from the previous frame from an offset determined by the actual value of the entry -0xC000. * positive : copy the 8x8 block from the current frame from an offset determined by the actual value of the entry -0x4000 Decoding happens in two passes, in the fist pass only new pixeldata is copied, during the second pass data is copied from the previous and current frames. The codec expects that the current frame being decoded to still has the data from 2 frames ago on it when decoding starts. Signed-off-by: Hein-Pieter van Braam <hp@tmm.cx>
* Interplay MVE: Refactor IP packet formatHein-Pieter van Braam2017-06-271-17/+29
| | | | | | | | Interplay MVE can contain up to three different frame formats. They require different streams of information to render a frame. This patch changes the IP packet format to prepare for the extra frame formats. Signed-off-by: Hein-Pieter van Braam <hp@tmm.cx>
* Interplay MVE: Implement MVE SEND_BUFFER operationHein-Pieter van Braam2017-06-271-5/+11
| | | | | | | | | | | Interplay MVE movies have a SEND_BUFFER operation. Only after this command does the current decoding buffer get displayed. This is required for the other frame formats. They are fixed-size and can't always encode a full frame worth of pixeldata. This code prevents half-finished frames from being emitted. Signed-off-by: Hein-Pieter van Braam <hp@tmm.cx>
* avformat: Fix Pro-MPEG non-square matrixAndreas Håkon2017-06-271-1/+1
| | | | | Reviewed-by:vtarca@mobibase.com Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/file: increase min/max packet size to 256k for written filesMarton Balint2017-06-241-0/+5
| | | | | | | | Buffering more than one packet can be a huge performance improvement for encoding files with small packets (e.g. wav) over SMB/CIFS. Acked-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: Marton Balint <cus@passwd.hu>
* avformat: make flush_packets a tri-state and set it to -1 (auto) by defaultMarton Balint2017-06-242-8/+15
| | | | | | | | | If flushing is not disabled, then mux.c will signal the end of the packets with an AVIO_DATA_MARKER_FLUSH_POINT, and aviobuf will be able to decide to flush or not based on the preferred minimum packet size set by the used protocol. Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: Marton Balint <cus@passwd.hu>
* avformat/aviobuf: add support for specifying minimum packet size and marking ↵Marton Balint2017-06-244-2/+21
| | | | | | | flush points Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: Marton Balint <cus@passwd.hu>
* avformat/aviobuf: fix flushing write buffers after seeking backward or forwardMarton Balint2017-06-243-29/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* avformat/oggenc: check for stream private data in ogg_free()James Almer2017-06-221-0/+2
| | | | | | | | | | Fixes a NULL pointer derefence when ogg_init() returns a failure and a stream's private data was not yet allocated. This is a regression since 3c5a53cdfa099bba8bd951f95b85727b4b3b5d68 Reviewed-by: Paul B Mahol <onemda@gmail.com> Signed-off-by: James Almer <jamrial@gmail.com>
* avformat/hlsenc: donnot show duplicate segment warning at byterange modeSteven Liu2017-06-191-2/+3
| | | | | | | | When the hlsenc at BYTERANGE mode, it should not show the warning message: "Duplicated segment filename detected:" Reported-by: Marco <marco@worldcast.com> Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
* avformat/oggenc: add ogg_init() and ogg_free()James Almer2017-06-181-4/+28
| | | | | Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: James Almer <jamrial@gmail.com>
* avformat/rmenc: do not access AVIO write buffer directlyMarton Balint2017-06-181-11/+8
| | | | | Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: Marton Balint <cus@passwd.hu>
* Cleanly exit at the end of an Interplay MVEHein-Pieter van Braam2017-06-181-0/+2
| | | | | | Reviewed-by: Paul B Mahol <onemda@gmail.com> Signed-off-by: Hein-Pieter van Braam <hp@tmm.cx> Signed-off-by: James Almer <jamrial@gmail.com>
* libavformat/file: return AVERROR_EOF on EOFDaniel Kucera2017-06-171-0/+2
| | | | | | Signed-off-by: Daniel Kucera <daniel.kucera@gmail.com> Reviewed-by: Nicolas George <george@nsup.org> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* libavformat/subfile: return AVERROR_EOF on EOFDaniel Kucera2017-06-171-1/+1
| | | | | | Signed-off-by: Daniel Kucera <daniel.kucera@gmail.com> Reviewed-by: Nicolas George <george@nsup.org> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/libssh: check the user provided a password before trying to use itJames Almer2017-06-171-1/+1
| | | | | | | Fixes ticket #6413 Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: James Almer <jamrial@gmail.com>
* avformat/pcmdec: fix memory leakTimo Rothenpieler2017-06-131-0/+2
| | | | Fixes CID 1396267
* avformat/librtmp: check return value of setsockoptTimo Rothenpieler2017-06-131-1/+4
| | | | Fixes CID 1396837
* avformat/mov: add support for reading VP Codec Configuration BoxJames Almer2017-06-111-0/+45
| | | | | | | As defined in "VP Codec ISO Media File Format Binding v1.0" https://github.com/webmproject/vp9-dash/blob/master/VPCodecISOMediaFileFormatBinding.md Signed-off-by: James Almer <jamrial@gmail.com>
* avformat: add Gremlin Digital Video demuxerPaul B Mahol2017-06-114-2/+165
| | | | Signed-off-by: Paul B Mahol <onemda@gmail.com>
* lavf/mov.c: offset index timestamps by the minimum pts to make first pts zeroSasi Inguva2017-06-091-17/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the videos starts with B frame, then the minimum composition time as computed by stts + ctts will be non-zero. Hence we need to shift the DTS, so that the first pts is zero. This was the intention of that code-block. However it was subtracting by the wrong amount. For example, for one of the videos in the bug nonFormatted.mp4 we have stts: sample_count duration 960 1001 ctts: sample_count duration 1 3003 2 0 1 3003 .... The resulting composition times are : 3003, 1001, 2002, 6006, ... The minimum composition time or PTS is 1001, which should be used to offset DTS. However the code block was wrongly using ctts[0] which is 3003. Hence the PTS was negative. This change computes the minimum pts encountered while fixing the index, and then subtracts it from all the timestamps after the edit list fixes are applied. Samples files available from: https://bugs.chromium.org/p/chromium/issues/detail?id=721451 https://bugs.chromium.org/p/chromium/issues/detail?id=723537 fate-suite/h264/twofields_packet.mp4 is a similar file starting with 2 B frames. Before this change the PTS of first two B-frames was -6006 and -3003, and I am guessing one of them got dropped when being decoded and remuxed to the framecrc before, and now it is not being dropped. Signed-off-by: Sasi Inguva <isasi@google.com>
* libavformat/http: return EIO when ffurl_read return 0, but s->off < target_endraymondzheng2017-06-091-1/+1
| | | | | Approved-by: "Ronald S. Bultje" <rsbultje@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* lavf: consider codec framerate for framerate detectionwm42017-06-073-0/+17
| | | | | | | Fixes detection of some TV sample as 24.5 FPS. With the patch applied, it's detected as 25 FPS. This is enabled for mpegts only.
* avformat/utils: Slightly un-clutter code in determinable_frame_size() by ↵Michael Niedermayer2017-06-061-5/+6
| | | | | | using a switch Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/hls: Check local file extensionsMichael Niedermayer2017-06-051-1/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reduces the attack surface of local file-system information leaking. It prevents the existing exploit leading to an information leak. As well as similar hypothetical attacks. Leaks of information from files and symlinks ending in common multimedia extensions are still possible. But files with sensitive information like private keys and passwords generally do not use common multimedia filename extensions. It does not stop leaks via remote addresses in the LAN. The existing exploit depends on a specific decoder as well. It does appear though that the exploit should be possible with any decoder. The problem is that as long as sensitive information gets into the decoder, the output of the decoder becomes sensitive as well. The only obvious solution is to prevent access to sensitive information. Or to disable hls or possibly some of its feature. More complex solutions like checking the path to limit access to only subdirectories of the hls path may work as an alternative. But such solutions are fragile and tricky to implement portably and would not stop every possible attack nor would they work with all valid hls files. Developers have expressed their dislike / objected to disabling hls by default as well as disabling hls with local files. There also where objections against restricting remote url file extensions. This here is a less robust but also lower inconvenience solution. It can be applied stand alone or together with other solutions. limiting the check to local files was suggested by nevcairiel This recommits the security fix without the author name joke which was originally requested by Nicolas. Found-by: Emil Lerner and Pavel Cheremushkin Reported-by: Thierry Foucu <tfoucu@google.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* Revert "avformat/hls: Check local file extensions"Michael Niedermayer2017-06-051-17/+1
| | | | | Requested-by: Paul B Mahol <onemda@gmail.com> This reverts commit caf7d6178a4d5f24c915da48410a9790b21703aa.
* avformat/hls: Check local file extensionsSysiphus2017-06-051-1/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reduces the attack surface of local file-system information leaking. It prevents the existing exploit leading to an information leak. As well as similar hypothetical attacks. Leaks of information from files and symlinks ending in common multimedia extensions are still possible. But files with sensitive information like private keys and passwords generally do not use common multimedia filename extensions. It does not stop leaks via remote addresses in the LAN. The existing exploit depends on a specific decoder as well. It does appear though that the exploit should be possible with any decoder. The problem is that as long as sensitive information gets into the decoder, the output of the decoder becomes sensitive as well. The only obvious solution is to prevent access to sensitive information. Or to disable hls or possibly some of its feature. More complex solutions like checking the path to limit access to only subdirectories of the hls path may work as an alternative. But such solutions are fragile and tricky to implement portably and would not stop every possible attack nor would they work with all valid hls files. Developers have expressed their dislike / objected to disabling hls by default as well as disabling hls with local files. There also where objections against restricting remote url file extensions. This here is a less robust but also lower inconvenience solution. It can be applied stand alone or together with other solutions. limiting the check to local files was suggested by nevcairiel Found-by: Emil Lerner and Pavel Cheremushkin Reported-by: Thierry Foucu <tfoucu@google.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/aacdec: add a custom read_packet functionJames Almer2017-06-041-2/+42
| | | | | | | | | | Atempt to read and propagate only full ADTS frames and not other data, like id3v1 or APETags at the end of the file. Fixes ticket #6437. Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: James Almer <jamrial@gmail.com>
* avformat/utils: change bitrate to int64_t in av_find_best_streamMarton Balint2017-06-041-2/+4
| | | | | Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: Marton Balint <cus@passwd.hu>
* avformat/utils: return impaired streams in av_find_best_stream if only those ↵Marton Balint2017-06-041-8/+9
| | | | | | | | | exist Fixes ticket #6397. Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: Marton Balint <cus@passwd.hu>
* avformat/options: log filename on openMichael Niedermayer2017-06-032-1/+13
| | | | | | | | | | | 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/matroskaenc: also write chapters when output is WebMJames Almer2017-06-021-13/+16
| | | | | | | | | | WebM supports a subset of elements from the Chapters master. See https://www.webmproject.org/docs/container/#chapters Addresses ticket #6425 Reviewed-by: James Zern <jzern@google.com> Signed-off-by: James Almer <jamrial@gmail.com>
* avformat/tls_schannel: log unknown error codeswm42017-05-311-1/+1
|
* avformat/avidec: Limit formats in gab2 to srt and ass/ssaMichael Niedermayer2017-05-311-0/+3
| | | | | | | | | This prevents part of one exploit leading to an information leak Found-by: Emil Lerner and Pavel Cheremushkin Reported-by: Thierry Foucu <tfoucu@google.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/avidec: Fix txts fmts parsingMichael Niedermayer2017-05-311-1/+2
| | | | | | Fixes: subtitle.avi from vlc/ticket/1162 Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* lavf: remove the libnut library wrapperRostislav Pehlivanov2017-05-293-327/+0
| | | | | libnut is outdated and not developed anymore, all nut developments happens in this repo, so users are getting mislead
* libavformat/hls: Observe Set-Cookie headersMicah Galizia2017-05-291-2/+10
| | | | | Signed-off-by: Micah Galizia <micahgalizia@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* movenc: encryption with time code track fixerankor2017-05-281-3/+3
| | | | | | | | | instead of deciding whether to encrypt based on the encryption scheme, decide according to whether cenc was initialized or not. mov_create_timecode_track calls ff_mov_write_packet with a track that doesn't have cenc initialized. Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
OpenPOWER on IntegriCloud