зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1786306 assert that there is no more than one output for each key on a track r=padenot
SetAudioOutputVolume() assumes this. Depends on D158304 Differential Revision: https://phabricator.services.mozilla.com/D158305
This commit is contained in:
Родитель
9ab92a85f6
Коммит
4268d59840
|
@ -825,6 +825,7 @@ void MediaTrackGraphImpl::CloseAudioInputImpl(DeviceInputTrack* aTrack) {
|
|||
|
||||
void MediaTrackGraphImpl::RegisterAudioOutput(MediaTrack* aTrack, void* aKey) {
|
||||
MOZ_ASSERT(OnGraphThread());
|
||||
MOZ_ASSERT(!mAudioOutputs.Contains(TrackAndKey{aTrack, aKey}));
|
||||
|
||||
TrackKeyAndVolume* tkv = mAudioOutputs.AppendElement();
|
||||
tkv->mTrack = aTrack;
|
||||
|
@ -861,10 +862,7 @@ void MediaTrackGraphImpl::UnregisterAudioOutput(MediaTrack* aTrack,
|
|||
void* aKey) {
|
||||
MOZ_ASSERT(OnGraphThreadOrNotRunning());
|
||||
|
||||
mAudioOutputs.RemoveElementsBy(
|
||||
[&aKey, &aTrack](const TrackKeyAndVolume& aTkv) {
|
||||
return aTkv.mKey == aKey && aTkv.mTrack == aTrack;
|
||||
});
|
||||
mAudioOutputs.RemoveElement(TrackAndKey{aTrack, aKey});
|
||||
}
|
||||
|
||||
void MediaTrackGraphImpl::CloseAudioInput(DeviceInputTrack* aTrack) {
|
||||
|
|
|
@ -414,6 +414,10 @@ class MediaTrackGraphImpl : public MediaTrackGraph,
|
|||
* Queue audio (mix of track audio and silence for blocked intervals)
|
||||
* to the audio output track. Returns the number of frames played.
|
||||
*/
|
||||
struct TrackAndKey {
|
||||
MediaTrack* mTrack;
|
||||
void* mKey;
|
||||
};
|
||||
struct TrackKeyAndVolume {
|
||||
MediaTrack* mTrack;
|
||||
void* mKey;
|
||||
|
@ -1046,4 +1050,16 @@ class MediaTrackGraphImpl : public MediaTrackGraph,
|
|||
|
||||
} // namespace mozilla
|
||||
|
||||
template <>
|
||||
class nsDefaultComparator<mozilla::MediaTrackGraphImpl::TrackKeyAndVolume,
|
||||
mozilla::MediaTrackGraphImpl::TrackAndKey> {
|
||||
public:
|
||||
bool Equals(
|
||||
const mozilla::MediaTrackGraphImpl::TrackKeyAndVolume& aElement,
|
||||
const mozilla::MediaTrackGraphImpl::TrackAndKey& aTrackAndKey) const {
|
||||
return aElement.mTrack == aTrackAndKey.mTrack &&
|
||||
aElement.mKey == aTrackAndKey.mKey;
|
||||
}
|
||||
};
|
||||
|
||||
#endif /* MEDIATRACKGRAPHIMPL_H_ */
|
||||
|
|
Загрузка…
Ссылка в новой задаче