1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-06-25 14:23:15 +02:00
Commit Graph

362 Commits

Author SHA1 Message Date
72dbfe42ef Merge commit 'f4ca8ea92a8b36fe723412aefafc1b2fa89f8dc6'
* commit 'f4ca8ea92a8b36fe723412aefafc1b2fa89f8dc6':
  rtmpproto: Restructure zlib code to avoid unreachable code warning

Merged-by: Clément Bœsch <u@pkh.me>
2017-03-29 15:17:59 +02:00
4e43c6df54 Merge commit 'c541a44e029e8a4f21db028c34fee3ad1c10a409'
* commit 'c541a44e029e8a4f21db028c34fee3ad1c10a409':
  Revert "rtmpproto: Don't include a client version in the unencrypted C1 handshake"

Merged-by: Clément Bœsch <u@pkh.me>
2017-03-27 22:21:18 +02:00
8892739a16 Merge commit '7d8d726be7dc46343ab1c98c339c1ed44bcb07c1'
* commit '7d8d726be7dc46343ab1c98c339c1ed44bcb07c1':
  rtmpproto: Don't include a client version in the unencrypted C1 handshake

Merged-by: Clément Bœsch <u@pkh.me>
2017-03-23 16:37:58 +01:00
ddcd396075 Merge commit '9f23f77a532ca9c2b7dc4b5328bc413e4f6f5b56'
* commit '9f23f77a532ca9c2b7dc4b5328bc413e4f6f5b56':
  rtmpproto: Don't include the libavformat version as "clientid"

Merged-by: Clément Bœsch <u@pkh.me>
2017-03-23 16:37:31 +01:00
d1c341f77b Merge commit '8b5e0d17e70400eaf5dc3845b5c1df8b2b88d830'
* commit '8b5e0d17e70400eaf5dc3845b5c1df8b2b88d830':
  rtmpproto: Send chunk size on the network channel

Merged-by: Clément Bœsch <u@pkh.me>
2017-03-23 16:36:05 +01:00
a106b7e8b9 Merge commit 'd6ded94036e43a04889f4ff2813a7f7dd60b82fe'
* commit 'd6ded94036e43a04889f4ff2813a7f7dd60b82fe':
  rtmpproto: Lengthen the filename buffer when receiving streams

Merged-by: Clément Bœsch <u@pkh.me>
2017-03-23 16:35:17 +01:00
36fcbc0076 Merge commit '7395784ba72742b6daa62d35db4028e09f3fdf06'
* commit '7395784ba72742b6daa62d35db4028e09f3fdf06':
  rtmpproto: Check the return from ff_amf_read_string

Merged-by: Clément Bœsch <u@pkh.me>
2017-03-23 16:34:19 +01:00
8ddadf56f6 avformat/rtmpproto: change rtmp_open from url_open to url_open2
use the option set by user

Reported-by: Lancelot Lai <laihy23@gmail.com>
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
2017-03-22 18:06:14 +08:00
75bd4ea024 lavf/rtmpproto: Make bytes_read variables 64bit.
When bytes_read overflowed, last_bytes_read did not yet overflow
and no bytes-read report was created leading to a timeout.

Analyzed-by: Thomas Bernhard

Fixes ticket #5836.
2017-01-25 00:39:13 +01:00
f4ca8ea92a rtmpproto: Restructure zlib code to avoid unreachable code warning
libavformat\rtmpproto.c(1165) : warning C4702: unreachable code
2016-11-02 10:33:39 +01:00
c541a44e02 Revert "rtmpproto: Don't include a client version in the unencrypted C1 handshake"
This reverts commit 7d8d726be7.
2016-10-30 21:55:03 +01:00
47f74df29c avformat/rtmpproto: Fix RTMP control message handling error in listen mode.
Fix problem to fail by a RTMP Control Message except "Set Chunk Size (1)" after an RTMP handshake. When 'nginx-rtmp-module' relays an RTMP, it sends not only control message 'Set Chunk Size (1)' but also 'Window Acknowledgement Size (5)'.

Reviewed-by: Steven Liu <lingjiujianke@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-10-21 16:16:32 +02:00
7d8d726be7 rtmpproto: Don't include a client version in the unencrypted C1 handshake
According to the public RTMP specification, these 4 bytes should
be zero.

librtmp in server mode assumes that the RTMPE (FP9) handshake is
used if these bytes are nonzero.

Signed-off-by: Martin Storsjö <martin@martin.st>
2016-10-14 23:11:19 +03:00
9f23f77a53 rtmpproto: Don't include the libavformat version as "clientid"
When acting as server, the server can include a "clientid" property
in some status messages. But this should be a unique number
identifying the client session, not identifying the server itself.
In practice, omitting it works just as well as including this
incorrect field.

Signed-off-by: Martin Storsjö <martin@martin.st>
2016-10-14 23:11:17 +03:00
8b5e0d17e7 rtmpproto: Send chunk size on the network channel
This makes sure that e.g. Adobe FME actually reacts to it. As long
as the value we've been sending is the default one (128), the bug
hasn't been noticed.

Signed-off-by: Martin Storsjö <martin@martin.st>
2016-10-14 23:11:15 +03:00
d6ded94036 rtmpproto: Lengthen the filename buffer when receiving streams
Some applications such as Adobe FME append lots of parameters
here, making it easily overflow the current limit.

Signed-off-by: Martin Storsjö <martin@martin.st>
2016-10-14 23:11:12 +03:00
7395784ba7 rtmpproto: Check the return from ff_amf_read_string
If this failed, we used to continue with an uninitialized
filename buffer.

CC: libav-stable@libav.org
Signed-off-by: Martin Storsjö <martin@martin.st>
2016-10-14 23:11:08 +03:00
8ef57a0d61 Merge commit '41ed7ab45fc693f7d7fc35664c0233f4c32d69bb'
* commit '41ed7ab45fc693f7d7fc35664c0233f4c32d69bb':
  cosmetics: Fix spelling mistakes

Merged-by: Clément Bœsch <u@pkh.me>
2016-06-21 21:55:34 +02:00
41ed7ab45f cosmetics: Fix spelling mistakes
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2016-05-04 18:16:21 +02:00
f8e89d8a29 Merge commit 'fab8156b2f30666adabe227b3d7712fd193873b1'
* commit 'fab8156b2f30666adabe227b3d7712fd193873b1':
  avio: Copy URLContext generic options into child URLContexts

Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2016-04-21 15:55:09 +01:00
fab8156b2f avio: Copy URLContext generic options into child URLContexts
Since all URLContexts have the same AVOptions, such AVOptions
will be applied on the outermost context only and removed from the
dict, while they probably make sense on all contexts.

This makes sure that rw_timeout gets propagated to the innermost
URLContext (to make sure it gets passed to the tcp protocol, when
opening a http connection for instance).

Alternatively, such matching options would be kept in the dict
and only removed after the ffurl_connect call.

Signed-off-by: Martin Storsjö <martin@martin.st>
2016-03-24 10:34:19 +02:00
93629735d7 avformat: Add a protocol blacklisting API
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2016-03-04 16:13:42 +00:00
9c75148e6e Merge commit '2758cdedfb7ac61f8b5e4861f99218b6fd43491d'
This commit also disables the async fate test, because it
used internal APIs in a non-kosher way, which no longer
exists.

* commit '2758cdedfb7ac61f8b5e4861f99218b6fd43491d':
  lavf: reorganize URLProtocols

Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2016-02-29 16:51:10 +00:00
8c0ceafb0f urlprotocol: receive a list of protocols from the caller
This way, the decisions about which protocols are available for use in
any given situations can be delegated to the caller.
2016-02-22 11:45:31 +01:00
2758cdedfb lavf: reorganize URLProtocols
Instead of a linked list constructed at av_register_all(), store them
in a constant array of pointers.

Since no registration is necessary now, this removes some global state
from lavf. This will also allow the urlprotocol layer caller to limit
the available protocols in a simple and flexible way in the following
commits.
2016-02-22 11:30:58 +01:00
fe3fed0b14 Update demuxers and protocols for protocol whitelist support
Reviewed-by: Andreas Cadhalpun <andreas.cadhalpun@googlemail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-02-02 04:16:50 +01:00
99f2a56388 Merge commit '64f8c439fd663fec4d57ac21af572d498fe21f7a'
* commit '64f8c439fd663fec4d57ac21af572d498fe21f7a':
  rtmpproto: Include the full path as app when "slist=" is found

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2016-01-01 17:21:32 +01:00
64f8c439fd rtmpproto: Include the full path as app when "slist=" is found
This matches what librtmp does. This fixes automatic url parsing of
crunchyroll urls.

Signed-off-by: Martin Storsjö <martin@martin.st>
2015-12-13 23:23:06 +02:00
7ac4140c07 Merge commit 'e55376a1fd5abebbb0a082aa20739d58c2260a37'
* commit 'e55376a1fd5abebbb0a082aa20739d58c2260a37':
  rtmpproto: Write correct flv packet sizes at the end of packets

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-10-14 22:55:55 +02:00
e55376a1fd rtmpproto: Write correct flv packet sizes at the end of packets
In one case it was written as zero, one case left it uninitialized,
missed the 11 bytes for the flv header.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-10-14 14:35:33 +02:00
94d50b5d00 avformat/rtmpproto: Fix 2 more cases of the 2nd packet size being wrong
This should fix RTMP input which was broken by cbbd906be6
the 40 + 11 case is untested as it did not occur in the testcase

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-02 02:16:14 +02:00
e01ad950bb avformat/rtmpproto: Fix 2nd packet size
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-09-16 03:43:21 +02:00
9487ffd4c0 rtmpproto: free hmac context properly
Signed-off-by: James Almer <jamrial@gmail.com>
Signed-off-by: Martin Storsjö <martin@martin.st>
2015-07-30 09:26:49 +03:00
6ce3d9fc4a avformat/rtmpproto: free hmac context properly
Signed-off-by: James Almer <jamrial@gmail.com>
2015-07-29 23:56:22 -03:00
65dd6a1f84 rtmpproto: use AVHMAC instead of a custom implementation
Signed-off-by: James Almer <jamrial@gmail.com>
Signed-off-by: Martin Storsjö <martin@martin.st>
2015-07-29 22:09:16 +03:00
6c87b86628 avformat/rtmpproto: use AVHMAC instead of a custom implementation
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: James Almer <jamrial@gmail.com>
2015-07-29 15:32:08 -03:00
5165c600eb avformat/rtmpproto: increase hardcoded url/path lengths
Fixes #4103.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
2015-07-01 20:03:26 +00:00
40d552dae6 Merge commit '1a3eb042c704dea190c644def5b32c9cee8832b8'
* commit '1a3eb042c704dea190c644def5b32c9cee8832b8':
  Replace av_dlog with normal av_log at trace level

Conflicts:
	ffplay.c
	libavdevice/fbdev_dec.c
	libavfilter/avfilter.c
	libavfilter/internal.h
	libavfilter/setpts.c
	libavfilter/src_movie.c
	libavfilter/vf_crop.c
	libavfilter/vf_drawtext.c
	libavfilter/vf_fieldorder.c
	libavformat/assdec.c
	libavformat/avidec.c
	libavformat/flvdec.c
	libavformat/http.c
	libavformat/ipmovie.c
	libavformat/isom.c
	libavformat/mov.c
	libavformat/mpegenc.c
	libavformat/mpegts.c
	libavformat/mpegtsenc.c
	libavformat/mux.c
	libavformat/mxfdec.c
	libavformat/nsvdec.c
	libavformat/oggdec.c
	libavformat/r3d.c
	libavformat/rtspdec.c
	libavformat/utils.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-04-20 03:19:47 +02:00
1a3eb042c7 Replace av_dlog with normal av_log at trace level
This applies to every library where performance is not critical.
2015-04-19 12:41:59 +01:00
03b84f2fb2 avformat/rtmpproto: Use av_freep() to avoid leaving stale pointers in memory
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-22 12:03:36 +01:00
27897d2ef6 Merge commit '491805636cef50d3f582bd345e1460eeb739ea48'
* commit '491805636cef50d3f582bd345e1460eeb739ea48':
  rtmpproto: Fix a typo in a comment

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-28 22:01:45 +01:00
491805636c rtmpproto: Fix a typo in a comment
Signed-off-by: Martin Storsjö <martin@martin.st>
2014-11-28 20:56:45 +02:00
21ff626ce0 Merge commit '01eac895ab350027467ffbe7278740f89ae8be75'
* commit '01eac895ab350027467ffbe7278740f89ae8be75':
  rtmpproto: Only prepend @setDataFrame for onMetaData and |RtmpSampleAccess

Conflicts:
	libavformat/rtmpproto.c

See: 60fd790f38
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-28 12:31:59 +01:00
42a095d095 Merge commit '3c3b8003a13d9c3668c0bb6d79d2376da3b2b352'
* commit '3c3b8003a13d9c3668c0bb6d79d2376da3b2b352':
  rtmpproto: Simplify code for copying data into the output packet

Conflicts:
	libavformat/rtmpproto.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-28 11:57:33 +01:00
a105c1f204 Merge commit '857e6667f9061ae261c0b951113e4efc4329b05e'
* commit '857e6667f9061ae261c0b951113e4efc4329b05e':
  rtmpproto: Clarify a comment

Conflicts:
	libavformat/rtmpproto.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-28 11:35:08 +01:00
01eac895ab rtmpproto: Only prepend @setDataFrame for onMetaData and |RtmpSampleAccess
Currently, when streaming to an RTMP server, any time a packet of type
RTMP_PT_NOTIFY is encountered, the packet is prepended with @setDataFrame
before it gets sent to the server. This is incorrect; only packets for
onMetaData and |RtmpSampleAccess should invoke @setDataFrame on the RTMP
server. Specifically, the current bug manifests itself when trying to
stream onTextData or onCuePoint invocations.

This fix addresses that problem and ensures that the @setDataFrame is
only prepended for onMetaData and |RtmpSampleAccess.

Since data is fed to the rtmp_write function in smaller pieces (depending
on the calling IO buffer size), we can't generally assume that the
whole packet (or even the whole command string) is available at once,
therefore we can only check the command string once the full packet
has been transferred to us for sending.

Based on a patch by Jeffrey Wescott.

Signed-off-by: Martin Storsjö <martin@martin.st>
2014-11-28 09:59:29 +02:00
3c3b8003a1 rtmpproto: Simplify code for copying data into the output packet
Signed-off-by: Martin Storsjö <martin@martin.st>
2014-11-28 09:59:27 +02:00
857e6667f9 rtmpproto: Clarify a comment
Signed-off-by: Martin Storsjö <martin@martin.st>
2014-11-28 09:59:25 +02:00
60fd790f38 avformat/rtmpproto: only prepend @setMetaData for onMetaData and |RtmpSampleAccess
In current versions of ffmpeg, when streaming to an RTMP server, anytime a packet of type
RTMP_PT_NOTIFY is encountered, the packet is prepended with @setDataFrame before it gets sent
to the server. This is incorrect; only packets for onMetaData and |RtmpSampleAccess should
invoke @setDataFrame on the RTMP server. Specifically, the current bug manifests
itself when trying to stream onTextData or onCuePoint invocations.

This fix addresses that problem and ensures that the @setDataFrame is only prepended
for onMetaData and |RtmpSampleAccess.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-24 00:15:48 +01:00
513d57cc4d Merge commit 'a490391157dcf4dc6b65352ec3eea2781dd0a404'
* commit 'a490391157dcf4dc6b65352ec3eea2781dd0a404':
  rtmpproto: Ignore errors from the getStreamLength method

Conflicts:
	libavformat/rtmpproto.c

See: 09711545f5
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-05 10:17:07 +01:00