Commit 355e2167 authored by Noel Gordon's avatar Noel Gordon Committed by Commit Bot

[image_decode_bench] Remove [packetSize] option

Patch to prepare to for the removal of [iterations] option, so we can
replace it with a rate-based bench marker tool similar to zlib_bench.
First step: remove the [packetSize] option.

Bug: 601198
Change-Id: If5fabb8597209dac88b134a71d648a950910c86d
Reviewed-on: https://chromium-review.googlesource.com/952603Reviewed-by: default avatarLeon Scroggins <scroggo@chromium.org>
Commit-Queue: Noel Gordon <noel@chromium.org>
Cr-Commit-Position: refs/heads/master@{#541616}
parent 57c20b97
...@@ -69,69 +69,29 @@ void DecodeFailure(ImageMeta* image) { ...@@ -69,69 +69,29 @@ void DecodeFailure(ImageMeta* image) {
exit(3); exit(3);
} }
void DecodeImageData(SharedBuffer* data, size_t packet_size, ImageMeta* image) { void DecodeImageData(SharedBuffer* data, ImageMeta* image) {
std::unique_ptr<ImageDecoder> decoder = ImageDecoder::Create( std::unique_ptr<ImageDecoder> decoder = ImageDecoder::Create(
data, true, ImageDecoder::kAlphaPremultiplied, ColorBehavior::Ignore()); data, true, ImageDecoder::kAlphaPremultiplied, ColorBehavior::Ignore());
if (!packet_size) { auto start = CurrentTimeTicks();
auto start = CurrentTimeTicks();
bool all_data_received = true; bool all_data_received = true;
decoder->SetData(data, all_data_received); decoder->SetData(data, all_data_received);
size_t frame_count = decoder->FrameCount(); size_t frame_count = decoder->FrameCount();
for (size_t index = 0; index < frame_count; ++index) { for (size_t index = 0; index < frame_count; ++index) {
if (!decoder->DecodeFrameBufferAtIndex(index)) if (!decoder->DecodeFrameBufferAtIndex(index))
DecodeFailure(image);
}
image->time += (CurrentTimeTicks() - start).InSecondsF();
image->width = decoder->Size().Width();
image->height = decoder->Size().Height();
image->frames = frame_count;
if (!frame_count || decoder->Failed())
DecodeFailure(image); DecodeFailure(image);
return;
} }
scoped_refptr<SharedBuffer> packet_data = SharedBuffer::Create(); image->time += (CurrentTimeTicks() - start).InSecondsF();
size_t frame_count = 0;
size_t position = 0;
size_t index = 0;
while (true) {
const char* packet;
size_t length = data->GetSomeData(packet, position);
length = std::min(length, packet_size);
packet_data->Append(packet, length);
position += length;
auto start = CurrentTimeTicks();
bool all_data_received = (position >= data->size()); if (!frame_count || decoder->Failed())
decoder->SetData(packet_data.get(), all_data_received); DecodeFailure(image);
frame_count = decoder->FrameCount();
for (; index < frame_count; ++index) {
ImageFrame* frame = decoder->DecodeFrameBufferAtIndex(index);
if (frame->GetStatus() != ImageFrame::kFrameComplete)
DecodeFailure(image);
}
image->time += (CurrentTimeTicks() - start).InSecondsF();
if (all_data_received || decoder->Failed())
break;
}
image->width = decoder->Size().Width(); image->width = decoder->Size().Width();
image->height = decoder->Size().Height(); image->height = decoder->Size().Height();
image->frames = frame_count; image->frames = frame_count;
if (!frame_count || decoder->Failed())
DecodeFailure(image);
} }
} // namespace } // namespace
...@@ -141,11 +101,11 @@ int ImageDecodeBenchMain(int argc, char* argv[]) { ...@@ -141,11 +101,11 @@ int ImageDecodeBenchMain(int argc, char* argv[]) {
const char* program = argv[0]; const char* program = argv[0];
if (argc < 2) { if (argc < 2) {
fprintf(stderr, "Usage: %s file [iterations] [packetSize]\n", program); fprintf(stderr, "Usage: %s file [iterations]\n", program);
exit(1); exit(1);
} }
// Control bench decode iterations and packet size. // Control bench decode iterations.
size_t decode_iterations = 1; size_t decode_iterations = 1;
if (argc >= 3) { if (argc >= 3) {
...@@ -160,20 +120,6 @@ int ImageDecodeBenchMain(int argc, char* argv[]) { ...@@ -160,20 +120,6 @@ int ImageDecodeBenchMain(int argc, char* argv[]) {
} }
} }
size_t packet_size = 0;
if (argc >= 4) {
char* end = nullptr;
packet_size = strtol(argv[3], &end, 10);
if (*end != '\0') {
fprintf(stderr,
"Third argument should be packet size. Default is "
"0, meaning to decode the entire image in one packet. You "
"supplied %s\n",
argv[3]);
exit(1);
}
}
// Create a web platform. blink::Platform can't be used directly because it // Create a web platform. blink::Platform can't be used directly because it
// has a protected constructor. // has a protected constructor.
...@@ -195,14 +141,14 @@ int ImageDecodeBenchMain(int argc, char* argv[]) { ...@@ -195,14 +141,14 @@ int ImageDecodeBenchMain(int argc, char* argv[]) {
ImageMeta image; ImageMeta image;
image.name = argv[1]; image.name = argv[1];
DecodeImageData(data.get(), packet_size, &image); DecodeImageData(data.get(), &image);
// Image decode bench for decode_iterations. // Image decode bench for decode_iterations.
double total_time = 0.0; double total_time = 0.0;
for (size_t i = 0; i < decode_iterations; ++i) { for (size_t i = 0; i < decode_iterations; ++i) {
image.time = 0.0; image.time = 0.0;
DecodeImageData(data.get(), packet_size, &image); DecodeImageData(data.get(), &image);
total_time += image.time; total_time += image.time;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment