Enable CVO by default through webrtc pipeline.

All RTP packets from sender side will carry the rotation info. (will file a bug to track this) On the receiving side, only packets with marker bit set will be examined.

Tests completed:
1. android standalone to android standalone
2. android standalone to chrome (with and without this change)
3. android on chrome

BUG=4145
R=glaznev@webrtc.org, mflodman@webrtc.org, perkj@webrtc.org, pthatcher@webrtc.org

Committed: https://crrev.com/1b1c15cad16de57053bb6aa8a916079e0534bdae
Cr-Commit-Position: refs/heads/master@{#8905}

Review URL: https://webrtc-codereview.appspot.com/47399004

Cr-Commit-Position: refs/heads/master@{#8917}
This commit is contained in:
Guo-wei Shieh
2015-04-01 15:33:06 -07:00
parent aaf61e460b
commit 64c1e8cda5
22 changed files with 458 additions and 90 deletions

View File

@ -41,6 +41,14 @@ class RTPSenderInterface {
RTPSenderInterface() {}
virtual ~RTPSenderInterface() {}
enum CVOMode {
kCVONone,
kCVOInactive, // CVO rtp header extension is registered but haven't
// received any frame with rotation pending.
kCVOActivated, // CVO rtp header extension will be present in the rtp
// packets.
};
virtual uint32_t SSRC() const = 0;
virtual uint32_t Timestamp() const = 0;
@ -70,6 +78,7 @@ class RTPSenderInterface {
const RTPHeader& rtp_header,
VideoRotation rotation) const = 0;
virtual bool IsRtpHeaderExtensionRegistered(RTPExtensionType type) = 0;
virtual CVOMode ActivateCVORtpHeaderExtension() = 0;
};
class RTPSender : public RTPSenderInterface {
@ -285,6 +294,7 @@ class RTPSender : public RTPSenderInterface {
RtpState GetRtpState() const;
void SetRtxRtpState(const RtpState& rtp_state);
RtpState GetRtxRtpState() const;
CVOMode ActivateCVORtpHeaderExtension() override;
protected:
int32_t CheckPayloadType(int8_t payload_type, RtpVideoCodecTypes* video_type);
@ -378,6 +388,7 @@ class RTPSender : public RTPSenderInterface {
int32_t transmission_time_offset_;
uint32_t absolute_send_time_;
VideoRotation rotation_;
CVOMode cvo_mode_;
uint16_t transport_sequence_number_;
// NACK