summaryrefslogtreecommitdiff
path: root/chromium/media/filters/mac/audio_toolbox_audio_encoder.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/media/filters/mac/audio_toolbox_audio_encoder.h')
-rw-r--r--chromium/media/filters/mac/audio_toolbox_audio_encoder.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/chromium/media/filters/mac/audio_toolbox_audio_encoder.h b/chromium/media/filters/mac/audio_toolbox_audio_encoder.h
index 02f7ddfcb0e..8acc616ee5e 100644
--- a/chromium/media/filters/mac/audio_toolbox_audio_encoder.h
+++ b/chromium/media/filters/mac/audio_toolbox_audio_encoder.h
@@ -1,4 +1,4 @@
-// Copyright 2022 The Chromium Authors. All rights reserved.
+// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -15,6 +15,7 @@
namespace media {
class AudioTimestampHelper;
+class ConvertingAudioFifo;
// Audio encoder based on macOS's AudioToolbox API. The AudioToolbox
// API is required to encode codecs that aren't supported by Chromium.
@@ -40,6 +41,8 @@ class MEDIA_EXPORT AudioToolboxAudioEncoder : public AudioEncoder {
bool CreateEncoder(const AudioEncoderConfig& config,
const AudioStreamBasicDescription& output_format);
+ void DoEncode(AudioBus* data);
+
// "Converter" for turning raw audio into encoded samples.
AudioConverterRef encoder_ = nullptr;
@@ -49,6 +52,8 @@ class MEDIA_EXPORT AudioToolboxAudioEncoder : public AudioEncoder {
// Actual sample rate from the encoder, may be different than config.
uint32_t sample_rate_ = 0u;
+ EncoderStatusCB current_done_cb_;
+
// Callback that delivers encoded frames.
OutputCB output_cb_;
@@ -58,6 +63,9 @@ class MEDIA_EXPORT AudioToolboxAudioEncoder : public AudioEncoder {
std::unique_ptr<AudioTimestampHelper> timestamp_helper_;
std::vector<uint8_t> codec_desc_;
+
+ // Ensures the data sent to Encode() matches the encoder's input format.
+ std::unique_ptr<ConvertingAudioFifo> fifo_;
};
} // namespace media