123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- #ifndef API_VIDEO_VIDEO_FRAME_BUFFER_H_
- #define API_VIDEO_VIDEO_FRAME_BUFFER_H_
- #include <stdint.h>
- #include "api/scoped_refptr.h"
- #include "rtc_base/ref_count.h"
- #include "rtc_base/system/rtc_export.h"
- namespace webrtc {
- class I420BufferInterface;
- class I420ABufferInterface;
- class I444BufferInterface;
- class I010BufferInterface;
- class RTC_EXPORT VideoFrameBuffer : public rtc::RefCountInterface {
- public:
-
-
-
- enum class Type {
- kNative,
- kI420,
- kI420A,
- kI444,
- kI010,
- };
-
- virtual Type type() const = 0;
-
-
- virtual int width() const = 0;
- virtual int height() const = 0;
-
-
-
-
- virtual rtc::scoped_refptr<I420BufferInterface> ToI420() = 0;
-
-
-
-
-
-
- virtual const I420BufferInterface* GetI420() const;
-
-
- const I420ABufferInterface* GetI420A() const;
- const I444BufferInterface* GetI444() const;
- const I010BufferInterface* GetI010() const;
- protected:
- ~VideoFrameBuffer() override {}
- };
- class PlanarYuvBuffer : public VideoFrameBuffer {
- public:
- virtual int ChromaWidth() const = 0;
- virtual int ChromaHeight() const = 0;
-
-
- virtual int StrideY() const = 0;
- virtual int StrideU() const = 0;
- virtual int StrideV() const = 0;
- protected:
- ~PlanarYuvBuffer() override {}
- };
- class PlanarYuv8Buffer : public PlanarYuvBuffer {
- public:
-
-
- virtual const uint8_t* DataY() const = 0;
- virtual const uint8_t* DataU() const = 0;
- virtual const uint8_t* DataV() const = 0;
- protected:
- ~PlanarYuv8Buffer() override {}
- };
- class RTC_EXPORT I420BufferInterface : public PlanarYuv8Buffer {
- public:
- Type type() const override;
- int ChromaWidth() const final;
- int ChromaHeight() const final;
- rtc::scoped_refptr<I420BufferInterface> ToI420() final;
- const I420BufferInterface* GetI420() const final;
- protected:
- ~I420BufferInterface() override {}
- };
- class RTC_EXPORT I420ABufferInterface : public I420BufferInterface {
- public:
- Type type() const final;
- virtual const uint8_t* DataA() const = 0;
- virtual int StrideA() const = 0;
- protected:
- ~I420ABufferInterface() override {}
- };
- class I444BufferInterface : public PlanarYuv8Buffer {
- public:
- Type type() const final;
- int ChromaWidth() const final;
- int ChromaHeight() const final;
- protected:
- ~I444BufferInterface() override {}
- };
- class PlanarYuv16BBuffer : public PlanarYuvBuffer {
- public:
-
-
- virtual const uint16_t* DataY() const = 0;
- virtual const uint16_t* DataU() const = 0;
- virtual const uint16_t* DataV() const = 0;
- protected:
- ~PlanarYuv16BBuffer() override {}
- };
- class I010BufferInterface : public PlanarYuv16BBuffer {
- public:
- Type type() const override;
- int ChromaWidth() const final;
- int ChromaHeight() const final;
- protected:
- ~I010BufferInterface() override {}
- };
- }
- #endif
|