Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

52 строки
1.0KB

  1. #ifndef _h264_file_reader_h_
  2. #define _h264_file_reader_h_
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <vector>
  6. #include <list>
  7. #include "ctypedef.h"
  8. class H264FileReader
  9. {
  10. public:
  11. H264FileReader(const char* file);
  12. ~H264FileReader();
  13. bool IsOpened() const;
  14. public:
  15. const std::list<std::pair<const uint8_t*, size_t> > GetParameterSets() const { return m_sps; }
  16. int GetDuration(int64_t& duration) const { duration = m_duration; return 0; }
  17. int GetNextFrame(int64_t &dts, const uint8_t* &ptr, size_t &bytes);
  18. int Seek(int64_t &dts);
  19. private:
  20. int Init();
  21. private:
  22. struct vframe_t
  23. {
  24. const uint8_t* nalu;
  25. int64_t time;
  26. long bytes;
  27. bool idr; // IDR frame
  28. bool operator < (const struct vframe_t &v) const
  29. {
  30. return time < v.time;
  31. }
  32. };
  33. typedef std::vector<vframe_t> vframes_t;
  34. vframes_t m_videos;
  35. vframes_t::iterator m_vit;
  36. std::list<std::pair<const uint8_t*, size_t> > m_sps;
  37. int64_t m_duration;
  38. uint8_t *m_ptr;
  39. size_t m_capacity;
  40. };
  41. #endif /* !_h264_file_reader_h_ */