Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(133)

Unified Diff: media/filters/ffmpeg_demuxer.cc

Issue 1812543003: Allow muting/unmuting audio through media track API (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@blink-sb-tracks6
Patch Set: rebase Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/filters/ffmpeg_demuxer.cc
diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc
index e9b602fa4226cfee539de7f533ae36a35f364476..a4cfde4306c75b2e3d20c1b0b430a197b1be904b 100644
--- a/media/filters/ffmpeg_demuxer.cc
+++ b/media/filters/ffmpeg_demuxer.cc
@@ -1205,23 +1205,27 @@ void FFmpegDemuxer::OnFindStreamInfoDone(const PipelineStatusCB& status_cb,
// Note when we find our audio/video stream (we only want one of each) and
// record src= playback UMA stats for the stream's decoder config.
+ const MediaTrack* media_track = nullptr;
if (codec_type == AVMEDIA_TYPE_AUDIO) {
CHECK(!audio_stream);
audio_stream = stream;
audio_config = streams_[i]->audio_decoder_config();
RecordAudioCodecStats(audio_config);
- media_tracks->AddAudioTrack(audio_config, track_id, "main", track_label,
- track_language);
+ media_track = media_tracks->AddAudioTrack(audio_config, track_id, "main",
+ track_label, track_language);
} else if (codec_type == AVMEDIA_TYPE_VIDEO) {
CHECK(!video_stream);
video_stream = stream;
video_config = streams_[i]->video_decoder_config();
RecordVideoCodecStats(video_config, stream->codec->color_range);
- media_tracks->AddVideoTrack(video_config, track_id, "main", track_label,
- track_language);
+ media_track = media_tracks->AddVideoTrack(video_config, track_id, "main",
+ track_label, track_language);
}
+ DVLOG(5) << "Associating media_track=" << media_track
+ << " with demuxer_stream=" << streams_[i];
+ track_to_stream_map_[media_track] = streams_[i];
max_duration = std::max(max_duration, streams_[i]->duration());
@@ -1579,4 +1583,27 @@ void FFmpegDemuxer::SetLiveness(DemuxerStream::Liveness liveness) {
}
}
+void FFmpegDemuxer::OnTrackIdAssigned(unsigned track_id,
+ const MediaTrack* track) {
+ DVLOG(5) << "OnTrackIdAssigned track_id=" << track_id << " track=" << track;
+ if (track) {
+ DCHECK(track_id_to_track_map_.find(track_id) ==
+ track_id_to_track_map_.end());
+ track_id_to_track_map_[track_id] = track;
+ } else {
+ DCHECK(track_id_to_track_map_.find(track_id) !=
+ track_id_to_track_map_.end());
+ track_id_to_track_map_.erase(track_id);
+ }
+}
+
+const DemuxerStream* FFmpegDemuxer::GetDemuxerStreamByTrackId(
+ unsigned track_id) const {
+ const auto& it1 = track_id_to_track_map_.find(track_id);
+ CHECK(it1 != track_id_to_track_map_.end());
+ const auto& it2 = track_to_stream_map_.find(it1->second);
+ CHECK(it2 != track_to_stream_map_.end());
+ return it2->second;
+}
+
} // namespace media

Powered by Google App Engine
This is Rietveld 408576698