summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDoris Verria <doris.verria@qt.io>2021-05-10 23:12:08 +0200
committerLars Knoll <lars.knoll@qt.io>2021-05-12 07:33:04 +0000
commit3c80567d0e00b43992ce355509cca0d72749a84b (patch)
treea1c8bfad83c98712b4131bc6e073ba244ded38e7
parent3e913c0814464bd9b09307d2e3d7c6763a1481b3 (diff)
Support WAV format recordings on macOS
Apple supports recording to a wav file so we can add the WAV container and audio codec to the list of supported encoding formats for macOS/iOS. Change-Id: Ic161d8ef1184d2d6040da6c07995b51b821b7bf1 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
-rw-r--r--src/multimedia/platform/darwin/camera/avfmediaencoder.mm4
-rw-r--r--src/multimedia/platform/darwin/qdarwinformatsinfo.mm6
-rw-r--r--src/multimedia/qmediaformat.cpp2
3 files changed, 8 insertions, 4 deletions
diff --git a/src/multimedia/platform/darwin/camera/avfmediaencoder.mm b/src/multimedia/platform/darwin/camera/avfmediaencoder.mm
index 88dfba449..263ffb068 100644
--- a/src/multimedia/platform/darwin/camera/avfmediaencoder.mm
+++ b/src/multimedia/platform/darwin/camera/avfmediaencoder.mm
@@ -163,8 +163,8 @@ static NSDictionary *avfAudioSettings(const QMediaEncoderSettings &encoderSettin
[settings setObject:[NSNumber numberWithInt:codecId] forKey:AVFormatIDKey];
#ifdef Q_OS_MACOS
- // Setting AVEncoderQualityKey is not allowed when format ID is 'alac'
- if (codecId != kAudioFormatAppleLossless
+ // Setting AVEncoderQualityKey is not allowed when format ID is alac or lpcm
+ if (codecId != kAudioFormatAppleLossless && codecId != kAudioFormatLinearPCM
&& encoderSettings.encodingMode() == QMediaEncoderSettings::ConstantQualityEncoding) {
int quality;
switch (encoderSettings.quality()) {
diff --git a/src/multimedia/platform/darwin/qdarwinformatsinfo.mm b/src/multimedia/platform/darwin/qdarwinformatsinfo.mm
index 0aa976a24..1cbbee939 100644
--- a/src/multimedia/platform/darwin/qdarwinformatsinfo.mm
+++ b/src/multimedia/platform/darwin/qdarwinformatsinfo.mm
@@ -159,6 +159,9 @@ QDarwinFormatInfo::QDarwinFormatInfo()
{ QMediaFormat::Mpeg4Audio,
{ QMediaFormat::AudioCodec::AAC },
{} },
+ { QMediaFormat::Wave,
+ { QMediaFormat::AudioCodec::Wave },
+ {} },
};
// #endif
@@ -177,7 +180,6 @@ int QDarwinFormatInfo::audioFormatForCodec(QMediaFormat::AudioCodec codec)
case QMediaFormat::AudioCodec::Unspecified:
case QMediaFormat::AudioCodec::DolbyTrueHD:
case QMediaFormat::AudioCodec::Vorbis:
- case QMediaFormat::AudioCodec::Wave:
// Unsupported, shouldn't happen. Fall back to AAC
case QMediaFormat::AudioCodec::AAC:
codecId = kAudioFormatMPEG4AAC;
@@ -200,6 +202,8 @@ int QDarwinFormatInfo::audioFormatForCodec(QMediaFormat::AudioCodec codec)
case QMediaFormat::AudioCodec::Opus:
codecId = kAudioFormatOpus;
break;
+ case QMediaFormat::AudioCodec::Wave:
+ codecId = kAudioFormatLinearPCM;
}
return codecId;
}
diff --git a/src/multimedia/qmediaformat.cpp b/src/multimedia/qmediaformat.cpp
index bcb246be9..4c239e78f 100644
--- a/src/multimedia/qmediaformat.cpp
+++ b/src/multimedia/qmediaformat.cpp
@@ -62,7 +62,7 @@ const char *mimeTypeForFormat[QMediaFormat::LastFileFormat + 2] =
"audio/mpeg",
"audio/mp4",
"audio/alac",
- "audio/wave",
+ "audio/wav",
};
}