ffconv/ffcpp/Codec.h

52 lines
850 B
C++

#ifndef FFCONV_CODEC_H
#define FFCONV_CODEC_H
#include "Packet.h"
#include "Frame.h"
extern "C" {
#include <libavformat/avformat.h>
}
namespace ffcpp {
enum class CodecType {
Encoder,
Decoder
};
class Codec {
private:
AVCodec* _codec;
AVCodecContext* _codecCtx;
public:
Codec();
Codec(AVCodecContext* ctx, CodecType type);
Codec(AVCodecContext* ctx, AVCodec* codec);
~Codec();
operator AVCodecContext*() const;
int width() const;
int height() const;
AVRational timeBase() const;
int capabilities() const;
AVPixelFormat pixelFormat() const;
void setWidth(int width);
void setHeight(int height);
void setPixelFormat(AVPixelFormat pixelFormat);
Frame decode(Packet& packet);
Packet encode(AVFrame* frame);
public:
Codec(Codec&& c);
Codec& operator=(Codec&& c);
};
}
#endif //FFCONV_CODEC_H