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

srs-librtmp: finish the simple publish and play sample.

This commit is contained in:
winlin 2014-03-02 18:33:32 +08:00
parent efa09102cf
commit c1086f8a9d
6 changed files with 110 additions and 10 deletions

View file

@ -1193,6 +1193,33 @@ bool SrsMessageHeader::is_user_control_message()
return message_type == RTMP_MSG_UserControlMessage;
}
void SrsMessageHeader::initialize_amf0_script(int size, int stream)
{
message_type = RTMP_MSG_AMF0DataMessage;
payload_length = (int32_t)size;
timestamp_delta = (int32_t)0;
timestamp = (int64_t)0;
stream_id = (int32_t)stream;
}
void SrsMessageHeader::initialize_audio(int size, u_int32_t time, int stream)
{
message_type = RTMP_MSG_AudioMessage;
payload_length = (int32_t)size;
timestamp_delta = (int32_t)time;
timestamp = (int64_t)time;
stream_id = (int32_t)stream;
}
void SrsMessageHeader::initialize_video(int size, u_int32_t time, int stream)
{
message_type = RTMP_MSG_VideoMessage;
payload_length = (int32_t)size;
timestamp_delta = (int32_t)time;
timestamp = (int64_t)time;
stream_id = (int32_t)stream;
}
SrsChunkStream::SrsChunkStream(int _cid)
{
fmt = 0;
@ -1516,7 +1543,7 @@ int SrsSharedPtrMessage::initialize(SrsCommonMessage* source)
{
int ret = ERROR_SUCCESS;
if ((ret = initialize(source, (char*)source->payload, source->size)) != ERROR_SUCCESS) {
if ((ret = initialize(&source->header, (char*)source->payload, source->size)) != ERROR_SUCCESS) {
return ret;
}
@ -1527,7 +1554,7 @@ int SrsSharedPtrMessage::initialize(SrsCommonMessage* source)
return ret;
}
int SrsSharedPtrMessage::initialize(SrsCommonMessage* source, char* payload, int size)
int SrsSharedPtrMessage::initialize(SrsMessageHeader* source, char* payload, int size)
{
int ret = ERROR_SUCCESS;
@ -1540,7 +1567,7 @@ int SrsSharedPtrMessage::initialize(SrsCommonMessage* source, char* payload, int
return ret;
}
header = source->header;
header = *source;
header.payload_length = size;
ptr = new SrsSharedPtr();
@ -1549,9 +1576,9 @@ int SrsSharedPtrMessage::initialize(SrsCommonMessage* source, char* payload, int
ptr->payload = payload;
ptr->size = size;
if (source->header.is_video()) {
if (source->is_video()) {
ptr->perfer_cid = RTMP_CID_Video;
} else if (source->header.is_audio()) {
} else if (source->is_audio()) {
ptr->perfer_cid = RTMP_CID_Audio;
} else {
ptr->perfer_cid = RTMP_CID_OverConnection2;

View file

@ -262,6 +262,10 @@ struct SrsMessageHeader
bool is_window_ackledgement_size();
bool is_set_chunk_size();
bool is_user_control_message();
void initialize_amf0_script(int size, int stream);
void initialize_audio(int size, u_int32_t time, int stream);
void initialize_video(int size, u_int32_t time, int stream);
};
/**
@ -434,9 +438,9 @@ public:
virtual int initialize(SrsCommonMessage* source);
/**
* set the shared payload.
* we will use the payload, donot use the payload of source.
* use source header, and specified param payload.
*/
virtual int initialize(SrsCommonMessage* source, char* payload, int size);
virtual int initialize(SrsMessageHeader* source, char* payload, int size);
virtual SrsSharedPtrMessage* copy();
public:
/**