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

Side by Side Diff: media/filters/vpx_video_decoder.cc

Issue 2697863003: color: Clarify default behaviors (Closed)
Patch Set: Incorporate review feedback Created 3 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
« no previous file with comments | « media/filters/h264_parser.cc ('k') | media/formats/webm/webm_colour_parser.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include "media/filters/vpx_video_decoder.h" 5 #include "media/filters/vpx_video_decoder.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 586 matching lines...) Expand 10 before | Expand all | Expand 10 after
597 (*video_frame) 597 (*video_frame)
598 ->metadata() 598 ->metadata()
599 ->SetInteger(VideoFrameMetadata::COLOR_SPACE, color_space); 599 ->SetInteger(VideoFrameMetadata::COLOR_SPACE, color_space);
600 600
601 if (config_.color_space_info() != gfx::ColorSpace()) { 601 if (config_.color_space_info() != gfx::ColorSpace()) {
602 // config_.color_space_info() comes from the color tag which is 602 // config_.color_space_info() comes from the color tag which is
603 // more expressive than the bitstream, so prefer it over the 603 // more expressive than the bitstream, so prefer it over the
604 // bitstream data below. 604 // bitstream data below.
605 (*video_frame)->set_color_space(config_.color_space_info()); 605 (*video_frame)->set_color_space(config_.color_space_info());
606 } else { 606 } else {
607 gfx::ColorSpace::PrimaryID primaries = 607 gfx::ColorSpace::PrimaryID primaries = gfx::ColorSpace::PrimaryID::INVALID;
608 gfx::ColorSpace::PrimaryID::UNSPECIFIED; 608 gfx::ColorSpace::TransferID transfer = gfx::ColorSpace::TransferID::INVALID;
609 gfx::ColorSpace::TransferID transfer = 609 gfx::ColorSpace::MatrixID matrix = gfx::ColorSpace::MatrixID::INVALID;
610 gfx::ColorSpace::TransferID::UNSPECIFIED;
611 gfx::ColorSpace::MatrixID matrix = gfx::ColorSpace::MatrixID::UNSPECIFIED;
612 gfx::ColorSpace::RangeID range = vpx_image->range == VPX_CR_FULL_RANGE 610 gfx::ColorSpace::RangeID range = vpx_image->range == VPX_CR_FULL_RANGE
613 ? gfx::ColorSpace::RangeID::FULL 611 ? gfx::ColorSpace::RangeID::FULL
614 : gfx::ColorSpace::RangeID::LIMITED; 612 : gfx::ColorSpace::RangeID::LIMITED;
615 613
616 switch (vpx_image->cs) { 614 switch (vpx_image->cs) {
617 case VPX_CS_BT_601: 615 case VPX_CS_BT_601:
618 case VPX_CS_SMPTE_170: 616 case VPX_CS_SMPTE_170:
619 primaries = gfx::ColorSpace::PrimaryID::SMPTE170M; 617 primaries = gfx::ColorSpace::PrimaryID::SMPTE170M;
620 transfer = gfx::ColorSpace::TransferID::SMPTE170M; 618 transfer = gfx::ColorSpace::TransferID::SMPTE170M;
621 matrix = gfx::ColorSpace::MatrixID::SMPTE170M; 619 matrix = gfx::ColorSpace::MatrixID::SMPTE170M;
(...skipping 22 matching lines...) Expand all
644 case VPX_CS_SRGB: 642 case VPX_CS_SRGB:
645 primaries = gfx::ColorSpace::PrimaryID::BT709; 643 primaries = gfx::ColorSpace::PrimaryID::BT709;
646 transfer = gfx::ColorSpace::TransferID::IEC61966_2_1; 644 transfer = gfx::ColorSpace::TransferID::IEC61966_2_1;
647 matrix = gfx::ColorSpace::MatrixID::BT709; 645 matrix = gfx::ColorSpace::MatrixID::BT709;
648 break; 646 break;
649 647
650 default: 648 default:
651 break; 649 break;
652 } 650 }
653 651
654 if (primaries != gfx::ColorSpace::PrimaryID::UNSPECIFIED) { 652 // TODO(ccameron): Set a color space even for unspecified values.
653 if (primaries != gfx::ColorSpace::PrimaryID::INVALID) {
655 (*video_frame) 654 (*video_frame)
656 ->set_color_space( 655 ->set_color_space(
657 gfx::ColorSpace(primaries, transfer, matrix, range)); 656 gfx::ColorSpace(primaries, transfer, matrix, range));
658 } 657 }
659 } 658 }
660 659
661 return true; 660 return true;
662 } 661 }
663 662
664 VpxVideoDecoder::AlphaDecodeStatus VpxVideoDecoder::DecodeAlphaPlane( 663 VpxVideoDecoder::AlphaDecodeStatus VpxVideoDecoder::DecodeAlphaPlane(
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
846 (*video_frame)->visible_data(VideoFrame::kUPlane), 845 (*video_frame)->visible_data(VideoFrame::kUPlane),
847 (*video_frame)->stride(VideoFrame::kUPlane), 846 (*video_frame)->stride(VideoFrame::kUPlane),
848 (*video_frame)->visible_data(VideoFrame::kVPlane), 847 (*video_frame)->visible_data(VideoFrame::kVPlane),
849 (*video_frame)->stride(VideoFrame::kVPlane), coded_size.width(), 848 (*video_frame)->stride(VideoFrame::kVPlane), coded_size.width(),
850 coded_size.height()); 849 coded_size.height());
851 850
852 return true; 851 return true;
853 } 852 }
854 853
855 } // namespace media 854 } // namespace media
OLDNEW
« no previous file with comments | « media/filters/h264_parser.cc ('k') | media/formats/webm/webm_colour_parser.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698