| Index: content/common/gpu/media/dxva_video_decode_accelerator_win.cc | 
| diff --git a/content/common/gpu/media/dxva_video_decode_accelerator_win.cc b/content/common/gpu/media/dxva_video_decode_accelerator_win.cc | 
| index 8557bcc104720759a35669599dec95f608173999..a7587ad9e6bd51d98b497e4ce7ac00cc8b5efa27 100644 | 
| --- a/content/common/gpu/media/dxva_video_decode_accelerator_win.cc | 
| +++ b/content/common/gpu/media/dxva_video_decode_accelerator_win.cc | 
| @@ -34,7 +34,6 @@ | 
| #include "base/win/windows_version.h" | 
| #include "build/build_config.h" | 
| #include "media/base/win/mf_initializer.h" | 
| -#include "media/filters/h264_parser.h" | 
| #include "media/video/video_decode_accelerator.h" | 
| #include "third_party/angle/include/EGL/egl.h" | 
| #include "third_party/angle/include/EGL/eglext.h" | 
| @@ -384,12 +383,14 @@ bool H264ConfigChangeDetector::DetectConfig(const uint8_t* stream, | 
| media::H264NALU nalu; | 
| bool idr_seen = false; | 
|  | 
| -  media::H264Parser parser; | 
| -  parser.SetStream(stream, size); | 
| +  if (!parser_.get()) | 
| +    parser_.reset(new media::H264Parser); | 
| + | 
| +  parser_->SetStream(stream, size); | 
| config_changed_ = false; | 
|  | 
| while (true) { | 
| -    media::H264Parser::Result result = parser.AdvanceToNextNALU(&nalu); | 
| +    media::H264Parser::Result result = parser_->AdvanceToNextNALU(&nalu); | 
|  | 
| if (result == media::H264Parser::kEOStream) | 
| break; | 
| @@ -406,7 +407,7 @@ bool H264ConfigChangeDetector::DetectConfig(const uint8_t* stream, | 
|  | 
| switch (nalu.nal_unit_type) { | 
| case media::H264NALU::kSPS: | 
| -        result = parser.ParseSPS(&last_sps_id_); | 
| +        result = parser_->ParseSPS(&last_sps_id_); | 
| if (result == media::H264Parser::kUnsupportedStream) { | 
| DLOG(ERROR) << "Unsupported SPS"; | 
| return false; | 
| @@ -421,7 +422,7 @@ bool H264ConfigChangeDetector::DetectConfig(const uint8_t* stream, | 
| break; | 
|  | 
| case media::H264NALU::kPPS: | 
| -        result = parser.ParsePPS(&last_pps_id_); | 
| +        result = parser_->ParsePPS(&last_pps_id_); | 
| if (result == media::H264Parser::kUnsupportedStream) { | 
| DLOG(ERROR) << "Unsupported PPS"; | 
| return false; | 
| @@ -932,6 +933,8 @@ bool DXVAVideoDecodeAccelerator::Initialize(const Config& config, | 
|  | 
| config_ = config; | 
|  | 
| +  config_change_detector_.reset(new H264ConfigChangeDetector); | 
| + | 
| SetState(kNormal); | 
|  | 
| StartDecoderThread(); | 
| @@ -1830,6 +1833,8 @@ void DXVAVideoDecodeAccelerator::Invalidate() { | 
| decoder_.Release(); | 
| pictures_requested_ = false; | 
|  | 
| +  config_change_detector_.reset(); | 
| + | 
| if (use_dx11_) { | 
| if (video_format_converter_mft_.get()) { | 
| video_format_converter_mft_->ProcessMessage( | 
| @@ -2634,13 +2639,13 @@ HRESULT DXVAVideoDecodeAccelerator::CheckConfigChanged( | 
|  | 
| MediaBufferScopedPointer scoped_media_buffer(buffer.get()); | 
|  | 
| -  if (!config_change_detector_.DetectConfig( | 
| +  if (!config_change_detector_->DetectConfig( | 
| scoped_media_buffer.get(), | 
| scoped_media_buffer.current_length())) { | 
| RETURN_ON_HR_FAILURE(E_FAIL, "Failed to detect H.264 stream config", | 
| E_FAIL); | 
| } | 
| -  *config_changed = config_change_detector_.config_changed(); | 
| +  *config_changed = config_change_detector_->config_changed(); | 
| return S_OK; | 
| } | 
|  | 
|  |