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

Unified Diff: media/omx/omx_unittest.cc

Issue 7066071: Removing defunct OpenMAX code. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src
Patch Set: removed tab Created 9 years, 7 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 | « media/omx/omx_configurator.cc ('k') | media/omx/run_all_unittests.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/omx/omx_unittest.cc
diff --git a/media/omx/omx_unittest.cc b/media/omx/omx_unittest.cc
deleted file mode 100644
index a60e21a869fef9fdfe909362e63c7d9f9c84771f..0000000000000000000000000000000000000000
--- a/media/omx/omx_unittest.cc
+++ /dev/null
@@ -1,421 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "base/command_line.h"
-#include "base/logging.h"
-#include "base/synchronization/waitable_event.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "third_party/openmax/il/OMX_Component.h"
-#include "third_party/openmax/il/OMX_Core.h"
-
-namespace media {
-
-// Defines the maximum number of buffers created for I/O ports.
-static const int kMaxBufferNum = 256;
-
-template <typename T>
-static void ResetHeader(T* param) {
- memset(param, 0, sizeof(T));
- // TODO(hclam): Make this version number configurable.
- param->nVersion.nVersion = 0x00000101;
- param->nSize = sizeof(T);
-}
-
-class OmxTest : public testing::Test {
- public:
- OmxTest()
- : handle_(NULL),
- event_(false, false),
- empty_buffer_(false, false),
- fill_buffer_(false, false),
- last_event_type_(OMX_EventMax),
- last_event_data1_(0),
- last_event_data2_(0) {
- memset(input_buffers_, 0, sizeof(input_buffers_));
- memset(output_buffers_, 0, sizeof(output_buffers_));
- }
-
- protected:
- virtual void SetUp() {
- // Initialize OpenMAX.
- EXPECT_EQ(OMX_ErrorNone, OMX_Init());
- }
-
- virtual void TearDown() {
- EXPECT_EQ(OMX_ErrorNone, OMX_Deinit());
- }
-
- void InitComponent(std::string component_name) {
- // TODO(hclam): Remove static when bug in driver is fixed.
- static OMX_CALLBACKTYPE callback = { &EventHandler,
- &EmptyBufferCallback,
- &FillBufferCallback };
-
- OMX_ERRORTYPE omxresult = OMX_GetHandle(
- (void**)&handle_,
- const_cast<OMX_STRING>(component_name.c_str()),
- this, &callback);
- EXPECT_EQ(OMX_ErrorNone, omxresult);
- CHECK(handle_);
- }
-
- void DeinitComponent() {
- if (handle_)
- OMX_FreeHandle(handle_);
- }
-
- void AllocateBuffers(int port) {
- int count = 0;
- int size = 0;
- OMX_BUFFERHEADERTYPE** buffers = NULL;
- if (port == input_port_) {
- count = input_buffer_count_;
- size = input_buffer_size_;
- buffers = input_buffers_;
- } else if (port == output_port_) {
- count = output_buffer_count_;
- size = output_buffer_size_;
- buffers = output_buffers_;
- } else {
- NOTREACHED() << "Not a valid port";
- }
- for (int i = 0; i < count; ++i) {
- EXPECT_EQ(OMX_ErrorNone,
- OMX_AllocateBuffer(handle_, buffers + i,
- port, NULL, size));
- }
- }
-
- void ReleaseBuffers(int port) {
- int count = 0;
- OMX_BUFFERHEADERTYPE** buffers = NULL;
- if (port == input_port_) {
- count = input_buffer_count_;
- buffers = input_buffers_;
- } else if (port == output_port_) {
- count = output_buffer_count_;
- buffers = output_buffers_;
- } else {
- NOTREACHED() << "Not a valid port";
- }
- for (int i = 0; i < count; ++i) {
- CHECK(buffers[i]);
- EXPECT_EQ(OMX_ErrorNone,
- OMX_FreeBuffer(handle_, port, buffers[i]));
- buffers[i] = NULL;
- }
- }
-
- void TransitionLoadedToIdle() {
- EXPECT_EQ(OMX_ErrorNone,
- OMX_SendCommand(handle_, OMX_CommandStateSet,
- OMX_StateIdle, 0));
- AllocateBuffers(input_port_);
- AllocateBuffers(output_port_);
- event_.Wait();
- EXPECT_EQ(OMX_EventCmdComplete, last_event_type_);
- EXPECT_EQ(OMX_CommandStateSet, last_event_data1_);
- EXPECT_EQ(OMX_StateIdle, last_event_data2_);
- }
-
- void TransitionIdleToLoaded() {
- EXPECT_EQ(OMX_ErrorNone,
- OMX_SendCommand(handle_, OMX_CommandStateSet,
- OMX_StateLoaded, 0));
- ReleaseBuffers(input_port_);
- ReleaseBuffers(output_port_);
- event_.Wait();
- EXPECT_EQ(OMX_EventCmdComplete, last_event_type_);
- EXPECT_EQ(OMX_CommandStateSet, last_event_data1_);
- EXPECT_EQ(OMX_StateLoaded, last_event_data2_);
- }
-
- void TransitionIdleToExecuting() {
- EXPECT_EQ(OMX_ErrorNone,
- OMX_SendCommand(handle_, OMX_CommandStateSet,
- OMX_StateExecuting, 0));
- event_.Wait();
- EXPECT_EQ(OMX_EventCmdComplete, last_event_type_);
- EXPECT_EQ(OMX_CommandStateSet, last_event_data1_);
- EXPECT_EQ(OMX_StateExecuting, last_event_data2_);
- }
-
- void TransitionExecutingToIdle() {
- EXPECT_EQ(OMX_ErrorNone,
- OMX_SendCommand(handle_, OMX_CommandStateSet,
- OMX_StateIdle, 0));
- event_.Wait();
- EXPECT_EQ(OMX_EventCmdComplete, last_event_type_);
- EXPECT_EQ(OMX_CommandStateSet, last_event_data1_);
- EXPECT_EQ(OMX_StateIdle, last_event_data2_);
- }
-
- void GetComponentsOfRole(std::string role) {
- OMX_U32 roles = 0;
- OMX_U8** component_names = NULL;
- const int kSize = 256;
-
- LOG(INFO) << "GetComponentsOfRole: " << role;
- EXPECT_EQ(OMX_ErrorNone, OMX_GetComponentsOfRole(
- const_cast<OMX_STRING>(role.c_str()), &roles, 0));
-
- // TODO(hclam): Should assert the component number.
- LOG(INFO) << "Components: " << roles;
-
- if (roles) {
- component_names = new OMX_U8*[roles];
- for (size_t i = 0; i < roles; ++i)
- component_names[i] = new OMX_U8[kSize];
-
- OMX_U32 roles_backup = roles;
- EXPECT_EQ(OMX_ErrorNone,
- OMX_GetComponentsOfRole(
- const_cast<OMX_STRING>(role.c_str()),
- &roles, component_names));
- ASSERT_EQ(roles_backup, roles);
-
- for (size_t i = 0; i < roles; ++i) {
- LOG(INFO) << "Component name: " << component_names[i];
- delete [] component_names[i];
- }
- delete [] component_names;
- }
- }
-
- OMX_ERRORTYPE EventHandlerInternal(
- OMX_HANDLETYPE component, OMX_EVENTTYPE event,
- OMX_U32 data1, OMX_U32 data2, OMX_PTR event_data) {
- last_event_type_ = event;
- last_event_data1_ = static_cast<int>(data1);
- last_event_data2_ = static_cast<int>(data2);
- // TODO(hclam): Save |event_data|.
- event_.Signal();
- return OMX_ErrorNone;
- }
-
- OMX_ERRORTYPE EmptyBufferCallbackInternal(
- OMX_HANDLETYPE component, OMX_BUFFERHEADERTYPE* buffer) {
- // TODO(hclam): Add code here.
- empty_buffer_.Signal();
- return OMX_ErrorNone;
- }
-
- OMX_ERRORTYPE FillBufferCallbackInternal(
- OMX_HANDLETYPE component, OMX_BUFFERHEADERTYPE* buffer) {
- // TODO(hclam): Add code here.
- fill_buffer_.Signal();
- return OMX_ErrorNone;
- }
-
- // Static callback methods.
- static OMX_ERRORTYPE EventHandler(
- OMX_HANDLETYPE component, OMX_PTR priv_data,
- OMX_EVENTTYPE event, OMX_U32 data1, OMX_U32 data2,
- OMX_PTR event_data) {
- return static_cast<OmxTest*>(priv_data)
- ->EventHandlerInternal(component,
- event, data1, data2, event_data);
- }
-
- static OMX_ERRORTYPE EmptyBufferCallback(
- OMX_HANDLETYPE component, OMX_PTR priv_data,
- OMX_BUFFERHEADERTYPE* buffer) {
- return static_cast<OmxTest*>(priv_data)
- ->EmptyBufferCallbackInternal(component, buffer);
- }
-
- static OMX_ERRORTYPE FillBufferCallback(
- OMX_HANDLETYPE component, OMX_PTR priv_data,
- OMX_BUFFERHEADERTYPE* buffer) {
- return static_cast<OmxTest*>(priv_data)
- ->FillBufferCallbackInternal(component, buffer);
- }
-
- OMX_COMPONENTTYPE* handle_;
- int input_port_;
- int output_port_;
- int input_buffer_count_;
- int input_buffer_size_;
- int output_buffer_count_;
- int output_buffer_size_;
- OMX_BUFFERHEADERTYPE* input_buffers_[kMaxBufferNum];
- OMX_BUFFERHEADERTYPE* output_buffers_[kMaxBufferNum];
-
- base::WaitableEvent event_;
- base::WaitableEvent empty_buffer_;
- base::WaitableEvent fill_buffer_;
-
- OMX_EVENTTYPE last_event_type_;
- int last_event_data1_;
- int last_event_data2_;
-};
-
-class OmxVideoDecoderTest : public OmxTest {
- protected:
- void Configure(OMX_VIDEO_CODINGTYPE codec,
- int width, int height) {
- // Obtain port IDs.
- OMX_PORT_PARAM_TYPE port_param;
- ResetHeader(&port_param);
- EXPECT_EQ(OMX_ErrorNone,
- OMX_GetParameter(handle_,
- OMX_IndexParamVideoInit,
- &port_param));
-
- input_port_ = port_param.nStartPortNumber;
- output_port_ = port_param.nStartPortNumber + 1;
- LOG(INFO) << "Input port number: " << input_port_;
- LOG(INFO) << "Output port number: " << output_port_;
-
- // Get and set parameters for input port.
- LOG(INFO) << "Input port width: " << width;
- LOG(INFO) << "Input port height: " << height;
- LOG(INFO) << "Input port codec: " << codec;
- OMX_PARAM_PORTDEFINITIONTYPE port_format;
- ResetHeader(&port_format);
- port_format.nPortIndex = input_port_;
- EXPECT_EQ(OMX_ErrorNone,
- OMX_GetParameter(handle_,
- OMX_IndexParamPortDefinition,
- &port_format));
- EXPECT_EQ(OMX_DirInput, port_format.eDir);
- port_format.format.video.eCompressionFormat = codec;
- port_format.format.video.nFrameWidth = width;
- port_format.format.video.nFrameHeight = height;
- EXPECT_EQ(OMX_ErrorNone,
- OMX_SetParameter(handle_,
- OMX_IndexParamPortDefinition,
- &port_format));
-
- // TODO(hclam): Add configurations to output port.
-
- // Get Parameters for input port.
- ResetHeader(&port_format);
- port_format.nPortIndex = input_port_;
- EXPECT_EQ(OMX_ErrorNone,
- OMX_GetParameter(handle_,
- OMX_IndexParamPortDefinition,
- &port_format));
- EXPECT_EQ(OMX_DirInput, port_format.eDir);
- input_buffer_count_ = port_format.nBufferCountMin;
- input_buffer_size_ = port_format.nBufferSize;
- CHECK(input_buffer_count_ < kMaxBufferNum);
-
- // Get parameters for output port.
- ResetHeader(&port_format);
- port_format.nPortIndex = output_port_;
- EXPECT_EQ(OMX_ErrorNone,
- OMX_GetParameter(handle_,
- OMX_IndexParamPortDefinition,
- &port_format));
- EXPECT_EQ(OMX_DirOutput, port_format.eDir);
- output_buffer_count_ = port_format.nBufferCountMin;
- output_buffer_size_ = port_format.nBufferSize;
- CHECK(output_buffer_count_ < kMaxBufferNum);
-
- LOG(INFO) << "Input buffer count: " << input_buffer_count_;
- LOG(INFO) << "Input buffer size: " << input_buffer_size_;
- LOG(INFO) << "Output buffer count: " << output_buffer_count_;
- LOG(INFO) << "Output buffer size: " << output_buffer_size_;
- }
-
- std::string component() {
- return CommandLine::ForCurrentProcess()
- ->GetSwitchValueASCII("video-decoder-component");
- }
-
- OMX_VIDEO_CODINGTYPE codec() {
- std::string codec = CommandLine::ForCurrentProcess()
- ->GetSwitchValueASCII("video-decoder-codec");
- if (codec == "h264")
- return OMX_VIDEO_CodingAVC;
- return OMX_VIDEO_CodingAutoDetect;
- }
-};
-
-TEST_F(OmxTest, SimpleInit) {
- // A empty test case will test basic init/deinit of OpenMAX library.
-}
-
-TEST_F(OmxTest, GetComponentsOfRole) {
- // Roles video decoders.
- GetComponentsOfRole("video_decoder.avc");
- GetComponentsOfRole("video_decoder.mpeg4");
- GetComponentsOfRole("video_decoder.vc1");
-
- // TODO(hclam): Add roles of encoders.
-}
-
-TEST_F(OmxVideoDecoderTest, GetHandle) {
- // TODO(hclam): Should use GetComponentsOfRole instead.
- InitComponent(component());
- DeinitComponent();
-}
-
-TEST_F(OmxVideoDecoderTest, Configuration) {
- InitComponent(component());
- // TODO(hclam): Make resolution configurable.
- Configure(codec(), 1024, 768);
- DeinitComponent();
-}
-
-TEST_F(OmxVideoDecoderTest, TransitionToIdle) {
- InitComponent(component());
- Configure(codec(), 1024, 768);
- TransitionLoadedToIdle();
- TransitionIdleToLoaded();
- DeinitComponent();
-}
-
-TEST_F(OmxVideoDecoderTest, FreeHandleWhenIdle) {
- InitComponent(component());
- Configure(codec(), 1024, 768);
- TransitionLoadedToIdle();
- DeinitComponent();
-}
-
-TEST_F(OmxVideoDecoderTest, TransitionToExecuting) {
- InitComponent(component());
- Configure(codec(), 1024, 768);
- TransitionLoadedToIdle();
- TransitionIdleToExecuting();
- TransitionExecutingToIdle();
- TransitionIdleToLoaded();
- DeinitComponent();
-}
-
-TEST_F(OmxVideoDecoderTest, FreeHandleWhenExecuting) {
- InitComponent(component());
- Configure(codec(), 1024, 768);
- TransitionLoadedToIdle();
- TransitionIdleToExecuting();
- DeinitComponent();
-}
-
-TEST_F(OmxVideoDecoderTest, CallbacksAreCopied) {
- // Allocate a callback struct on stack and clear it with zero.
- // This make sure OpenMAX library will copy the content of the
- // struct.
- OMX_CALLBACKTYPE callback = { &EventHandler,
- &EmptyBufferCallback,
- &FillBufferCallback };
-
- OMX_ERRORTYPE omxresult = OMX_GetHandle(
- (void**)&handle_,
- const_cast<OMX_STRING>(component().c_str()),
- this, &callback);
- EXPECT_EQ(OMX_ErrorNone, omxresult);
- CHECK(handle_);
- memset(&callback, 0, sizeof(callback));
-
- // Then configure the component as usual.
- Configure(codec(), 1024, 768);
- TransitionLoadedToIdle();
- TransitionIdleToExecuting();
- TransitionExecutingToIdle();
- TransitionIdleToLoaded();
- DeinitComponent();
-}
-
-} // namespace media
« no previous file with comments | « media/omx/omx_configurator.cc ('k') | media/omx/run_all_unittests.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698