Fix crash caused by multi threads during program termination

This commit is contained in:
dijunkun
2023-09-11 14:45:22 +08:00
parent 79c838629a
commit 0899fe2f1d
11 changed files with 199 additions and 122 deletions

View File

@@ -3,14 +3,15 @@
#include <functional>
#include <map>
#include <mutex>
#include <queue>
#include <thread>
#include "frame.h"
#include "ringbuffer.h"
#include "rtp_video_session.h"
#include "thread_base.h"
class RtpVideoReceiver {
class RtpVideoReceiver : public ThreadBase {
public:
RtpVideoReceiver();
~RtpVideoReceiver();
@@ -23,13 +24,16 @@ class RtpVideoReceiver {
on_receive_complete_frame_ = on_receive_complete_frame;
}
void Start();
void Stop();
private:
bool CheckIsFrameCompleted(RtpPacket& rtp_packet);
void Process();
// private:
// void OnReceiveFrame(uint8_t* payload) {}
private:
bool Process() override;
private:
std::map<uint16_t, RtpPacket> incomplete_frame_list_;
uint8_t* nv12_data_ = nullptr;
@@ -37,8 +41,9 @@ class RtpVideoReceiver {
uint32_t last_complete_frame_ts_ = 0;
RingBuffer<VideoFrame> compelete_video_frame_queue_;
std::thread* jitter_thread_ = nullptr;
bool start_ = false;
bool stop_ = true;
std::mutex mutex_;
};
#endif