/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamStack.h

http://github.com/xbmc/xbmc · C Header · 57 lines · 29 code · 9 blank · 19 comment · 0 complexity · e1d16b8095ff102672ea2307b9a18f9b MD5 · raw file

  1. #pragma once
  2. /*
  3. * Copyright (C) 2005-2013 Team XBMC
  4. * http://xbmc.org
  5. *
  6. * This Program is free software; you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License as published by
  8. * the Free Software Foundation; either version 2, or (at your option)
  9. * any later version.
  10. *
  11. * This Program is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. * GNU General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU General Public License
  17. * along with XBMC; see the file COPYING. If not, see
  18. * <http://www.gnu.org/licenses/>.
  19. *
  20. */
  21. #include "DVDInputStream.h"
  22. #include "boost/shared_ptr.hpp"
  23. class CDVDInputStreamStack : public CDVDInputStream
  24. {
  25. public:
  26. CDVDInputStreamStack();
  27. virtual ~CDVDInputStreamStack();
  28. virtual bool Open(const char* path, const std::string &content);
  29. virtual void Close();
  30. virtual int Read(uint8_t* buf, int buf_size);
  31. virtual int64_t Seek(int64_t offset, int whence);
  32. virtual bool Pause(double dTime) { return false; };
  33. virtual bool IsEOF();
  34. virtual int64_t GetLength();
  35. protected:
  36. typedef boost::shared_ptr<XFILE::CFile> TFile;
  37. struct TSeg
  38. {
  39. TFile file;
  40. int64_t length;
  41. };
  42. typedef std::vector<TSeg> TSegVec;
  43. TSegVec m_files; ///< collection of open ptr's to all files in stack
  44. TFile m_file; ///< currently active file
  45. bool m_eof;
  46. int64_t m_pos;
  47. int64_t m_length;
  48. };