summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--media/filters/ffmpeg_demuxer.cc6
-rw-r--r--media/filters/ffmpeg_demuxer_unittest.cc4
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));