| 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;
 | 
|  }
 | 
|  
 | 
| 
 |