summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authortommi@webrtc.org <tommi@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d>2014-07-11 20:33:39 +0000
committertommi@webrtc.org <tommi@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d>2014-07-11 20:33:39 +0000
commit5faa6d1febfbd0751fdebf4b4106050be29c6637 (patch)
tree1cb79c5e096a88214676ebd90da5f1072a30b7eb /modules
parent502a271a36b009a2d4efbe2741772d582e69a6c2 (diff)
downloadwebrtc-5faa6d1febfbd0751fdebf4b4106050be29c6637.tar.gz
Fix bugs introduced by https://code.google.com/p/webrtc/source/detail?r=6667 .
A few places were relying on temporalIdx being signed. Fix to explicitly check for kNoTemporalIdx. TBR=pbos,stefan Review URL: https://webrtc-codereview.appspot.com/13939005 git-svn-id: http://webrtc.googlecode.com/svn/trunk/webrtc@6669 4adac7df-926f-26a2-2b94-8c16560cd09d
Diffstat (limited to 'modules')
-rw-r--r--modules/rtp_rtcp/source/rtp_sender_video.cc11
-rw-r--r--modules/video_coding/main/source/video_sender_unittest.cc12
2 files changed, 12 insertions, 11 deletions
diff --git a/modules/rtp_rtcp/source/rtp_sender_video.cc b/modules/rtp_rtcp/source/rtp_sender_video.cc
index ea5f7a7e..c53dd21d 100644
--- a/modules/rtp_rtcp/source/rtp_sender_video.cc
+++ b/modules/rtp_rtcp/source/rtp_sender_video.cc
@@ -434,17 +434,18 @@ RTPSenderVideo::SendVP8(const FrameType frameType,
if (rtpTypeHdr->VP8.temporalIdx == 0 &&
!(_retransmissionSettings & kRetransmitBaseLayer)) {
storage = kDontRetransmit;
- }
- if (rtpTypeHdr->VP8.temporalIdx > 0 &&
+ } else if (rtpTypeHdr->VP8.temporalIdx != kNoTemporalIdx &&
!(_retransmissionSettings & kRetransmitHigherLayers)) {
storage = kDontRetransmit;
}
bool last = false;
_numberFirstPartition = 0;
- // |rtpTypeHdr->VP8.temporalIdx| is zero for base layers, or -1 if the field
- // isn't used. We currently only protect base layers.
- bool protect = (rtpTypeHdr->VP8.temporalIdx < 1);
+ // |rtpTypeHdr->VP8.temporalIdx| is zero for base layers, or kNoTemporalIdx
+ // if the field isn't used (so all layers are the base layer). We currently
+ // only protect base layers, so look for these two cases.
+ bool protect = rtpTypeHdr->VP8.temporalIdx == 0 ||
+ rtpTypeHdr->VP8.temporalIdx == kNoTemporalIdx;
while (!last)
{
// Write VP8 Payload Descriptor and VP8 payload.
diff --git a/modules/video_coding/main/source/video_sender_unittest.cc b/modules/video_coding/main/source/video_sender_unittest.cc
index 67b3e7ae..0b8193b2 100644
--- a/modules/video_coding/main/source/video_sender_unittest.cc
+++ b/modules/video_coding/main/source/video_sender_unittest.cc
@@ -141,10 +141,10 @@ class PacketizationCallback : public VCMPacketizationCallback {
int frames = 0;
for (size_t i = 0; i < frame_data_.size(); ++i) {
EXPECT_EQ(kRtpVideoVp8, frame_data_[i].rtp_video_header.codec);
- if (frame_data_[i].rtp_video_header.codecHeader.VP8.temporalIdx <=
- temporal_layer) {
+ const uint8_t temporal_idx =
+ frame_data_[i].rtp_video_header.codecHeader.VP8.temporalIdx;
+ if (temporal_idx <= temporal_layer || temporal_idx == kNoTemporalIdx)
frames++;
- }
}
return frames;
}
@@ -153,10 +153,10 @@ class PacketizationCallback : public VCMPacketizationCallback {
int payload_size = 0;
for (size_t i = 0; i < frame_data_.size(); ++i) {
EXPECT_EQ(kRtpVideoVp8, frame_data_[i].rtp_video_header.codec);
- if (frame_data_[i].rtp_video_header.codecHeader.VP8.temporalIdx <=
- temporal_layer) {
+ const uint8_t temporal_idx =
+ frame_data_[i].rtp_video_header.codecHeader.VP8.temporalIdx;
+ if (temporal_idx <= temporal_layer || temporal_idx == kNoTemporalIdx)
payload_size += frame_data_[i].payload_size;
- }
}
return payload_size;
}