1
0
Fork 0
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:
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); 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;
} }

View file

@ -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();
}; };
/** /**