53 void record(QMediaEncoderSettings &settings)
override;
58 void setMetaData(
const QMediaMetaData &metaData)
override;
64 void onRecorderStateChanged(
int state);
65 void onRecorderError(
int code,
const QString &message);
66 void onRecorderDuration(qint64 ms);
67 void onRecorderActualLocation(
const QUrl &url);
69 void onAudioOnlyStateNotification(
int state);
70 void onAudioOnlyErrorNotification(
int code,
const QString &message);
72 void connectToSession();
73 void disconnectFromSession();
75 bool recordAudioOnly(
const QMediaEncoderSettings &settings,
const QString &location);
77 void pauseAudioOnly();
78 void resumeAudioOnly();
79 void destroyAudioOnlyRecorder();
83 bool recordWave(
const QMediaEncoderSettings &settings,
const QString &location);
87 void destroyWaveRecorder();
89 static void audioOnlyStateCallback(OH_AVRecorder *recorder, OH_AVRecorder_State state,
90 OH_AVRecorder_StateChangeReason reason,
void *userData);
91 static void audioOnlyErrorCallback(OH_AVRecorder *recorder, int32_t errorCode,
92 const char *errorMsg,
void *userData);
94 QPointer<QOhosMediaCaptureSession> m_service;
95 QPointer<QOhosCameraSession> m_session;
97 QMediaMetaData m_metaData;
99 OH_AVRecorder *m_audioOnlyRecorder{
nullptr };
100 int m_audioOnlyFd{ -1 };
102 QUrl m_audioOnlyActualLocation;
103 QElapsedTimer m_audioOnlyTimer;
104 qint64 m_audioOnlyPausedMs{ 0 };
105 qint64 m_audioOnlyResumeStartMs{ 0 };
106 QTimer m_audioOnlyDurationTimer;
109 std::unique_ptr<QAudioSource> m_waveSource;
110 std::unique_ptr<QFile> m_waveFile;
112 QUrl m_waveActualLocation;
113 QAudioFormat m_waveFormat;
114 QElapsedTimer m_waveTimer;
115 qint64 m_wavePausedMs{ 0 };
116 qint64 m_waveResumeStartMs{ 0 };