Commit graph

21374 commits

Author SHA1 Message Date
Nikolas Bowe
2b8458fcc5 avformat/movenc: Add more error checking when writing sample entries.
Fixes a problem where a sample entry which cannot be written correctly appears to succeed, but produces an invalid file.
For example, this command:
ffmpeg -f lavfi -i sine=frequency=1000:duration=5 -codec:a ac3 -movflags +empty_moov -frag_duration 5000000 /tmp/foo.mp4
produced a file with the ac-3 sample entry, but no AC3SpecificBox (dac3) child, which is invalid according to ETSI TS 102 366.

Reviewed-by: Baptiste Coudurier <baptiste.coudurier@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2019-02-07 00:29:01 +01:00
Paweł Wegner
835ab35ef0 libavformat/dashdec: disable seeking only for live streams.
Signed-off-by: Paweł Wegner <pawel.wegner95@gmail.com>
2019-02-06 13:01:34 +01:00
Marton Balint
4b46d1ee46 avformat/async: fix assertion condition when draining buffer
Fixes some random assertion failures with

ffprobe -show_packets async:samples/ffmpeg-bugs/trac/ticket6132/Samsung_HDR_-_Chasing_the_Light.ts > /dev/null

Signed-off-by: Marton Balint <cus@passwd.hu>
2019-02-04 21:43:30 +01:00
Marton Balint
56c58b99d0 avformat/mpegts: cache PID discard values
discard_pid can be quite expensive, so let's cache it and recalculate it on
every packet start.

ffmpeg -y -i samples/MPEG-VOB/sdtv/RAI.ts -c copy -map 0✌️0 -map 0🅰️0 -f mpegts /dev/null

Before:
   1685 decicycles in handle_packet,  523483 runs,    805 skips

After:
    883 decicycles in handle_packet,  523505 runs,    783 skips

Signed-off-by: Marton Balint <cus@passwd.hu>
2019-02-04 21:43:30 +01:00
Michael Niedermayer
497c9b0cce avformat/rtsp: Check number of streams in sdp_parse_line()
Fixes: OOM

Found-by: Michael Hanselmann <public@hansmi.ch>
Reviewed-by: Michael Hanselmann <public@hansmi.ch>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2019-01-31 17:33:50 +01:00
Steven Liu
1e03d60054 avformat/hlsenc: add var_stream_map LANGUAGE field string parameter
use a:0,agroup:aud_low,default:Yes,language:CHN a:1,agroup:aud_low,language:ENG
        a:2,agroup:aud_high,default:YesYes,language:CHN a:3,agroup:aud_high,language:ENG
        v:0,agroup:aud_low v:1,agroup:aud_high
        create master m3u8 list.

result:
EXTM3U
EXT-X-VERSION:3
EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="group_aud_low",NAME="audio_0",DEFAULT=YES,LANGUAGE="CHN",URI="out_0.m3u8"
EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="group_aud_low",NAME="audio_1",DEFAULT=NO,LANGUAGE="ENG",URI="out_1.m3u8"
EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="group_aud_high",NAME="audio_2",DEFAULT=YES,LANGUAGE="CHN",URI="out_2.m3u8"
EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="group_aud_high",NAME="audio_3",DEFAULT=NO,LANGUAGE="ENG",URI="out_3.m3u8"
EXT-X-STREAM-INF:BANDWIDTH=1170400,RESOLUTION=640x480,CODECS="avc1.64001e,mp4a.40.2",AUDIO="group_aud_low"
out_4.m3u8
EXT-X-STREAM-INF:BANDWIDTH=3440800,RESOLUTION=640x480,CODECS="avc1.64001e,mp4a.40.2",AUDIO="group_aud_high"
out_5.m3u8

Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
2019-01-31 16:17:11 +08:00
Steven Liu
6a25bb5aa4 avformat/hlsenc: add var_stream_map DEFAULT field status parameter
use a:0,agroup:aud_low,default:Yes a:1,agroup:aud_low,
    a:2,agroup:aud_high,default:Yes a:3, agroup:aud_high,
    v:0,agroup:aud_low v:1,agroup:aud_high
    create master m3u8 list.

result:
EXTM3U
EXT-X-VERSION:3
EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="group_aud_low",NAME="audio_0",DEFAULT=YES,URI="out_0.m3u8"
EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="group_aud_low",NAME="audio_1",DEFAULT=NO,URI="out_1.m3u8"
EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="group_aud_high",NAME="audio_2",DEFAULT=YES,URI="out_2.m3u8"
EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="group_aud_high",NAME="audio_3",DEFAULT=NO,URI="out_3.m3u8"
EXT-X-STREAM-INF:BANDWIDTH=1170400,RESOLUTION=640x480,CODECS="avc1.64001e,mp4a.40.2",AUDIO="group_aud_low"
out_4.m3u8
EXT-X-STREAM-INF:BANDWIDTH=3440800,RESOLUTION=640x480,CODECS="avc1.64001e,mp4a.40.2",AUDIO="group_aud_high"
out_5.m3u8

Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
2019-01-31 16:17:02 +08:00
Steven Liu
62e8644bca avformat/hlsenc: make the EXT-X-MEDIA NAME field by stream id.
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
2019-01-31 16:16:53 +08:00
Michael Niedermayer
0b50f27635 avformat/rtsp: Clear reply in every iteration in ff_rtsp_connect()
Fixes: Infinite loop

Found-by: Michael Hanselmann <public@hansmi.ch>
Reviewed-by: Michael Hanselmann <public@hansmi.ch>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2019-01-31 00:24:38 +01:00
Michael Niedermayer
b559c58a03 avformat/flvdec: Try to support some concatenated flv files
Fixes: discont.flv

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2019-01-31 00:24:38 +01:00
Carl Eugen Hoyos
8a23a2b7de lavf/asf: Remove an unneeded forward declaration. 2019-01-30 23:15:28 +01:00
Karthick J
789d3b98d1 avformat/tee : Pass standards compliance value to slave muxers as well 2019-01-30 19:32:34 +01:00
Gyan Doshi
2e2b44baba avformat/http: clarify that ffmpeg will attempt to add missing CRLF 2019-01-29 09:58:30 +05:30
Karthick J
1db30d6cec avformat/dashenc: Skip writing trailer for MP4 output when in streaming mode
In streaming mode mp4 trailer is not required for playout.
2019-01-28 11:07:10 +05:30
Carl Eugen Hoyos
d3a6943804 lavf/subviewerdec: Skip leading BOM.
Fixes ticket #7661.
2019-01-27 14:25:53 +01:00
Carl Eugen Hoyos
8a788ff5d6 lavf/cafdec: Do not fail for unknown atoms with negative size.
The specification requires the demuxer to only read the data
atom up to its given size, this is necessary as atoms are
allowed at the end of the file.
This patch duplicates the behaviour of the QuickTime player.
2019-01-27 14:14:59 +01:00
Paul B Mahol
795af110f7 avcodec: add ARBC decoder
Thanks Kostya for great help in reversing binary.
2019-01-27 13:53:29 +01:00
Carl Eugen Hoyos
93b967157d lavf/supenc: Remove some unneeded casts. 2019-01-24 13:08:27 +01:00
Carl Eugen Hoyos
406f8d9c9a lavf/movenc: Mention video_track_timescale as option to fix the timescale.
Smarter improvements for this error message were suggested in the past
but this is certainly an improvement.
2019-01-24 12:52:50 +01:00
caohui
ee1c63eb82 lavf/hlsproto: Replace a wrong eol comma with a semicolon. 2019-01-23 23:17:03 +01:00
Lou Logan
d92f06eb66 avformat/img2enc: mention -frames:v in error message
Signed-off-by: Lou Logan <lou@lrcd.com>
Signed-off-by: Kieran O Leary <kieran.o.leary@gmail.com>
2019-01-22 10:59:10 -09:00
Marton Balint
1b126ec408 avformat/concatdec: always re-calculate start time and duration
This allows the underlying files to change their duration on subsequent
avformat context opens.

An example use case where this matters:

ffconcat version 1.0
file dummy.mxf
file dummy.mxf

ffmpeg -re -stream_loop -1 -i dummy.ffconcat -f sdl2 none

The user can seamlessly change the input by atomically replacing dummy.mxf.

v2: Set ConcatFile duration in read_header for all segments with known
durations because from now on we always recalculate the start time in
open_file, and an instant seek could have caused unset ConcatFile durations.

Signed-off-by: Marton Balint <cus@passwd.hu>
2019-01-22 20:14:11 +01:00
Marton Balint
679cbd8f18 avformat/concatdec: fix cur_dts based duration calculation with nonzero stream start_time
Signed-off-by: Marton Balint <cus@passwd.hu>
2019-01-22 20:14:11 +01:00
Marton Balint
0a98622cbe avformat/concatdec: factorize the duration calculating function
Signed-off-by: Marton Balint <cus@passwd.hu>
2019-01-22 20:14:11 +01:00
Karthick J
b6d96a6bcc avformat/dashenc: Format xs:datetime in millisecond precision
For low latency streaming even milliseconds matter!
2019-01-21 14:50:23 +05:30
Jun Zhao
32fb83e431 lavc/hls: Cosmetics: Fix indentation for free_segment_list
Commit 673d8cfd51 missed the indent

Signed-off-by: Jun Zhao <mypopydev@gmail.com>
2019-01-19 10:13:19 +08:00
Paul B Mahol
282a471857 avformat/hcom: check probe buffer size 2019-01-16 10:26:53 +01:00
Carl Eugen Hoyos
06f65a17a3 lavf/rtpproto: Use the correct patch when including poll.h
Fixes a warning using musl:
In file included from libavformat/rtpproto.c:43:0:
/usr/local/musl/include/sys/poll.h:1:2: warning: #warning redirecting incorrect #include <sys/poll.h> to <poll.h>
2019-01-16 00:09:21 +01:00
Paul B Mahol
268d146649 avformat: add HCOM demuxer 2019-01-15 10:57:29 +01:00
Carl Eugen Hoyos
5d958f0955 lavf/mov: Do not fail hard for more invalid atoms.
This is what several other players do and what FFmpeg already does for the sidx atom.

Fixes ticket #7679.
2019-01-14 22:30:27 +01:00
Karthick Jeyapal
e9564f7fea avformat/file: Fix file delete for Windows
Fixes bug id : 7638
2019-01-07 11:41:20 +05:30
nu774
e0686318dd avformat/vapoursynth: properly initialize err variable in read_header_vs()
The variable "err" is not initialized, and set only when something went wrong.
When everything is OK, nobody sets it, so using it result in UB.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2019-01-04 14:58:19 +01:00
Steven Liu
b9523f2fd3 avformat/hlsenc: free variant streams after write all variant streams info
fix ticket: 7631

Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
2019-01-04 13:29:28 +08:00
Derek Buitenhuis
8f585c3c55 mov: Remove duration-of-last-frame heuristic hack
This breaks totally valid files that get caught in its heuristic.

This, according to the commit message, is my own doing, having asked
Michael to implement this check and providing a sample that was
"wrong". I am now atoning for my sins, and removing this hack, having
seen the light (aka that this was silly to do in the first place).

Resotores correct behavior on valid files.

This reverts commit 8e5e84c2a2.

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2019-01-02 10:45:43 -05:00
Paul B Mahol
37af319086 avformat/anm: use ff_get_extradata() 2019-01-02 16:28:46 +01:00
Paul B Mahol
e8d36ba477 avformat/yop: use ff_get_extradata() 2019-01-02 16:25:26 +01:00
Paul B Mahol
1139887ace avformat/acm: use ff_get_extradata() 2019-01-02 16:21:46 +01:00
Paul B Mahol
25c7aa9974 aformat/bfi: use ff_get_extradata() 2019-01-02 16:14:19 +01:00
Paul B Mahol
41c1643d75 avcodec: add HYMT decoder 2018-12-31 15:41:23 +01:00
Paul B Mahol
8a8cce078c avformat/au: do not use invalid block_align for small bits per sample
Fixes #5481.
2018-12-31 15:21:47 +01:00
Michael Niedermayer
571af98a59 avformat/libopenmpt: Fix successfull typo
Reviewed-by: Lou Logan <lou@lrcd.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-12-31 02:37:08 +01:00
Marton Balint
7f42276aa9 avformat/concatdec: always allow seeking to start
Signed-off-by: Marton Balint <cus@passwd.hu>
2018-12-30 21:06:19 +01:00
David Bryant
db109373d8 avformat/wvdec: detect and error out on WavPack DSD files
Not currently supported.
2018-12-28 12:53:24 +01:00
Paul B Mahol
cfa7709d05 avcodec/wavpack: fix decoding of files with many channels
Fixes decoding of Run_The_Race_-_3rd_Order_Ambisonic_SN3D.wv
2018-12-28 12:16:39 +01:00
Carl Eugen Hoyos
01db03f158 lavf/vividas: Support demuxing on big-endian hardware. 2018-12-28 00:20:47 +01:00
Carl Eugen Hoyos
17aed996bc lavf/vividas: Do not increase extradata_size after allocation.
Avoids a crash in avcodec_parameters_from_context().
2018-12-28 00:20:41 +01:00
Steven Liu
cef857da48 avformat/hlsenc: remove unused variable to fix compiler warning
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
2018-12-26 19:29:18 +08:00
Adrian Guzowski
c822d70c3d Fix usage of temp_file flag in hls_flags option.
This is a regression introduced by 223d2bde22.
It appears that regression was introduced in 4.1, 4.0.x does not share
this behaviour.

Temp files were not created for MPEG-TS segments options - HLS_TEMP_FILE
flag was never set on AVFormatContext, it is however set on HLSContext object.
In order to fix this issue, proper flags field must be checked. In addition,
renaming code was messed up and apparently was working only for MP4 files.
2018-12-26 19:25:40 +08:00
vkot
3ee735901e avformat/hls.c: Properly free prev_segments dynarray after playlist parsing 2018-12-26 19:22:11 +08:00
Marton Balint
70c86deb8e avformat/mxfenc: support writing subsecond precision timestamps
Signed-off-by: Marton Balint <cus@passwd.hu>
2018-12-25 20:16:29 +01:00