Chromium Code Reviews| Index: media/gpu/vaapi_video_decode_accelerator.cc |
| diff --git a/content/common/gpu/media/vaapi_video_decode_accelerator.cc b/media/gpu/vaapi_video_decode_accelerator.cc |
| similarity index 92% |
| rename from content/common/gpu/media/vaapi_video_decode_accelerator.cc |
| rename to media/gpu/vaapi_video_decode_accelerator.cc |
| index 4d59c37c747c1404be2e2b4814211fee5a9799c1..78332f7b8a90c516ab33d6428d7a352691beb342 100644 |
| --- a/content/common/gpu/media/vaapi_video_decode_accelerator.cc |
| +++ b/media/gpu/vaapi_video_decode_accelerator.cc |
| @@ -2,7 +2,7 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| -#include "content/common/gpu/media/vaapi_video_decode_accelerator.h" |
| +#include "media/gpu/vaapi_video_decode_accelerator.h" |
| #include <string.h> |
| @@ -14,41 +14,40 @@ |
| #include "base/strings/string_util.h" |
| #include "base/synchronization/waitable_event.h" |
| #include "base/trace_event/trace_event.h" |
| -#include "content/common/gpu/media/accelerated_video_decoder.h" |
| -#include "content/common/gpu/media/h264_decoder.h" |
| -#include "content/common/gpu/media/vaapi_picture.h" |
| -#include "content/common/gpu/media/vp8_decoder.h" |
| -#include "content/common/gpu/media/vp9_decoder.h" |
| #include "gpu/ipc/service/gpu_channel.h" |
| #include "media/base/bind_to_current_loop.h" |
| +#include "media/gpu/accelerated_video_decoder.h" |
| +#include "media/gpu/h264_decoder.h" |
| +#include "media/gpu/vaapi_picture.h" |
| +#include "media/gpu/vp8_decoder.h" |
| +#include "media/gpu/vp9_decoder.h" |
| #include "media/video/picture.h" |
| #include "third_party/libva/va/va_dec_vp8.h" |
| #include "ui/gl/gl_bindings.h" |
| #include "ui/gl/gl_image.h" |
| -namespace content { |
| +namespace media { |
| namespace { |
| // UMA errors that the VaapiVideoDecodeAccelerator class reports. |
| enum VAVDADecoderFailure { |
| VAAPI_ERROR = 0, |
| - // UMA requires that max must be greater than 1. |
| - VAVDA_DECODER_FAILURES_MAX = 2, |
| + VAVDA_DECODER_FAILURES_MAX, |
| }; |
| } |
| static void ReportToUMA(VAVDADecoderFailure failure) { |
| UMA_HISTOGRAM_ENUMERATION("Media.VAVDA.DecoderFailure", failure, |
| - VAVDA_DECODER_FAILURES_MAX); |
| + VAVDA_DECODER_FAILURES_MAX + 1); |
| } |
| -#define RETURN_AND_NOTIFY_ON_FAILURE(result, log, error_code, ret) \ |
| - do { \ |
| - if (!(result)) { \ |
| - LOG(ERROR) << log; \ |
| - NotifyError(error_code); \ |
| - return ret; \ |
| - } \ |
| +#define RETURN_AND_NOTIFY_ON_FAILURE(result, log, error_code, ret) \ |
| + do { \ |
| + if (!(result)) { \ |
| + LOG(ERROR) << log; \ |
| + NotifyError(error_code); \ |
| + return ret; \ |
| + } \ |
| } while (0) |
| class VaapiVideoDecodeAccelerator::VaapiDecodeSurface |
| @@ -73,13 +72,13 @@ VaapiVideoDecodeAccelerator::VaapiDecodeSurface::VaapiDecodeSurface( |
| const scoped_refptr<VASurface>& va_surface) |
| : bitstream_id_(bitstream_id), va_surface_(va_surface) {} |
| -VaapiVideoDecodeAccelerator::VaapiDecodeSurface::~VaapiDecodeSurface() { |
| -} |
| +VaapiVideoDecodeAccelerator::VaapiDecodeSurface::~VaapiDecodeSurface() {} |
| class VaapiH264Picture : public H264Picture { |
| public: |
| - VaapiH264Picture(const scoped_refptr< |
| - VaapiVideoDecodeAccelerator::VaapiDecodeSurface>& dec_surface); |
| + VaapiH264Picture( |
| + const scoped_refptr<VaapiVideoDecodeAccelerator::VaapiDecodeSurface>& |
| + dec_surface); |
| VaapiH264Picture* AsVaapiH264Picture() override { return this; } |
| scoped_refptr<VaapiVideoDecodeAccelerator::VaapiDecodeSurface> dec_surface() { |
| @@ -94,13 +93,12 @@ class VaapiH264Picture : public H264Picture { |
| DISALLOW_COPY_AND_ASSIGN(VaapiH264Picture); |
| }; |
| -VaapiH264Picture::VaapiH264Picture(const scoped_refptr< |
| - VaapiVideoDecodeAccelerator::VaapiDecodeSurface>& dec_surface) |
| - : dec_surface_(dec_surface) { |
| -} |
| +VaapiH264Picture::VaapiH264Picture( |
| + const scoped_refptr<VaapiVideoDecodeAccelerator::VaapiDecodeSurface>& |
| + dec_surface) |
| + : dec_surface_(dec_surface) {} |
| -VaapiH264Picture::~VaapiH264Picture() { |
| -} |
| +VaapiH264Picture::~VaapiH264Picture() {} |
| class VaapiVideoDecodeAccelerator::VaapiH264Accelerator |
| : public H264Decoder::H264Accelerator { |
| @@ -150,8 +148,9 @@ class VaapiVideoDecodeAccelerator::VaapiH264Accelerator |
| class VaapiVP8Picture : public VP8Picture { |
| public: |
| - VaapiVP8Picture(const scoped_refptr< |
| - VaapiVideoDecodeAccelerator::VaapiDecodeSurface>& dec_surface); |
| + VaapiVP8Picture( |
| + const scoped_refptr<VaapiVideoDecodeAccelerator::VaapiDecodeSurface>& |
| + dec_surface); |
| VaapiVP8Picture* AsVaapiVP8Picture() override { return this; } |
| scoped_refptr<VaapiVideoDecodeAccelerator::VaapiDecodeSurface> dec_surface() { |
| @@ -166,13 +165,12 @@ class VaapiVP8Picture : public VP8Picture { |
| DISALLOW_COPY_AND_ASSIGN(VaapiVP8Picture); |
| }; |
| -VaapiVP8Picture::VaapiVP8Picture(const scoped_refptr< |
| - VaapiVideoDecodeAccelerator::VaapiDecodeSurface>& dec_surface) |
| - : dec_surface_(dec_surface) { |
| -} |
| +VaapiVP8Picture::VaapiVP8Picture( |
| + const scoped_refptr<VaapiVideoDecodeAccelerator::VaapiDecodeSurface>& |
| + dec_surface) |
| + : dec_surface_(dec_surface) {} |
| -VaapiVP8Picture::~VaapiVP8Picture() { |
| -} |
| +VaapiVP8Picture::~VaapiVP8Picture() {} |
| class VaapiVideoDecodeAccelerator::VaapiVP8Accelerator |
| : public VP8Decoder::VP8Accelerator { |
| @@ -258,20 +256,20 @@ class VaapiVideoDecodeAccelerator::VaapiVP9Accelerator |
| VaapiVideoDecodeAccelerator::InputBuffer::InputBuffer() : id(0) {} |
| -VaapiVideoDecodeAccelerator::InputBuffer::~InputBuffer() { |
| -} |
| +VaapiVideoDecodeAccelerator::InputBuffer::~InputBuffer() {} |
| void VaapiVideoDecodeAccelerator::NotifyError(Error error) { |
| if (message_loop_ != base::MessageLoop::current()) { |
| DCHECK(decoder_thread_task_runner_->BelongsToCurrentThread()); |
| - message_loop_->PostTask(FROM_HERE, base::Bind( |
| - &VaapiVideoDecodeAccelerator::NotifyError, weak_this_, error)); |
| + message_loop_->PostTask( |
| + FROM_HERE, base::Bind(&VaapiVideoDecodeAccelerator::NotifyError, |
| + weak_this_, error)); |
| return; |
| } |
| // Post Cleanup() as a task so we don't recursively acquire lock_. |
| - message_loop_->PostTask(FROM_HERE, base::Bind( |
| - &VaapiVideoDecodeAccelerator::Cleanup, weak_this_)); |
| + message_loop_->PostTask( |
| + FROM_HERE, base::Bind(&VaapiVideoDecodeAccelerator::Cleanup, weak_this_)); |
| LOG(ERROR) << "Notifying of error " << error; |
| if (client_) { |
| @@ -393,8 +391,7 @@ void VaapiVideoDecodeAccelerator::OutputPicture( |
| int32_t output_id = picture->picture_buffer_id(); |
| - TRACE_EVENT2("Video Decoder", "VAVDA::OutputSurface", |
| - "input_id", input_id, |
| + TRACE_EVENT2("Video Decoder", "VAVDA::OutputSurface", "input_id", input_id, |
| "output_id", output_id); |
| DVLOG(3) << "Outputting VASurface " << va_surface->id() |
| @@ -407,14 +404,13 @@ void VaapiVideoDecodeAccelerator::OutputPicture( |
| // Notify the client a picture is ready to be displayed. |
| ++num_frames_at_client_; |
| TRACE_COUNTER1("Video Decoder", "Textures at client", num_frames_at_client_); |
| - DVLOG(4) << "Notifying output picture id " << output_id |
| - << " for input "<< input_id << " is ready"; |
| + DVLOG(4) << "Notifying output picture id " << output_id << " for input " |
| + << input_id << " is ready"; |
| // TODO(posciak): Use visible size from decoder here instead |
| // (crbug.com/402760). Passing (0, 0) results in the client using the |
| // visible size extracted from the container instead. |
| if (client_) |
| - client_->PictureReady(media::Picture(output_id, input_id, |
| - gfx::Rect(0, 0), |
| + client_->PictureReady(media::Picture(output_id, input_id, gfx::Rect(0, 0), |
| picture->AllowOverlay())); |
| } |
| @@ -445,7 +441,7 @@ void VaapiVideoDecodeAccelerator::MapAndQueueNewInputBuffer( |
| const media::BitstreamBuffer& bitstream_buffer) { |
| DCHECK_EQ(message_loop_, base::MessageLoop::current()); |
| TRACE_EVENT1("Video Decoder", "MapAndQueueNewInputBuffer", "input_id", |
| - bitstream_buffer.id()); |
| + bitstream_buffer.id()); |
| DVLOG(4) << "Mapping new input buffer id: " << bitstream_buffer.id() |
| << " size: " << (int)bitstream_buffer.size(); |
| @@ -491,7 +487,7 @@ bool VaapiVideoDecodeAccelerator::GetInputBuffer_Locked() { |
| // already queued up. Otherwise will stop decoding. |
| if (input_buffers_.empty()) |
| return false; |
| - // else fallthrough |
| + // else fallthrough |
|
Pawel Osciak
2016/04/19 09:22:55
Please keep the original indent.
Mark Dittmer
2016/05/02 03:51:24
Done.
|
| case kDecoding: |
| case kIdle: |
| DCHECK(!input_buffers_.empty()); |
| @@ -522,8 +518,8 @@ void VaapiVideoDecodeAccelerator::ReturnCurrInputBuffer_Locked() { |
| int32_t id = curr_input_buffer_->id; |
| curr_input_buffer_.reset(); |
| DVLOG(4) << "End of input buffer " << id; |
| - message_loop_->PostTask(FROM_HERE, base::Bind( |
| - &Client::NotifyEndOfBitstreamBuffer, client_, id)); |
| + message_loop_->PostTask( |
| + FROM_HERE, base::Bind(&Client::NotifyEndOfBitstreamBuffer, client_, id)); |
| --num_stream_bufs_at_decoder_; |
| TRACE_COUNTER1("Video Decoder", "Stream buffers at decoder", |
| @@ -577,10 +573,11 @@ void VaapiVideoDecodeAccelerator::DecodeTask() { |
| switch (res) { |
| case AcceleratedVideoDecoder::kAllocateNewSurfaces: |
| DVLOG(1) << "Decoder requesting a new set of surfaces"; |
| - message_loop_->PostTask(FROM_HERE, base::Bind( |
| - &VaapiVideoDecodeAccelerator::InitiateSurfaceSetChange, weak_this_, |
| - decoder_->GetRequiredNumOfPictures(), |
| - decoder_->GetPicSize())); |
| + message_loop_->PostTask( |
| + FROM_HERE, |
| + base::Bind(&VaapiVideoDecodeAccelerator::InitiateSurfaceSetChange, |
| + weak_this_, decoder_->GetRequiredNumOfPictures(), |
| + decoder_->GetPicSize())); |
| // We'll get rescheduled once ProvidePictureBuffers() finishes. |
| return; |
| @@ -639,8 +636,10 @@ void VaapiVideoDecodeAccelerator::TryFinishSurfaceSetChange() { |
| // as the result, but not all have executed yet. Post ourselves after them |
| // to let them release surfaces. |
| DVLOG(2) << "Awaiting pending output/surface release callbacks to finish"; |
| - message_loop_->PostTask(FROM_HERE, base::Bind( |
| - &VaapiVideoDecodeAccelerator::TryFinishSurfaceSetChange, weak_this_)); |
| + message_loop_->PostTask( |
| + FROM_HERE, |
| + base::Bind(&VaapiVideoDecodeAccelerator::TryFinishSurfaceSetChange, |
| + weak_this_)); |
| return; |
| } |
| @@ -658,8 +657,8 @@ void VaapiVideoDecodeAccelerator::TryFinishSurfaceSetChange() { |
| pictures_.clear(); |
| // And ask for a new set as requested. |
| - DVLOG(1) << "Requesting " << requested_num_pics_ << " pictures of size: " |
| - << requested_pic_size_.ToString(); |
| + DVLOG(1) << "Requesting " << requested_num_pics_ |
| + << " pictures of size: " << requested_pic_size_.ToString(); |
| message_loop_->PostTask( |
| FROM_HERE, |
| @@ -693,7 +692,7 @@ void VaapiVideoDecodeAccelerator::Decode( |
| break; |
| case kDecoding: |
| - // Decoder already running, fallthrough. |
| + // Decoder already running, fallthrough. |
| case kResetting: |
| // When resetting, allow accumulating bitstream buffers, so that |
| // the client can queue after-seek-buffers while we are finishing with |
| @@ -701,8 +700,8 @@ void VaapiVideoDecodeAccelerator::Decode( |
| break; |
| default: |
| - RETURN_AND_NOTIFY_ON_FAILURE(false, |
| - "Decode request from client in invalid state: " << state_, |
| + RETURN_AND_NOTIFY_ON_FAILURE( |
| + false, "Decode request from client in invalid state: " << state_, |
| PLATFORM_FAILURE, ); |
| break; |
| } |
| @@ -727,10 +726,11 @@ void VaapiVideoDecodeAccelerator::AssignPictureBuffers( |
| while (!output_buffers_.empty()) |
| output_buffers_.pop(); |
| - RETURN_AND_NOTIFY_ON_FAILURE( |
| - buffers.size() >= requested_num_pics_, |
| - "Got an invalid number of picture buffers. (Got " << buffers.size() |
| - << ", requested " << requested_num_pics_ << ")", INVALID_ARGUMENT, ); |
| + RETURN_AND_NOTIFY_ON_FAILURE(buffers.size() >= requested_num_pics_, |
| + "Got an invalid number of picture buffers. (Got " |
| + << buffers.size() << ", requested " |
| + << requested_num_pics_ << ")", |
| + INVALID_ARGUMENT, ); |
| DCHECK(requested_pic_size_ == buffers[0].size()); |
| std::vector<VASurfaceID> va_surface_ids; |
| @@ -804,8 +804,9 @@ void VaapiVideoDecodeAccelerator::FlushTask() { |
| // Put the decoder in idle state, ready to resume. |
| decoder_->Reset(); |
| - message_loop_->PostTask(FROM_HERE, base::Bind( |
| - &VaapiVideoDecodeAccelerator::FinishFlush, weak_this_)); |
| + message_loop_->PostTask( |
| + FROM_HERE, |
| + base::Bind(&VaapiVideoDecodeAccelerator::FinishFlush, weak_this_)); |
| } |
| void VaapiVideoDecodeAccelerator::Flush() { |
| @@ -843,8 +844,8 @@ void VaapiVideoDecodeAccelerator::FinishFlush() { |
| state_ = kIdle; |
| - message_loop_->PostTask(FROM_HERE, base::Bind( |
| - &Client::NotifyFlushDone, client_)); |
| + message_loop_->PostTask(FROM_HERE, |
| + base::Bind(&Client::NotifyFlushDone, client_)); |
| DVLOG(1) << "Flush finished"; |
| } |
| @@ -865,8 +866,9 @@ void VaapiVideoDecodeAccelerator::ResetTask() { |
| ReturnCurrInputBuffer_Locked(); |
| // And let client know that we are done with reset. |
| - message_loop_->PostTask(FROM_HERE, base::Bind( |
| - &VaapiVideoDecodeAccelerator::FinishReset, weak_this_)); |
| + message_loop_->PostTask( |
| + FROM_HERE, |
| + base::Bind(&VaapiVideoDecodeAccelerator::FinishReset, weak_this_)); |
| } |
| void VaapiVideoDecodeAccelerator::Reset() { |
| @@ -880,9 +882,9 @@ void VaapiVideoDecodeAccelerator::Reset() { |
| // Drop all remaining input buffers, if present. |
| while (!input_buffers_.empty()) { |
| - message_loop_->PostTask(FROM_HERE, base::Bind( |
| - &Client::NotifyEndOfBitstreamBuffer, client_, |
| - input_buffers_.front()->id)); |
| + message_loop_->PostTask( |
| + FROM_HERE, base::Bind(&Client::NotifyEndOfBitstreamBuffer, client_, |
| + input_buffers_.front()->id)); |
| input_buffers_.pop(); |
| } |
| @@ -912,16 +914,17 @@ void VaapiVideoDecodeAccelerator::FinishReset() { |
| // Decoder requested a new surface set while we were waiting for it to |
| // finish the last DecodeTask, running at the time of Reset(). |
| // Let the surface set change finish first before resetting. |
| - message_loop_->PostTask(FROM_HERE, base::Bind( |
| - &VaapiVideoDecodeAccelerator::FinishReset, weak_this_)); |
| + message_loop_->PostTask( |
| + FROM_HERE, |
| + base::Bind(&VaapiVideoDecodeAccelerator::FinishReset, weak_this_)); |
| return; |
| } |
| num_stream_bufs_at_decoder_ = 0; |
| state_ = kIdle; |
| - message_loop_->PostTask(FROM_HERE, base::Bind( |
| - &Client::NotifyResetDone, client_)); |
| + message_loop_->PostTask(FROM_HERE, |
| + base::Bind(&Client::NotifyResetDone, client_)); |
| // The client might have given us new buffers via Decode() while we were |
| // resetting and might be waiting for our move, and not call Decode() anymore |
| @@ -1041,8 +1044,7 @@ VaapiVideoDecodeAccelerator::VaapiH264Accelerator::VaapiH264Accelerator( |
| DCHECK(vaapi_dec_); |
| } |
| -VaapiVideoDecodeAccelerator::VaapiH264Accelerator::~VaapiH264Accelerator() { |
| -} |
| +VaapiVideoDecodeAccelerator::VaapiH264Accelerator::~VaapiH264Accelerator() {} |
| scoped_refptr<H264Picture> |
| VaapiVideoDecodeAccelerator::VaapiH264Accelerator::CreateH264Picture() { |
| @@ -1141,8 +1143,7 @@ bool VaapiVideoDecodeAccelerator::VaapiH264Accelerator::SubmitFrameMetadata( |
| pic_param.num_ref_frames = sps->max_num_ref_frames; |
| if (!vaapi_wrapper_->SubmitBuffer(VAPictureParameterBufferType, |
| - sizeof(pic_param), |
| - &pic_param)) |
| + sizeof(pic_param), &pic_param)) |
| return false; |
| VAIQMatrixBufferH264 iq_matrix_buf; |
| @@ -1171,8 +1172,7 @@ bool VaapiVideoDecodeAccelerator::VaapiH264Accelerator::SubmitFrameMetadata( |
| } |
| return vaapi_wrapper_->SubmitBuffer(VAIQMatrixBufferType, |
| - sizeof(iq_matrix_buf), |
| - &iq_matrix_buf); |
| + sizeof(iq_matrix_buf), &iq_matrix_buf); |
| } |
| bool VaapiVideoDecodeAccelerator::VaapiH264Accelerator::SubmitSlice( |
| @@ -1272,8 +1272,7 @@ bool VaapiVideoDecodeAccelerator::VaapiH264Accelerator::SubmitSlice( |
| } |
| if (!vaapi_wrapper_->SubmitBuffer(VASliceParameterBufferType, |
| - sizeof(slice_param), |
| - &slice_param)) |
| + sizeof(slice_param), &slice_param)) |
| return false; |
| // Can't help it, blame libva... |
| @@ -1374,8 +1373,7 @@ VaapiVideoDecodeAccelerator::VaapiVP8Accelerator::VaapiVP8Accelerator( |
| DCHECK(vaapi_dec_); |
| } |
| -VaapiVideoDecodeAccelerator::VaapiVP8Accelerator::~VaapiVP8Accelerator() { |
| -} |
| +VaapiVideoDecodeAccelerator::VaapiVP8Accelerator::~VaapiVP8Accelerator() {} |
| scoped_refptr<VP8Picture> |
| VaapiVideoDecodeAccelerator::VaapiVP8Accelerator::CreateVP8Picture() { |
| @@ -1430,9 +1428,8 @@ bool VaapiVideoDecodeAccelerator::VaapiVP8Accelerator::SubmitDecode( |
| #undef CLAMP_Q |
| } |
| - if (!vaapi_wrapper_->SubmitBuffer(VAIQMatrixBufferType, |
| - sizeof(VAIQMatrixBufferVP8), |
| - &iq_matrix_buf)) |
| + if (!vaapi_wrapper_->SubmitBuffer( |
| + VAIQMatrixBufferType, sizeof(VAIQMatrixBufferVP8), &iq_matrix_buf)) |
| return false; |
| VAProbabilityDataBufferVP8 prob_buf; |
| @@ -1517,13 +1514,13 @@ bool VaapiVideoDecodeAccelerator::VaapiVP8Accelerator::SubmitDecode( |
| pic_param.loop_filter_level[i] = lf_level; |
| } |
| - static_assert(arraysize(lf_hdr.ref_frame_delta) == |
| - arraysize(pic_param.loop_filter_deltas_ref_frame) && |
| - arraysize(lf_hdr.mb_mode_delta) == |
| - arraysize(pic_param.loop_filter_deltas_mode) && |
| - arraysize(lf_hdr.ref_frame_delta) == |
| - arraysize(lf_hdr.mb_mode_delta), |
| - "loop filter deltas arrays size mismatch"); |
| + static_assert( |
| + arraysize(lf_hdr.ref_frame_delta) == |
| + arraysize(pic_param.loop_filter_deltas_ref_frame) && |
| + arraysize(lf_hdr.mb_mode_delta) == |
| + arraysize(pic_param.loop_filter_deltas_mode) && |
| + arraysize(lf_hdr.ref_frame_delta) == arraysize(lf_hdr.mb_mode_delta), |
| + "loop filter deltas arrays size mismatch"); |
| for (size_t i = 0; i < arraysize(lf_hdr.ref_frame_delta); ++i) { |
| pic_param.loop_filter_deltas_ref_frame[i] = lf_hdr.ref_frame_delta[i]; |
| pic_param.loop_filter_deltas_mode[i] = lf_hdr.mb_mode_delta[i]; |
| @@ -1572,8 +1569,7 @@ bool VaapiVideoDecodeAccelerator::VaapiVP8Accelerator::SubmitDecode( |
| void* non_const_ptr = const_cast<uint8_t*>(frame_hdr->data); |
| if (!vaapi_wrapper_->SubmitBuffer(VASliceDataBufferType, |
| - frame_hdr->frame_size, |
| - non_const_ptr)) |
| + frame_hdr->frame_size, non_const_ptr)) |
| return false; |
| scoped_refptr<VaapiDecodeSurface> dec_surface = |
| @@ -1761,4 +1757,4 @@ VaapiVideoDecodeAccelerator::GetSupportedProfiles() { |
| return VaapiWrapper::GetSupportedDecodeProfiles(); |
| } |
| -} // namespace content |
| +} // namespace media |