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

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: Impelement 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..ad49782aa68836ad918a3d6fdbe0915717c710b8 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();
@@ -43,17 +45,15 @@ class RtpPacketizerVp9 : public RtpPacketizer {
std::string ToString() override;
- // The payload data must be one encoded VP9 frame.
- void SetPayloadData(const uint8_t* payload,
- size_t payload_size,
- const RTPFragmentationHeader* fragmentation) override;
+ // The payload data must be one encoded VP9 layer frame.
+ 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 the last packet in the frame.
// 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);
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtp_format_vp8_unittest.cc ('k') | webrtc/modules/rtp_rtcp/source/rtp_format_vp9.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698