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

Unified Diff: media/filters/ffmpeg_demuxer.cc

Issue 692323002: Move Liveness from DemuxerStreamProvider to DemuxerStream. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix mojo Created 6 years, 1 month 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
« no previous file with comments | « media/filters/ffmpeg_demuxer.h ('k') | media/filters/frame_processor_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/filters/ffmpeg_demuxer.cc
diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc
index 227cd6aad27c5198bcab5d4d4341301d43397af2..00bf9109d2708fa2a42c7ee043fbac9f23395cf9 100644
--- a/media/filters/ffmpeg_demuxer.cc
+++ b/media/filters/ffmpeg_demuxer.cc
@@ -93,6 +93,7 @@ FFmpegDemuxerStream::FFmpegDemuxerStream(FFmpegDemuxer* demuxer,
task_runner_(base::MessageLoopProxy::current()),
stream_(stream),
type_(UNKNOWN),
+ liveness_(LIVENESS_UNKNOWN),
end_of_stream_(false),
last_packet_timestamp_(kNoTimestamp()),
last_packet_duration_(kNoTimestamp()),
@@ -168,6 +169,12 @@ FFmpegDemuxerStream::FFmpegDemuxerStream(FFmpegDemuxer* demuxer,
}
}
+FFmpegDemuxerStream::~FFmpegDemuxerStream() {
+ DCHECK(!demuxer_);
+ DCHECK(read_cb_.is_null());
+ DCHECK(buffer_queue_.IsEmpty());
+}
+
void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) {
DCHECK(task_runner_->BelongsToCurrentThread());
@@ -403,11 +410,16 @@ void FFmpegDemuxerStream::Stop() {
end_of_stream_ = true;
}
-DemuxerStream::Type FFmpegDemuxerStream::type() {
+DemuxerStream::Type FFmpegDemuxerStream::type() const {
DCHECK(task_runner_->BelongsToCurrentThread());
return type_;
}
+DemuxerStream::Liveness FFmpegDemuxerStream::liveness() const {
+ DCHECK(task_runner_->BelongsToCurrentThread());
+ return liveness_;
+}
+
void FFmpegDemuxerStream::Read(const ReadCB& read_cb) {
DCHECK(task_runner_->BelongsToCurrentThread());
CHECK(read_cb_.is_null()) << "Overlapping reads are not supported";
@@ -473,10 +485,10 @@ VideoRotation FFmpegDemuxerStream::video_rotation() {
return video_rotation_;
}
-FFmpegDemuxerStream::~FFmpegDemuxerStream() {
- DCHECK(!demuxer_);
- DCHECK(read_cb_.is_null());
- DCHECK(buffer_queue_.IsEmpty());
+void FFmpegDemuxerStream::SetLiveness(Liveness liveness) {
+ DCHECK(task_runner_->BelongsToCurrentThread());
+ DCHECK_EQ(liveness_, LIVENESS_UNKNOWN);
+ liveness_ = liveness;
}
base::TimeDelta FFmpegDemuxerStream::GetElapsedTime() const {
@@ -571,7 +583,6 @@ FFmpegDemuxer::FFmpegDemuxer(
start_time_(kNoTimestamp()),
preferred_stream_for_seeking_(-1, kNoTimestamp()),
fallback_stream_for_seeking_(-1, kNoTimestamp()),
- liveness_(LIVENESS_UNKNOWN),
text_enabled_(false),
duration_known_(false),
need_key_cb_(need_key_cb),
@@ -711,11 +722,6 @@ base::TimeDelta FFmpegDemuxer::GetStartTime() const {
return std::max(start_time_, base::TimeDelta());
}
-Demuxer::Liveness FFmpegDemuxer::GetLiveness() const {
- DCHECK(task_runner_->BelongsToCurrentThread());
- return liveness_;
-}
-
void FFmpegDemuxer::AddTextStreams() {
DCHECK(task_runner_->BelongsToCurrentThread());
@@ -988,11 +994,11 @@ void FFmpegDemuxer::OnFindStreamInfoDone(const PipelineStatusCB& status_cb,
timeline_offset_ += start_time_;
if (max_duration == kInfiniteDuration() && !timeline_offset_.is_null()) {
- liveness_ = LIVENESS_LIVE;
+ SetLiveness(DemuxerStream::LIVENESS_LIVE);
} else if (max_duration != kInfiniteDuration()) {
- liveness_ = LIVENESS_RECORDED;
+ SetLiveness(DemuxerStream::LIVENESS_RECORDED);
} else {
- liveness_ = LIVENESS_UNKNOWN;
+ SetLiveness(DemuxerStream::LIVENESS_UNKNOWN);
}
// Good to go: set the duration and bitrate and notify we're done
@@ -1275,4 +1281,12 @@ void FFmpegDemuxer::OnDataSourceError() {
host_->OnDemuxerError(PIPELINE_ERROR_READ);
}
+void FFmpegDemuxer::SetLiveness(DemuxerStream::Liveness liveness) {
+ DCHECK(task_runner_->BelongsToCurrentThread());
+ for (const auto& stream : streams_) { // |stream| is a ref to a pointer.
+ if (stream)
+ stream->SetLiveness(liveness);
+ }
+}
+
} // namespace media
« no previous file with comments | « media/filters/ffmpeg_demuxer.h ('k') | media/filters/frame_processor_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698