Commit Graph

20670 Commits

Author SHA1 Message Date
Marton Balint
dc5d151568 avformat/hlsenc: use av_bprintf without buffer limit in replace_int_data_in_filename
In preparation for the deprecation of AVFormatContext->filename.

Signed-off-by: Marton Balint <cus@passwd.hu>
2018-01-28 23:06:43 +01:00
wm4
23ffeb91fe hls: don't print a certain warning if playlist loading is aborted
AVERROR_EXIT happens when the user's interrupt callback signals that
playback should be aborted. In this case, the demuxer shouldn't print a
warning, as it's expected that all network accesses are stopped.
2018-01-27 04:10:52 +01:00
wm4
6194d7e564 avformat, hls: add a flag to signal unavailability of seeking
The seek function can just return an error if seeking is unavailable,
but often this is too late. Add a flag that signals that the stream is
unseekable, and use it in HLS.
2018-01-27 04:10:52 +01:00
wm4
637dfa3942 hls: do not allow fallback to generic seeking
This makes little sense due to how HLS works, and only causes some
additional annoyances if the HLS read_seek function fails (for example
if it's a live stream). It was most likely unintended.
2018-01-27 04:10:52 +01:00
Karthick Jeyapal
18e2ac032e avformat/dashenc: Signal http end of chunk(http_shutdown) explicitly
Currently http end of chunk is signalled implicitly in dashenc_io_open().
This mean playlists http writes would have to wait upto a segment duration to signal end of chunk causing delays.
This patch will fix that problem and improve performance.
2018-01-26 07:26:09 +05:30
Karthick Jeyapal
0df9d0f4cb avformat/dashenc: Fix a resource leak when http persistent in enabled 2018-01-26 07:25:31 +05:30
Josh Allmann
ee88f31d34 libavformat/rtmpproto: Plug leak if sending bytes read report fails.
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-01-25 20:42:39 +01:00
Vishwanath Dixit
1948b76a1b avformat/hlsenc: closed caption tags in the master playlist 2018-01-24 11:42:57 +08:00
Richard Shaffer
8a4cc0a256 avformat: add option to parse/store ID3 PRIV tags in metadata.
Enables getting access to ID3 PRIV tags from the command-line or metadata API
when demuxing. The PRIV owner is stored as the metadata key prepended with
"id3v2_priv.", and the data is stored as the metadata value. As PRIV tags may
contain arbitrary data, non-printable characters, including NULL bytes, are
escaped as \xXX.

Similarly, any metadata tags that begin with "id3v2_priv." are inserted as ID3
PRIV tags into the output (assuming the format supports ID3). \xXX sequences in
the value are un-escaped to their byte value.

Signed-off-by: wm4 <nfxjfg@googlemail.com>
2018-01-24 04:01:01 +01:00
Colin NG
78e884f3fb libavformat/dashdec: Fix for ticket 6856 (filename limited to 1024) 2018-01-21 13:56:57 +08:00
Colin NG
7a63da8910 libavformat/dashdec: Fix for ticket 6658 (Dash demuxer segfault)
1 Add function 'resolve_content_path' to propagate the baseURL from
upper level nodes.
 * if no baseURL is available, the path of mpd file will be set as the baseURL.
2 Remove checking for newly established connection.
3 Establish the communication protocol in each connection rather than
 applying one protocol to all connection.
2018-01-21 13:35:30 +08:00
Colin NG
8db4ef3e6d avformat/dashdec.c: Download dash content with byte range info 2018-01-21 13:27:48 +08:00
Brendan McGrath
1f48c5c067 dashdec: Only free url string if being reused
If no representation bandwidth value is set, the url value returned
by get_content_url is corrupt (as it has been freed).
This change ensures the url string is not freed unless it is about
to be reused
Changes since v1:
 1 removed the unneeded 'if' statement (as pointed out by Michael Niedermayer
 2 added comment to make it clear why the av_free was required
Signed-off-by: Brendan McGrath <redmcg@redmandi.dyndns.org>
2018-01-21 13:20:02 +08:00
Brendan McGrath
2472dbc7a7 avformat/hlsenc: Check that data is set
If codecpar->extradata is not set (for example, when the stream goes
through the 'tee' muxer), then a segfault occurs.
This patch ensures the data variable is not null before attempting
to access it
Before the var_stream_map option was available - I was using the tee
muxer to create each resolution as an individual stream.
When running this configuration after the most recent hlsenc change
I hit a segfault
The most simple command which recreates the segfault is:
ffmpeg -i in.ts -map 0:a -map 0:v -c:a aac -c:v h264 -f tee [select=\'a,v\':f=hls]tv_hls_hd.m3u8

Signed-off-by: Brendan McGrath <redmcg@redmandi.dyndns.org>
2018-01-21 13:16:42 +08:00
sfan5
777d6c677b dashdec: Make use of frame rate specified in Representation
If the manifest provides this, setting r_frame_rate
avoids warnings regarding frame rate estimation.
2018-01-21 13:14:51 +08:00
Carl Eugen Hoyos
251f0bcb7b lavf/rawdec: Also probe the last byte of mjpeg streams.
Fixes ticket #6957.
2018-01-21 03:46:40 +01:00
Nikolas Bowe
ef5994e09d avformat/lrcdec: Fix memory leak in lrc_read_header()
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-01-20 21:32:04 +01:00
Carl Eugen Hoyos
7652af9df0 lavf/swfdec: Reduce score when auto-detecting swf files.
Not more than 32bit are tested.
2018-01-20 15:41:40 +01:00
Nikolas Bowe
e07649e618 avformat/matroskadec: Fix float-cast-overflow undefined behavior in matroska_parse_tracks()
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-01-19 22:33:31 +01:00
Karthick Jeyapal
0afa171f25 avformat/hlsenc: Add CODECS attribute to master playlist 2018-01-19 17:03:09 +08:00
James Almer
4f6b34f1f8 avformat: small AVFormatContext doxy cosmetics
Signed-off-by: James Almer <jamrial@gmail.com>
2018-01-18 13:00:25 -03:00
James Almer
1b5d3c08e3 avformat: small cosmetics after 6512ff72f9
Signed-off-by: James Almer <jamrial@gmail.com>
2018-01-17 19:39:33 -03:00
wm4
631c56a8e4 avformat: make avformat_network_init() explicitly optional
It was sort of optional before - if you didn't call it, networking was
initialized on demand, and an ugly warning was logged. Also, the doxygen
comments threatened that it would be made strictly required one day.

Make it explicitly optional. I would prefer to deprecate it fully, but
there might still be legitimate reasons to use this. But the average
user won't need it.

This is needed only for two reasons: to initialize TLS libraries like
OpenSSL and GnuTLS, and winsock.

OpenSSL and GnuTLS were already silently initialized on demand if the
global network init function was not called. They also have various
thread-safety acrobatics, which make concurrent initialization within
libavformat safe. In addition, the libraries are moving towards making
their global init functions safe, which removes all need for central
global init. In particular, GnuTLS 3.5.16 and OpenSSL 1.1.0g have been
found to have safe init functions. In all cases, they use internal
reference counters to avoid that the global uninit functions interfere
with concurrent uses of the library by other API users who called global
init.

winsock should be thread-safe as well, and maintains an internal
reference counter as well.

Since we still support ancient TLS libraries, which do not have this
fixed, and since it's unknown whether winsock and GnuTLS
reinitialization is costly in any way, don't deprecate the libavformat
functions yet.
2018-01-16 12:57:04 +01:00
wm4
6512ff72f9 avformat: deprecate another ffserver API leftover 2018-01-16 12:54:53 +01:00
wm4
43e1ccfea1 http: cosmetics: reformat reconnect check for better readability
The condition was a bit too long, and most editors will break the line
and turn it into an unreadable mess. Move out some of the conditions.

This should not change the behavior.
2018-01-15 12:37:30 +01:00
sfan5
57dbabd9c1 dashdec: Support SegmentTemplate inside Period
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
2018-01-14 23:02:26 +08:00
sfan5
01d74c4055 dashdec: Avoid trying to read any segments beyond the last
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
2018-01-14 23:01:45 +08:00
sfan5
74b143d81f dashdec: Correct seeking behaviour
dash_read_seek() is called only once to issue a seek
of *all* streams to the specified timestamp. But to
avoid reopening each stream, do a "dry run" for streams
that are in a discarded state.

Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
2018-01-14 22:36:02 +08:00
sfan5
bb0cc2e7bd dashdec: Search for segment timeline inside AdaptionSets too 2018-01-14 22:35:31 +08:00
sfan5
94cc16499f dashdec: Support for multiple video/audio streams
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
2018-01-14 22:34:43 +08:00
sfan5
66e551eafb dashdec: Expose bandwidth and representation ID as metadata
The primary goal was making it viable to play YouTube/Vimeo/... videos
using the native demuxer, since mpv currently uses a workaround in form
of Edit Decision Lists (EDL).

Implemented features:

1 Exposing id / bitrate as stream metadata (similar to the HLS demuxer)
2 Support for multiple video and audio streams
3 A few minor parts of the specification that are in use at YouTube

Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
2018-01-14 22:33:57 +08:00
Gyan Doshi
96f94624e0 avformat/adtsenc: allow only AAC streams
The ADTS muxer will silently (attempt to) mux any audio stream passed to it.
Patch adds a codec check.

Signed-off-by: James Almer <jamrial@gmail.com>
2018-01-14 09:57:51 -03:00
James Almer
02dba49dd3 avformat/adtsenc: add adts_init()
Signed-off-by: James Almer <jamrial@gmail.com>
2018-01-14 09:57:42 -03:00
Richard Shaffer
9147c09755 avformat/http: fix memory leak in parse_cookie.
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-01-12 12:31:55 +01:00
Jörn Heusipp
8b1b25a86f avformat/libopenmpt: Update to libopenmpt 0.3 API
libopenmpt 0.3 deprecates openmpt_module_create_from_memory() and
provides a replacement function openmpt_module_create_from_memory2().

Detecting libopenmpt 0.3 can be done at build time via the API
version macros provided by libopenmpt. libopenmpt 0.2 did not provide
all required macros, however libopenmpt documents the required #define
shims that can be safely added for libopenmpt 0.2.

Using openmpt_module_create_from_memory2() instead of
openmpt_module_create_from_memory() avoids the deprecation warning
when building ffmpeg with libopenmpt 0.3.

openmpt_module_create_from_memory2() provides more fine-grained error
reporting and in particular allows distinguishing out-of-memory from
input file parsing errors. Return appropriate ffmpeg errors
accordingly.

libopenmpt 0.3 is ABI and API compatible with applications built
against libopenmpt 0.2. Building ffmpeg with libopenmpt 0.2 is still
supported.

Signed-off-by: Jörn Heusipp <osmanx@problemloesungsmaschine.de>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-01-12 12:31:55 +01:00
Jörn Heusipp
a571a2a65a avformat/libopenmpt: Fix mixed code and declarations
Signed-off-by: Jörn Heusipp <osmanx@problemloesungsmaschine.de>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-01-12 12:31:55 +01:00
Eduard Sinelnikov
7fcbebbeaf avformat/aiffdec: AIFF fix in case of ANNO
Apple's AIFF protocol clearly states that each chucnk which is odd sized a padding should be added.
In the old version of aiffdec adding of padding was done in `get_meta`. And in case of unknown chunk name it was done in defalut case.
The new version has deleted the padding in default case and added padding adding after the switch.
But the new version didn't removed the padding adding in the `get_meta` function so in some cases padding was added twice which leaded to a bug.

Fixes: sample.aiff

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-01-11 03:29:25 +01:00
Paul B Mahol
16ba6a8ad1 avformat/wavdec: make fact chunk parsing for w64 more robust
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2018-01-10 15:54:15 +01:00
Carl Eugen Hoyos
ed03fad2cc lavf/oggparseogm: Remove an unneeded include.
Forgotten in e8f7171a
2018-01-08 14:36:18 +01:00
Carl Eugen Hoyos
e8f7171a34 lavf/oggparseogm: Remove an unneeded assert.
Suggested-by: Reimar
2018-01-08 13:20:13 +01:00
Rostislav Pehlivanov
c693af1951 libavformat/network: fix function duplication
Since the function used to be exposed for ffserver's sake, it was renamed
to the same name as a system's aton function which caused a collision.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2018-01-06 18:59:46 +00:00
Rostislav Pehlivanov
7c6125cbcc libavformat/mpjpeg: use "ffmpeg" instead of "ffserver" as boundary tag
Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2018-01-06 18:37:35 +00:00
Rostislav Pehlivanov
8788e82c04 libavformat: unexpose private ff_ functions needed by ffserver
Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2018-01-06 18:37:06 +00:00
Rostislav Pehlivanov
d41de90d44 libavformat: remove the ff_rtp_get_local_rtcp_port function
Only used by ffserver

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2018-01-06 18:34:55 +00:00
Rostislav Pehlivanov
9396ed0f29 libavformat: unexpose the ff_inet_aton function
Used only by ffserver.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2018-01-06 18:34:39 +00:00
Rostislav Pehlivanov
c17f476144 libavformat: remove the ffmenc and ffmdec muxer and demuxers
Used only by ffserver.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2018-01-06 18:32:15 +00:00
Misty De Meo
bfe397e431 aiff: add explicit goto got_sound
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-01-06 03:15:18 +01:00
James Almer
57960b1f28 avformat: use mutexes instead of atomics in av_register_{input,output}_format()
Reviewed-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
2018-01-05 13:18:34 -03:00
Misty De Meo
fde057dfb2 aiff: add support for XA ADPCM
Certain AIFF files encode XA ADPCM compressed audio using a chunk
with the tag `APCM`. Aside from this custom chunk type, they're
otherwise standard AIFF files. I've only observed these files in the
Sega Saturn game Sonic Jam so far.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-01-04 21:39:34 +01:00
wm4
2477bfe221 http: avoid logging reconnect warning if stream was aborted
If the stream was aborted using the libavformat interrupt callback, we
don't want it to log the reconnect warning. (Exiting after logging this
warning worked well, so this is only for avoiding the ugly warning.)
2018-01-04 18:08:31 +01:00