1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

supprot LAS(live adaptive stream)

Change-Id: I2f9fd889fc924a3b080667bd2114f4632be461a0
This commit is contained in:
liulichuan 2020-05-11 00:50:14 +08:00 committed by winlin
parent 34e7db5a93
commit c1f98ddcc8
10 changed files with 843 additions and 10 deletions

View file

@ -220,6 +220,11 @@ SrsSharedPtrMessage::SrsSharedPtrPayload::~SrsSharedPtrPayload()
SrsSharedPtrMessage::SrsSharedPtrMessage() : timestamp(0), stream_id(0), size(0), payload(NULL)
{
ptr = NULL;
#ifdef SRS_LAS
is_keyframe = false;
is_header = false;
pts = 0;
#endif
}
SrsSharedPtrMessage::~SrsSharedPtrMessage()
@ -232,6 +237,23 @@ SrsSharedPtrMessage::~SrsSharedPtrMessage()
}
}
}
#ifdef SRS_LAS
std::string SrsSharedPtrMessage::to_str() {
stringstream ss;
ss << "{";
ss << "dts=" << timestamp;
ss << ",pts=" << pts;
ss << ",is_k=" << is_keyframe;
ss << ",is_h=" << is_header;
if (ptr) {
ss << ",type=" << (int)ptr->header.message_type;
} else {
ss << ",type=unknow";
}
ss << "}";
return ss.str();
};
#endif
srs_error_t SrsSharedPtrMessage::create(SrsCommonMessage* msg)
{
@ -268,6 +290,19 @@ srs_error_t SrsSharedPtrMessage::create(SrsMessageHeader* pheader, char* payload
ptr->header.perfer_cid = pheader->perfer_cid;
this->timestamp = pheader->timestamp;
this->stream_id = pheader->stream_id;
#ifdef SRS_LAS
if (ptr->header.message_type == RTMP_MSG_VideoMessage) {
is_header = SrsFlvVideo::sh(payload, size);
is_keyframe = SrsFlvVideo::keyframe(payload, size) && !is_header;
pts = this->timestamp + SrsFlvVideo::cts(payload, size);
} else if (ptr->header.message_type == RTMP_MSG_AudioMessage) {
is_header = SrsFlvAudio::sh(payload, size);
pts=this->timestamp;
} else { // metadate
is_header = true;
pts=this->timestamp;
}
#endif
}
ptr->payload = payload;
ptr->size = size;
@ -361,6 +396,12 @@ SrsSharedPtrMessage* SrsSharedPtrMessage::copy()
copy->payload = ptr->payload;
copy->size = ptr->size;
#ifdef SRS_LAS
copy->pts = pts;
copy->is_header = is_header;
copy->is_keyframe = is_keyframe;
#endif
return copy;
}