summaryrefslogtreecommitdiffstats
path: root/media/tools
diff options
context:
space:
mode:
authorscherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-03 23:17:22 +0000
committerscherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-03 23:17:22 +0000
commit843e2e8a17bf20d8af604ed7d217ff1d28b88937 (patch)
tree4b8d8da3616e0f9035229ef21ad2198a39e5fc56 /media/tools
parenta3c5ad52e9fe36a6c97a43794644fe7c5fd74358 (diff)
downloadchromium_src-843e2e8a17bf20d8af604ed7d217ff1d28b88937.zip
chromium_src-843e2e8a17bf20d8af604ed7d217ff1d28b88937.tar.gz
chromium_src-843e2e8a17bf20d8af604ed7d217ff1d28b88937.tar.bz2
Add --enable-bitstream-converter to media/tools/demuxer_bench.
Not only am I interested in measuring the overhead of bitstream conversion, it also makes for a very easy way to reproduce the CHECK() for bug 234449. Finally, converted a few scoped_ptr<T> to T now that less of our code relies on RefCountedThreadSafe. BUG=234449 R=dalecurtis@chromium.org Review URL: https://codereview.chromium.org/14736006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@198231 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/tools')
-rw-r--r--media/tools/demuxer_bench/demuxer_bench.cc33
1 files changed, 23 insertions, 10 deletions
diff --git a/media/tools/demuxer_bench/demuxer_bench.cc b/media/tools/demuxer_bench/demuxer_bench.cc
index 6912894..707b1b5 100644
--- a/media/tools/demuxer_bench/demuxer_bench.cc
+++ b/media/tools/demuxer_bench/demuxer_bench.cc
@@ -18,6 +18,10 @@
#include "media/filters/ffmpeg_demuxer.h"
#include "media/filters/file_data_source.h"
+namespace switches {
+const char kEnableBitstreamConverter[] = "enable-bitstream-converter";
+} // namespace switches
+
class DemuxerHostImpl : public media::DemuxerHost {
public:
DemuxerHostImpl() {}
@@ -54,7 +58,7 @@ typedef std::vector<media::DemuxerStream* > Streams;
// present in |demuxer| in as-close-to-monotonically-increasing timestamp order.
class StreamReader {
public:
- explicit StreamReader(media::Demuxer* demuxer);
+ StreamReader(media::Demuxer* demuxer, bool enable_bitstream_converter);
~StreamReader();
// Performs a single step read.
@@ -83,7 +87,8 @@ class StreamReader {
DISALLOW_COPY_AND_ASSIGN(StreamReader);
};
-StreamReader::StreamReader(media::Demuxer* demuxer) {
+StreamReader::StreamReader(media::Demuxer* demuxer,
+ bool enable_bitstream_converter) {
media::DemuxerStream* stream =
demuxer->GetStream(media::DemuxerStream::AUDIO);
if (stream) {
@@ -99,6 +104,9 @@ StreamReader::StreamReader(media::Demuxer* demuxer) {
end_of_stream_.push_back(false);
last_read_timestamp_.push_back(media::kNoTimestamp());
counts_.push_back(0);
+
+ if (enable_bitstream_converter)
+ stream->EnableBitstreamConverter();
}
}
@@ -169,7 +177,11 @@ int main(int argc, char** argv) {
CommandLine* cmd_line = CommandLine::ForCurrentProcess();
if (cmd_line->GetArgs().empty()) {
- std::cerr << "Usage: " << argv[0] << " [file]" << std::endl;
+ std::cerr << "Usage: " << argv[0] << " [file]\n\n"
+ << "Options:\n"
+ << " --" << switches::kEnableBitstreamConverter
+ << " Enables H.264 Annex B bitstream conversion"
+ << std::endl;
return 1;
}
@@ -178,18 +190,19 @@ int main(int argc, char** argv) {
base::FilePath file_path(cmd_line->GetArgs()[0]);
// Setup.
- scoped_ptr<media::FileDataSource> data_source(new media::FileDataSource());
- CHECK(data_source->Initialize(file_path));
+ media::FileDataSource data_source;
+ CHECK(data_source.Initialize(file_path));
media::FFmpegNeedKeyCB need_key_cb = base::Bind(&NeedKey);
- scoped_ptr<media::FFmpegDemuxer> demuxer(new media::FFmpegDemuxer(
- message_loop.message_loop_proxy(), data_source.get(), need_key_cb));
+ media::FFmpegDemuxer demuxer(
+ message_loop.message_loop_proxy(), &data_source, need_key_cb);
- demuxer->Initialize(&demuxer_host, base::Bind(
+ demuxer.Initialize(&demuxer_host, base::Bind(
&QuitLoopWithStatus, &message_loop));
message_loop.Run();
- StreamReader stream_reader(demuxer.get());
+ StreamReader stream_reader(
+ &demuxer, cmd_line->HasSwitch(switches::kEnableBitstreamConverter));
// Benchmark.
base::TimeTicks start = base::TimeTicks::HighResNow();
@@ -216,7 +229,7 @@ int main(int argc, char** argv) {
}
// Teardown.
- demuxer->Stop(base::Bind(
+ demuxer.Stop(base::Bind(
&QuitLoopWithStatus, &message_loop, media::PIPELINE_OK));
message_loop.Run();