17 #include <libavcodec/avcodec.h>
22 namespace codec_context::audio {
29 namespace codec_context::internal {
43 using BaseWrapper::BaseWrapper;
48 #if AVCPP_HAS_AVFORMAT
62 AVMediaType
codecType(AVMediaType contextType)
const noexcept;
79 [[deprecated(
"Start from FFmpeg 4.0 it is recommended to destroy and recreate codec context insted of close")]]
99 #if AVCPP_HAS_AVFORMAT
100 const Stream& stream() const noexcept;
114 int strict() const noexcept;
117 int64_t
bitRate() const noexcept;
128 int flags() noexcept;
152 std::pair<
int, const
std::error_category*>
154 int (*decodeProc)(AVCodecContext*, AVFrame*,
int *, const AVPacket *)) noexcept;
156 std::pair<
int, const
std::error_category*>
158 int (*encodeProc)(AVCodecContext*, AVPacket*,const AVFrame*,
int*)) noexcept;
162 std::pair<
int, const
std::error_category*>
164 const class
Packet &inPacket,
167 int (*decodeProc)(AVCodecContext *, AVFrame *,
int *, const AVPacket *));
170 std::pair<
int, const
std::error_category*>
174 int (*encodeProc)(AVCodecContext *, AVPacket *, const AVFrame *,
int *));
177 #if AVCPP_HAS_AVFORMAT
198 #if AVCPP_HAS_AVFORMAT
210 template<typename Clazz,
Direction _direction, AVMediaType _type>
217 return static_cast<Clazz&
>(*this);
218 Clazz(std::forward<Clazz>(rhs)).swap(
static_cast<Clazz&
>(*
this));
219 return static_cast<Clazz&
>(*this);
234 #if AVCPP_HAS_AVFORMAT
275 template<
typename Clazz, Direction _direction>
280 using Parent::Parent;
281 using Parent::isValid;
282 using Parent::isOpened;
331 return RAW_GET(sample_aspect_ratio, AVRational());
339 m_raw->coded_width = w;
348 m_raw->coded_height = h;
369 if (quality < 0 || quality > FF_LAMBDA_MAX)
370 quality = FF_LAMBDA_MAX;
392 RAW_SET(sample_aspect_ratio, sampleAspectRatio);
396 using Parent::moveOperator;
425 bool autoAllocateFrame =
true);
442 size_t &decodedBytes,
444 bool autoAllocateFrame =
true);
451 size_t *decodedBytes,
452 bool autoAllocateFrame);
495 template<
typename Clazz, Direction _direction>
500 using Parent::Parent;
501 using Parent::isValid;
502 using Parent::isOpened;
529 #if AVCPP_API_NEW_CHANNEL_LAYOUT
530 ChannelLayoutView channelLayout2() const noexcept
533 return ChannelLayoutView{};
534 return ChannelLayoutView{
m_raw->ch_layout};
542 #if AVCPP_CXX_STANDARD >= 20
547 if (sr != sampleRate)
549 fflog(AV_LOG_INFO,
"Guess sample rate %d instead unsupported %d\n", sr, sampleRate);
552 m_raw->sample_rate = sr;
557 if (!
isValid() || channels <= 0)
574 #if AVCPP_API_NEW_CHANNEL_LAYOUT
575 void setChannelLayout(ChannelLayout layout) noexcept
577 if (!
isValid() || !layout.isValid())
579 m_raw->ch_layout = *layout.raw();
585 using Parent::moveOperator;
#define fflog(level, format,...)
Default in-class logger.
Definition: avlog.h:27
Definition: codeccontext.h:497
void setChannels(int channels) noexcept
Definition: codeccontext.h:555
uint64_t channelLayout() const noexcept
Definition: codeccontext.h:522
SampleFormat sampleFormat() const noexcept
Definition: codeccontext.h:517
void setChannelLayout(uint64_t layout) noexcept
Definition: codeccontext.h:567
int channels() const noexcept
Definition: codeccontext.h:510
void setSampleRate(int sampleRate) noexcept
Definition: codeccontext.h:538
void setSampleFormat(SampleFormat sampleFormat) noexcept
Definition: codeccontext.h:562
int sampleRate() const noexcept
Definition: codeccontext.h:505
Definition: codeccontext.h:591
AudioDecoderContext()=default
Definition: codeccontext.h:608
AudioEncoderContext()=default
Definition: codeccontext.h:34
bool isValidForEncode(Direction direction, AVMediaType type) const noexcept
Definition: codeccontext.cpp:804
Codec codec() const noexcept
Definition: codeccontext.cpp:645
bool isValid() const noexcept
Definition: codeccontext.cpp:572
int64_t bitRate() const noexcept
Definition: codeccontext.cpp:719
void clearFlags(int flags) noexcept
Definition: codeccontext.cpp:757
AVMediaType codecType(AVMediaType contextType) const noexcept
Definition: codeccontext.cpp:453
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
void addFlags2(int flags) noexcept
Definition: codeccontext.cpp:780
void setOption(const std::string &key, const std::string &val, OptionalErrorCode ec=throws())
bool checkCodec(const Codec &codec, Direction direction, AVMediaType type, OptionalErrorCode ec)
Definition: codeccontext.cpp:845
Rational timeBase() const noexcept
Definition: codeccontext.cpp:628
void setBitRate(int64_t bitRate) noexcept
Definition: codeccontext.cpp:732
CodecContext2(const class Codec &codec, Direction direction, AVMediaType type)
int64_t frameNumber() const noexcept
Definition: codeccontext.cpp:679
void swap(CodecContext2 &other)
Definition: codeccontext.cpp:292
bool isOpened() const noexcept
Definition: codeccontext.cpp:567
~CodecContext2()
Definition: codeccontext.cpp:356
int flags() noexcept
Definition: codeccontext.cpp:763
void setBitRateRange(const std::pair< int64_t, int64_t > &bitRateRange) noexcept
Definition: codeccontext.cpp:737
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:582
bool isFlags2(int flags) noexcept
Definition: codeccontext.cpp:797
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:909
void open(OptionalErrorCode ec=throws())
Definition: codeccontext.cpp:465
CodecContext2()
Definition: codeccontext.cpp:301
bool isRefCountedFrames() const noexcept
Definition: codeccontext.cpp:688
std::pair< int64_t, int64_t > bitRateRange() const noexcept
Definition: codeccontext.cpp:724
int strict() const noexcept
Definition: codeccontext.cpp:704
bool isFlags(int flags) noexcept
Definition: codeccontext.cpp:768
void setFlags2(int flags) noexcept
Access to CODEC_FLAG2_* flags.
Definition: codeccontext.cpp:775
void setStrict(int strict) noexcept
Definition: codeccontext.cpp:709
void setRefCountedFrames(bool refcounted) const noexcept
Definition: codeccontext.cpp:697
void addFlags(int flags) noexcept
Definition: codeccontext.cpp:751
void setTimeBase(const Rational &value) noexcept
Definition: codeccontext.cpp:633
int frameSize() const noexcept
Definition: codeccontext.cpp:674
void clearFlags2(int flags) noexcept
Definition: codeccontext.cpp:786
void close(OptionalErrorCode ec=throws())
Definition: codeccontext.cpp:554
void setFlags(int flags) noexcept
Access to CODEC_FLAG_* flags.
Definition: codeccontext.cpp:746
int flags2() noexcept
Definition: codeccontext.cpp:792
void setCodec(const class Codec &codec, bool resetDefaults, Direction direction, AVMediaType type, OptionalErrorCode ec=throws())
Definition: codeccontext.cpp:379
Definition: codeccontext.h:212
Clazz & moveOperator(Clazz &&rhs)
Definition: codeccontext.h:214
CodecContextBase()
Definition: codeccontext.h:228
void setCodec(const Codec &codec, OptionalErrorCode ec=throws())
Definition: codeccontext.h:258
void setCodec(const Codec &codec, bool resetDefaults, OptionalErrorCode ec=throws())
Definition: codeccontext.h:263
CodecContextBase(CodecContextBase &&other)
Definition: codeccontext.h:250
CodecContextBase(const Codec &codec)
Definition: codeccontext.h:242
AVMediaType codecType() const noexcept
Definition: codeccontext.h:268
Implements interface to access to the AVDictionary entity.
Definition: dictionary.h:31
The GenericCodecContext class to copy contexts from input streams to output one.
Definition: codeccontext.h:191
AVMediaType codecType() const noexcept
Definition: codeccontext.cpp:59
GenericCodecContext & operator=(GenericCodecContext &&rhs)
Definition: codeccontext.cpp:51
GenericCodecContext()=default
Definition: rational.h:26
Definition: codeccontext.h:277
int bitRateTolerance() const
Definition: codeccontext.h:319
void setGopSize(int32_t size)
Definition: codeccontext.h:375
void setCodedHeight(int h)
Definition: codeccontext.h:357
int height() const
Definition: codeccontext.h:289
void setGlobalQuality(int32_t quality)
Definition: codeccontext.h:367
void setPixelFormat(PixelFormat pixelFormat)
Definition: codeccontext.h:362
PixelFormat pixelFormat() const
Definition: codeccontext.h:304
int codedHeight() const
Definition: codeccontext.h:299
void setCodedWidth(int w)
Definition: codeccontext.h:352
int codedWidth() const
Definition: codeccontext.h:294
void setSampleAspectRatio(const Rational &sampleAspectRatio)
Definition: codeccontext.h:390
void setWidth(int w)
Definition: codeccontext.h:334
void setBitRateTolerance(int bitRateTolerance)
Definition: codeccontext.h:380
void setMaxBFrames(int maxBFrames)
Definition: codeccontext.h:385
int maxBFrames() const
Definition: codeccontext.h:324
void setHeight(int h)
Definition: codeccontext.h:343
int32_t globalQuality() const
Definition: codeccontext.h:309
Rational sampleAspectRatio() const
Definition: codeccontext.h:329
int32_t gopSize() const
Definition: codeccontext.h:314
int width() const
Definition: codeccontext.h:284
Definition: codeccontext.h:402
VideoDecoderContext()=default
Definition: codeccontext.h:458
VideoEncoderContext()=default
#define RAW_GET(field, def)
Definition: ffmpeg.h:47
#define RAW_SET(field, val)
Definition: ffmpeg.h:48
#define RAW_GET2(cond, field, def)
Definition: ffmpeg.h:50
#define RAW_SET2(cond, field, val)
Definition: ffmpeg.h:51
void set_channels(AVCodecContext *obj, int channels)
Definition: codeccontext.cpp:1122
int get_channels(const AVCodecContext *obj)
Definition: codeccontext.cpp:1158
uint64_t get_channel_layout_mask(const AVCodecContext *obj)
Definition: codeccontext.cpp:1174
void set_channel_layout_mask(AVCodecContext *obj, uint64_t mask)
Definition: codeccontext.cpp:1137
const int * get_supported_samplerates(const struct AVCodec *codec)
Definition: codeccontext.cpp:179
Definition: audioresampler.cpp:8
OptionalErrorCode throws()
Helper to construct null OptionalErrorCode object.
Definition: averror.h:181
Direction
Definition: codecparameters.h:16
T guessValue(const T &value, const L *list, C endListComparator)
Select more approptiate value from given value list.
Definition: avutils.h:565
Definition: averror.h:230
void _log(int level, const char *fmt) const
Definition: ffmpeg.h:32
AVCodecContext * m_raw
Definition: ffmpeg.h:44
Definition: avutils.h:533