Skip to content

Commit 5000b61

Browse files
committed
feat: switch libargus capture from buffer stream to EGL stream
1 parent a85f9e1 commit 5000b61

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

src/capturer/libargus_egl_capturer.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -192,10 +192,12 @@ void LibargusEglCapturer::InitCamera() {
192192
Argus::UniqueObj<Argus::OutputStreamSettings> stream_settings(
193193
icapture_session_->createOutputStreamSettings(Argus::STREAM_TYPE_EGL));
194194
auto iegl_stream_settings = interface_cast<Argus::IEGLOutputStreamSettings>(stream_settings);
195-
if (iegl_stream_settings) {
196-
iegl_stream_settings->setPixelFormat(Argus::PIXEL_FMT_YCbCr_420_888);
197-
iegl_stream_settings->setResolution(Argus::Size2D<uint32_t>(width_, height_));
195+
if (!iegl_stream_settings) {
196+
throw std::runtime_error("Failed to get IEGLOutputStreamSettings");
198197
}
198+
iegl_stream_settings->setEGLDisplay(EGL_NO_DISPLAY);
199+
iegl_stream_settings->setPixelFormat(Argus::PIXEL_FMT_YCbCr_420_888);
200+
iegl_stream_settings->setResolution(Argus::Size2D<uint32_t>(width_, height_));
199201

200202
output_stream_ = Argus::UniqueObj<Argus::OutputStream>(
201203
icapture_session_->createOutputStream(stream_settings.get()));
@@ -300,7 +302,7 @@ rtc::scoped_refptr<webrtc::I420BufferInterface> LibargusEglCapturer::GetI420Fram
300302

301303
void LibargusEglCapturer::StartCapture() {
302304
framesize_ = width_ * height_ + ((width_ + 1) / 2) * ((height_ + 1) / 2) * 2;
303-
frame_buffer_ = V4L2FrameBuffer::Create(width_, height_, framesize_, V4L2_PIX_FMT_YUV420);
305+
frame_buffer_ = V4L2FrameBuffer::Create(width_, height_, framesize_, format_);
304306

305307
if (iegl_stream_->waitUntilConnected() != Argus::STATUS_OK) {
306308
ERROR_PRINT("Stream failed to connect.");

src/rtc/conductor.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@
2323
#if defined(USE_LIBCAMERA_CAPTURE)
2424
#include "capturer/libcamera_capturer.h"
2525
#elif defined(USE_LIBARGUS_CAPTURE)
26-
#include "capturer/libargus_buffer_capturer.h"
26+
// #include "capturer/libargus_buffer_capturer.h"
27+
#include "capturer/libargus_egl_capturer.h"
2728
#endif
2829
#include "capturer/v4l2_capturer.h"
2930
#include "common/logging.h"
@@ -80,7 +81,8 @@ void Conductor::InitializeTracks() {
8081
#elif defined(USE_LIBARGUS_CAPTURE)
8182
else if (args.use_libargus) {
8283
INFO_PRINT("Use libargus capturer.");
83-
return LibargusBufferCapturer::Create(args);
84+
// return LibargusBufferCapturer::Create(args);
85+
return LibargusEglCapturer::Create(args);
8486
}
8587
#endif
8688
ERROR_PRINT("Capturer is undefined.");

0 commit comments

Comments
 (0)