avcpp
2.0
Wrapper for the FFmpeg that simplify usage from C++ projects.
|
Go to the documentation of this file.
15 #include <libavcodec/avcodec.h>
16 #include <libavformat/version.h>
21 namespace codec_context::audio {
28 namespace codec_context::internal {
42 using BaseWrapper::BaseWrapper;
59 AVMediaType
codecType(AVMediaType contextType)
const noexcept;
76 [[deprecated(
"Start from FFmpeg 4.0 it is recommended to destroy and recreate codec context insted of close")]]
109 int strict() const noexcept;
112 int64_t
bitRate() const noexcept;
123 int flags() noexcept;
147 std::pair<
int, const
std::error_category*>
148 decodeCommon(AVFrame *outFrame, const class
Packet &inPacket,
size_t offset,
int &frameFinished,
149 int (*decodeProc)(AVCodecContext*, AVFrame*,
int *, const AVPacket *)) noexcept;
151 std::pair<
int, const
std::error_category*>
153 int (*encodeProc)(AVCodecContext*, AVPacket*,const AVFrame*,
int*)) noexcept;
157 std::pair<
int, const
std::error_category*>
159 const class
Packet &inPacket,
162 int (*decodeProc)(AVCodecContext *, AVFrame *,
int *, const AVPacket *));
165 std::pair<
int, const
std::error_category*>
169 int (*encodeProc)(AVCodecContext *, AVPacket *, const AVFrame *,
int *));
201 template<
typename Clazz, Direction _direction, AVMediaType _type>
208 return static_cast<Clazz&
>(*this);
209 Clazz(std::forward<Clazz>(rhs)).
swap(
static_cast<Clazz&
>(*
this));
210 return static_cast<Clazz&
>(*this);
264 template<
typename Clazz, Direction _direction>
269 using Parent::Parent;
270 using Parent::isValid;
271 using Parent::isOpened;
320 return RAW_GET(sample_aspect_ratio, AVRational());
328 m_raw->coded_width = w;
337 m_raw->coded_height = h;
358 if (quality < 0 || quality > FF_LAMBDA_MAX)
359 quality = FF_LAMBDA_MAX;
381 RAW_SET(sample_aspect_ratio, sampleAspectRatio);
385 using Parent::moveOperator;
414 bool autoAllocateFrame =
true);
431 size_t &decodedBytes,
433 bool autoAllocateFrame =
true);
440 size_t *decodedBytes,
441 bool autoAllocateFrame);
484 template<
typename Clazz, Direction _direction>
489 using Parent::Parent;
490 using Parent::isValid;
491 using Parent::isOpened;
518 #if API_NEW_CHANNEL_LAYOUT
519 ChannelLayoutView channelLayout2() const noexcept
522 return ChannelLayoutView{};
523 return ChannelLayoutView{
m_raw->ch_layout};
532 if (sr != sampleRate)
534 fflog(AV_LOG_INFO,
"Guess sample rate %d instead unsupported %d\n", sr, sampleRate);
537 m_raw->sample_rate = sr;
542 if (!
isValid() || channels <= 0)
559 #if API_NEW_CHANNEL_LAYOUT
560 void setChannelLayout(ChannelLayout layout) noexcept
562 if (!
isValid() || !layout.isValid())
564 m_raw->ch_layout = *layout.raw();
570 using Parent::moveOperator;
void setGlobalQuality(int32_t quality)
Definition: codeccontext.h:356
void setGopSize(int32_t size)
Definition: codeccontext.h:364
void clearFlags(int flags) noexcept
Definition: codeccontext.cpp:736
int64_t bitRate() const noexcept
Definition: codeccontext.cpp:698
#define fflog(level, format,...)
Default in-class logger.
Definition: avlog.h:27
void copyContextFrom(const CodecContext2 &other, OptionalErrorCode ec=throws())
Copy codec context from codec context associated with given stream or other codec context.
Definition: codeccontext.cpp:563
Definition: rational.h:25
int32_t gopSize() const
Definition: codeccontext.h:303
Implements interface to access to the AVDictionary entity.
Definition: dictionary.h:30
Clazz & moveOperator(Clazz &&rhs)
Definition: codeccontext.h:205
void setRefCountedFrames(bool refcounted) const noexcept
Definition: codeccontext.cpp:676
AVMediaType codecType() const noexcept
Definition: codeccontext.h:257
Rational timeBase() const noexcept
Definition: codeccontext.cpp:609
void setSampleRate(int sampleRate) noexcept
Definition: codeccontext.h:527
CodecContext2()
Definition: codeccontext.cpp:292
void setWidth(int w)
Definition: codeccontext.h:323
std::pair< int64_t, int64_t > bitRateRange() const noexcept
Definition: codeccontext.cpp:703
SampleFormat sampleFormat() const noexcept
Definition: codeccontext.h:506
int frameSize() const noexcept
Definition: codeccontext.cpp:653
PixelFormat pixelFormat() const
Definition: codeccontext.h:293
CodecContextBase()
Definition: codeccontext.h:219
void setCodec(const class Codec &codec, bool resetDefaults, Direction direction, AVMediaType type, OptionalErrorCode ec=throws())
Definition: codeccontext.cpp:368
Codec codec() const noexcept
Definition: codeccontext.cpp:624
int codedHeight() const
Definition: codeccontext.h:288
void setOption(const std::string &key, const std::string &val, OptionalErrorCode ec=throws())
bool isValidForEncode(Direction direction, AVMediaType type) const noexcept
Definition: codeccontext.cpp:783
void setCodec(const Codec &codec, OptionalErrorCode ec=throws())
Definition: codeccontext.h:247
int height() const
Definition: codeccontext.h:278
bool isValid() const noexcept
Definition: codeccontext.cpp:557
bool isFlags2(int flags) noexcept
Definition: codeccontext.cpp:776
void open(OptionalErrorCode ec=throws())
Definition: codeccontext.cpp:450
Definition: codeccontext.h:202
int flags2() noexcept
Definition: codeccontext.cpp:771
AVMediaType codecType(AVMediaType contextType) const noexcept
Definition: codeccontext.cpp:438
int strict() const noexcept
Definition: codeccontext.cpp:683
uint64_t get_channel_layout_mask(const AVCodecContext *obj)
Definition: codeccontext.cpp:1138
int flags() noexcept
Definition: codeccontext.cpp:742
int get_channels(const AVCodecContext *obj)
Definition: codeccontext.cpp:1122
void setSampleAspectRatio(const Rational &sampleAspectRatio)
Definition: codeccontext.h:379
void setMaxBFrames(int maxBFrames)
Definition: codeccontext.h:374
int codedWidth() const
Definition: codeccontext.h:283
std::pair< int, const std::error_category * > encodeCommon(class Packet &outPacket, const AVFrame *inFrame, int &gotPacket, int(*encodeProc)(AVCodecContext *, AVPacket *, const AVFrame *, int *)) noexcept
Definition: codeccontext.cpp:881
void setBitRate(int64_t bitRate) noexcept
Definition: codeccontext.cpp:711
void setChannels(int channels) noexcept
Definition: codeccontext.h:540
bool isRefCountedFrames() const noexcept
Definition: codeccontext.cpp:667
#define RAW_GET(field, def)
Definition: ffmpeg.h:92
void setStrict(int strict) noexcept
Definition: codeccontext.cpp:688
void set_channel_layout_mask(AVCodecContext *obj, uint64_t mask)
Definition: codeccontext.cpp:1101
Rational sampleAspectRatio() const
Definition: codeccontext.h:318
int width() const
Definition: codeccontext.h:273
void setSampleFormat(SampleFormat sampleFormat) noexcept
Definition: codeccontext.h:547
Definition: avutils.h:318
void clearFlags2(int flags) noexcept
Definition: codeccontext.cpp:765
int channels() const noexcept
Definition: codeccontext.h:499
int32_t globalQuality() const
Definition: codeccontext.h:298
int maxBFrames() const
Definition: codeccontext.h:313
void setCodedWidth(int w)
Definition: codeccontext.h:341
Definition: codeccontext.h:390
void _log(int level, const char *fmt) const
Definition: ffmpeg.h:77
bool checkCodec(const Codec &codec, Direction direction, AVMediaType type, OptionalErrorCode ec)
Definition: codeccontext.cpp:817
~CodecContext2()
Definition: codeccontext.cpp:345
CodecContextBase(CodecContextBase &&other)
Definition: codeccontext.h:239
void setChannelLayout(uint64_t layout) noexcept
Definition: codeccontext.h:552
void addFlags(int flags) noexcept
Definition: codeccontext.cpp:730
void set_channels(AVCodecContext *obj, int channels)
Definition: codeccontext.cpp:1086
CodecContextBase(const class Stream &st, const class Codec &codec=Codec())
Definition: codeccontext.h:225
void operator=(const noncopyable &)=delete
const Stream & stream() const noexcept
Definition: codeccontext.cpp:619
Definition: codeccontext.h:32
Definition: codeccontext.h:446
void close(OptionalErrorCode ec=throws())
Definition: codeccontext.cpp:539
void addFlags2(int flags) noexcept
Definition: codeccontext.cpp:759
The GenericCodecContext class to copy contexts from input streams to output one.
Definition: codeccontext.h:183
uint64_t channelLayout() const noexcept
Definition: codeccontext.h:511
void setFlags(int flags) noexcept
Access to CODEC_FLAG_* flags.
Definition: codeccontext.cpp:725
bool isFlags(int flags) noexcept
Definition: codeccontext.cpp:747
const int * get_supported_samplerates(const struct AVCodec *codec)
Definition: codeccontext.cpp:172
Definition: audioresampler.cpp:8
Definition: codeccontext.h:592
Definition: averror.h:228
int sampleRate() const noexcept
Definition: codeccontext.h:494
void setHeight(int h)
Definition: codeccontext.h:332
void setPixelFormat(PixelFormat pixelFormat)
Definition: codeccontext.h:351
Definition: codeccontext.h:485
int bitRateTolerance() const
Definition: codeccontext.h:308
AVCodecContext * m_raw
Definition: ffmpeg.h:89
Direction
Definition: stream.h:14
void setFlags2(int flags) noexcept
Access to CODEC_FLAG2_* flags.
Definition: codeccontext.cpp:754
OptionalErrorCode throws()
Helper to construct null OptionalErrorCode object.
Definition: averror.h:179
std::pair< int, const std::error_category * > decodeCommon(AVFrame *outFrame, const class Packet &inPacket, size_t offset, int &frameFinished, int(*decodeProc)(AVCodecContext *, AVFrame *, int *, const AVPacket *)) noexcept
Definition: codeccontext.h:575
int64_t frameNumber() const noexcept
Definition: codeccontext.cpp:658
Definition: codeccontext.h:265
void swap(CodecContext2 &other)
Definition: codeccontext.cpp:285
void setCodedHeight(int h)
Definition: codeccontext.h:346
CodecContextBase(const Codec &codec)
Definition: codeccontext.h:231
#define RAW_SET(field, val)
Definition: ffmpeg.h:93
bool isOpened() const noexcept
Definition: codeccontext.cpp:552
void setBitRateTolerance(int bitRateTolerance)
Definition: codeccontext.h:369
T guessValue(const T &value, const L *list, C endListComparator)
Select more approptiate value from given value list.
Definition: avutils.h:351
#define RAW_GET2(cond, field, def)
Definition: ffmpeg.h:95
#define RAW_SET2(cond, field, val)
Definition: ffmpeg.h:96
void setTimeBase(const Rational &value) noexcept
Definition: codeccontext.cpp:614
void setBitRateRange(const std::pair< int64_t, int64_t > &bitRateRange) noexcept
Definition: codeccontext.cpp:716
void setCodec(const Codec &codec, bool resetDefaults, OptionalErrorCode ec=throws())
Definition: codeccontext.h:252