4#include <QtFFmpegMediaPluginImpl/private/qandroidvideodevices_p.h>
6#include <QtCore/private/qandroidextras_p.h>
7#include <QtCore/qcoreapplication.h>
8#include <QtCore/qcoreapplication_platform.h>
9#include <QtCore/qjnienvironment.h>
10#include <QtCore/qloggingcategory.h>
12#include <QtFFmpegMediaPluginImpl/private/qandroidvideoframebuffer_p.h>
14#include <QtMultimedia/private/qcameradevice_p.h>
20using namespace Qt::StringLiterals;
32 static_cast<
jlong>(
reinterpret_cast<
size_t>(
this)));
42 QCameraFormatPrivate *format =
new QCameraFormatPrivate();
44 format->resolution = { width, height };
46 format->minFrameRate = fpsMin;
47 format->maxFrameRate = fpsMax;
49 format->pixelFormat = QVideoFrameFormat::PixelFormat::Format_YUV420P;
51 return format->create();
161 auto *videoDevices =
reinterpret_cast<QAndroidVideoDevices*>(
static_cast<size_t>(nativePtr));
162 Q_ASSERT(!videoDevices->thread()->isCurrentThread());
163 videoDevices->onVideoInputsChanged();
165Q_DECLARE_JNI_NATIVE_METHOD(onCameraAvailableNative)
174 auto *videoDevices =
reinterpret_cast<QAndroidVideoDevices*>(
static_cast<size_t>(nativePtr));
175 Q_ASSERT(!videoDevices->thread()->isCurrentThread());
176 videoDevices->onVideoInputsChanged();
178Q_DECLARE_JNI_NATIVE_METHOD(onCameraUnavailableNative)
180bool QFFmpeg::QAndroidVideoDevices::registerNativeMethods() {
181 return QJavaCameraAvailabilityListener::registerNativeMethods({
182 Q_JNI_NATIVE_METHOD(onCameraAvailableNative),
183 Q_JNI_NATIVE_METHOD(onCameraUnavailableNative),
Q_STATIC_LOGGING_CATEGORY(qLCAndroidVideoDevices, "qt.multimedia.ffmpeg.android.videoDevices")
QCameraFormat createCameraFormat(int width, int height, int fpsMin, int fpsMax)
std::conditional_t< QT_FFMPEG_AVIO_WRITE_CONST, const uint8_t *, uint8_t * > AvioWriteBufferType
static void onCameraUnavailableNative(JNIEnv *, jobject, jlong nativePtr)
static void onCameraAvailableNative(JNIEnv *, jobject, jlong nativePtr)