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

Side by Side Diff: webrtc/video/full_stack.cc

Issue 1306813009: H.264 video codec support using OpenH264/FFmpeg (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Misc (WebRtcVideoChannel2::...::ConfigureVideoEncoderSettings care about H264 case) Created 5 years, 3 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 #include <stdio.h> 10 #include <stdio.h>
(...skipping 572 matching lines...) Expand 10 before | Expand all | Expand 10 after
583 583
584 CreateCalls(Call::Config(), Call::Config()); 584 CreateCalls(Call::Config(), Call::Config());
585 585
586 analyzer.SetReceiver(receiver_call_->Receiver()); 586 analyzer.SetReceiver(receiver_call_->Receiver());
587 send_transport.SetReceiver(&analyzer); 587 send_transport.SetReceiver(&analyzer);
588 recv_transport.SetReceiver(sender_call_->Receiver()); 588 recv_transport.SetReceiver(sender_call_->Receiver());
589 589
590 CreateSendConfig(1, &analyzer); 590 CreateSendConfig(1, &analyzer);
591 591
592 rtc::scoped_ptr<VideoEncoder> encoder; 592 rtc::scoped_ptr<VideoEncoder> encoder;
593 if (params.codec == "VP8") { 593 if (params.codec == "H264") {
594 encoder = 594 encoder = rtc::scoped_ptr<VideoEncoder>(
595 rtc::scoped_ptr<VideoEncoder>(VideoEncoder::Create(VideoEncoder::kVp8)); 595 VideoEncoder::Create(VideoEncoder::kH264));
596 send_config_.encoder_settings.encoder = encoder.get();
597 send_config_.encoder_settings.payload_name = "H264";
598 } else if (params.codec == "VP8") {
599 encoder = rtc::scoped_ptr<VideoEncoder>(
600 VideoEncoder::Create(VideoEncoder::kVp8));
596 send_config_.encoder_settings.encoder = encoder.get(); 601 send_config_.encoder_settings.encoder = encoder.get();
597 send_config_.encoder_settings.payload_name = "VP8"; 602 send_config_.encoder_settings.payload_name = "VP8";
598 } else if (params.codec == "VP9") { 603 } else if (params.codec == "VP9") {
599 encoder = 604 encoder = rtc::scoped_ptr<VideoEncoder>(
600 rtc::scoped_ptr<VideoEncoder>(VideoEncoder::Create(VideoEncoder::kVp9)); 605 VideoEncoder::Create(VideoEncoder::kVp9));
601 send_config_.encoder_settings.encoder = encoder.get(); 606 send_config_.encoder_settings.encoder = encoder.get();
602 send_config_.encoder_settings.payload_name = "VP9"; 607 send_config_.encoder_settings.payload_name = "VP9";
603 } else { 608 } else {
604 RTC_NOTREACHED() << "Codec not supported!"; 609 RTC_NOTREACHED() << "Codec not supported!";
605 return; 610 return;
606 } 611 }
607 send_config_.encoder_settings.payload_type = 124; 612 send_config_.encoder_settings.payload_type = 124;
608 613
609 send_config_.rtp.nack.rtp_history_ms = kNackRtpHistoryMs; 614 send_config_.rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
610 send_config_.rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[0]); 615 send_config_.rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[0]);
611 send_config_.rtp.rtx.payload_type = kSendRtxPayloadType; 616 send_config_.rtp.rtx.payload_type = kSendRtxPayloadType;
612 617
613 VideoStream* stream = &encoder_config_.streams[0]; 618 VideoStream* stream = &encoder_config_.streams[0];
614 stream->width = params.clip.width; 619 stream->width = params.clip.width;
615 stream->height = params.clip.height; 620 stream->height = params.clip.height;
616 stream->min_bitrate_bps = params.min_bitrate_bps; 621 stream->min_bitrate_bps = params.min_bitrate_bps;
617 stream->target_bitrate_bps = params.target_bitrate_bps; 622 stream->target_bitrate_bps = params.target_bitrate_bps;
618 stream->max_bitrate_bps = params.max_bitrate_bps; 623 stream->max_bitrate_bps = params.max_bitrate_bps;
619 stream->max_framerate = params.clip.fps; 624 stream->max_framerate = params.clip.fps;
620 625
626 VideoCodecH264 h264_settings;
621 VideoCodecVP8 vp8_settings; 627 VideoCodecVP8 vp8_settings;
622 VideoCodecVP9 vp9_settings; 628 VideoCodecVP9 vp9_settings;
623 if (params.mode == ContentMode::kScreensharingStaticImage || 629 if (params.mode == ContentMode::kScreensharingStaticImage ||
624 params.mode == ContentMode::kScreensharingScrollingImage) { 630 params.mode == ContentMode::kScreensharingScrollingImage) {
625 encoder_config_.content_type = VideoEncoderConfig::ContentType::kScreen; 631 encoder_config_.content_type = VideoEncoderConfig::ContentType::kScreen;
626 encoder_config_.min_transmit_bitrate_bps = 400 * 1000; 632 encoder_config_.min_transmit_bitrate_bps = 400 * 1000;
627 if (params.codec == "VP8") { 633 if (params.codec == "H264") {
634 h264_settings = VideoEncoder::GetDefaultH264Settings();
635 h264_settings.frameDroppingOn = false;
636 // Ignoring |num_temporal_layers| for H264.
637 encoder_config_.encoder_specific_settings = &h264_settings;
638 } else if (params.codec == "VP8") {
628 vp8_settings = VideoEncoder::GetDefaultVp8Settings(); 639 vp8_settings = VideoEncoder::GetDefaultVp8Settings();
629 vp8_settings.denoisingOn = false; 640 vp8_settings.denoisingOn = false;
630 vp8_settings.frameDroppingOn = false; 641 vp8_settings.frameDroppingOn = false;
631 vp8_settings.numberOfTemporalLayers = num_temporal_layers; 642 vp8_settings.numberOfTemporalLayers = num_temporal_layers;
632 encoder_config_.encoder_specific_settings = &vp8_settings; 643 encoder_config_.encoder_specific_settings = &vp8_settings;
633 } else if (params.codec == "VP9") { 644 } else if (params.codec == "VP9") {
634 vp9_settings = VideoEncoder::GetDefaultVp9Settings(); 645 vp9_settings = VideoEncoder::GetDefaultVp9Settings();
635 vp9_settings.denoisingOn = false; 646 vp9_settings.denoisingOn = false;
636 vp9_settings.frameDroppingOn = false; 647 vp9_settings.frameDroppingOn = false;
637 vp9_settings.numberOfTemporalLayers = num_temporal_layers; 648 vp9_settings.numberOfTemporalLayers = num_temporal_layers;
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
880 50000, 891 50000,
881 200000, 892 200000,
882 2000000, 893 2000000,
883 0.0, 894 0.0,
884 0.0, 895 0.0,
885 kFullStackTestDurationSecs, 896 kFullStackTestDurationSecs,
886 "VP9"}; 897 "VP9"};
887 RunTest(screenshare_params); 898 RunTest(screenshare_params);
888 } 899 }
889 } // namespace webrtc 900 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698