1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-02-12 19:31:53 +00:00

for #250, refine parse pes packet, remove the clear method.

This commit is contained in:
winlin 2015-01-29 23:08:26 +08:00
parent 1685cdd48e
commit b38bae2a89
2 changed files with 18 additions and 21 deletions

View file

@ -415,10 +415,15 @@ SrsTsChannel::~SrsTsChannel()
srs_freep(msg);
}
SrsTsMessage::SrsTsMessage()
SrsTsMessage::SrsTsMessage(SrsTsChannel* c, SrsTsPacket* p)
{
payload = NULL;
clear();
channel = c;
packet = p;
dts = pts = 0;
continuity_counter = 0;
PES_packet_length = 0;
payload = new SrsSimpleBuffer();
}
SrsTsMessage::~SrsTsMessage()
@ -469,15 +474,6 @@ bool SrsTsMessage::fresh()
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()
{
}
@ -941,7 +937,7 @@ int SrsTsPayloadPES::decode(SrsStream* stream, SrsTsMessage** ppmsg)
// init msg.
SrsTsMessage* msg = channel->msg;
if (!msg) {
msg = new SrsTsMessage();
msg = new SrsTsMessage(channel, packet);
channel->msg = msg;
}
@ -967,7 +963,8 @@ int SrsTsPayloadPES::decode(SrsStream* stream, SrsTsMessage** ppmsg)
// reparse current msg.
stream->skip(stream->pos() * -1);
msg->clear();
srs_freep(msg);
channel->msg = NULL;
return ERROR_SUCCESS;
}
@ -991,7 +988,8 @@ int SrsTsPayloadPES::decode(SrsStream* stream, SrsTsMessage** ppmsg)
// reparse current msg.
stream->skip(stream->pos() * -1);
msg->clear();
srs_freep(msg);
channel->msg = NULL;
return ERROR_SUCCESS;
}
}
@ -1005,7 +1003,6 @@ int SrsTsPayloadPES::decode(SrsStream* stream, SrsTsMessage** ppmsg)
// reparse current msg.
stream->skip(stream->pos() * -1);
return ret;
}

View file

@ -46,6 +46,7 @@ class SrsSimpleBuffer;
class SrsTsAdaptationField;
class SrsTsPayload;
class SrsTsMessage;
class SrsTsPacket;
// Transport Stream packets are 188 bytes in length.
#define SRS_TS_PACKET_SIZE 188
@ -192,6 +193,9 @@ struct SrsTsChannel
*/
class SrsTsMessage
{
private:
SrsTsChannel* channel;
SrsTsPacket* packet;
public:
int64_t dts;
int64_t pts;
@ -199,7 +203,7 @@ public:
u_int8_t continuity_counter;
SrsSimpleBuffer* payload;
public:
SrsTsMessage();
SrsTsMessage(SrsTsChannel* c, SrsTsPacket* p);
virtual ~SrsTsMessage();
public:
/**
@ -219,10 +223,6 @@ public:
* whether the message is fresh.
*/
virtual bool fresh();
/**
* clear current message.
*/
virtual void clear();
};
/**