mirror of
https://github.com/ossrs/srs.git
synced 2025-02-13 03:41:55 +00:00
add comments and variable for c3 extended-timestamp. to 0.9.82
This commit is contained in:
parent
80ddddf823
commit
0f498acd7b
4 changed files with 32 additions and 7 deletions
|
@ -42,7 +42,11 @@ int main(int argc, char** argv)
|
|||
printf("srs(simple-rtmp-server) client librtmp library.\n");
|
||||
printf("version: %d.%d.%d\n", srs_version_major(), srs_version_minor(), srs_version_revision());
|
||||
|
||||
rtmp = srs_rtmp_create("rtmp://127.0.0.1:1935/live/livestream");
|
||||
if (argc > 1) {
|
||||
rtmp = srs_rtmp_create(argv[1]);
|
||||
} else {
|
||||
rtmp = srs_rtmp_create("rtmp://127.0.0.1:1935/live/livestream");
|
||||
}
|
||||
|
||||
if (srs_simple_handshake(rtmp) != 0) {
|
||||
printf("simple handshake failed.\n");
|
||||
|
|
|
@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
// current release version
|
||||
#define VERSION_MAJOR "0"
|
||||
#define VERSION_MINOR "9"
|
||||
#define VERSION_REVISION "81"
|
||||
#define VERSION_REVISION "82"
|
||||
#define RTMP_SIG_SRS_VERSION VERSION_MAJOR"."VERSION_MINOR"."VERSION_REVISION
|
||||
// server info.
|
||||
#define RTMP_SIG_SRS_KEY "srs"
|
||||
|
|
|
@ -301,6 +301,7 @@ SrsProtocol::SrsProtocol(ISrsProtocolReaderWriter* io)
|
|||
skt = io;
|
||||
|
||||
in_chunk_size = out_chunk_size = RTMP_DEFAULT_CHUNK_SIZE;
|
||||
send_extended_timestamp_for_C3_chunk = true;
|
||||
}
|
||||
|
||||
SrsProtocol::~SrsProtocol()
|
||||
|
@ -519,13 +520,13 @@ int SrsProtocol::do_send_and_free_message(SrsMessage* msg, SrsPacket* packet)
|
|||
// present. Type 3 chunks MUST NOT have this field.
|
||||
// adobe changed for Type3 chunk:
|
||||
// FMLE always sendout the extended-timestamp,
|
||||
// must send the extended-timestamp to FMS,
|
||||
// must send the extended-timestamp to FMS,
|
||||
// must send the extended-timestamp to flash-player.
|
||||
// @see: ngx_rtmp_prepare_message
|
||||
// @see: http://blog.csdn.net/win_lin/article/details/13363699
|
||||
u_int32_t timestamp = (u_int32_t)msg->header.timestamp;
|
||||
if(timestamp >= RTMP_EXTENDED_TIMESTAMP){
|
||||
pp = (char*)×tamp;
|
||||
if(send_extended_timestamp_for_C3_chunk && timestamp >= RTMP_EXTENDED_TIMESTAMP){
|
||||
pp = (char*)×tamp;
|
||||
*pheader++ = pp[3];
|
||||
*pheader++ = pp[2];
|
||||
*pheader++ = pp[1];
|
||||
|
@ -1086,7 +1087,8 @@ int SrsProtocol::read_message_header(SrsChunkStream* chunk, char fmt, int bh_siz
|
|||
fmt, mh_size, chunk->extended_timestamp);
|
||||
}
|
||||
|
||||
if (chunk->extended_timestamp) {
|
||||
// read extended-timestamp
|
||||
if (chunk->extended_timestamp && send_extended_timestamp_for_C3_chunk) {
|
||||
mh_size += 4;
|
||||
required_size = bh_size + mh_size;
|
||||
srs_verbose("read header ext time. fmt=%d, ext_time=%d, mh_size=%d", fmt, chunk->extended_timestamp, mh_size);
|
||||
|
@ -1111,7 +1113,8 @@ int SrsProtocol::read_message_header(SrsChunkStream* chunk, char fmt, int bh_siz
|
|||
u_int32_t chunk_timestamp = chunk->header.timestamp;
|
||||
if (chunk_timestamp > RTMP_EXTENDED_TIMESTAMP && chunk_timestamp != timestamp) {
|
||||
mh_size -= 4;
|
||||
srs_verbose("ignore the 4bytes extended timestamp. mh_size=%d", mh_size);
|
||||
send_extended_timestamp_for_C3_chunk = false;
|
||||
srs_warn("no 4bytes extended timestamp in the continued chunk");
|
||||
} else {
|
||||
chunk->header.timestamp = timestamp;
|
||||
}
|
||||
|
|
|
@ -107,6 +107,24 @@ private:
|
|||
* value: the request command name
|
||||
*/
|
||||
std::map<double, std::string> requests;
|
||||
/**
|
||||
* RTMP specification and ffmpeg/librtmp is false,
|
||||
* but, adobe changed the specification, so flash/FMLE/FMS always true.
|
||||
* default to true to support flash/FMLE/FMS.
|
||||
*
|
||||
* ffmpeg/librtmp may donot send this filed, need to detect the value.
|
||||
* @see also: http://blog.csdn.net/win_lin/article/details/13363699
|
||||
* compare to the chunk timestamp, which is set by chunk message header
|
||||
* type 0,1 or 2.
|
||||
*
|
||||
* @remark, nginx send the extended-timestamp in sequence-header,
|
||||
* and timestamp delta in continue C1 chunks, and so compatible with ffmpeg,
|
||||
* that is, there is no continue chunks and extended-timestamp in nginx-rtmp.
|
||||
*
|
||||
* @remark, srs always send the extended-timestamp, to keep simple,
|
||||
* and compatible with adobe products.
|
||||
*/
|
||||
bool send_extended_timestamp_for_C3_chunk;
|
||||
// peer in
|
||||
private:
|
||||
std::map<int, SrsChunkStream*> chunk_streams;
|
||||
|
|
Loading…
Reference in a new issue