mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
drop metadata when drop sequence header. support PCUC 0x1a
This commit is contained in:
parent
2cf526ffc7
commit
f691dddc1a
3 changed files with 73 additions and 17 deletions
|
@ -4240,10 +4240,22 @@ int SrsPlayPacket::get_message_type()
|
|||
|
||||
int SrsPlayPacket::get_size()
|
||||
{
|
||||
return SrsAmf0Size::str(command_name) + SrsAmf0Size::number()
|
||||
+ SrsAmf0Size::null() + SrsAmf0Size::str(stream_name)
|
||||
+ SrsAmf0Size::number() + SrsAmf0Size::number()
|
||||
+ SrsAmf0Size::boolean();
|
||||
int size = SrsAmf0Size::str(command_name) + SrsAmf0Size::number()
|
||||
+ SrsAmf0Size::null() + SrsAmf0Size::str(stream_name);
|
||||
|
||||
if (start != -2 || duration != -1 || !reset) {
|
||||
size += SrsAmf0Size::number();
|
||||
}
|
||||
|
||||
if (duration != -1 || !reset) {
|
||||
size += SrsAmf0Size::number();
|
||||
}
|
||||
|
||||
if (!reset) {
|
||||
size += SrsAmf0Size::boolean();
|
||||
}
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
int SrsPlayPacket::encode_packet(SrsStream* stream)
|
||||
|
@ -4274,19 +4286,19 @@ int SrsPlayPacket::encode_packet(SrsStream* stream)
|
|||
}
|
||||
srs_verbose("encode stream_name success.");
|
||||
|
||||
if ((ret = srs_amf0_write_number(stream, start)) != ERROR_SUCCESS) {
|
||||
if ((start != -2 || duration != -1 || !reset) && (ret = srs_amf0_write_number(stream, start)) != ERROR_SUCCESS) {
|
||||
srs_error("encode start failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
srs_verbose("encode start success.");
|
||||
|
||||
if ((ret = srs_amf0_write_number(stream, duration)) != ERROR_SUCCESS) {
|
||||
if ((duration != -1 || !reset) && (ret = srs_amf0_write_number(stream, duration)) != ERROR_SUCCESS) {
|
||||
srs_error("encode duration failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
srs_verbose("encode duration success.");
|
||||
|
||||
if ((ret = srs_amf0_write_boolean(stream, reset)) != ERROR_SUCCESS) {
|
||||
if (!reset && (ret = srs_amf0_write_boolean(stream, reset)) != ERROR_SUCCESS) {
|
||||
srs_error("encode reset failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
|
@ -5117,14 +5129,29 @@ int SrsUserControlPacket::decode(SrsStream* stream)
|
|||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
if (!stream->require(6)) {
|
||||
if (!stream->require(2)) {
|
||||
ret = ERROR_RTMP_MESSAGE_DECODE;
|
||||
srs_error("decode user control failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
event_type = stream->read_2bytes();
|
||||
event_data = stream->read_4bytes();
|
||||
|
||||
if (event_type == SrsPCUCFmsEvent0) {
|
||||
if (!stream->require(1)) {
|
||||
ret = ERROR_RTMP_MESSAGE_DECODE;
|
||||
srs_error("decode user control failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
event_data = stream->read_1bytes();
|
||||
} else {
|
||||
if (!stream->require(4)) {
|
||||
ret = ERROR_RTMP_MESSAGE_DECODE;
|
||||
srs_error("decode user control failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
event_data = stream->read_4bytes();
|
||||
}
|
||||
|
||||
if (event_type == SrcPCUCSetBufferLength) {
|
||||
if (!stream->require(4)) {
|
||||
|
@ -5154,11 +5181,19 @@ int SrsUserControlPacket::get_message_type()
|
|||
|
||||
int SrsUserControlPacket::get_size()
|
||||
{
|
||||
if (event_type == SrcPCUCSetBufferLength) {
|
||||
return 2 + 4 + 4;
|
||||
int size = 2;
|
||||
|
||||
if (event_type == SrsPCUCFmsEvent0) {
|
||||
size += 1;
|
||||
} else {
|
||||
return 2 + 4;
|
||||
size += 4;
|
||||
}
|
||||
|
||||
if (event_type == SrcPCUCSetBufferLength) {
|
||||
size += 4;
|
||||
}
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
int SrsUserControlPacket::encode_packet(SrsStream* stream)
|
||||
|
@ -5172,7 +5207,12 @@ int SrsUserControlPacket::encode_packet(SrsStream* stream)
|
|||
}
|
||||
|
||||
stream->write_2bytes(event_type);
|
||||
stream->write_4bytes(event_data);
|
||||
|
||||
if (event_type == SrsPCUCFmsEvent0) {
|
||||
stream->write_1bytes(event_data);
|
||||
} else {
|
||||
stream->write_4bytes(event_data);
|
||||
}
|
||||
|
||||
// when event type is set buffer length,
|
||||
// write the extra buffer length.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue