Don't set V bit in flexible mode
BUG=webrtc:4914 Review URL: https://codereview.webrtc.org/1291163007 Cr-Commit-Position: refs/heads/master@{#9848}
This commit is contained in:
@ -485,8 +485,10 @@ void VP9EncoderImpl::PopulateCodecSpecific(CodecSpecificInfo* codec_specific,
|
|||||||
vp9_info->inter_pic_predicted =
|
vp9_info->inter_pic_predicted =
|
||||||
(pkt.data.frame.flags & VPX_FRAME_IS_KEY) ? false : true;
|
(pkt.data.frame.flags & VPX_FRAME_IS_KEY) ? false : true;
|
||||||
vp9_info->flexible_mode = codec_.codecSpecific.VP9.flexibleMode;
|
vp9_info->flexible_mode = codec_.codecSpecific.VP9.flexibleMode;
|
||||||
vp9_info->ss_data_available =
|
vp9_info->ss_data_available = ((pkt.data.frame.flags & VPX_FRAME_IS_KEY) &&
|
||||||
(pkt.data.frame.flags & VPX_FRAME_IS_KEY) ? true : false;
|
!codec_.codecSpecific.VP9.flexibleMode)
|
||||||
|
? true
|
||||||
|
: false;
|
||||||
if (pkt.data.frame.flags & VPX_FRAME_IS_KEY) {
|
if (pkt.data.frame.flags & VPX_FRAME_IS_KEY) {
|
||||||
gof_idx_ = 0;
|
gof_idx_ = 0;
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
#include "webrtc/modules/rtp_rtcp/source/rtcp_sender.h"
|
#include "webrtc/modules/rtp_rtcp/source/rtcp_sender.h"
|
||||||
#include "webrtc/modules/rtp_rtcp/source/rtcp_utility.h"
|
#include "webrtc/modules/rtp_rtcp/source/rtcp_utility.h"
|
||||||
#include "webrtc/modules/rtp_rtcp/source/rtp_format_vp9.h"
|
#include "webrtc/modules/rtp_rtcp/source/rtp_format_vp9.h"
|
||||||
|
#include "webrtc/modules/video_coding/codecs/vp9/include/vp9.h"
|
||||||
#include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
|
#include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
|
||||||
#include "webrtc/system_wrappers/interface/event_wrapper.h"
|
#include "webrtc/system_wrappers/interface/event_wrapper.h"
|
||||||
#include "webrtc/system_wrappers/interface/logging.h"
|
#include "webrtc/system_wrappers/interface/logging.h"
|
||||||
@ -1799,9 +1800,11 @@ TEST_F(VideoSendStreamTest, ReportsSentResolution) {
|
|||||||
|
|
||||||
class VP9HeaderObeserver : public test::SendTest {
|
class VP9HeaderObeserver : public test::SendTest {
|
||||||
public:
|
public:
|
||||||
VP9HeaderObeserver() : SendTest(VideoSendStreamTest::kDefaultTimeoutMs) {
|
VP9HeaderObeserver()
|
||||||
vp9_settings_ = VideoEncoder::GetDefaultVp9Settings();
|
: SendTest(VideoSendStreamTest::kDefaultTimeoutMs),
|
||||||
}
|
vp9_encoder_(VP9Encoder::Create()),
|
||||||
|
vp9_settings_(VideoEncoder::GetDefaultVp9Settings()) {}
|
||||||
|
|
||||||
virtual void ModifyConfigsHook(
|
virtual void ModifyConfigsHook(
|
||||||
VideoSendStream::Config* send_config,
|
VideoSendStream::Config* send_config,
|
||||||
std::vector<VideoReceiveStream::Config>* receive_configs,
|
std::vector<VideoReceiveStream::Config>* receive_configs,
|
||||||
@ -1816,6 +1819,7 @@ class VP9HeaderObeserver : public test::SendTest {
|
|||||||
std::vector<VideoReceiveStream::Config>* receive_configs,
|
std::vector<VideoReceiveStream::Config>* receive_configs,
|
||||||
VideoEncoderConfig* encoder_config) override {
|
VideoEncoderConfig* encoder_config) override {
|
||||||
encoder_config->encoder_specific_settings = &vp9_settings_;
|
encoder_config->encoder_specific_settings = &vp9_settings_;
|
||||||
|
send_config->encoder_settings.encoder = vp9_encoder_.get();
|
||||||
send_config->encoder_settings.payload_name = "VP9";
|
send_config->encoder_settings.payload_name = "VP9";
|
||||||
send_config->encoder_settings.payload_type = kVp9PayloadType;
|
send_config->encoder_settings.payload_type = kVp9PayloadType;
|
||||||
ModifyConfigsHook(send_config, receive_configs, encoder_config);
|
ModifyConfigsHook(send_config, receive_configs, encoder_config);
|
||||||
@ -1857,6 +1861,7 @@ class VP9HeaderObeserver : public test::SendTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
rtc::scoped_ptr<VP9Encoder> vp9_encoder_;
|
||||||
VideoCodecVP9 vp9_settings_;
|
VideoCodecVP9 vp9_settings_;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1871,15 +1876,13 @@ TEST_F(VideoSendStreamTest, VP9NoFlexMode) {
|
|||||||
RunBaseTest(&test);
|
RunBaseTest(&test);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(philipel): Enable once flexible mode is implemeted.
|
TEST_F(VideoSendStreamTest, VP9FlexMode) {
|
||||||
TEST_F(VideoSendStreamTest, DISABLED_VP9FlexMode) {
|
|
||||||
class FlexibleMode : public VP9HeaderObeserver {
|
class FlexibleMode : public VP9HeaderObeserver {
|
||||||
void ModifyConfigsHook(
|
void ModifyConfigsHook(
|
||||||
VideoSendStream::Config* send_config,
|
VideoSendStream::Config* send_config,
|
||||||
std::vector<VideoReceiveStream::Config>* receive_configs,
|
std::vector<VideoReceiveStream::Config>* receive_configs,
|
||||||
VideoEncoderConfig* encoder_config) override {
|
VideoEncoderConfig* encoder_config) override {
|
||||||
vp9_settings_.flexibleMode = true;
|
vp9_settings_.flexibleMode = true;
|
||||||
encoder_config->encoder_specific_settings = &vp9_settings_;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void InspectHeader(RTPVideoHeaderVP9* vp9videoHeader) override {
|
void InspectHeader(RTPVideoHeaderVP9* vp9videoHeader) override {
|
||||||
|
Reference in New Issue
Block a user