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

372 Commits

Author SHA1 Message Date
205b602135 Merge commit '72540e514ceaaed8ecb97ed63637b2a2a4447ab8'
* commit '72540e514ceaaed8ecb97ed63637b2a2a4447ab8':
  rtmpproto: Clear the flv allocation size on reallocp failures

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-10-04 14:17:53 +02:00
d32eec3359 Merge commit '4d6d70292e91a7ef027824d731b6b6570ceabf2f'
* commit '4d6d70292e91a7ef027824d731b6b6570ceabf2f':
  rtmpproto: Pass the 'live' parameter in the right unit

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-10-04 13:53:17 +02:00
373d15525d Merge commit 'a6b361325f2bfc8d9d4e5f761d6c1a07b209c4fb'
* commit 'a6b361325f2bfc8d9d4e5f761d6c1a07b209c4fb':
  rtmpproto: Print the error code string if there's no description

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-10-04 13:47:06 +02:00
cd818b3a57 rtmpproto: Validate the embedded flv packet size before copying
This wasn't an issue prior to 58404738, when the whole RTMP packet
was copied at once and the length of the individual embedded flv
packets only were validated by the flv demuxer.

Prior to this patch, this could lead to reads and writes out of bound.

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-10-04 09:25:10 +03:00
8921e32f73 rtmpproto: Readjust the end of the flv buffer if handle_metadata exited early
If the embedded flv packets were incomplete and we aborted the
copying loop early, make sure the flv buffer is trimmed to
only contain full packets.

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-10-04 09:25:08 +03:00
24fee95321 rtmpproto: Move the flv header/trailer addition to append_flv_data
update_offset is also called from handle_metadata, where the
packet header sizes is already included in the size.

Previously this lead to flv_data/flv_size including 15 uninitialized
bytes at the end after each call to handle_metadata, making the
flv demuxer lose sync with the stream.

Also remove leftover copying in handle_metadata. This is a leftover
from the refactoring in 5840473. (Previously this final mempcy was
the one that copied all the packets at once, while this is done
within the loop right now.) After making sure flv_size is set to
the right size, this write was out of bounds.

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-10-04 09:25:07 +03:00
72540e514c rtmpproto: Clear the flv allocation size on reallocp failures
This was overlooked in d872fb0f7 since I assumed all the realloc
issues in the rtmp code was fixed already.

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-10-04 09:25:06 +03:00
4d6d70292e rtmpproto: Pass the 'live' parameter in the right unit
The current magic numbers passed are values in seconds, while the
parameter itself should be passed over the wire in milliseconds.

This makes (some/all?) live streams from Red5 work correctly, that
previously returned StreamNotFound even with "-rtmp_live live". After
this commit, the default 'any' also works on these streams.

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-10-04 09:25:05 +03:00
a6b361325f rtmpproto: Print the error code string if there's no description
On (certain streams/setups at least on) Red5, the description string
actually is present, but empty. Therefore, first try loading the
description, but if not found or empty, load the code string instead.
The code string is quite understandable in most cases anyway (like
"NetStream.Play.StreamNotFound").

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-10-04 09:25:04 +03:00
5e253fdfc1 Merge remote-tracking branch 'qatar/master'
* qatar/master:
  rtmp: alias rtmp_listen to listen

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-10-02 14:59:42 +02:00
628a17d78a rtmp: alias rtmp_listen to listen
Make it uniform with the other protocols.
2013-10-01 15:42:06 +02:00
72eddc10fa Merge commit 'd872fb0f7ff2ff0ba87f5ccf6a1a55ca2be472c9'
* commit 'd872fb0f7ff2ff0ba87f5ccf6a1a55ca2be472c9':
  lavf: Reset the entry count and allocation size variables on av_reallocp failures

Conflicts:
	libavformat/avienc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-09-27 12:13:41 +02:00
d872fb0f7f lavf: Reset the entry count and allocation size variables on av_reallocp failures
When av_reallocp fails, the associated variables that keep track of
the number of elements in the array (and in some cases, the
separate number of allocated elements) need to be reset.

Not all of these might technically be needed, but it's better to
reset them if in doubt, to make sure variables don't end up
conflicting.

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-09-26 23:14:03 +03:00
eaa20afa76 Merge commit 'ba77757a7efafe38924b6b423acfca8c1e1c62d6'
* commit 'ba77757a7efafe38924b6b423acfca8c1e1c62d6':
  rtmp: Replace a magic number with a macro

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-09-23 11:45:38 +02:00
c70e647a15 Merge commit '5840473890440dbe0bd2cce530ebb3d93e187ae6'
* commit '5840473890440dbe0bd2cce530ebb3d93e187ae6':
  rtmp: Rewrite embedded flv handling

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-09-23 11:40:15 +02:00
eee8cb42d0 Merge commit 'e40a0e822801d2485e4e555909d7a82713fa86a5'
* commit 'e40a0e822801d2485e4e555909d7a82713fa86a5':
  rtmp: Refactor get_packet

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-09-23 11:36:06 +02:00
ba77757a7e rtmp: Replace a magic number with a macro
11 is the RTMP header size.
2013-09-22 01:09:33 +02:00
5840473890 rtmp: Rewrite embedded flv handling
Use update_offset() as done for rtmp audio, video and notifications and
read update and write the fields instead of replacing them in the rtmp
packet and then memcpying it to the output buffer.
2013-09-22 01:09:33 +02:00
e40a0e8228 rtmp: Refactor get_packet 2013-09-22 01:09:33 +02:00
dda7bd13b3 Merge commit '5532ee6d7d554bb54d4374d0b69f72bc9ab9fd91'
* commit '5532ee6d7d554bb54d4374d0b69f72bc9ab9fd91':
  rtmp: Unbreak get_packet

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-09-20 15:45:04 +02:00
391e272c16 Merge commit 'b97b1adb3f807e1acd00d56319ee6cb41cc727e4'
* commit 'b97b1adb3f807e1acd00d56319ee6cb41cc727e4':
  rtmpproto: Add a comment explaining the logic in handle_notify

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-09-20 15:30:51 +02:00
5532ee6d7d rtmp: Unbreak get_packet
Commit 5626f994f2 broke it.
2013-09-20 13:38:22 +02:00
b97b1adb3f rtmpproto: Add a comment explaining the logic in handle_notify
This explains why the cleanup in 5626f994f was wrong and why
ae0f316a was needed.

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-09-20 10:47:15 +03:00
fbd54827b1 rtmp: Unbreak handle_notify
Commit 5626f994f2 broke it.
2013-09-19 11:27:21 +02:00
20dfab33f5 Merge commit '5626f994f273af80fb100d4743b963304de9e05c'
* commit '5626f994f273af80fb100d4743b963304de9e05c':
  avformat: Use av_reallocp() where suitable

Conflicts:
	libavformat/avidec.c
	libavformat/avienc.c
	libavformat/aviobuf.c
	libavformat/oggparsevorbis.c
	libavformat/utils.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-09-19 11:01:26 +02:00
ae0f316a47 rtmp: Unbreak handle_notify
Commit 5626f994f2 broke it.
2013-09-19 09:13:04 +02:00
5626f994f2 avformat: Use av_reallocp() where suitable
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2013-09-18 18:28:38 +02:00
4131a3cb58 Merge commit '8583b14252deac71136f1dec231910abab0ba503'
* commit '8583b14252deac71136f1dec231910abab0ba503':
  rtmp: Support reading interleaved chunks.

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-09-18 12:09:06 +02:00
c1840cbdbe Merge commit 'dc4acc820076b2149ef6c921bdabe05d07ca1bc6'
* commit 'dc4acc820076b2149ef6c921bdabe05d07ca1bc6':
  rtmpproto: Extend a comment to explain the prev_pkt arrays roles

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-09-18 11:09:31 +02:00
e81411e88e Merge commit '647d655d19c38e9716328e4787199149097d6089'
* commit '647d655d19c38e9716328e4787199149097d6089':
  rtmpproto: Consistently use the right prev_pkt array

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-09-18 11:00:51 +02:00
7742edc03b Merge commit '0d3784396b736374a61fea26268febdabd803a59'
* commit '0d3784396b736374a61fea26268febdabd803a59':
  rtmpproto: Check for the right return code

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-09-18 10:50:54 +02:00
8583b14252 rtmp: Support reading interleaved chunks.
A given packet won't always come in contiguously; sometimes
they may be broken up on chunk boundaries by packets of another
channel.

This support primarily involves tracking information about the
data that's been read, so the reader can pick up where it left
off for a given channel.

As a side effect, we no longer over-report the bytes read if
(toread = MIN(size, chunk_size)) == size

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-09-17 23:19:11 +03:00
dc4acc8200 rtmpproto: Extend a comment to explain the prev_pkt arrays roles
Signed-off-by: Martin Storsjö <martin@martin.st>
2013-09-17 20:09:25 +03:00
647d655d19 rtmpproto: Consistently use the right prev_pkt array
prev_pkt[0] is used for input packets, while prev_pkt[1] is
used for output.

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-09-17 20:09:24 +03:00
0d3784396b rtmpproto: Check for the right return code
Signed-off-by: Martin Storsjö <martin@martin.st>
2013-09-17 20:09:22 +03:00
01b4689d20 Merge remote-tracking branch 'qatar/master'
* qatar/master:
  rtmp: rename main_channel_id to stream_id.

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-09-17 13:03:50 +02:00
208f9dd2ef Merge commit 'd4aef997809167832ecc64e89dda8cb445e5fe10'
* commit 'd4aef997809167832ecc64e89dda8cb445e5fe10':
  rtmp: Follow Flash player numbering for channels.

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-09-17 12:57:19 +02:00
c71541d42a Merge commit '120af23cd5fcfc539d9575d17d403247ab17109b'
* commit '120af23cd5fcfc539d9575d17d403247ab17109b':
  rtmp: Send video on a separate channel.

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-09-17 12:52:25 +02:00
a275ff7e01 Merge commit '92ed83e393d25b6d15920e90d56ee77de54a9728'
* commit '92ed83e393d25b6d15920e90d56ee77de54a9728':
  rtmp: Store all the notify messages

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-09-17 11:39:45 +02:00
9589b61904 Merge commit 'fe0337e89bbbe84b7274fbb0d9d56ed992937931'
* commit 'fe0337e89bbbe84b7274fbb0d9d56ed992937931':
  rtmp: Do not send the first field twice within the handshake

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-09-17 11:34:30 +02:00
c9eb2ce085 Merge commit '666ed7eda1d568638689ac7b0cef0a9e564ffbdf'
* commit '666ed7eda1d568638689ac7b0cef0a9e564ffbdf':
  rtmp: Drop an unneeded warning

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-09-17 11:28:16 +02:00
953a4191b8 Merge commit 'ffb7669e47343ac0caa866361965fdb2bf6ed825'
* commit 'ffb7669e47343ac0caa866361965fdb2bf6ed825':
  rtmp: Support play method in listen mode

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-09-17 11:22:54 +02:00
0483cfe8ca Merge commit '97d35fa89f73468d64f663bfc0686aa6cddd8b6a'
* commit '97d35fa89f73468d64f663bfc0686aa6cddd8b6a':
  rtmp: Factor out publish specific code

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-09-17 11:17:11 +02:00
f8d1bb6723 rtmp: rename main_channel_id to stream_id.
This more closely corresponds to the usage of the field.
Its usage here is unrelated to the channel ID.

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-09-17 11:03:36 +03:00
d4aef99780 rtmp: Follow Flash player numbering for channels.
Channel 4 is typically used by the Flash player to transmit
audio, channel 6 for video, and various stream-specific invokes
get sent over channel 8, which is designated the source channel.

This more closely matches the behavior of the Flash player,
including the transmission of play requests over channel 8.

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-09-17 11:03:36 +03:00
120af23cd5 rtmp: Send video on a separate channel.
Sending non-monotonic packets (e.g. when the audio and video
streams are monotonic within themselves but not muxed
monotonically) will lead to negative values the RTMP timestamp
field (where timestamps are transmitted only as deltas for each
channel), and this delta can end up being incorrectly written as
a large unsigned number.

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-09-17 11:03:36 +03:00
92ed83e393 rtmp: Store all the notify messages
The onTextData is used to implement text data streams in flv.
2013-09-16 19:36:37 +02:00
fe0337e89b rtmp: Do not send the first field twice within the handshake 2013-09-16 19:36:37 +02:00
666ed7eda1 rtmp: Drop an unneeded warning
Apparently a widely used streaming server requires that the second
field always presents a version during C1 phase.
2013-09-16 19:36:37 +02:00
ffb7669e47 rtmp: Support play method in listen mode 2013-09-16 19:36:37 +02:00