/* * Copyright (c) 2012 Yoann Blein * Licensed under the simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt for more information. */ #ifndef VP8ENCODER_H #define VP8ENCODER_H #pragma once #include #include #define VPX_CODEC_DISABLE_COMPAT 1 // Recomended #include "vpx/vpx_encoder.h" namespace Swift { class VP8Encoder : public VideoEncoder { public: VP8Encoder(unsigned int width, unsigned int height); virtual ~VP8Encoder(); void updateCodecConfig(); public: boost::signal onNewFrameEncoded; protected: virtual void encodingLoop(); private: bool convertRGB24toYV12inBuffer(const VideoFrame::ref frame); private: 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; }; } #endif // VP8ENCODER_H