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 |