123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- #ifndef VPXDECODER_HPP
- #define VPXDECODER_HPP
- #include "WebMDemuxer.hpp"
- struct vpx_codec_ctx;
- class VPXDecoder
- {
- VPXDecoder(const VPXDecoder &);
- void operator =(const VPXDecoder &);
- public:
- class Image
- {
- public:
- #if 0
- int getWidth(int plane) const;
- int getHeight(int plane) const;
- #endif
- int w, h;
- int chromaShiftW, chromaShiftH;
- unsigned char *planes[3];
- int linesize[3];
- };
- enum IMAGE_ERROR
- {
- UNSUPPORTED_FRAME = -1,
- NO_ERROR,
- NO_FRAME
- };
- VPXDecoder(const WebMDemuxer &demuxer, unsigned threads = 1);
- ~VPXDecoder();
- inline bool isOpen() const
- {
- return (bool)m_ctx;
- }
- inline int getFramesDelay() const
- {
- return m_delay;
- }
- bool decode(const WebMFrame &frame);
- IMAGE_ERROR getImage(Image &image);
- private:
- vpx_codec_ctx *m_ctx;
- const void *m_iter;
- int m_delay;
- };
- #endif
|