diff options
-rw-r--r-- | media/filters/ffmpeg_demuxer.cc | 6 | ||||
-rw-r--r-- | media/filters/ffmpeg_demuxer_unittest.cc | 4 |
2 files changed, 5 insertions, 5 deletions
diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc index 17248c6..413ff5a 100644 --- a/media/filters/ffmpeg_demuxer.cc +++ b/media/filters/ffmpeg_demuxer.cc @@ -336,11 +336,11 @@ int FFmpegDemuxer::Read(int size, uint8* data) { if (read_has_failed_) return AVERROR_IO; - // If the read position exceeds the size of the data source. We should return - // end-of-file directly. + // Even though FFmpeg defines AVERROR_EOF, it's not to be used with I/O + // routines. Instead return 0 for any read at or past EOF. int64 file_size; if (data_source_->GetSize(&file_size) && read_position_ >= file_size) - return AVERROR_EOF; + return 0; // Asynchronous read from data source. data_source_->Read(read_position_, size, data, diff --git a/media/filters/ffmpeg_demuxer_unittest.cc b/media/filters/ffmpeg_demuxer_unittest.cc index 5ba6fd3..aec72ea 100644 --- a/media/filters/ffmpeg_demuxer_unittest.cc +++ b/media/filters/ffmpeg_demuxer_unittest.cc @@ -682,8 +682,8 @@ TEST_F(FFmpegDemuxerTest, ProtocolRead) { EXPECT_TRUE(demuxer->GetPosition(&position)); EXPECT_EQ(1024, position); - // Third read will get an end-of-file error. - EXPECT_EQ(AVERROR_EOF, demuxer->Read(512, kBuffer)); + // Third read will get an end-of-file error, which is represented as zero. + EXPECT_EQ(0, demuxer->Read(512, kBuffer)); // This read complete signal is generated when demuxer is stopped. EXPECT_CALL(*demuxer, SignalReadCompleted(DataSource::kReadError)); |