video_jbuff_frame.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #ifndef VIDEO_JBUFF_FRAME_H
  2. #define VIDEO_JBUFF_FRAME_H
  3. #include "../adaptive_jitter_buffer/video_jbuff_packet.h"
  4. #include "../video_common/video_encoded_image.h"
  5. #include <list>
  6. namespace AJB {
  7. enum FrameBufferStateEnum
  8. {
  9. kStateIncomplete, // frame that have one or more packet(s) stored
  10. kStateComplete, // frame that have all packets
  11. };
  12. class Frame
  13. {
  14. private:
  15. unsigned int _timestamp;
  16. int _allocSize;
  17. int _bufferSize;
  18. int _keyFrame;
  19. unsigned _pt;
  20. EncodedImage _encoded_image;
  21. FrameBufferStateEnum _state;
  22. PacketList _packetList;
  23. bool CheckFrameCompleted();
  24. public:
  25. Frame();
  26. ~Frame();
  27. unsigned int Timestamp() const { return _timestamp; };
  28. int IsKey() const { return _keyFrame; };
  29. FrameBufferStateEnum State() const { return _state; };
  30. const EncodedImage* Buffer() const { return &_encoded_image; }
  31. const int BufferSize() const { return _bufferSize; }
  32. FrameBufferEnum InsertPacket(std::shared_ptr<Packet>);
  33. void MakeFrameComplete();
  34. unsigned short GetLowSeqNum() const;
  35. unsigned short GetHighSeqNum() const;
  36. void Reset();
  37. void ToString();
  38. };
  39. }
  40. #endif /* VIDEO_JBUFF_FRAME_H */