mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2026-06-18 14:12:21 +08:00
新增媒体流flush机制:#1996
This commit is contained in:
@@ -19,37 +19,49 @@ namespace mediakit{
|
||||
RtpCache::RtpCache(onFlushed cb) {
|
||||
_cb = std::move(cb);
|
||||
}
|
||||
|
||||
bool RtpCache::firstKeyReady(bool in) {
|
||||
if(_first_key){
|
||||
if (_first_key) {
|
||||
return _first_key;
|
||||
}
|
||||
_first_key = in;
|
||||
return _first_key;
|
||||
}
|
||||
void RtpCache::onFlush(std::shared_ptr<List<Buffer::Ptr> > rtp_list, bool) {
|
||||
|
||||
void RtpCache::onFlush(std::shared_ptr<List<Buffer::Ptr>> rtp_list, bool) {
|
||||
_cb(std::move(rtp_list));
|
||||
}
|
||||
|
||||
void RtpCache::input(uint64_t stamp, Buffer::Ptr buffer,bool is_key ) {
|
||||
void RtpCache::input(uint64_t stamp, Buffer::Ptr buffer, bool is_key) {
|
||||
inputPacket(stamp, true, std::move(buffer), is_key);
|
||||
}
|
||||
|
||||
void RtpCachePS::onRTP(Buffer::Ptr buffer,bool is_key) {
|
||||
if(!firstKeyReady(is_key)){
|
||||
return;
|
||||
}
|
||||
auto rtp = std::static_pointer_cast<RtpPacket>(buffer);
|
||||
auto stamp = rtp->getStampMS();
|
||||
input(stamp, std::move(buffer),is_key);
|
||||
void RtpCachePS::flush() {
|
||||
PSEncoderImp::flush();
|
||||
RtpCache::flush();
|
||||
}
|
||||
|
||||
void RtpCacheRaw::onRTP(Buffer::Ptr buffer,bool is_key) {
|
||||
if(!firstKeyReady(is_key)){
|
||||
void RtpCachePS::onRTP(Buffer::Ptr buffer, bool is_key) {
|
||||
if (!firstKeyReady(is_key)) {
|
||||
return;
|
||||
}
|
||||
auto rtp = std::static_pointer_cast<RtpPacket>(buffer);
|
||||
auto stamp = rtp->getStampMS();
|
||||
input(stamp, std::move(buffer),is_key);
|
||||
input(stamp, std::move(buffer), is_key);
|
||||
}
|
||||
|
||||
void RtpCacheRaw::flush() {
|
||||
RawEncoderImp::flush();
|
||||
RtpCache::flush();
|
||||
}
|
||||
|
||||
void RtpCacheRaw::onRTP(Buffer::Ptr buffer, bool is_key) {
|
||||
if (!firstKeyReady(is_key)) {
|
||||
return;
|
||||
}
|
||||
auto rtp = std::static_pointer_cast<RtpPacket>(buffer);
|
||||
auto stamp = rtp->getStampMS();
|
||||
input(stamp, std::move(buffer), is_key);
|
||||
}
|
||||
|
||||
}//namespace mediakit
|
||||
|
||||
Reference in New Issue
Block a user