Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2602)

Unified Diff: content/common/gpu/media/video_encode_accelerator_unittest.cc

Issue 333253002: Add VaapiVideoEncodeAccelerator for HW-accelerated video encode. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: compile fixes Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/common/gpu/media/vaapi_wrapper.cc ('k') | content/common/sandbox_linux/bpf_gpu_policy_linux.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/common/gpu/media/video_encode_accelerator_unittest.cc
diff --git a/content/common/gpu/media/video_encode_accelerator_unittest.cc b/content/common/gpu/media/video_encode_accelerator_unittest.cc
index 5f606343dd455e59defe08102811492979f6f3f0..b07211d0867f59b8fa97b11b70c4f9f3a2b74512 100644
--- a/content/common/gpu/media/video_encode_accelerator_unittest.cc
+++ b/content/common/gpu/media/video_encode_accelerator_unittest.cc
@@ -13,7 +13,6 @@
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_split.h"
#include "base/time/time.h"
-#include "content/common/gpu/media/v4l2_video_encode_accelerator.h"
#include "content/common/gpu/media/video_accelerator_unittest_helpers.h"
#include "media/base/bind_to_current_loop.h"
#include "media/base/bitstream_buffer.h"
@@ -22,6 +21,18 @@
#include "media/video/video_encode_accelerator.h"
#include "testing/gtest/include/gtest/gtest.h"
+#if defined(USE_X11)
+#include "ui/gfx/x/x11_types.h"
+#endif
+
+#if defined(OS_CHROMEOS) && defined(ARCH_CPU_ARMEL)
+#include "content/common/gpu/media/v4l2_video_encode_accelerator.h"
+#elif defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY) && defined(USE_X11)
+#include "content/common/gpu/media/vaapi_video_encode_accelerator.h"
+#else
+#error The VideoEncodeAcceleratorUnittest is not supported on this platform.
+#endif
+
using media::VideoEncodeAccelerator;
namespace content {
@@ -244,28 +255,29 @@ class H264Validator : public StreamValidator {
seen_pps_(false),
seen_idr_(false) {}
- void ProcessStreamBuffer(const uint8* stream, size_t size) OVERRIDE;
+ virtual void ProcessStreamBuffer(const uint8* stream, size_t size) OVERRIDE;
private:
// Set to true when encoder provides us with the corresponding NALU type.
bool seen_sps_;
bool seen_pps_;
bool seen_idr_;
+
+ media::H264Parser h264_parser_;
};
void H264Validator::ProcessStreamBuffer(const uint8* stream, size_t size) {
- media::H264Parser h264_parser;
- h264_parser.SetStream(stream, size);
+ h264_parser_.SetStream(stream, size);
while (1) {
media::H264NALU nalu;
media::H264Parser::Result result;
- result = h264_parser.AdvanceToNextNALU(&nalu);
+ result = h264_parser_.AdvanceToNextNALU(&nalu);
if (result == media::H264Parser::kEOStream)
break;
- ASSERT_EQ(result, media::H264Parser::kOk);
+ ASSERT_EQ(media::H264Parser::kOk, result);
bool keyframe = false;
@@ -273,22 +285,35 @@ void H264Validator::ProcessStreamBuffer(const uint8* stream, size_t size) {
case media::H264NALU::kIDRSlice:
ASSERT_TRUE(seen_sps_);
ASSERT_TRUE(seen_pps_);
- seen_idr_ = keyframe = true;
+ seen_idr_ = true;
// fallthrough
- case media::H264NALU::kNonIDRSlice:
+ case media::H264NALU::kNonIDRSlice: {
ASSERT_TRUE(seen_idr_);
+
+ media::H264SliceHeader shdr;
+ ASSERT_EQ(media::H264Parser::kOk,
+ h264_parser_.ParseSliceHeader(nalu, &shdr));
+ keyframe = shdr.IsISlice() || shdr.IsSISlice();
+
if (!frame_cb_.Run(keyframe))
return;
break;
+ }
- case media::H264NALU::kSPS:
+ case media::H264NALU::kSPS: {
+ int sps_id;
+ ASSERT_EQ(media::H264Parser::kOk, h264_parser_.ParseSPS(&sps_id));
seen_sps_ = true;
break;
+ }
- case media::H264NALU::kPPS:
+ case media::H264NALU::kPPS: {
ASSERT_TRUE(seen_sps_);
+ int pps_id;
+ ASSERT_EQ(media::H264Parser::kOk, h264_parser_.ParsePPS(&pps_id));
seen_pps_ = true;
break;
+ }
default:
break;
@@ -302,7 +327,7 @@ class VP8Validator : public StreamValidator {
: StreamValidator(frame_cb),
seen_keyframe_(false) {}
- void ProcessStreamBuffer(const uint8* stream, size_t size) OVERRIDE;
+ virtual void ProcessStreamBuffer(const uint8* stream, size_t size) OVERRIDE;
private:
// Have we already got a keyframe in the stream?
@@ -357,13 +382,13 @@ class VEAClient : public VideoEncodeAccelerator::Client {
double frames_per_second();
// VideoDecodeAccelerator::Client implementation.
- void RequireBitstreamBuffers(unsigned int input_count,
- const gfx::Size& input_coded_size,
- size_t output_buffer_size) OVERRIDE;
- void BitstreamBufferReady(int32 bitstream_buffer_id,
- size_t payload_size,
- bool key_frame) OVERRIDE;
- void NotifyError(VideoEncodeAccelerator::Error error) OVERRIDE;
+ virtual void RequireBitstreamBuffers(unsigned int input_count,
+ const gfx::Size& input_coded_size,
+ size_t output_buffer_size) OVERRIDE;
+ virtual void BitstreamBufferReady(int32 bitstream_buffer_id,
+ size_t payload_size,
+ bool key_frame) OVERRIDE;
+ virtual void NotifyError(VideoEncodeAccelerator::Error error) OVERRIDE;
private:
bool has_encoder() { return encoder_.get(); }
@@ -559,8 +584,13 @@ void VEAClient::CreateEncoder() {
DCHECK(thread_checker_.CalledOnValidThread());
CHECK(!has_encoder());
+#if defined(OS_CHROMEOS) && defined(ARCH_CPU_ARMEL)
scoped_ptr<V4L2Device> device = V4L2Device::Create(V4L2Device::kEncoder);
encoder_.reset(new V4L2VideoEncodeAccelerator(device.Pass()));
+#elif defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY) && defined(USE_X11)
+ encoder_.reset(new VaapiVideoEncodeAccelerator(gfx::GetXDisplay()));
+#endif
+
SetState(CS_ENCODER_SET);
DVLOG(1) << "Profile: " << test_stream_.requested_profile
« no previous file with comments | « content/common/gpu/media/vaapi_wrapper.cc ('k') | content/common/sandbox_linux/bpf_gpu_policy_linux.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698