Index: services/media/audio/audio_track_impl.cc |
diff --git a/services/media/audio/audio_track_impl.cc b/services/media/audio/audio_track_impl.cc |
index f0a22635d35084ec53001372438ca6e8ed60cf26..8ee305800755ae984ca09e2463740775d8599613 100644 |
--- a/services/media/audio/audio_track_impl.cc |
+++ b/services/media/audio/audio_track_impl.cc |
@@ -22,22 +22,25 @@ constexpr size_t AudioTrackImpl::PTS_FRACTIONAL_BITS; |
// initialization using mojom generated structs, we should switch to it. |
static const struct { |
LpcmSampleFormat sample_format; |
- uint8_t min_samples_per_frame; |
- uint8_t max_samples_per_frame; |
+ BoolRange interleaved; |
+ uint8_t min_channels; |
+ uint8_t max_channels; |
uint32_t min_frames_per_second; |
uint32_t max_frames_per_second; |
} kSupportedLpcmTypeSets[] = { |
{ |
.sample_format = LpcmSampleFormat::UNSIGNED_8, |
- .min_samples_per_frame = 1, |
- .max_samples_per_frame = 2, |
+ .interleaved = BoolRange::TRUE, |
+ .min_channels = 1, |
+ .max_channels = 2, |
.min_frames_per_second = 1000, |
.max_frames_per_second = 48000, |
}, |
{ |
.sample_format = LpcmSampleFormat::SIGNED_16, |
- .min_samples_per_frame = 1, |
- .max_samples_per_frame = 2, |
+ .interleaved = BoolRange::TRUE, |
+ .min_channels = 1, |
+ .max_channels = 2, |
.min_frames_per_second = 1000, |
.max_frames_per_second = 48000, |
}, |
@@ -91,8 +94,9 @@ void AudioTrackImpl::Describe(const DescribeCallback& cbk) { |
LpcmMediaTypeSetDetailsPtr lpcm_detail = LpcmMediaTypeSetDetails::New(); |
lpcm_detail->sample_format = s.sample_format; |
- lpcm_detail->min_samples_per_frame = s.min_samples_per_frame; |
- lpcm_detail->max_samples_per_frame = s.max_samples_per_frame; |
+ lpcm_detail->interleaved = s.interleaved; |
+ lpcm_detail->min_channels = s.min_channels; |
+ lpcm_detail->max_channels = s.max_channels; |
lpcm_detail->min_frames_per_second = s.min_frames_per_second; |
lpcm_detail->max_frames_per_second = s.max_frames_per_second; |
mts->details->set_lpcm(lpcm_detail.Pass()); |
@@ -125,8 +129,10 @@ void AudioTrackImpl::Configure(AudioTrackConfigurationPtr configuration, |
const auto& cfg_set = kSupportedLpcmTypeSets[i]; |
if ((cfg->sample_format == cfg_set.sample_format) && |
- (cfg->samples_per_frame >= cfg_set.min_samples_per_frame) && |
- (cfg->samples_per_frame <= cfg_set.max_samples_per_frame) && |
+ (cfg_set.interleaved == BoolRange::EITHER || |
+ cfg->interleaved == (cfg_set.interleaved == BoolRange::TRUE)) && |
+ (cfg->channels >= cfg_set.min_channels) && |
+ (cfg->channels <= cfg_set.max_channels) && |
(cfg->frames_per_second >= cfg_set.min_frames_per_second) && |
(cfg->frames_per_second <= cfg_set.max_frames_per_second)) { |
break; |
@@ -180,7 +186,7 @@ void AudioTrackImpl::Configure(AudioTrackConfigurationPtr configuration, |
bytes_per_frame_ = 2; |
break; |
} |
- bytes_per_frame_ *= cfg->samples_per_frame; |
+ bytes_per_frame_ *= cfg->channels; |
// Overflow trying to convert from frames to bytes? |
uint64_t requested_frames = configuration->max_frames; |