OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "cc/resources/video_resource_updater.h" | 5 #include "cc/resources/video_resource_updater.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <algorithm> | 10 #include <algorithm> |
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
378 return std::unique_ptr<VideoResourceUpdater::HalfFloatMaker>( | 378 return std::unique_ptr<VideoResourceUpdater::HalfFloatMaker>( |
379 new HalfFloatMaker_libyuv(bits_per_channel)); | 379 new HalfFloatMaker_libyuv(bits_per_channel)); |
380 } | 380 } |
381 } | 381 } |
382 | 382 |
383 VideoFrameExternalResources VideoResourceUpdater::CreateForSoftwarePlanes( | 383 VideoFrameExternalResources VideoResourceUpdater::CreateForSoftwarePlanes( |
384 scoped_refptr<media::VideoFrame> video_frame) { | 384 scoped_refptr<media::VideoFrame> video_frame) { |
385 TRACE_EVENT0("cc", "VideoResourceUpdater::CreateForSoftwarePlanes"); | 385 TRACE_EVENT0("cc", "VideoResourceUpdater::CreateForSoftwarePlanes"); |
386 const media::VideoPixelFormat input_frame_format = video_frame->format(); | 386 const media::VideoPixelFormat input_frame_format = video_frame->format(); |
387 | 387 |
388 // TODO(hubbe): Make this a video frame method. | 388 int bits_per_channel = video_frame->BitsPerChannel(input_frame_format); |
389 int bits_per_channel = 0; | |
390 switch (input_frame_format) { | |
391 case media::PIXEL_FORMAT_UNKNOWN: | |
392 NOTREACHED(); | |
393 // Fall through! | |
394 case media::PIXEL_FORMAT_I420: | |
395 case media::PIXEL_FORMAT_YV12: | |
396 case media::PIXEL_FORMAT_YV16: | |
397 case media::PIXEL_FORMAT_YV12A: | |
398 case media::PIXEL_FORMAT_YV24: | |
399 case media::PIXEL_FORMAT_NV12: | |
400 case media::PIXEL_FORMAT_NV21: | |
401 case media::PIXEL_FORMAT_UYVY: | |
402 case media::PIXEL_FORMAT_YUY2: | |
403 case media::PIXEL_FORMAT_ARGB: | |
404 case media::PIXEL_FORMAT_XRGB: | |
405 case media::PIXEL_FORMAT_RGB24: | |
406 case media::PIXEL_FORMAT_RGB32: | |
407 case media::PIXEL_FORMAT_MJPEG: | |
408 case media::PIXEL_FORMAT_MT21: | |
409 case media::PIXEL_FORMAT_Y8: | |
410 case media::PIXEL_FORMAT_I422: | |
411 bits_per_channel = 8; | |
412 break; | |
413 case media::PIXEL_FORMAT_YUV420P9: | |
414 case media::PIXEL_FORMAT_YUV422P9: | |
415 case media::PIXEL_FORMAT_YUV444P9: | |
416 bits_per_channel = 9; | |
417 break; | |
418 case media::PIXEL_FORMAT_YUV420P10: | |
419 case media::PIXEL_FORMAT_YUV422P10: | |
420 case media::PIXEL_FORMAT_YUV444P10: | |
421 bits_per_channel = 10; | |
422 break; | |
423 case media::PIXEL_FORMAT_YUV420P12: | |
424 case media::PIXEL_FORMAT_YUV422P12: | |
425 case media::PIXEL_FORMAT_YUV444P12: | |
426 bits_per_channel = 12; | |
427 break; | |
428 case media::PIXEL_FORMAT_Y16: | |
429 bits_per_channel = 16; | |
430 break; | |
431 } | |
432 | 389 |
433 // Only YUV and Y16 software video frames are supported. | 390 // Only YUV and Y16 software video frames are supported. |
434 DCHECK(media::IsYuvPlanar(input_frame_format) || | 391 DCHECK(media::IsYuvPlanar(input_frame_format) || |
435 input_frame_format == media::PIXEL_FORMAT_Y16); | 392 input_frame_format == media::PIXEL_FORMAT_Y16); |
436 | 393 |
437 const bool software_compositor = context_provider_ == NULL; | 394 const bool software_compositor = context_provider_ == NULL; |
438 | 395 |
439 ResourceFormat output_resource_format; | 396 ResourceFormat output_resource_format; |
440 if (input_frame_format == media::PIXEL_FORMAT_Y16) { | 397 if (input_frame_format == media::PIXEL_FORMAT_Y16) { |
441 // Unable to display directly as yuv planes so convert it to RGBA for | 398 // Unable to display directly as yuv planes so convert it to RGBA for |
(...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
812 if (lost_resource) { | 769 if (lost_resource) { |
813 resource_it->clear_refs(); | 770 resource_it->clear_refs(); |
814 updater->DeleteResource(resource_it); | 771 updater->DeleteResource(resource_it); |
815 return; | 772 return; |
816 } | 773 } |
817 | 774 |
818 resource_it->remove_ref(); | 775 resource_it->remove_ref(); |
819 } | 776 } |
820 | 777 |
821 } // namespace cc | 778 } // namespace cc |
OLD | NEW |