mirror of
https://github.com/kunkundi/crossdesk.git
synced 2025-10-27 12:45:35 +08:00
Use factory to create encoder/decoder
This commit is contained in:
@@ -60,7 +60,7 @@ int PeerConnection::Init(PeerConnectionParams params,
|
||||
|
||||
on_receive_video_ = [this](const char *data, size_t size, const char *user_id,
|
||||
size_t user_id_size) {
|
||||
int num_frame_returned = Decode(
|
||||
int num_frame_returned = video_decoder->Decode(
|
||||
(uint8_t *)data, size,
|
||||
[this, user_id, user_id_size](VideoFrame video_frame) {
|
||||
if (on_receive_video_buffer_) {
|
||||
@@ -101,8 +101,15 @@ int PeerConnection::Init(PeerConnectionParams params,
|
||||
|
||||
do {
|
||||
} while (SignalStatus::Connected != GetSignalStatus());
|
||||
VideoEncoder::Init();
|
||||
VideoDecoder::Init();
|
||||
|
||||
video_encoder =
|
||||
VideoEncoderFactory::CreateVideoEncoder(hardware_accelerated_encode_);
|
||||
video_encoder->Init();
|
||||
video_decoder =
|
||||
VideoDecoderFactory::CreateVideoDecoder(hardware_accelerated_decode_);
|
||||
video_decoder->Init();
|
||||
// VideoEncoder::Init();
|
||||
// VideoDecoder::Init();
|
||||
nv12_data_ = new char[1280 * 720 * 3 / 2];
|
||||
|
||||
return 0;
|
||||
@@ -302,7 +309,7 @@ int PeerConnection::SendVideoData(const char *data, size_t size) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
int ret = Encode(
|
||||
int ret = video_encoder->Encode(
|
||||
(uint8_t *)data, size, [this](char *encoded_frame, size_t size) -> int {
|
||||
for (auto &ice_trans : ice_transmission_list_) {
|
||||
// LOG_ERROR("H264 frame size: [{}]", size);
|
||||
|
||||
@@ -8,10 +8,8 @@
|
||||
#include "ice_transmission.h"
|
||||
#ifdef _WIN32
|
||||
|
||||
#include "ffmpeg_decoder.h"
|
||||
#include "ffmpeg_encoder.h"
|
||||
// #include "nv_decoder.h"
|
||||
// #include "nv_encoder.h"
|
||||
#include "video_decoder_factory.h"
|
||||
#include "video_encoder_factory.h"
|
||||
#endif
|
||||
|
||||
#include "ws_transmission.h"
|
||||
@@ -31,7 +29,7 @@ typedef struct {
|
||||
NetStatusReport net_status_report;
|
||||
} PeerConnectionParams;
|
||||
|
||||
class PeerConnection : public VideoEncoder, VideoDecoder {
|
||||
class PeerConnection {
|
||||
public:
|
||||
PeerConnection();
|
||||
~PeerConnection();
|
||||
@@ -100,6 +98,12 @@ class PeerConnection : public VideoEncoder, VideoDecoder {
|
||||
OnReceiveBuffer on_receive_audio_buffer_;
|
||||
OnReceiveBuffer on_receive_data_buffer_;
|
||||
char *nv12_data_ = nullptr;
|
||||
|
||||
private:
|
||||
VideoEncoder *video_encoder = nullptr;
|
||||
VideoDecoder *video_decoder = nullptr;
|
||||
bool hardware_accelerated_encode_ = true;
|
||||
bool hardware_accelerated_decode_ = true;
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user