正在显示
2 个修改的文件
包含
18 行增加
和
21 行删除
| @@ -415,10 +415,15 @@ SrsTsChannel::~SrsTsChannel() | @@ -415,10 +415,15 @@ SrsTsChannel::~SrsTsChannel() | ||
| 415 | srs_freep(msg); | 415 | srs_freep(msg); |
| 416 | } | 416 | } |
| 417 | 417 | ||
| 418 | -SrsTsMessage::SrsTsMessage() | 418 | +SrsTsMessage::SrsTsMessage(SrsTsChannel* c, SrsTsPacket* p) |
| 419 | { | 419 | { |
| 420 | - payload = NULL; | ||
| 421 | - clear(); | 420 | + channel = c; |
| 421 | + packet = p; | ||
| 422 | + | ||
| 423 | + dts = pts = 0; | ||
| 424 | + continuity_counter = 0; | ||
| 425 | + PES_packet_length = 0; | ||
| 426 | + payload = new SrsSimpleBuffer(); | ||
| 422 | } | 427 | } |
| 423 | 428 | ||
| 424 | SrsTsMessage::~SrsTsMessage() | 429 | SrsTsMessage::~SrsTsMessage() |
| @@ -469,15 +474,6 @@ bool SrsTsMessage::fresh() | @@ -469,15 +474,6 @@ bool SrsTsMessage::fresh() | ||
| 469 | return payload->length() == 0; | 474 | return payload->length() == 0; |
| 470 | } | 475 | } |
| 471 | 476 | ||
| 472 | -void SrsTsMessage::clear() | ||
| 473 | -{ | ||
| 474 | - dts = pts = 0; | ||
| 475 | - continuity_counter = 0; | ||
| 476 | - PES_packet_length = 0; | ||
| 477 | - srs_freep(payload); | ||
| 478 | - payload = new SrsSimpleBuffer(); | ||
| 479 | -} | ||
| 480 | - | ||
| 481 | ISrsTsHandler::ISrsTsHandler() | 477 | ISrsTsHandler::ISrsTsHandler() |
| 482 | { | 478 | { |
| 483 | } | 479 | } |
| @@ -941,7 +937,7 @@ int SrsTsPayloadPES::decode(SrsStream* stream, SrsTsMessage** ppmsg) | @@ -941,7 +937,7 @@ int SrsTsPayloadPES::decode(SrsStream* stream, SrsTsMessage** ppmsg) | ||
| 941 | // init msg. | 937 | // init msg. |
| 942 | SrsTsMessage* msg = channel->msg; | 938 | SrsTsMessage* msg = channel->msg; |
| 943 | if (!msg) { | 939 | if (!msg) { |
| 944 | - msg = new SrsTsMessage(); | 940 | + msg = new SrsTsMessage(channel, packet); |
| 945 | channel->msg = msg; | 941 | channel->msg = msg; |
| 946 | } | 942 | } |
| 947 | 943 | ||
| @@ -967,7 +963,8 @@ int SrsTsPayloadPES::decode(SrsStream* stream, SrsTsMessage** ppmsg) | @@ -967,7 +963,8 @@ int SrsTsPayloadPES::decode(SrsStream* stream, SrsTsMessage** ppmsg) | ||
| 967 | 963 | ||
| 968 | // reparse current msg. | 964 | // reparse current msg. |
| 969 | stream->skip(stream->pos() * -1); | 965 | stream->skip(stream->pos() * -1); |
| 970 | - msg->clear(); | 966 | + srs_freep(msg); |
| 967 | + channel->msg = NULL; | ||
| 971 | return ERROR_SUCCESS; | 968 | return ERROR_SUCCESS; |
| 972 | } | 969 | } |
| 973 | 970 | ||
| @@ -991,7 +988,8 @@ int SrsTsPayloadPES::decode(SrsStream* stream, SrsTsMessage** ppmsg) | @@ -991,7 +988,8 @@ int SrsTsPayloadPES::decode(SrsStream* stream, SrsTsMessage** ppmsg) | ||
| 991 | 988 | ||
| 992 | // reparse current msg. | 989 | // reparse current msg. |
| 993 | stream->skip(stream->pos() * -1); | 990 | stream->skip(stream->pos() * -1); |
| 994 | - msg->clear(); | 991 | + srs_freep(msg); |
| 992 | + channel->msg = NULL; | ||
| 995 | return ERROR_SUCCESS; | 993 | return ERROR_SUCCESS; |
| 996 | } | 994 | } |
| 997 | } | 995 | } |
| @@ -1005,7 +1003,6 @@ int SrsTsPayloadPES::decode(SrsStream* stream, SrsTsMessage** ppmsg) | @@ -1005,7 +1003,6 @@ int SrsTsPayloadPES::decode(SrsStream* stream, SrsTsMessage** ppmsg) | ||
| 1005 | 1003 | ||
| 1006 | // reparse current msg. | 1004 | // reparse current msg. |
| 1007 | stream->skip(stream->pos() * -1); | 1005 | stream->skip(stream->pos() * -1); |
| 1008 | - | ||
| 1009 | return ret; | 1006 | return ret; |
| 1010 | } | 1007 | } |
| 1011 | 1008 |
| @@ -46,6 +46,7 @@ class SrsSimpleBuffer; | @@ -46,6 +46,7 @@ class SrsSimpleBuffer; | ||
| 46 | class SrsTsAdaptationField; | 46 | class SrsTsAdaptationField; |
| 47 | class SrsTsPayload; | 47 | class SrsTsPayload; |
| 48 | class SrsTsMessage; | 48 | class SrsTsMessage; |
| 49 | +class SrsTsPacket; | ||
| 49 | 50 | ||
| 50 | // Transport Stream packets are 188 bytes in length. | 51 | // Transport Stream packets are 188 bytes in length. |
| 51 | #define SRS_TS_PACKET_SIZE 188 | 52 | #define SRS_TS_PACKET_SIZE 188 |
| @@ -192,6 +193,9 @@ struct SrsTsChannel | @@ -192,6 +193,9 @@ struct SrsTsChannel | ||
| 192 | */ | 193 | */ |
| 193 | class SrsTsMessage | 194 | class SrsTsMessage |
| 194 | { | 195 | { |
| 196 | +private: | ||
| 197 | + SrsTsChannel* channel; | ||
| 198 | + SrsTsPacket* packet; | ||
| 195 | public: | 199 | public: |
| 196 | int64_t dts; | 200 | int64_t dts; |
| 197 | int64_t pts; | 201 | int64_t pts; |
| @@ -199,7 +203,7 @@ public: | @@ -199,7 +203,7 @@ public: | ||
| 199 | u_int8_t continuity_counter; | 203 | u_int8_t continuity_counter; |
| 200 | SrsSimpleBuffer* payload; | 204 | SrsSimpleBuffer* payload; |
| 201 | public: | 205 | public: |
| 202 | - SrsTsMessage(); | 206 | + SrsTsMessage(SrsTsChannel* c, SrsTsPacket* p); |
| 203 | virtual ~SrsTsMessage(); | 207 | virtual ~SrsTsMessage(); |
| 204 | public: | 208 | public: |
| 205 | /** | 209 | /** |
| @@ -219,10 +223,6 @@ public: | @@ -219,10 +223,6 @@ public: | ||
| 219 | * whether the message is fresh. | 223 | * whether the message is fresh. |
| 220 | */ | 224 | */ |
| 221 | virtual bool fresh(); | 225 | virtual bool fresh(); |
| 222 | - /** | ||
| 223 | - * clear current message. | ||
| 224 | - */ | ||
| 225 | - virtual void clear(); | ||
| 226 | }; | 226 | }; |
| 227 | 227 | ||
| 228 | /** | 228 | /** |
-
请 注册 或 登录 后发表评论