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

Unified Diff: webrtc/modules/rtp_rtcp/source/rtp_format_vp9.h

Issue 2871173008: Fix packetization logic to leave space for extensions in the last packet (Closed)
Patch Set: Impelemented Danilchap@ comments Created 3 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: webrtc/modules/rtp_rtcp/source/rtp_format_vp9.h
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_format_vp9.h b/webrtc/modules/rtp_rtcp/source/rtp_format_vp9.h
index 2036ce49f4b2b9d9b75c0c262427fd09db3c7119..a8de3a6b1172b48eb3fbaf519f88c52dc264648c 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_format_vp9.h
+++ b/webrtc/modules/rtp_rtcp/source/rtp_format_vp9.h
@@ -33,7 +33,9 @@ namespace webrtc {
class RtpPacketizerVp9 : public RtpPacketizer {
public:
- RtpPacketizerVp9(const RTPVideoHeaderVP9& hdr, size_t max_payload_length);
+ RtpPacketizerVp9(const RTPVideoHeaderVP9& hdr,
+ size_t max_payload_length,
+ size_t last_packet_reduction_len);
virtual ~RtpPacketizerVp9();
@@ -44,16 +46,14 @@ class RtpPacketizerVp9 : public RtpPacketizer {
std::string ToString() override;
// The payload data must be one encoded VP9 frame.
danilchap 2017/05/16 10:25:11 may be extend comment 'VP9 layer frame' to avoid c
ilnik 2017/05/16 12:24:08 Done.
- void SetPayloadData(const uint8_t* payload,
- size_t payload_size,
- const RTPFragmentationHeader* fragmentation) override;
+ size_t SetPayloadData(const uint8_t* payload,
+ size_t payload_size,
+ const RTPFragmentationHeader* fragmentation) override;
// Gets the next payload with VP9 payload header.
// Write payload and set marker bit of the |packet|.
- // The parameter |last_packet| is true for the last packet of the frame, false
- // otherwise (i.e., call the function again to get the next packet).
// Returns true on success, false otherwise.
- bool NextPacket(RtpPacketToSend* packet, bool* last_packet) override;
+ bool NextPacket(RtpPacketToSend* packet) override;
typedef struct {
size_t payload_start_pos;
@@ -69,10 +69,11 @@ class RtpPacketizerVp9 : public RtpPacketizer {
// Writes the payload descriptor header and copies payload to the |buffer|.
// |packet_info| determines which part of the payload to write.
- // |bytes_to_send| contains the number of written bytes to the buffer.
+ // |last| indicates if the packet is last.
// Returns true on success, false otherwise.
bool WriteHeaderAndPayload(const PacketInfo& packet_info,
- RtpPacketToSend* packet) const;
+ RtpPacketToSend* packet,
+ bool last) const;
// Writes payload descriptor header to |buffer|.
// Returns true on success, false otherwise.
@@ -84,6 +85,7 @@ class RtpPacketizerVp9 : public RtpPacketizer {
const size_t max_payload_length_; // The max length in bytes of one packet.
const uint8_t* payload_; // The payload data to be packetized.
size_t payload_size_; // The size in bytes of the payload data.
+ const size_t last_packet_reduction_len_;
PacketInfoQueue packets_;
RTC_DISALLOW_COPY_AND_ASSIGN(RtpPacketizerVp9);

Powered by Google App Engine
This is Rietveld 408576698