mirror of
https://github.com/ossrs/srs.git
synced 2025-02-13 03:41:55 +00:00
for #250, refine parse pes packet, remove the clear method.
This commit is contained in:
parent
1685cdd48e
commit
b38bae2a89
2 changed files with 18 additions and 21 deletions
|
@ -415,10 +415,15 @@ SrsTsChannel::~SrsTsChannel()
|
||||||
srs_freep(msg);
|
srs_freep(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
SrsTsMessage::SrsTsMessage()
|
SrsTsMessage::SrsTsMessage(SrsTsChannel* c, SrsTsPacket* p)
|
||||||
{
|
{
|
||||||
payload = NULL;
|
channel = c;
|
||||||
clear();
|
packet = p;
|
||||||
|
|
||||||
|
dts = pts = 0;
|
||||||
|
continuity_counter = 0;
|
||||||
|
PES_packet_length = 0;
|
||||||
|
payload = new SrsSimpleBuffer();
|
||||||
}
|
}
|
||||||
|
|
||||||
SrsTsMessage::~SrsTsMessage()
|
SrsTsMessage::~SrsTsMessage()
|
||||||
|
@ -469,15 +474,6 @@ bool SrsTsMessage::fresh()
|
||||||
return payload->length() == 0;
|
return payload->length() == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SrsTsMessage::clear()
|
|
||||||
{
|
|
||||||
dts = pts = 0;
|
|
||||||
continuity_counter = 0;
|
|
||||||
PES_packet_length = 0;
|
|
||||||
srs_freep(payload);
|
|
||||||
payload = new SrsSimpleBuffer();
|
|
||||||
}
|
|
||||||
|
|
||||||
ISrsTsHandler::ISrsTsHandler()
|
ISrsTsHandler::ISrsTsHandler()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -941,7 +937,7 @@ int SrsTsPayloadPES::decode(SrsStream* stream, SrsTsMessage** ppmsg)
|
||||||
// init msg.
|
// init msg.
|
||||||
SrsTsMessage* msg = channel->msg;
|
SrsTsMessage* msg = channel->msg;
|
||||||
if (!msg) {
|
if (!msg) {
|
||||||
msg = new SrsTsMessage();
|
msg = new SrsTsMessage(channel, packet);
|
||||||
channel->msg = msg;
|
channel->msg = msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -967,7 +963,8 @@ int SrsTsPayloadPES::decode(SrsStream* stream, SrsTsMessage** ppmsg)
|
||||||
|
|
||||||
// reparse current msg.
|
// reparse current msg.
|
||||||
stream->skip(stream->pos() * -1);
|
stream->skip(stream->pos() * -1);
|
||||||
msg->clear();
|
srs_freep(msg);
|
||||||
|
channel->msg = NULL;
|
||||||
return ERROR_SUCCESS;
|
return ERROR_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -991,7 +988,8 @@ int SrsTsPayloadPES::decode(SrsStream* stream, SrsTsMessage** ppmsg)
|
||||||
|
|
||||||
// reparse current msg.
|
// reparse current msg.
|
||||||
stream->skip(stream->pos() * -1);
|
stream->skip(stream->pos() * -1);
|
||||||
msg->clear();
|
srs_freep(msg);
|
||||||
|
channel->msg = NULL;
|
||||||
return ERROR_SUCCESS;
|
return ERROR_SUCCESS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1005,7 +1003,6 @@ int SrsTsPayloadPES::decode(SrsStream* stream, SrsTsMessage** ppmsg)
|
||||||
|
|
||||||
// reparse current msg.
|
// reparse current msg.
|
||||||
stream->skip(stream->pos() * -1);
|
stream->skip(stream->pos() * -1);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -46,6 +46,7 @@ class SrsSimpleBuffer;
|
||||||
class SrsTsAdaptationField;
|
class SrsTsAdaptationField;
|
||||||
class SrsTsPayload;
|
class SrsTsPayload;
|
||||||
class SrsTsMessage;
|
class SrsTsMessage;
|
||||||
|
class SrsTsPacket;
|
||||||
|
|
||||||
// Transport Stream packets are 188 bytes in length.
|
// Transport Stream packets are 188 bytes in length.
|
||||||
#define SRS_TS_PACKET_SIZE 188
|
#define SRS_TS_PACKET_SIZE 188
|
||||||
|
@ -192,6 +193,9 @@ struct SrsTsChannel
|
||||||
*/
|
*/
|
||||||
class SrsTsMessage
|
class SrsTsMessage
|
||||||
{
|
{
|
||||||
|
private:
|
||||||
|
SrsTsChannel* channel;
|
||||||
|
SrsTsPacket* packet;
|
||||||
public:
|
public:
|
||||||
int64_t dts;
|
int64_t dts;
|
||||||
int64_t pts;
|
int64_t pts;
|
||||||
|
@ -199,7 +203,7 @@ public:
|
||||||
u_int8_t continuity_counter;
|
u_int8_t continuity_counter;
|
||||||
SrsSimpleBuffer* payload;
|
SrsSimpleBuffer* payload;
|
||||||
public:
|
public:
|
||||||
SrsTsMessage();
|
SrsTsMessage(SrsTsChannel* c, SrsTsPacket* p);
|
||||||
virtual ~SrsTsMessage();
|
virtual ~SrsTsMessage();
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
|
@ -219,10 +223,6 @@ public:
|
||||||
* whether the message is fresh.
|
* whether the message is fresh.
|
||||||
*/
|
*/
|
||||||
virtual bool fresh();
|
virtual bool fresh();
|
||||||
/**
|
|
||||||
* clear current message.
|
|
||||||
*/
|
|
||||||
virtual void clear();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in a new issue