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

Unified Diff: content/renderer/media/rtc_video_decoder.cc

Issue 304593004: H264 decoder for webRTC. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Using fragmentation header. Created 6 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: content/renderer/media/rtc_video_decoder.cc
diff --git a/content/renderer/media/rtc_video_decoder.cc b/content/renderer/media/rtc_video_decoder.cc
index 4e4b3199683e7a0f33e37f48fee7360be304417c..509b72802e954553413447009c8ce44662e83025 100644
--- a/content/renderer/media/rtc_video_decoder.cc
+++ b/content/renderer/media/rtc_video_decoder.cc
@@ -120,6 +120,9 @@ scoped_ptr<RTCVideoDecoder> RTCVideoDecoder::Create(
case webrtc::kVideoCodecVP8:
profile = media::VP8PROFILE_MAIN;
break;
+ case webrtc::kVideoCodecH264:
+ profile = media::H264PROFILE_MAIN;
+ break;
default:
DVLOG(2) << "Video codec not supported:" << type;
return decoder.Pass();
@@ -146,8 +149,10 @@ scoped_ptr<RTCVideoDecoder> RTCVideoDecoder::Create(
int32_t RTCVideoDecoder::InitDecode(const webrtc::VideoCodec* codecSettings,
int32_t /*numberOfCores*/) {
DVLOG(2) << "InitDecode";
- DCHECK_EQ(codecSettings->codecType, webrtc::kVideoCodecVP8);
- if (codecSettings->codecSpecific.VP8.feedbackModeOn) {
+ DCHECK(codecSettings->codecType == webrtc::kVideoCodecVP8 ||
+ codecSettings->codecType == webrtc::kVideoCodecH264);
+ if (codecSettings->codecType == webrtc::kVideoCodecVP8 &&
+ codecSettings->codecSpecific.VP8.feedbackModeOn) {
LOG(ERROR) << "Feedback mode not supported";
return RecordInitDecodeUMA(WEBRTC_VIDEO_CODEC_ERROR);
}
@@ -208,10 +213,12 @@ int32_t RTCVideoDecoder::Decode(
bool need_to_reset_for_midstream_resize = false;
if (inputImage._frameType == webrtc::kKeyFrame) {
+ int width = inputImage._encodedWidth ? inputImage._encodedWidth : 640;
+ int height = inputImage._encodedHeight ? inputImage._encodedHeight : 480;
DVLOG(2) << "Got key frame. size=" << inputImage._encodedWidth << "x"
<< inputImage._encodedHeight;
gfx::Size prev_frame_size = frame_size_;
- frame_size_.SetSize(inputImage._encodedWidth, inputImage._encodedHeight);
+ frame_size_.SetSize(width, height);
if (!kVDACanHandleMidstreamResize && !prev_frame_size.IsEmpty() &&
prev_frame_size != frame_size_) {
need_to_reset_for_midstream_resize = true;
« no previous file with comments | « no previous file | content/renderer/media/rtc_video_encoder.cc » ('j') | content/renderer/media/rtc_video_encoder.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698