Chromium Code Reviews| Index: media/gpu/dxva_video_decode_accelerator_win.cc |
| diff --git a/media/gpu/dxva_video_decode_accelerator_win.cc b/media/gpu/dxva_video_decode_accelerator_win.cc |
| index 5f730e80d3eb6b5b3283a39b97254d6afdef1398..e4da60cd648d674ad8b3502ce655f26eda1e9169 100644 |
| --- a/media/gpu/dxva_video_decode_accelerator_win.cc |
| +++ b/media/gpu/dxva_video_decode_accelerator_win.cc |
| @@ -458,6 +458,13 @@ bool H264ConfigChangeDetector::DetectConfig(const uint8_t* stream, |
| return true; |
| } |
| +gfx::ColorSpace H264ConfigChangeDetector::current_color_space() const { |
| + // TODO(hubbe): Is using last_sps_id_ correct here? |
|
sandersd (OOO until July 31)
2016/09/16 21:54:13
There could be a gap between the ID changing and t
hubbe
2016/09/21 22:04:26
Updated the code to handle this (more) correctly.
|
| + const H264SPS* sps = parser_->GetSPS(last_sps_id_); |
| + if (sps) |
| + return sps->GetColorSpace(); |
| + return gfx::ColorSpace(); |
| +} |
| DXVAVideoDecodeAccelerator::PendingSampleInfo::PendingSampleInfo( |
| int32_t buffer_id, |
| @@ -1893,9 +1900,17 @@ void DXVAVideoDecodeAccelerator::NotifyPictureReady(int picture_buffer_id, |
| DCHECK(main_thread_task_runner_->BelongsToCurrentThread()); |
| // This task could execute after the decoder has been torn down. |
| if (GetState() != kUninitialized && client_) { |
| + gfx::ColorSpace color_space; |
| + if (share_nv12_textures_ || copy_nv12_textures_) { |
| + // Color space information is only valid for NV12 textures. |
| + // If the texture has been converted to RGB, we don't actually know what |
| + // Color space the output is in. |
| + color_space = config_change_detector_->current_color_space(); |
| + } |
| // TODO(henryhsu): Use correct visible size instead of (0, 0). We can't use |
| // coded size here so use (0, 0) intentionally to have the client choose. |
| - Picture picture(picture_buffer_id, input_buffer_id, gfx::Rect(0, 0), false); |
| + Picture picture(picture_buffer_id, input_buffer_id, gfx::Rect(0, 0), |
| + color_space, false); |
| client_->PictureReady(picture); |
| } |
| } |