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

Side by Side Diff: webrtc/modules/rtp_rtcp/source/rtp_format_vp9.cc

Issue 1427253002: Change type of pid_diff (int16_t -> uint8_t) according to updates in RTP payload profile. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: also update include/module_common_types.h Created 5 years, 1 month 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) 2015 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2015 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 10
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 // P,F: | P_DIFF |N| up to 3 times has to be specified. 239 // P,F: | P_DIFF |N| up to 3 times has to be specified.
240 // +-+-+-+-+-+-+-+-+ N=1: An additional P_DIFF follows 240 // +-+-+-+-+-+-+-+-+ N=1: An additional P_DIFF follows
241 // current P_DIFF. 241 // current P_DIFF.
242 // 242 //
243 bool WriteRefIndices(const RTPVideoHeaderVP9& vp9, 243 bool WriteRefIndices(const RTPVideoHeaderVP9& vp9,
244 rtc::BitBufferWriter* writer) { 244 rtc::BitBufferWriter* writer) {
245 if (!PictureIdPresent(vp9) || 245 if (!PictureIdPresent(vp9) ||
246 vp9.num_ref_pics == 0 || vp9.num_ref_pics > kMaxVp9RefPics) { 246 vp9.num_ref_pics == 0 || vp9.num_ref_pics > kMaxVp9RefPics) {
247 return false; 247 return false;
248 } 248 }
249 for (size_t i = 0; i < vp9.num_ref_pics; ++i) { 249 for (uint8_t i = 0; i < vp9.num_ref_pics; ++i) {
250 bool n_bit = !(i == vp9.num_ref_pics - 1); 250 bool n_bit = !(i == vp9.num_ref_pics - 1);
251 RETURN_FALSE_ON_ERROR(writer->WriteBits(vp9.pid_diff[i], 7)); 251 RETURN_FALSE_ON_ERROR(writer->WriteBits(vp9.pid_diff[i], 7));
252 RETURN_FALSE_ON_ERROR(writer->WriteBits(n_bit ? 1 : 0, 1)); 252 RETURN_FALSE_ON_ERROR(writer->WriteBits(n_bit ? 1 : 0, 1));
253 } 253 }
254 return true; 254 return true;
255 } 255 }
256 256
257 // Scalability structure (SS). 257 // Scalability structure (SS).
258 // 258 //
259 // +-+-+-+-+-+-+-+-+ 259 // +-+-+-+-+-+-+-+-+
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 } 294 }
295 if (g_bit) { 295 if (g_bit) {
296 RETURN_FALSE_ON_ERROR(writer->WriteUInt8(vp9.gof.num_frames_in_gof)); 296 RETURN_FALSE_ON_ERROR(writer->WriteUInt8(vp9.gof.num_frames_in_gof));
297 } 297 }
298 for (size_t i = 0; i < vp9.gof.num_frames_in_gof; ++i) { 298 for (size_t i = 0; i < vp9.gof.num_frames_in_gof; ++i) {
299 RETURN_FALSE_ON_ERROR(writer->WriteBits(vp9.gof.temporal_idx[i], 3)); 299 RETURN_FALSE_ON_ERROR(writer->WriteBits(vp9.gof.temporal_idx[i], 3));
300 RETURN_FALSE_ON_ERROR( 300 RETURN_FALSE_ON_ERROR(
301 writer->WriteBits(vp9.gof.temporal_up_switch[i] ? 1 : 0, 1)); 301 writer->WriteBits(vp9.gof.temporal_up_switch[i] ? 1 : 0, 1));
302 RETURN_FALSE_ON_ERROR(writer->WriteBits(vp9.gof.num_ref_pics[i], 2)); 302 RETURN_FALSE_ON_ERROR(writer->WriteBits(vp9.gof.num_ref_pics[i], 2));
303 RETURN_FALSE_ON_ERROR(writer->WriteBits(kReservedBitValue0, 2)); 303 RETURN_FALSE_ON_ERROR(writer->WriteBits(kReservedBitValue0, 2));
304 for (size_t r = 0; r < vp9.gof.num_ref_pics[i]; ++r) { 304 for (uint8_t r = 0; r < vp9.gof.num_ref_pics[i]; ++r) {
305 RETURN_FALSE_ON_ERROR(writer->WriteUInt8(vp9.gof.pid_diff[i][r])); 305 RETURN_FALSE_ON_ERROR(writer->WriteUInt8(vp9.gof.pid_diff[i][r]));
306 } 306 }
307 } 307 }
308 return true; 308 return true;
309 } 309 }
310 310
311 // Picture ID: 311 // Picture ID:
312 // 312 //
313 // +-+-+-+-+-+-+-+-+ 313 // +-+-+-+-+-+-+-+-+
314 // I: |M| PICTURE ID | M:0 => picture id is 7 bits. 314 // I: |M| PICTURE ID | M:0 => picture id is 7 bits.
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 for (size_t i = 0; i < vp9->gof.num_frames_in_gof; ++i) { 459 for (size_t i = 0; i < vp9->gof.num_frames_in_gof; ++i) {
460 uint32_t t, u_bit, r; 460 uint32_t t, u_bit, r;
461 RETURN_FALSE_ON_ERROR(parser->ReadBits(&t, 3)); 461 RETURN_FALSE_ON_ERROR(parser->ReadBits(&t, 3));
462 RETURN_FALSE_ON_ERROR(parser->ReadBits(&u_bit, 1)); 462 RETURN_FALSE_ON_ERROR(parser->ReadBits(&u_bit, 1));
463 RETURN_FALSE_ON_ERROR(parser->ReadBits(&r, 2)); 463 RETURN_FALSE_ON_ERROR(parser->ReadBits(&r, 2));
464 RETURN_FALSE_ON_ERROR(parser->ConsumeBits(2)); 464 RETURN_FALSE_ON_ERROR(parser->ConsumeBits(2));
465 vp9->gof.temporal_idx[i] = t; 465 vp9->gof.temporal_idx[i] = t;
466 vp9->gof.temporal_up_switch[i] = u_bit ? true : false; 466 vp9->gof.temporal_up_switch[i] = u_bit ? true : false;
467 vp9->gof.num_ref_pics[i] = r; 467 vp9->gof.num_ref_pics[i] = r;
468 468
469 for (size_t p = 0; p < vp9->gof.num_ref_pics[i]; ++p) { 469 for (uint8_t p = 0; p < vp9->gof.num_ref_pics[i]; ++p) {
470 uint8_t p_diff; 470 uint8_t p_diff;
471 RETURN_FALSE_ON_ERROR(parser->ReadUInt8(&p_diff)); 471 RETURN_FALSE_ON_ERROR(parser->ReadUInt8(&p_diff));
472 vp9->gof.pid_diff[i][p] = p_diff; 472 vp9->gof.pid_diff[i][p] = p_diff;
473 } 473 }
474 } 474 }
475 return true; 475 return true;
476 } 476 }
477 477
478 // Gets the size of next payload chunk to send. Returns 0 on error. 478 // Gets the size of next payload chunk to send. Returns 0 on error.
479 size_t CalcNextSize(size_t max_length, size_t rem_bytes) { 479 size_t CalcNextSize(size_t max_length, size_t rem_bytes) {
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
746 if (parsed_payload->payload_length == 0) { 746 if (parsed_payload->payload_length == 0) {
747 LOG(LS_ERROR) << "Failed parsing VP9 payload data."; 747 LOG(LS_ERROR) << "Failed parsing VP9 payload data.";
748 return false; 748 return false;
749 } 749 }
750 parsed_payload->payload = 750 parsed_payload->payload =
751 payload + payload_length - parsed_payload->payload_length; 751 payload + payload_length - parsed_payload->payload_length;
752 752
753 return true; 753 return true;
754 } 754 }
755 } // namespace webrtc 755 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/interface/module_common_types.h ('k') | webrtc/modules/rtp_rtcp/source/rtp_format_vp9_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698