| OLD | NEW |
| (Empty) |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #ifndef MEDIA_CAST_FRAMER_FRAME_BUFFER | |
| 6 #define MEDIA_CAST_FRAMER_FRAME_BUFFER | |
| 7 | |
| 8 #include <map> | |
| 9 #include <vector> | |
| 10 | |
| 11 #include "media/cast/cast_config.h" | |
| 12 #include "media/cast/rtp_receiver/rtp_receiver_defines.h" | |
| 13 | |
| 14 namespace media { | |
| 15 namespace cast { | |
| 16 | |
| 17 typedef std::map<uint16, std::vector<uint8> > PacketMap; | |
| 18 | |
| 19 class FrameBuffer { | |
| 20 public: | |
| 21 FrameBuffer(); | |
| 22 ~FrameBuffer(); | |
| 23 void InsertPacket(const uint8* payload_data, | |
| 24 size_t payload_size, | |
| 25 const RtpCastHeader& rtp_header); | |
| 26 bool Complete() const; | |
| 27 | |
| 28 // If a frame is complete, sets the frame IDs and RTP timestamp in |frame|, | |
| 29 // and also copies the data from all packets into the data field in |frame|. | |
| 30 // Returns true if the frame was complete; false if incomplete and |frame| | |
| 31 // remains unchanged. | |
| 32 bool AssembleEncodedFrame(transport::EncodedFrame* frame) const; | |
| 33 | |
| 34 bool is_key_frame() const { return is_key_frame_; } | |
| 35 | |
| 36 uint32 last_referenced_frame_id() const { return last_referenced_frame_id_; } | |
| 37 | |
| 38 private: | |
| 39 uint32 frame_id_; | |
| 40 uint16 max_packet_id_; | |
| 41 uint16 num_packets_received_; | |
| 42 bool is_key_frame_; | |
| 43 size_t total_data_size_; | |
| 44 uint32 last_referenced_frame_id_; | |
| 45 uint32 rtp_timestamp_; | |
| 46 PacketMap packets_; | |
| 47 | |
| 48 DISALLOW_COPY_AND_ASSIGN(FrameBuffer); | |
| 49 }; | |
| 50 | |
| 51 } // namespace cast | |
| 52 } // namespace media | |
| 53 | |
| 54 #endif // MEDIA_CAST_FRAMER_FRAME_BUFFER | |
| OLD | NEW |