summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorjochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-14 10:51:07 +0000
committerjochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-14 10:51:07 +0000
commite53d3ff360d9b38fd7c9469cfcad1554e989cbc1 (patch)
tree7f7ecae295cede0c7b278ebefb3fa481f75c62e6 /media
parenta9eb92e5aacf23874b075d2f707150e7d9578cd4 (diff)
downloadchromium_src-e53d3ff360d9b38fd7c9469cfcad1554e989cbc1.zip
chromium_src-e53d3ff360d9b38fd7c9469cfcad1554e989cbc1.tar.gz
chromium_src-e53d3ff360d9b38fd7c9469cfcad1554e989cbc1.tar.bz2
Revert 167638 - Reimplement FileDataSource using file_util::MemoryMappedFile and convert to using FilePath.
Review URL: https://chromiumcodereview.appspot.com/11360229 TBR=scherkus@chromium.org Review URL: https://codereview.chromium.org/11361258 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@167644 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media')
-rw-r--r--media/base/test_data_util.cc4
-rw-r--r--media/base/test_data_util.h5
-rw-r--r--media/ffmpeg/ffmpeg_regression_tests.cc4
-rw-r--r--media/filters/blocking_url_protocol_unittest.cc2
-rw-r--r--media/filters/ffmpeg_demuxer_unittest.cc2
-rw-r--r--media/filters/file_data_source.cc89
-rw-r--r--media/filters/file_data_source.h14
-rw-r--r--media/filters/file_data_source_unittest.cc13
-rw-r--r--media/filters/pipeline_integration_test.cc15
-rw-r--r--media/filters/pipeline_integration_test_base.cc16
-rw-r--r--media/filters/pipeline_integration_test_base.h11
-rw-r--r--media/tools/player_wtl/movie.cc5
-rw-r--r--media/tools/player_wtl/movie.h2
-rw-r--r--media/tools/player_x11/player_x11.cc4
-rw-r--r--media/tools/seek_tester/seek_tester.cc3
15 files changed, 111 insertions, 78 deletions
diff --git a/media/base/test_data_util.cc b/media/base/test_data_util.cc
index 134655d..4cba4a8 100644
--- a/media/base/test_data_util.cc
+++ b/media/base/test_data_util.cc
@@ -11,7 +11,7 @@
namespace media {
-FilePath GetTestDataFilePath(const std::string& name) {
+std::string GetTestDataURL(const std::string& name) {
FilePath file_path;
CHECK(PathService::Get(base::DIR_SOURCE_ROOT, &file_path));
@@ -19,7 +19,7 @@ FilePath GetTestDataFilePath(const std::string& name) {
.Append(FILE_PATH_LITERAL("test"))
.Append(FILE_PATH_LITERAL("data"))
.AppendASCII(name);
- return file_path;
+ return file_path.MaybeAsASCII();
}
scoped_refptr<DecoderBuffer> ReadTestDataFile(const std::string& name) {
diff --git a/media/base/test_data_util.h b/media/base/test_data_util.h
index 062bbda..81efa80 100644
--- a/media/base/test_data_util.h
+++ b/media/base/test_data_util.h
@@ -8,7 +8,6 @@
#include <string>
#include "base/basictypes.h"
-#include "base/file_path.h"
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
@@ -16,8 +15,8 @@ namespace media {
class DecoderBuffer;
-// Returns a file path for a file in the media/test/data directory.
-FilePath GetTestDataFilePath(const std::string& name);
+// Returns a URL path for a file in the media/test/data directory.
+std::string GetTestDataURL(const std::string& name);
// Reads a test file from media/test/data directory and stores it in
// a DecoderBuffer. Use DecoderBuffer vs DataBuffer to ensure no matter
diff --git a/media/ffmpeg/ffmpeg_regression_tests.cc b/media/ffmpeg/ffmpeg_regression_tests.cc
index 0b4dd40..8fce919 100644
--- a/media/ffmpeg/ffmpeg_regression_tests.cc
+++ b/media/ffmpeg/ffmpeg_regression_tests.cc
@@ -334,7 +334,7 @@ FLAKY_FFMPEG_TEST_CASE(MP4_10, "security/null1.m4a");
TEST_P(FFmpegRegressionTest, BasicPlayback) {
if (GetParam().init_status == PIPELINE_OK) {
- ASSERT_TRUE(Start(GetTestDataFilePath(GetParam().filename),
+ ASSERT_TRUE(Start(GetTestDataURL(GetParam().filename),
GetParam().init_status, true));
Play();
ASSERT_EQ(WaitUntilEndedOrError(), GetParam().end_status);
@@ -349,7 +349,7 @@ TEST_P(FFmpegRegressionTest, BasicPlayback) {
Seek(base::TimeDelta::FromMilliseconds(0));
}
} else {
- ASSERT_FALSE(Start(GetTestDataFilePath(GetParam().filename),
+ ASSERT_FALSE(Start(GetTestDataURL(GetParam().filename),
GetParam().init_status, true));
EXPECT_EQ(GetVideoHash(), GetParam().video_md5);
EXPECT_EQ(GetAudioHash(), GetParam().audio_md5);
diff --git a/media/filters/blocking_url_protocol_unittest.cc b/media/filters/blocking_url_protocol_unittest.cc
index 3b86e72..be33557 100644
--- a/media/filters/blocking_url_protocol_unittest.cc
+++ b/media/filters/blocking_url_protocol_unittest.cc
@@ -20,7 +20,7 @@ class BlockingUrlProtocolTest : public testing::Test {
public:
BlockingUrlProtocolTest() {
data_source_ = new FileDataSource();
- CHECK(data_source_->Initialize(GetTestDataFilePath("bear-320x240.webm")));
+ CHECK(data_source_->Initialize(GetTestDataURL("bear-320x240.webm")));
url_protocol_.reset(new BlockingUrlProtocol(data_source_, base::Bind(
&BlockingUrlProtocolTest::OnDataSourceError, base::Unretained(this))));
diff --git a/media/filters/ffmpeg_demuxer_unittest.cc b/media/filters/ffmpeg_demuxer_unittest.cc
index fd52beb..26a5017 100644
--- a/media/filters/ffmpeg_demuxer_unittest.cc
+++ b/media/filters/ffmpeg_demuxer_unittest.cc
@@ -168,7 +168,7 @@ class FFmpegDemuxerTest : public testing::Test {
.AppendASCII(name);
data_source_ = new FileDataSource();
- EXPECT_TRUE(data_source_->Initialize(file_path));
+ EXPECT_TRUE(data_source_->Initialize(file_path.MaybeAsASCII()));
}
DISALLOW_COPY_AND_ASSIGN(FFmpegDemuxerTest);
diff --git a/media/filters/file_data_source.cc b/media/filters/file_data_source.cc
index dab5c58..f528ce0 100644
--- a/media/filters/file_data_source.cc
+++ b/media/filters/file_data_source.cc
@@ -4,24 +4,37 @@
#include "media/filters/file_data_source.h"
-#include <algorithm>
+#include <limits>
+#include "base/file_util.h"
#include "base/logging.h"
+#include "base/utf_string_conversions.h"
namespace media {
FileDataSource::FileDataSource()
- : force_read_errors_(false),
+ : file_(NULL),
+ file_size_(0),
+ force_read_errors_(false),
force_streaming_(false) {
}
-bool FileDataSource::Initialize(const FilePath& file_path) {
- DCHECK(!file_.IsValid());
-
- if (!file_.Initialize(file_path))
+bool FileDataSource::Initialize(const std::string& url) {
+ DCHECK(!file_);
+#if defined(OS_WIN)
+ FilePath file_path(UTF8ToWide(url));
+#else
+ FilePath file_path(url);
+#endif
+ if (file_util::GetFileSize(file_path, &file_size_)) {
+ file_ = file_util::OpenFile(file_path, "rb");
+ }
+ if (!file_) {
+ file_size_ = 0;
return false;
-
+ }
UpdateHostBytes();
+
return true;
}
@@ -31,32 +44,50 @@ void FileDataSource::set_host(DataSourceHost* host) {
}
void FileDataSource::Stop(const base::Closure& callback) {
- callback.Run();
+ base::AutoLock l(lock_);
+ if (file_) {
+ file_util::CloseFile(file_);
+ file_ = NULL;
+ file_size_ = 0;
+ }
+ if (!callback.is_null())
+ callback.Run();
}
void FileDataSource::Read(int64 position, int size, uint8* data,
const DataSource::ReadCB& read_cb) {
- if (force_read_errors_ || !file_.IsValid()) {
- read_cb.Run(kReadError);
- return;
+ DCHECK(file_);
+ base::AutoLock l(lock_);
+
+ if (!force_read_errors_ && file_) {
+#if defined(OS_WIN)
+ if (_fseeki64(file_, position, SEEK_SET)) {
+ read_cb.Run(DataSource::kReadError);
+ return;
+ }
+#else
+ CHECK(position <= std::numeric_limits<int32>::max());
+ // TODO(hclam): Change fseek() to support 64-bit position.
+ if (fseek(file_, static_cast<int32>(position), SEEK_SET)) {
+ read_cb.Run(DataSource::kReadError);
+ return;
+ }
+#endif
+ int size_read = fread(data, 1, size, file_);
+ if (size_read == size || !ferror(file_)) {
+ read_cb.Run(size_read);
+ return;
+ }
}
- int64 file_size = file_.length();
-
- CHECK_GE(file_size, 0);
- CHECK_GE(position, 0);
- CHECK_GE(size, 0);
-
- // Cap position and size within bounds.
- position = std::min(position, file_size);
- int64 clamped_size = std::min(static_cast<int64>(size), file_size - position);
-
- memcpy(data, file_.data() + position, clamped_size);
- read_cb.Run(clamped_size);
+ read_cb.Run(kReadError);
}
bool FileDataSource::GetSize(int64* size_out) {
- *size_out = file_.length();
+ DCHECK(size_out);
+ DCHECK(file_);
+ base::AutoLock l(lock_);
+ *size_out = file_size_;
return true;
}
@@ -66,12 +97,14 @@ bool FileDataSource::IsStreaming() {
void FileDataSource::SetBitrate(int bitrate) {}
-FileDataSource::~FileDataSource() {}
+FileDataSource::~FileDataSource() {
+ DCHECK(!file_);
+}
void FileDataSource::UpdateHostBytes() {
- if (host() && file_.IsValid()) {
- host()->SetTotalBytes(file_.length());
- host()->AddBufferedByteRange(0, file_.length());
+ if (host() && file_) {
+ host()->SetTotalBytes(file_size_);
+ host()->AddBufferedByteRange(0, file_size_);
}
}
diff --git a/media/filters/file_data_source.h b/media/filters/file_data_source.h
index bc46bf7..a2c728d 100644
--- a/media/filters/file_data_source.h
+++ b/media/filters/file_data_source.h
@@ -7,8 +7,7 @@
#include <string>
-#include "base/file_path.h"
-#include "base/file_util.h"
+#include "base/synchronization/lock.h"
#include "media/base/data_source.h"
namespace media {
@@ -19,7 +18,7 @@ class MEDIA_EXPORT FileDataSource : public DataSource {
public:
FileDataSource();
- bool Initialize(const FilePath& file_path);
+ bool Initialize(const std::string& url);
// Implementation of DataSource.
virtual void set_host(DataSourceHost* host) OVERRIDE;
@@ -41,7 +40,14 @@ class MEDIA_EXPORT FileDataSource : public DataSource {
// Informs the host of changes in total and buffered bytes.
void UpdateHostBytes();
- file_util::MemoryMappedFile file_;
+ // File handle. NULL if not initialized or an error occurs.
+ FILE* file_;
+
+ // Size of the file in bytes.
+ int64 file_size_;
+
+ // Serialize all operations to prevent stopping during reads.
+ base::Lock lock_;
bool force_read_errors_;
bool force_streaming_;
diff --git a/media/filters/file_data_source_unittest.cc b/media/filters/file_data_source_unittest.cc
index ac170a7..b0d7988 100644
--- a/media/filters/file_data_source_unittest.cc
+++ b/media/filters/file_data_source_unittest.cc
@@ -34,14 +34,18 @@ class ReadCBHandler {
// FilePath class are unicode, and the pipeline wants char strings. Convert
// the string to UTF8 under Windows. For Mac and Linux, file paths are already
// chars so just return the string from the FilePath.
-FilePath TestFileURL() {
+std::string TestFileURL() {
FilePath data_dir;
EXPECT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &data_dir));
data_dir = data_dir.Append(FILE_PATH_LITERAL("media"))
.Append(FILE_PATH_LITERAL("test"))
.Append(FILE_PATH_LITERAL("data"))
.Append(FILE_PATH_LITERAL("ten_byte_file"));
- return data_dir;
+#if defined (OS_WIN)
+ return WideToUTF8(data_dir.value());
+#else
+ return data_dir.value();
+#endif
}
// Test that FileDataSource call the appropriate methods on its filter host.
@@ -80,11 +84,6 @@ TEST(FileDataSourceTest, ReadData) {
EXPECT_EQ('5', ten_bytes[5]);
EXPECT_EQ('9', ten_bytes[9]);
- EXPECT_CALL(handler, ReadCB(1));
- filter->Read(9, 1, ten_bytes, base::Bind(
- &ReadCBHandler::ReadCB, base::Unretained(&handler)));
- EXPECT_EQ('9', ten_bytes[0]);
-
EXPECT_CALL(handler, ReadCB(0));
filter->Read(10, 10, ten_bytes, base::Bind(
&ReadCBHandler::ReadCB, base::Unretained(&handler)));
diff --git a/media/filters/pipeline_integration_test.cc b/media/filters/pipeline_integration_test.cc
index 2339402e..13e95a5 100644
--- a/media/filters/pipeline_integration_test.cc
+++ b/media/filters/pipeline_integration_test.cc
@@ -38,7 +38,7 @@ class MockMediaSource {
public:
MockMediaSource(const std::string& filename, const std::string& mimetype,
int initial_append_size)
- : file_path_(GetTestDataFilePath(filename)),
+ : url_(GetTestDataURL(filename)),
current_position_(0),
initial_append_size_(initial_append_size),
mimetype_(mimetype) {
@@ -129,7 +129,7 @@ class MockMediaSource {
}
private:
- FilePath file_path_;
+ std::string url_;
scoped_refptr<DecoderBuffer> file_data_;
int current_position_;
int initial_append_size_;
@@ -277,7 +277,7 @@ class PipelineIntegrationTest
TEST_F(PipelineIntegrationTest, BasicPlayback) {
- ASSERT_TRUE(Start(GetTestDataFilePath("bear-320x240.webm"), PIPELINE_OK));
+ ASSERT_TRUE(Start(GetTestDataURL("bear-320x240.webm"), PIPELINE_OK));
Play();
@@ -285,8 +285,7 @@ TEST_F(PipelineIntegrationTest, BasicPlayback) {
}
TEST_F(PipelineIntegrationTest, BasicPlaybackHashed) {
- ASSERT_TRUE(Start(GetTestDataFilePath("bear-320x240.webm"),
- PIPELINE_OK, true));
+ ASSERT_TRUE(Start(GetTestDataURL("bear-320x240.webm"), PIPELINE_OK, true));
Play();
@@ -365,7 +364,7 @@ TEST_F(PipelineIntegrationTest, MediaSource_ConfigChange_MP4) {
#endif
TEST_F(PipelineIntegrationTest, BasicPlayback_16x9AspectRatio) {
- ASSERT_TRUE(Start(GetTestDataFilePath("bear-320x240-16x9-aspect.webm"),
+ ASSERT_TRUE(Start(GetTestDataURL("bear-320x240-16x9-aspect.webm"),
PIPELINE_OK));
Play();
ASSERT_TRUE(WaitUntilOnEnded());
@@ -388,7 +387,7 @@ TEST_F(PipelineIntegrationTest, EncryptedPlayback) {
// TODO(acolwell): Fix flakiness http://crbug.com/117921
TEST_F(PipelineIntegrationTest, DISABLED_SeekWhilePaused) {
- ASSERT_TRUE(Start(GetTestDataFilePath("bear-320x240.webm"), PIPELINE_OK));
+ ASSERT_TRUE(Start(GetTestDataURL("bear-320x240.webm"), PIPELINE_OK));
base::TimeDelta duration(pipeline_->GetMediaDuration());
base::TimeDelta start_seek_time(duration / 4);
@@ -412,7 +411,7 @@ TEST_F(PipelineIntegrationTest, DISABLED_SeekWhilePaused) {
// TODO(acolwell): Fix flakiness http://crbug.com/117921
TEST_F(PipelineIntegrationTest, DISABLED_SeekWhilePlaying) {
- ASSERT_TRUE(Start(GetTestDataFilePath("bear-320x240.webm"), PIPELINE_OK));
+ ASSERT_TRUE(Start(GetTestDataURL("bear-320x240.webm"), PIPELINE_OK));
base::TimeDelta duration(pipeline_->GetMediaDuration());
base::TimeDelta start_seek_time(duration / 4);
diff --git a/media/filters/pipeline_integration_test_base.cc b/media/filters/pipeline_integration_test_base.cc
index 6dc6a4d..9e3c6a9 100644
--- a/media/filters/pipeline_integration_test_base.cc
+++ b/media/filters/pipeline_integration_test_base.cc
@@ -87,14 +87,14 @@ void PipelineIntegrationTestBase::OnError(PipelineStatus status) {
message_loop_.PostTask(FROM_HERE, MessageLoop::QuitClosure());
}
-bool PipelineIntegrationTestBase::Start(const FilePath& file_path,
+bool PipelineIntegrationTestBase::Start(const std::string& url,
PipelineStatus expected_status) {
EXPECT_CALL(*this, OnBufferingState(Pipeline::kHaveMetadata))
.Times(AtMost(1));
EXPECT_CALL(*this, OnBufferingState(Pipeline::kPrerollCompleted))
.Times(AtMost(1));
pipeline_->Start(
- CreateFilterCollection(file_path),
+ CreateFilterCollection(url),
base::Bind(&PipelineIntegrationTestBase::OnEnded, base::Unretained(this)),
base::Bind(&PipelineIntegrationTestBase::OnError, base::Unretained(this)),
QuitOnStatusCB(expected_status),
@@ -104,20 +104,20 @@ bool PipelineIntegrationTestBase::Start(const FilePath& file_path,
return (pipeline_status_ == PIPELINE_OK);
}
-bool PipelineIntegrationTestBase::Start(const FilePath& file_path,
+bool PipelineIntegrationTestBase::Start(const std::string& url,
PipelineStatus expected_status,
bool hashing_enabled) {
hashing_enabled_ = hashing_enabled;
- return Start(file_path, expected_status);
+ return Start(url, expected_status);
}
-bool PipelineIntegrationTestBase::Start(const FilePath& file_path) {
+bool PipelineIntegrationTestBase::Start(const std::string& url) {
EXPECT_CALL(*this, OnBufferingState(Pipeline::kHaveMetadata))
.Times(AtMost(1));
EXPECT_CALL(*this, OnBufferingState(Pipeline::kPrerollCompleted))
.Times(AtMost(1));
pipeline_->Start(
- CreateFilterCollection(file_path),
+ CreateFilterCollection(url),
base::Bind(&PipelineIntegrationTestBase::OnEnded, base::Unretained(this)),
base::Bind(&PipelineIntegrationTestBase::OnError, base::Unretained(this)),
base::Bind(&PipelineIntegrationTestBase::OnStatusCallback,
@@ -183,9 +183,9 @@ bool PipelineIntegrationTestBase::WaitUntilCurrentTimeIsAfter(
}
scoped_ptr<FilterCollection>
-PipelineIntegrationTestBase::CreateFilterCollection(const FilePath& file_path) {
+PipelineIntegrationTestBase::CreateFilterCollection(const std::string& url) {
scoped_refptr<FileDataSource> data_source = new FileDataSource();
- CHECK(data_source->Initialize(file_path));
+ CHECK(data_source->Initialize(url));
return CreateFilterCollection(
new FFmpegDemuxer(message_loop_.message_loop_proxy(), data_source),
NULL);
diff --git a/media/filters/pipeline_integration_test_base.h b/media/filters/pipeline_integration_test_base.h
index cd77e3a..a301a42 100644
--- a/media/filters/pipeline_integration_test_base.h
+++ b/media/filters/pipeline_integration_test_base.h
@@ -15,8 +15,6 @@
#include "media/filters/video_renderer_base.h"
#include "testing/gmock/include/gmock/gmock.h"
-class FilePath;
-
namespace media {
class Decryptor;
@@ -40,22 +38,21 @@ class PipelineIntegrationTestBase {
bool WaitUntilOnEnded();
PipelineStatus WaitUntilEndedOrError();
- bool Start(const FilePath& file_path, PipelineStatus expected_status);
+ bool Start(const std::string& url, PipelineStatus expected_status);
// Enable playback with audio and video hashing enabled. Frame dropping and
// audio underflow will be disabled to ensure consistent hashes.
- bool Start(const FilePath& file_path, PipelineStatus expected_status,
+ bool Start(const std::string& url, PipelineStatus expected_status,
bool hashing_enabled);
// Initialize the pipeline and ignore any status updates. Useful for testing
// invalid audio/video clips which don't have deterministic results.
- bool Start(const FilePath& file_path);
+ bool Start(const std::string& url);
void Play();
void Pause();
bool Seek(base::TimeDelta seek_time);
void Stop();
bool WaitUntilCurrentTimeIsAfter(const base::TimeDelta& wait_time);
- scoped_ptr<FilterCollection> CreateFilterCollection(
- const FilePath& file_path);
+ scoped_ptr<FilterCollection> CreateFilterCollection(const std::string& url);
// Returns the MD5 hash of all video frames seen. Should only be called once
// after playback completes. First time hashes should be generated with
diff --git a/media/tools/player_wtl/movie.cc b/media/tools/player_wtl/movie.cc
index 255f2d0..3029da9 100644
--- a/media/tools/player_wtl/movie.cc
+++ b/media/tools/player_wtl/movie.cc
@@ -53,7 +53,7 @@ void Movie::SetFrameBuffer(HBITMAP hbmp, HWND hwnd) {
movie_hwnd_ = hwnd;
}
-bool Movie::Open(const wchar_t* file_path, VideoRendererBase* video_renderer) {
+bool Movie::Open(const wchar_t* url, VideoRendererBase* video_renderer) {
// Close previous movie.
if (pipeline_) {
Close();
@@ -67,8 +67,9 @@ bool Movie::Open(const wchar_t* file_path, VideoRendererBase* video_renderer) {
pipeline_ = new Pipeline(pipeline_loop, new media::MediaLog());
// Open the file.
+ std::string url_utf8 = WideToUTF8(string16(url));
scoped_refptr<FileDataSource> data_source = new FileDataSource();
- if (!data_source->Initialize(FilePath(file_path)) {
+ if (!data_source->Initialize(url_utf8)) {
return false;
}
diff --git a/media/tools/player_wtl/movie.h b/media/tools/player_wtl/movie.h
index 7414407..0e04278 100644
--- a/media/tools/player_wtl/movie.h
+++ b/media/tools/player_wtl/movie.h
@@ -27,7 +27,7 @@ class Movie {
static Movie* GetInstance();
// Open a movie.
- bool Open(const wchar_t* file_path, VideoRendererBase* video_renderer);
+ bool Open(const wchar_t* url, VideoRendererBase* video_renderer);
// Set playback rate.
void Play(float rate);
diff --git a/media/tools/player_x11/player_x11.cc b/media/tools/player_x11/player_x11.cc
index 08e6371..b1c814e 100644
--- a/media/tools/player_x11/player_x11.cc
+++ b/media/tools/player_x11/player_x11.cc
@@ -47,10 +47,10 @@ media::AudioManager* g_audio_manager = NULL;
media::VideoRendererBase* g_video_renderer = NULL;
scoped_refptr<media::FileDataSource> CreateFileDataSource(
- const std::string& file_path) {
+ const std::string& file) {
scoped_refptr<media::FileDataSource> file_data_source(
new media::FileDataSource());
- CHECK(file_data_source->Initialize(FilePath(file_path)));
+ CHECK(file_data_source->Initialize(file));
return file_data_source;
}
diff --git a/media/tools/seek_tester/seek_tester.cc b/media/tools/seek_tester/seek_tester.cc
index 2bed876..69d7b2e 100644
--- a/media/tools/seek_tester/seek_tester.cc
+++ b/media/tools/seek_tester/seek_tester.cc
@@ -16,7 +16,6 @@
#include "base/at_exit.h"
#include "base/bind.h"
#include "base/logging.h"
-#include "base/file_path.h"
#include "base/message_loop.h"
#include "base/string_number_conversions.h"
#include "media/base/media.h"
@@ -62,7 +61,7 @@ int main(int argc, char** argv) {
CHECK(base::StringToUint64(argv[2], &seek_target_ms));
scoped_refptr<media::FileDataSource> file_data_source(
new media::FileDataSource());
- CHECK(file_data_source->Initialize(FilePath::FromUTF8Unsafe(argv[1])));
+ CHECK(file_data_source->Initialize(argv[1]));
DemuxerHostImpl host;
MessageLoop loop;