| Index: webrtc/modules/video_coding/generic_decoder.cc
 | 
| diff --git a/webrtc/modules/video_coding/generic_decoder.cc b/webrtc/modules/video_coding/generic_decoder.cc
 | 
| index 2121ab63067acdafe71e7f1cb7ceaf90c3b1196d..f5d9cfe07396ab03d9767a6ec6ac0fa38ed6c1dc 100644
 | 
| --- a/webrtc/modules/video_coding/generic_decoder.cc
 | 
| +++ b/webrtc/modules/video_coding/generic_decoder.cc
 | 
| @@ -87,7 +87,7 @@ void VCMDecodedFrameCallback::Decoded(VideoFrame& decodedImage,
 | 
|    decodedImage.set_timestamp_us(
 | 
|        frameInfo->renderTimeMs * rtc::kNumMicrosecsPerMillisec);
 | 
|    decodedImage.set_rotation(frameInfo->rotation);
 | 
| -  _receiveCallback->FrameToRender(decodedImage, qp);
 | 
| +  _receiveCallback->FrameToRender(decodedImage, qp, frameInfo->content_type);
 | 
|  }
 | 
|  
 | 
|  int32_t VCMDecodedFrameCallback::ReceivedDecodedReferenceFrame(
 | 
| @@ -131,7 +131,8 @@ VCMGenericDecoder::VCMGenericDecoder(VideoDecoder* decoder, bool isExternal)
 | 
|        _decoder(decoder),
 | 
|        _codecType(kVideoCodecUnknown),
 | 
|        _isExternal(isExternal),
 | 
| -      _keyFrameDecoded(false) {}
 | 
| +      _keyFrameDecoded(false),
 | 
| +      _last_keyframe_content_type(VideoContentType::UNSPECIFIED) {}
 | 
|  
 | 
|  VCMGenericDecoder::~VCMGenericDecoder() {}
 | 
|  
 | 
| @@ -149,6 +150,15 @@ int32_t VCMGenericDecoder::Decode(const VCMEncodedFrame& frame, int64_t nowMs) {
 | 
|      _frameInfos[_nextFrameInfoIdx].decodeStartTimeMs = nowMs;
 | 
|      _frameInfos[_nextFrameInfoIdx].renderTimeMs = frame.RenderTimeMs();
 | 
|      _frameInfos[_nextFrameInfoIdx].rotation = frame.rotation();
 | 
| +    // Set correctly only for key frames. Thus, use latest key frame
 | 
| +    // content type. If the corresponding key frame was lost, decode will fail
 | 
| +    // and content type will be ignored.
 | 
| +    if (frame.FrameType() == kVideoFrameKey) {
 | 
| +      _frameInfos[_nextFrameInfoIdx].content_type = frame.contentType();
 | 
| +      _last_keyframe_content_type = frame.contentType();
 | 
| +    } else {
 | 
| +      _frameInfos[_nextFrameInfoIdx].content_type = _last_keyframe_content_type;
 | 
| +    }
 | 
|      _callback->Map(frame.TimeStamp(), &_frameInfos[_nextFrameInfoIdx]);
 | 
|  
 | 
|      _nextFrameInfoIdx = (_nextFrameInfoIdx + 1) % kDecoderFrameMemoryLength;
 | 
| 
 |