/* * Copyright (c) 2012 Yoann Blein * Licensed under the simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt for more information. */ #pragma once #include #define VPX_CODEC_DISABLE_COMPAT 1 // Recomended #include "vpx/vpx_encoder.h" namespace Swift { class Image; class VP8RTPPacketizer; class VP8Encoder : public VideoEncoder { public: VP8Encoder(VP8RTPPacketizer* packetizer, unsigned int width, unsigned int height); virtual ~VP8Encoder(); void updateCodecConfig(); virtual void encodeImage(const Image& frame); virtual void handleRPSIFeedback(int /*pictureID*/); private: bool convertRGB24toYV12inBuffer(const Image& frame); private: VP8RTPPacketizer* packetizer; vpx_codec_iface_t* codecInterface; vpx_codec_ctx_t codecContext; vpx_codec_enc_cfg_t codecConfig; vpx_image_t* imageBuffer; vpx_codec_flags_t codecFlags; vpx_enc_frame_flags_t frameFlags; int frameNumber; int pictureID; bool rpsiReceived; }; }