diff --git a/src/media/video/decode/aom/aom_av1_decoder.cpp b/src/media/video/decode/aom/aom_av1_decoder.cpp index d3a4cc4..d060e89 100644 --- a/src/media/video/decode/aom/aom_av1_decoder.cpp +++ b/src/media/video/decode/aom/aom_av1_decoder.cpp @@ -76,7 +76,7 @@ int AomAv1Decoder::Init() { int AomAv1Decoder::Decode( std::unique_ptr received_frame, - std::function on_receive_decoded_frame) { + std::function on_receive_decoded_frame) { const uint8_t *data = received_frame->Buffer(); size_t size = received_frame->Size(); @@ -157,7 +157,7 @@ int AomAv1Decoder::Decode( fwrite((unsigned char *)decoded_frame_->Buffer(), 1, decoded_frame_->Size(), file_nv12_); #endif - on_receive_decoded_frame(*decoded_frame_); + on_receive_decoded_frame(decoded_frame_); return 0; } diff --git a/src/media/video/decode/aom/aom_av1_decoder.h b/src/media/video/decode/aom/aom_av1_decoder.h index e69a3ee..aff390d 100644 --- a/src/media/video/decode/aom/aom_av1_decoder.h +++ b/src/media/video/decode/aom/aom_av1_decoder.h @@ -24,7 +24,7 @@ class AomAv1Decoder : public VideoDecoder { int Decode( std::unique_ptr received_frame, - std::function on_receive_decoded_frame); + std::function on_receive_decoded_frame); std::string GetDecoderName() { return "AomAv1"; } diff --git a/src/media/video/decode/dav1d/dav1d_av1_decoder.cpp b/src/media/video/decode/dav1d/dav1d_av1_decoder.cpp index b2dd2d6..15757d9 100644 --- a/src/media/video/decode/dav1d/dav1d_av1_decoder.cpp +++ b/src/media/video/decode/dav1d/dav1d_av1_decoder.cpp @@ -117,7 +117,7 @@ int Dav1dAv1Decoder::Init() { int Dav1dAv1Decoder::Decode( std::unique_ptr received_frame, - std::function on_receive_decoded_frame) { + std::function on_receive_decoded_frame) { const uint8_t *data = received_frame->Buffer(); size_t size = received_frame->Size(); @@ -209,7 +209,7 @@ int Dav1dAv1Decoder::Decode( fwrite((unsigned char *)decoded_frame_->Buffer(), 1, decoded_frame_->Size(), file_nv12_); #endif - on_receive_decoded_frame(*decoded_frame_); + on_receive_decoded_frame(decoded_frame_); return 0; } \ No newline at end of file diff --git a/src/media/video/decode/dav1d/dav1d_av1_decoder.h b/src/media/video/decode/dav1d/dav1d_av1_decoder.h index 8927186..038f9b7 100644 --- a/src/media/video/decode/dav1d/dav1d_av1_decoder.h +++ b/src/media/video/decode/dav1d/dav1d_av1_decoder.h @@ -22,7 +22,7 @@ class Dav1dAv1Decoder : public VideoDecoder { int Decode( std::unique_ptr received_frame, - std::function on_receive_decoded_frame); + std::function on_receive_decoded_frame); std::string GetDecoderName() { return "Dav1dAv1"; } diff --git a/src/media/video/decode/nvcodec/nvidia_video_decoder.cpp b/src/media/video/decode/nvcodec/nvidia_video_decoder.cpp index 49b19b2..d6379e3 100644 --- a/src/media/video/decode/nvcodec/nvidia_video_decoder.cpp +++ b/src/media/video/decode/nvcodec/nvidia_video_decoder.cpp @@ -79,7 +79,7 @@ int NvidiaVideoDecoder::Init() { int NvidiaVideoDecoder::Decode( std::unique_ptr received_frame, - std::function on_receive_decoded_frame) { + std::function on_receive_decoded_frame) { if (!decoder) { return -1; } @@ -120,7 +120,7 @@ int NvidiaVideoDecoder::Decode( fwrite((unsigned char *)decoded_frame_->Buffer(), 1, decoded_frame_->Size(), file_nv12_); #endif - on_receive_decoded_frame(*decoded_frame_); + on_receive_decoded_frame(decoded_frame_); } } } diff --git a/src/media/video/decode/nvcodec/nvidia_video_decoder.h b/src/media/video/decode/nvcodec/nvidia_video_decoder.h index 5628bd2..6f44c77 100644 --- a/src/media/video/decode/nvcodec/nvidia_video_decoder.h +++ b/src/media/video/decode/nvcodec/nvidia_video_decoder.h @@ -15,7 +15,7 @@ class NvidiaVideoDecoder : public VideoDecoder { int Init(); int Decode(std::unique_ptr received_frame, - std::function on_receive_decoded_frame); + std::function on_receive_decoded_frame); std::string GetDecoderName() { return "NvidiaH264"; } diff --git a/src/media/video/decode/openh264/openh264_decoder.cpp b/src/media/video/decode/openh264/openh264_decoder.cpp index 7fe0b10..e4e2e1c 100644 --- a/src/media/video/decode/openh264/openh264_decoder.cpp +++ b/src/media/video/decode/openh264/openh264_decoder.cpp @@ -114,7 +114,7 @@ int OpenH264Decoder::Init() { int OpenH264Decoder::Decode( std::unique_ptr received_frame, - std::function on_receive_decoded_frame) { + std::function on_receive_decoded_frame) { if (!openh264_decoder_) { return -1; } @@ -204,7 +204,7 @@ int OpenH264Decoder::Decode( fwrite((unsigned char *)decoded_frame_->Buffer(), 1, decoded_frame_->Size(), nv12_stream_); #endif - on_receive_decoded_frame(*decoded_frame_); + on_receive_decoded_frame(decoded_frame_); } } diff --git a/src/media/video/decode/openh264/openh264_decoder.h b/src/media/video/decode/openh264/openh264_decoder.h index fbdb09e..3f6ad5c 100644 --- a/src/media/video/decode/openh264/openh264_decoder.h +++ b/src/media/video/decode/openh264/openh264_decoder.h @@ -25,7 +25,7 @@ class OpenH264Decoder : public VideoDecoder { int Init(); int Decode(std::unique_ptr received_frame, - std::function on_receive_decoded_frame); + std::function on_receive_decoded_frame); std::string GetDecoderName() { return "OpenH264"; } diff --git a/src/media/video/decode/video_decoder.h b/src/media/video/decode/video_decoder.h index 6c63055..f721df8 100644 --- a/src/media/video/decode/video_decoder.h +++ b/src/media/video/decode/video_decoder.h @@ -23,7 +23,7 @@ class VideoDecoder { virtual int Decode( std::unique_ptr received_frame, - std::function on_receive_decoded_frame) = 0; + std::function on_receive_decoded_frame) = 0; virtual std::string GetDecoderName() = 0; diff --git a/src/transport/ice_transport_controller.cpp b/src/transport/ice_transport_controller.cpp index ebf1ffe..2f2a200 100644 --- a/src/transport/ice_transport_controller.cpp +++ b/src/transport/ice_transport_controller.cpp @@ -319,19 +319,19 @@ void IceTransportController::OnReceiveCompleteFrame( uint64_t t = clock_->CurrentTime(); if (video_decoder_) { int num_frame_returned = video_decoder_->Decode( - std::move(received_frame), [this](const DecodedFrame& decoded_frame) { - if (on_receive_video_) { + std::move(received_frame), [this](const DecodedFrame* decoded_frame) { + if (on_receive_video_ && decoded_frame) { XVideoFrame x_video_frame; - x_video_frame.data = (const char*)decoded_frame.Buffer(); - x_video_frame.width = decoded_frame.DecodedWidth(); - x_video_frame.height = decoded_frame.DecodedHeight(); - x_video_frame.size = decoded_frame.Size(); + x_video_frame.data = (const char*)decoded_frame->Buffer(); + x_video_frame.width = decoded_frame->DecodedWidth(); + x_video_frame.height = decoded_frame->DecodedHeight(); + x_video_frame.size = decoded_frame->Size(); x_video_frame.captured_timestamp = - decoded_frame.CapturedTimestamp(); + decoded_frame->CapturedTimestamp(); x_video_frame.received_timestamp = - decoded_frame.ReceivedTimestamp(); + decoded_frame->ReceivedTimestamp(); x_video_frame.decoded_timestamp = - decoded_frame.DecodedTimestamp(); + decoded_frame->DecodedTimestamp(); if (on_receive_video_) { on_receive_video_(&x_video_frame, remote_user_id_.data(),