media/gpu/test: Automatically save thumbnail image on validation failure.
This CL adapts the RenderThumbnails tests in the video_decode_accelerator_tests
binary to automatically save the thumbnail image to disk on test failure.
TEST=./video_decode_accelerator_tests --disable_validator on eve
BUG=964168
Change-Id: I36747ab273a909773fb0c4acf7fe8579157de9c0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1687510
Reviewed-by: Hirokazu Honda <hiroh@chromium.org>
Commit-Queue: David Staessens <dstaessens@chromium.org>
Cr-Commit-Position: refs/heads/master@{#675546}
diff --git a/media/gpu/test/video_player/frame_renderer_thumbnail.cc b/media/gpu/test/video_player/frame_renderer_thumbnail.cc
index 5588e0a..100be1fc 100644
--- a/media/gpu/test/video_player/frame_renderer_thumbnail.cc
+++ b/media/gpu/test/video_player/frame_renderer_thumbnail.cc
@@ -237,6 +237,8 @@
std::string md5_string = base::MD5String(
base::StringPiece(reinterpret_cast<char*>(&rgb[0]), rgb.size()));
bool is_valid_thumbnail = base::Contains(thumbnail_checksums_, md5_string);
+ if (!is_valid_thumbnail)
+ SaveThumbnail();
return is_valid_thumbnail;
}
@@ -244,7 +246,6 @@
void FrameRendererThumbnail::SaveThumbnail() {
DCHECK_CALLED_ON_VALID_SEQUENCE(client_sequence_checker_);
- base::AutoLock auto_lock(renderer_lock_);
const std::vector<uint8_t> rgba = ConvertThumbnailToRGBA();
// Convert raw RGBA into PNG for export.
diff --git a/media/gpu/test/video_player/frame_renderer_thumbnail.h b/media/gpu/test/video_player/frame_renderer_thumbnail.h
index e08813a..fc70f9ea 100644
--- a/media/gpu/test/video_player/frame_renderer_thumbnail.h
+++ b/media/gpu/test/video_player/frame_renderer_thumbnail.h
@@ -64,8 +64,6 @@
// Validate the thumbnail image by comparing it against known golden values.
bool ValidateThumbnail();
- // Save the thumbnail image to disk.
- void SaveThumbnail();
private:
explicit FrameRendererThumbnail(
@@ -84,6 +82,8 @@
// Convert the thumbnail image to RGBA.
const std::vector<uint8_t> ConvertThumbnailToRGBA()
EXCLUSIVE_LOCKS_REQUIRED(renderer_lock_);
+ // Save the thumbnail image to disk.
+ void SaveThumbnail() EXCLUSIVE_LOCKS_REQUIRED(renderer_lock_);
// Destroy the texture associated with the |mailbox| on the renderer thread.
void DeleteTexture(const gpu::Mailbox& mailbox, const gpu::SyncToken&);