OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 // | 4 // |
5 // The bulk of this file is support code; sorry about that. Here's an overview | 5 // The bulk of this file is support code; sorry about that. Here's an overview |
6 // to hopefully help readers of this code: | 6 // to hopefully help readers of this code: |
7 // - RenderingHelper is charged with interacting with X11, EGL, and GLES2. | 7 // - RenderingHelper is charged with interacting with X11, EGL, and GLES2. |
8 // - ClientState is an enum for the state of the decode client used by the test. | 8 // - ClientState is an enum for the state of the decode client used by the test. |
9 // - ClientStateNotification is a barrier abstraction that allows the test code | 9 // - ClientStateNotification is a barrier abstraction that allows the test code |
10 // to be written sequentially and wait for the decode client to see certain | 10 // to be written sequentially and wait for the decode client to see certain |
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
209 int frame_width, | 209 int frame_width, |
210 int frame_height, | 210 int frame_height, |
211 int profile); | 211 int profile); |
212 virtual ~EglRenderingVDAClient(); | 212 virtual ~EglRenderingVDAClient(); |
213 void CreateDecoder(); | 213 void CreateDecoder(); |
214 | 214 |
215 // VideoDecodeAccelerator::Client implementation. | 215 // VideoDecodeAccelerator::Client implementation. |
216 // The heart of the Client. | 216 // The heart of the Client. |
217 virtual void ProvidePictureBuffers( | 217 virtual void ProvidePictureBuffers( |
218 uint32 requested_num_of_buffers, | 218 uint32 requested_num_of_buffers, |
219 const gfx::Size& dimensions); | 219 const gfx::Size& dimensions, |
220 media::VideoDecodeAccelerator::TextureTarget texture_target); | |
220 virtual void DismissPictureBuffer(int32 picture_buffer_id); | 221 virtual void DismissPictureBuffer(int32 picture_buffer_id); |
221 virtual void PictureReady(const media::Picture& picture); | 222 virtual void PictureReady(const media::Picture& picture); |
222 // Simple state changes. | 223 // Simple state changes. |
223 virtual void NotifyInitializeDone(); | 224 virtual void NotifyInitializeDone(); |
224 virtual void NotifyEndOfBitstreamBuffer(int32 bitstream_buffer_id); | 225 virtual void NotifyEndOfBitstreamBuffer(int32 bitstream_buffer_id); |
225 virtual void NotifyFlushDone(); | 226 virtual void NotifyFlushDone(); |
226 virtual void NotifyResetDone(); | 227 virtual void NotifyResetDone(); |
227 virtual void NotifyError(VideoDecodeAccelerator::Error error); | 228 virtual void NotifyError(VideoDecodeAccelerator::Error error); |
228 | 229 |
229 // Simple getters for inspecting the state of the Client. | 230 // Simple getters for inspecting the state of the Client. |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
336 // Configure the decoder. | 337 // Configure the decoder. |
337 media::VideoCodecProfile profile = media::H264PROFILE_BASELINE; | 338 media::VideoCodecProfile profile = media::H264PROFILE_BASELINE; |
338 if (profile_ != -1) | 339 if (profile_ != -1) |
339 profile = static_cast<media::VideoCodecProfile>(profile_); | 340 profile = static_cast<media::VideoCodecProfile>(profile_); |
340 std::vector<uint8_t> avc_data(MP4_EXTRA_DATA, | 341 std::vector<uint8_t> avc_data(MP4_EXTRA_DATA, |
341 MP4_EXTRA_DATA + arraysize(MP4_EXTRA_DATA)); | 342 MP4_EXTRA_DATA + arraysize(MP4_EXTRA_DATA)); |
342 CHECK(decoder_->Initialize( | 343 CHECK(decoder_->Initialize( |
343 profile, gfx::Size(frame_width_, frame_height_), avc_data)); | 344 profile, gfx::Size(frame_width_, frame_height_), avc_data)); |
344 } | 345 } |
345 | 346 |
347 static int ToGLTextureTarget( | |
Ami GONE FROM CHROMIUM
2012/05/23 23:42:33
Hopefully can drop.
sail
2012/05/29 18:58:09
Done.
| |
348 media::VideoDecodeAccelerator::TextureTarget texture_target) { | |
349 switch (texture_target) { | |
350 case media::VideoDecodeAccelerator::TEXTURE_TARGET_2D: | |
351 return GL_TEXTURE_2D; | |
352 case media::VideoDecodeAccelerator::TEXTURE_TARGET_ARB: | |
353 return GL_TEXTURE_RECTANGLE_ARB; | |
354 } | |
355 NOTREACHED(); | |
356 return GL_TEXTURE_2D; | |
357 } | |
358 | |
346 void EglRenderingVDAClient::ProvidePictureBuffers( | 359 void EglRenderingVDAClient::ProvidePictureBuffers( |
347 uint32 requested_num_of_buffers, | 360 uint32 requested_num_of_buffers, |
348 const gfx::Size& dimensions) { | 361 const gfx::Size& dimensions, |
362 media::VideoDecodeAccelerator::TextureTarget texture_target) { | |
349 if (decoder_deleted()) | 363 if (decoder_deleted()) |
350 return; | 364 return; |
351 std::vector<media::PictureBuffer> buffers; | 365 std::vector<media::PictureBuffer> buffers; |
352 | 366 |
353 for (uint32 i = 0; i < requested_num_of_buffers; ++i) { | 367 for (uint32 i = 0; i < requested_num_of_buffers; ++i) { |
354 uint32 id = picture_buffers_by_id_.size(); | 368 uint32 id = picture_buffers_by_id_.size(); |
355 uint32 texture_id; | 369 uint32 texture_id; |
356 base::WaitableEvent done(false, false); | 370 base::WaitableEvent done(false, false); |
357 rendering_helper_->CreateTexture(rendering_window_id_, &texture_id, &done); | 371 rendering_helper_->CreateTexture( |
372 rendering_window_id_, ToGLTextureTarget(texture_target), &texture_id, | |
373 &done); | |
358 done.Wait(); | 374 done.Wait(); |
359 CHECK(outstanding_texture_ids_.insert(texture_id).second); | 375 CHECK(outstanding_texture_ids_.insert(texture_id).second); |
360 media::PictureBuffer* buffer = | 376 media::PictureBuffer* buffer = |
361 new media::PictureBuffer(id, dimensions, texture_id); | 377 new media::PictureBuffer(id, dimensions, texture_id); |
362 CHECK(picture_buffers_by_id_.insert(std::make_pair(id, buffer)).second); | 378 CHECK(picture_buffers_by_id_.insert(std::make_pair(id, buffer)).second); |
363 buffers.push_back(*buffer); | 379 buffers.push_back(*buffer); |
364 } | 380 } |
365 decoder_->AssignPictureBuffers(buffers); | 381 decoder_->AssignPictureBuffers(buffers); |
366 } | 382 } |
367 | 383 |
(...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
830 | 846 |
831 base::ShadowingAtExitManager at_exit_manager; | 847 base::ShadowingAtExitManager at_exit_manager; |
832 RenderingHelper::InitializePlatform(); | 848 RenderingHelper::InitializePlatform(); |
833 | 849 |
834 #if defined(OS_WIN) | 850 #if defined(OS_WIN) |
835 DXVAVideoDecodeAccelerator::PreSandboxInitialization(); | 851 DXVAVideoDecodeAccelerator::PreSandboxInitialization(); |
836 #endif | 852 #endif |
837 | 853 |
838 return RUN_ALL_TESTS(); | 854 return RUN_ALL_TESTS(); |
839 } | 855 } |
OLD | NEW |