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

Side by Side Diff: content/common/gpu/media/gpu_jpeg_decode_accelerator.cc

Issue 1706023003: Moving the validation of bitstream_buffer into VDA implementations. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix compiling errors on windows Created 4 years, 10 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 #include "content/common/gpu/media/gpu_jpeg_decode_accelerator.h" 5 #include "content/common/gpu/media/gpu_jpeg_decode_accelerator.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 23 matching lines...) Expand all
34 34
35 namespace { 35 namespace {
36 36
37 void DecodeFinished(scoped_ptr<base::SharedMemory> shm) { 37 void DecodeFinished(scoped_ptr<base::SharedMemory> shm) {
38 // Do nothing. Because VideoFrame is backed by |shm|, the purpose of this 38 // Do nothing. Because VideoFrame is backed by |shm|, the purpose of this
39 // function is to just keep reference of |shm| to make sure it lives util 39 // function is to just keep reference of |shm| to make sure it lives util
40 // decode finishes. 40 // decode finishes.
41 } 41 }
42 42
43 bool VerifyDecodeParams(const AcceleratedJpegDecoderMsg_Decode_Params& params) { 43 bool VerifyDecodeParams(const AcceleratedJpegDecoderMsg_Decode_Params& params) {
44 if (params.input_buffer_id < 0) {
45 LOG(ERROR) << "BitstreamBuffer id " << params.input_buffer_id
46 << " out of range";
47 return false;
48 }
49
50 const int kJpegMaxDimension = UINT16_MAX; 44 const int kJpegMaxDimension = UINT16_MAX;
51 if (params.coded_size.IsEmpty() || 45 if (params.coded_size.IsEmpty() ||
52 params.coded_size.width() > kJpegMaxDimension || 46 params.coded_size.width() > kJpegMaxDimension ||
53 params.coded_size.height() > kJpegMaxDimension) { 47 params.coded_size.height() > kJpegMaxDimension) {
54 LOG(ERROR) << "invalid coded_size " << params.coded_size.ToString(); 48 LOG(ERROR) << "invalid coded_size " << params.coded_size.ToString();
55 return false; 49 return false;
56 } 50 }
57 51
58 if (!base::SharedMemory::IsHandleValid(params.input_buffer_handle)) {
59 LOG(ERROR) << "invalid input_buffer_handle";
60 return false;
61 }
62
63 if (!base::SharedMemory::IsHandleValid(params.output_video_frame_handle)) { 52 if (!base::SharedMemory::IsHandleValid(params.output_video_frame_handle)) {
64 LOG(ERROR) << "invalid output_video_frame_handle"; 53 LOG(ERROR) << "invalid output_video_frame_handle";
65 return false; 54 return false;
66 } 55 }
67 56
68 if (params.output_buffer_size < 57 if (params.output_buffer_size <
69 media::VideoFrame::AllocationSize(media::PIXEL_FORMAT_I420, 58 media::VideoFrame::AllocationSize(media::PIXEL_FORMAT_I420,
70 params.coded_size)) { 59 params.coded_size)) {
71 LOG(ERROR) << "output_buffer_size is too small: " 60 LOG(ERROR) << "output_buffer_size is too small: "
72 << params.output_buffer_size; 61 << params.output_buffer_size;
(...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after
432 for (const auto& create_jda_function : create_jda_fps) { 421 for (const auto& create_jda_function : create_jda_fps) {
433 scoped_ptr<media::JpegDecodeAccelerator> accelerator = 422 scoped_ptr<media::JpegDecodeAccelerator> accelerator =
434 (*create_jda_function)(base::ThreadTaskRunnerHandle::Get()); 423 (*create_jda_function)(base::ThreadTaskRunnerHandle::Get());
435 if (accelerator && accelerator->IsSupported()) 424 if (accelerator && accelerator->IsSupported())
436 return true; 425 return true;
437 } 426 }
438 return false; 427 return false;
439 } 428 }
440 429
441 } // namespace content 430 } // namespace content
OLDNEW
« no previous file with comments | « content/common/gpu/media/fake_video_decode_accelerator.cc ('k') | content/common/gpu/media/gpu_video_decode_accelerator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698