Audacity 3.2.0
Classes | Public Member Functions | Static Public Member Functions | Public Attributes | Private Member Functions | Private Attributes | List of all members
FFmpegFunctions Struct Reference

#include <FFmpegFunctions.h>

Inheritance diagram for FFmpegFunctions:
[legend]
Collaboration diagram for FFmpegFunctions:
[legend]

Classes

struct  Private
 

Public Member Functions

 FFmpegFunctions ()
 
 ~FFmpegFunctions ()
 
std::unique_ptr< AVIOContextWrapperCreateAVIOContext () const
 
std::unique_ptr< AVFormatContextWrapperCreateAVFormatContext () const
 
std::unique_ptr< AVStreamWrapperCreateAVStreamWrapper (AVStream *stream, bool forEncoding) const
 
std::unique_ptr< AVPacketWrapperCreateAVPacketWrapper () const
 
std::unique_ptr< AVFrameWrapperCreateAVFrameWrapper () const
 
std::unique_ptr< AVInputFormatWrapperCreateAVInputFormatWrapper (AVInputFormat *inputFormat) const
 
std::unique_ptr< AVOutputFormatWrapperCreateAVOutputFormatWrapper (const AVOutputFormat *outputFormat) const
 
std::unique_ptr< AVCodecWrapperCreateDecoder (AVCodecIDFwd codecID) const
 
std::unique_ptr< AVCodecWrapperCreateEncoder (AVCodecIDFwd codecID) const
 
std::unique_ptr< AVCodecWrapperCreateEncoder (const char *codecName) const
 
std::unique_ptr< AVCodecContextWrapperCreateAVCodecContextWrapper (AVCodecContext *context) const
 
std::unique_ptr< AVCodecContextWrapperCreateAVCodecContextWrapperFromCodec (std::unique_ptr< AVCodecWrapper > codec) const
 
std::unique_ptr< AVOutputFormatWrapperGuessOutputFormat (const char *short_name, const char *filename, const char *mime_type)
 
const std::vector< const AVOutputFormatWrapper * > & GetOutputFormats () const
 
const std::vector< const AVCodecWrapper * > & GetCodecs () const
 
std::unique_ptr< AVFifoBufferWrapperCreateFifoBuffer (int size) const
 
template<typename T >
AVDataBuffer< T > CreateMemoryBuffer (int preallocatedSize) const
 

Static Public Member Functions

static std::shared_ptr< FFmpegFunctionsLoad (bool fromUserPathOnly=false)
 
static std::vector< wxString > GetSearchPaths (bool fromUserPathOnly)
 

Public Attributes

AVCodecIDFwd(* GetAVCodecID )(AudacityAVCodecID) = nullptr
 
AudacityAVCodecID(* GetAudacityCodecID )(AVCodecIDFwd) = nullptr
 
- Public Attributes inherited from AVCodecFunctions
FFMPegVersion AVCodecVersion
 
void(* av_packet_ref )(AVPacket *dst, const AVPacket *src) = nullptr
 
void(* av_packet_unref )(AVPacket *pkt) = nullptr
 
void(* av_init_packet )(AVPacket *pkt) = nullptr
 
AVCodec *(* avcodec_find_encoder )(AVCodecIDFwd id) = nullptr
 
AVCodec *(* avcodec_find_encoder_by_name )(const char *name) = nullptr
 
AVCodec *(* avcodec_find_decoder )(AVCodecIDFwd id) = nullptr
 
const char *(* avcodec_get_name )(AVCodecIDFwd id) = nullptr
 
int(* avcodec_open2 )(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options) = nullptr
 
int(* avcodec_is_open )(AVCodecContext *avctx) = nullptr
 
int(* avcodec_close )(AVCodecContext *avctx) = nullptr
 
AVCodecContext *(* avcodec_alloc_context3 )(const AVCodec *codec) = nullptr
 
int(* av_codec_is_encoder )(const AVCodec *codec) = nullptr
 
int(* avcodec_fill_audio_frame )(AVFrame *frame, int nb_channels, AVSampleFormatFwd sample_fmt, const uint8_t *buf, int buf_size, int align) = nullptr
 
AVPacket *(* av_packet_alloc )() = nullptr
 
void(* av_packet_free )(AVPacket **pkt) = nullptr
 
void(* avcodec_free_context )(AVCodecContext **avctx) = nullptr
 
int(* avcodec_parameters_to_context )(AVCodecContext *codec, const AVCodecParameters *par) = nullptr
 
int(* avcodec_parameters_from_context )(AVCodecParameters *par, const AVCodecContext *codec) = nullptr
 
int(* avcodec_decode_audio4 )(AVCodecContext *avctx, AVFrame *frame, int *got_output, const AVPacket *avpkt) = nullptr
 
int(* avcodec_encode_audio2 )(AVCodecContext *avctx, AVPacket *pkt, const AVFrame *frame, int *got_output) = nullptr
 
void(* avcodec_register_all )(void) = nullptr
 
AVCodec *(* av_codec_next )(const AVCodec *c) = nullptr
 
const AVCodec *(* av_codec_iterate )(void **opaque) = nullptr
 
int(* avcodec_send_packet )(AVCodecContext *avctx, const AVPacket *avpkt) = nullptr
 
int(* avcodec_receive_frame )(AVCodecContext *avctx, AVFrame *frame) = nullptr
 
int(* avcodec_send_frame )(AVCodecContext *avctx, const AVFrame *frame) = nullptr
 
int(* avcodec_receive_packet )(AVCodecContext *avctx, AVPacket *avpkt) = nullptr
 
- Public Attributes inherited from AVFormatFunctions
FFMPegVersion AVFormatVersion
 
int(* avformat_find_stream_info )(AVFormatContext *ic, AVDictionary **options) = nullptr
 
int(* av_read_frame )(AVFormatContext *s, AVPacket *pkt) = nullptr
 
int(* av_seek_frame )(AVFormatContext *s, int stream_index, int64_t timestamp, int flags) = nullptr
 
void(* avformat_close_input )(AVFormatContext **s) = nullptr
 
int(* avformat_write_header )(AVFormatContext *s, AVDictionary **options) = nullptr
 
int(* av_interleaved_write_frame )(AVFormatContext *s, AVPacket *pkt) = nullptr
 
AVOutputFormat *(* av_oformat_next )(const AVOutputFormat *f) = nullptr
 
AVStream *(* avformat_new_stream )(AVFormatContext *s, const AVCodec *c) = nullptr
 
AVFormatContext *(* avformat_alloc_context )(void) = nullptr
 
int(* av_write_trailer )(AVFormatContext *s) = nullptr
 
unsigned int(* av_codec_get_tag )(const struct AVCodecTag *const *tags, AVCodecIDFwd id) = nullptr
 
int(* avformat_open_input )(AVFormatContext **ic_ptr, const char *filename, const AVInputFormat *fmt, AVDictionary **options) = nullptr
 
int64_t(* avio_size )(AVIOContext *s) = nullptr
 
AVIOContext *(* avio_alloc_context )(unsigned char *buffer, int buffer_size, int write_flag, void *opaque, int(*read_packet)(void *opaque, uint8_t *buf, int buf_size), int(*write_packet)(void *opaque, const uint8_t *buf, int buf_size), int64_t(*seek)(void *opaque, int64_t offset, int whence)) = nullptr
 
AVOutputFormat *(* av_guess_format )(const char *short_name, const char *filename, const char *mime_type) = nullptr
 
void(* avformat_free_context )(AVFormatContext *s) = nullptr
 
void(* av_register_all )(void) = nullptr
 
void(* avio_context_free )(AVIOContext **s) = nullptr
 
const AVOutputFormat *(* av_muxer_iterate )(void **opaque)
 
- Public Attributes inherited from AVUtilFunctions
FFMPegVersion AVUtilVersion
 
void *(* av_malloc )(size_t size) = nullptr
 
void(* av_free )(void *ptr) = nullptr
 
char *(* av_strdup )(const char *ptr) = nullptr
 
void(* av_dict_free )(AVDictionary **m) = nullptr
 
AudacityAVDictionaryEntry *(* av_dict_get )(const AVDictionary *m, const char *key, const AudacityAVDictionaryEntry *prev, int flags) = nullptr
 
int(* av_dict_set )(AVDictionary **pm, const char *key, const char *value, int flags) = nullptr
 
void(* av_dict_copy )(AVDictionary **dst, const AVDictionary *src, int flags) = nullptr
 
int(* av_get_bytes_per_sample )(AVSampleFormatFwd sample_fmt) = nullptr
 
void(* av_log_set_callback )(void(*cb)(void *, int, const char *, va_list)) = nullptr
 
void(* av_log_default_callback )(void *ptr, int level, const char *fmt, va_list vl) = nullptr
 
AVFifoBuffer *(* av_fifo_alloc )(unsigned int size) = nullptr
 
int(* av_fifo_generic_read )(AVFifoBuffer *f, void *buf, int buf_size, void(*func)(void *, void *, int)) = nullptr
 
int(* av_fifo_realloc2 )(AVFifoBuffer *f, unsigned int size) = nullptr
 
void(* av_fifo_free )(AVFifoBuffer *f) = nullptr
 
int(* av_fifo_size )(const AVFifoBuffer *f) = nullptr
 
int(* av_fifo_generic_write )(AVFifoBuffer *f, void *src, int size, int(*func)(void *, void *, int)) = nullptr
 
int64_t(* av_rescale_q )(int64_t a, AudacityAVRational bq, AudacityAVRational cq) = nullptr
 
AVFrame *(* av_frame_alloc )(void) = nullptr
 
void(* av_frame_free )(AVFrame **frame) = nullptr
 
int(* av_samples_get_buffer_size )(int *linesize, int nb_channels, int nb_samples, AVSampleFormatFwd sample_fmt, int align) = nullptr
 
int64_t(* av_get_default_channel_layout )(int nb_channels) = nullptr
 
int(* av_strerror )(int errnum, char *errbuf, size_t errbuf_size) = nullptr
 
int(* av_get_channel_layout_nb_channels )(uint64_t channel_layout) = nullptr
 

Private Member Functions

void FillCodecsList ()
 
void FillOuptutFormatsList ()
 

Private Attributes

std::unique_ptr< PrivatemPrivate
 
std::vector< const AVCodecWrapper * > mCodecPointers
 
std::vector< std::unique_ptr< AVCodecWrapper > > mCodecs
 
std::vector< const AVOutputFormatWrapper * > mOutputFormatPointers
 
std::vector< std::unique_ptr< AVOutputFormatWrapper > > mOutputFormats
 

Detailed Description

Definition at line 81 of file FFmpegFunctions.h.

Constructor & Destructor Documentation

◆ FFmpegFunctions()

FFmpegFunctions::FFmpegFunctions ( )

Definition at line 253 of file FFmpegFunctions.cpp.

254 : mPrivate(std::make_unique<Private>())
255{
256}
std::unique_ptr< Private > mPrivate

◆ ~FFmpegFunctions()

FFmpegFunctions::~FFmpegFunctions ( )

Definition at line 258 of file FFmpegFunctions.cpp.

259{
260}

Member Function Documentation

◆ CreateAVCodecContextWrapper()

std::unique_ptr< AVCodecContextWrapper > FFmpegFunctions::CreateAVCodecContextWrapper ( AVCodecContext context) const

Definition at line 424 of file FFmpegFunctions.cpp.

425{
426 return mPrivate->CodecFactories.CreateAVCodecContextWrapper(
427 *this, context);
428}

References mPrivate.

◆ CreateAVCodecContextWrapperFromCodec()

std::unique_ptr< AVCodecContextWrapper > FFmpegFunctions::CreateAVCodecContextWrapperFromCodec ( std::unique_ptr< AVCodecWrapper codec) const

Definition at line 431 of file FFmpegFunctions.cpp.

433{
434 if (codec == nullptr)
435 return {};
436
437 return mPrivate->CodecFactories.CreateAVCodecContextWrapperFromCodec(
438 *this, std::move(codec));
439}

References mPrivate.

◆ CreateAVFormatContext()

std::unique_ptr< AVFormatContextWrapper > FFmpegFunctions::CreateAVFormatContext ( ) const

Definition at line 346 of file FFmpegFunctions.cpp.

347{
348 return mPrivate->FormatFactories.CreateAVFormatContextWrapper(*this);
349}

References mPrivate.

◆ CreateAVFrameWrapper()

std::unique_ptr< AVFrameWrapper > FFmpegFunctions::CreateAVFrameWrapper ( ) const
Postcondition
return value is not null

Definition at line 362 of file FFmpegFunctions.cpp.

363{
364 return mPrivate->UtilFactories.CreateAVFrameWrapper(*this);
365}

References mPrivate.

Referenced by AVCodecContextWrapper::DecodeAudioPacket().

Here is the caller graph for this function:

◆ CreateAVInputFormatWrapper()

std::unique_ptr< AVInputFormatWrapper > FFmpegFunctions::CreateAVInputFormatWrapper ( AVInputFormat inputFormat) const

Definition at line 368 of file FFmpegFunctions.cpp.

370{
371 return mPrivate->FormatFactories.CreateAVInputFormatWrapper(inputFormat);
372}

References mPrivate.

Referenced by AVFormatContextWrapper::OpenInputContext().

Here is the caller graph for this function:

◆ CreateAVIOContext()

std::unique_ptr< AVIOContextWrapper > FFmpegFunctions::CreateAVIOContext ( ) const

Definition at line 340 of file FFmpegFunctions.cpp.

341{
342 return mPrivate->FormatFactories.CreateAVIOContextWrapper(*this);
343}

References mPrivate.

Referenced by AVFormatContextWrapper::OpenInputContext(), and AVFormatContextWrapper::OpenOutputContext().

Here is the caller graph for this function:

◆ CreateAVOutputFormatWrapper()

std::unique_ptr< AVOutputFormatWrapper > FFmpegFunctions::CreateAVOutputFormatWrapper ( const AVOutputFormat outputFormat) const

Definition at line 384 of file FFmpegFunctions.cpp.

386{
387 return mPrivate->FormatFactories.CreateAVOutputFormatWrapper(outputFormat);
388}

References mPrivate.

◆ CreateAVPacketWrapper()

std::unique_ptr< AVPacketWrapper > FFmpegFunctions::CreateAVPacketWrapper ( ) const
Postcondition
return value is not null

Definition at line 357 of file FFmpegFunctions.cpp.

358{
359 return mPrivate->CodecFactories.CreateAVPacketWrapper(*this);
360}

References mPrivate.

Referenced by AVCodecContextWrapper::DecodeAudioPacket(), and AVFormatContextWrapper::ReadNextPacket().

Here is the caller graph for this function:

◆ CreateAVStreamWrapper()

std::unique_ptr< AVStreamWrapper > FFmpegFunctions::CreateAVStreamWrapper ( AVStream stream,
bool  forEncoding 
) const

Definition at line 352 of file FFmpegFunctions.cpp.

353{
354 return mPrivate->FormatFactories.CreateAVStreamWrapper(*this, stream, forEncoding);
355}

References mPrivate.

Referenced by AVFormatContextWrapper::CreateStream().

Here is the caller graph for this function:

◆ CreateDecoder()

std::unique_ptr< AVCodecWrapper > FFmpegFunctions::CreateDecoder ( AVCodecIDFwd  codecID) const

Definition at line 391 of file FFmpegFunctions.cpp.

392{
393 AVCodec* codec = avcodec_find_decoder(codecID);
394
395 if (codec == nullptr)
396 return {};
397
398 return mPrivate->CodecFactories.CreateAVCodecWrapper(codec);
399}
AVCodec *(* avcodec_find_decoder)(AVCodecIDFwd id)

References AVCodecFunctions::avcodec_find_decoder, and mPrivate.

◆ CreateEncoder() [1/2]

std::unique_ptr< AVCodecWrapper > FFmpegFunctions::CreateEncoder ( AVCodecIDFwd  codecID) const

Definition at line 402 of file FFmpegFunctions.cpp.

403{
404 auto codec = avcodec_find_encoder(codecID);
405
406 if (codec == nullptr)
407 return {};
408
409 return mPrivate->CodecFactories.CreateAVCodecWrapper(codec);
410}
AVCodec *(* avcodec_find_encoder)(AVCodecIDFwd id)

References AVCodecFunctions::avcodec_find_encoder, and mPrivate.

◆ CreateEncoder() [2/2]

std::unique_ptr< AVCodecWrapper > FFmpegFunctions::CreateEncoder ( const char *  codecName) const

Definition at line 413 of file FFmpegFunctions.cpp.

414{
416
417 if (codec == nullptr)
418 return {};
419
420 return mPrivate->CodecFactories.CreateAVCodecWrapper(codec);
421}
const TranslatableString name
Definition: Distortion.cpp:76
AVCodec *(* avcodec_find_encoder_by_name)(const char *name)

References AVCodecFunctions::avcodec_find_encoder_by_name, mPrivate, and name.

◆ CreateFifoBuffer()

std::unique_ptr< AVFifoBufferWrapper > FFmpegFunctions::CreateFifoBuffer ( int  size) const

Definition at line 459 of file FFmpegFunctions.cpp.

460{
461 return std::make_unique<AVFifoBufferWrapper>(*this, size);
462}

References size.

◆ CreateMemoryBuffer()

template<typename T >
AVDataBuffer< T > FFmpegFunctions::CreateMemoryBuffer ( int  preallocatedSize) const
inline

Definition at line 125 of file FFmpegFunctions.h.

126 {
127 return AVDataBuffer<T>(preallocatedSize, T {}, AVAllocator<T>());
128 }
std::vector< T, AVAllocator< T > > AVDataBuffer

◆ FillCodecsList()

void FFmpegFunctions::FillCodecsList ( )
private

Definition at line 464 of file FFmpegFunctions.cpp.

465{
466 mCodecs.clear();
467 mCodecPointers.clear();
468
469 if (av_codec_iterate != nullptr)
470 {
471 const AVCodec* currentCodec = nullptr;
472 void* i = 0;
473
474 while ((currentCodec = av_codec_iterate(&i)))
475 {
476 mCodecs.emplace_back(
477 mPrivate->CodecFactories.CreateAVCodecWrapper(currentCodec));
478 }
479 }
480 else if (av_codec_next != nullptr)
481 {
482 AVCodec* currentCodec = nullptr;
483
484 while ((currentCodec = av_codec_next(currentCodec)) != nullptr)
485 {
486 mCodecs.emplace_back(
487 mPrivate->CodecFactories.CreateAVCodecWrapper(currentCodec));
488 }
489 }
490
491 mCodecPointers.reserve(mCodecs.size());
492
493 for (const auto& codec : mCodecs)
494 mCodecPointers.emplace_back(codec.get());
495}
const AVCodec *(* av_codec_iterate)(void **opaque)
AVCodec *(* av_codec_next)(const AVCodec *c)
std::vector< const AVCodecWrapper * > mCodecPointers
std::vector< std::unique_ptr< AVCodecWrapper > > mCodecs

References AVCodecFunctions::av_codec_iterate, AVCodecFunctions::av_codec_next, mCodecPointers, mCodecs, and mPrivate.

Referenced by GetCodecs().

Here is the caller graph for this function:

◆ FillOuptutFormatsList()

void FFmpegFunctions::FillOuptutFormatsList ( )
private

Definition at line 497 of file FFmpegFunctions.cpp.

498{
499 mOutputFormats.clear();
500 mOutputFormatPointers.clear();
501
502 if (av_muxer_iterate != nullptr)
503 {
504 const AVOutputFormat* currentFormat = nullptr;
505 void* i = 0;
506
507 while ((currentFormat = av_muxer_iterate(&i)))
508 {
509 mOutputFormats.emplace_back(
510 mPrivate->FormatFactories.CreateAVOutputFormatWrapper(
511 currentFormat));
512 }
513 }
514 else if (av_oformat_next != nullptr)
515 {
516 AVOutputFormat* currentFormat = nullptr;
517
518 while ((currentFormat = av_oformat_next(currentFormat)) != nullptr)
519 {
520 mOutputFormats.emplace_back(
521 mPrivate->FormatFactories.CreateAVOutputFormatWrapper(currentFormat));
522 }
523 }
524
526
527 for (const auto& format : mOutputFormats)
528 mOutputFormatPointers.emplace_back(format.get());
529}
int format
Definition: ExportPCM.cpp:53
const AVOutputFormat *(* av_muxer_iterate)(void **opaque)
AVOutputFormat *(* av_oformat_next)(const AVOutputFormat *f)
std::vector< const AVOutputFormatWrapper * > mOutputFormatPointers
std::vector< std::unique_ptr< AVOutputFormatWrapper > > mOutputFormats

References AVFormatFunctions::av_muxer_iterate, AVFormatFunctions::av_oformat_next, format, mOutputFormatPointers, mOutputFormats, and mPrivate.

Referenced by GetOutputFormats().

Here is the caller graph for this function:

◆ GetCodecs()

const std::vector< const AVCodecWrapper * > & FFmpegFunctions::GetCodecs ( ) const

Definition at line 450 of file FFmpegFunctions.cpp.

451{
452 if (mCodecs.empty())
453 const_cast<FFmpegFunctions*>(this)->FillCodecsList();
454
455 return mCodecPointers;
456}

References FillCodecsList(), mCodecPointers, and mCodecs.

Here is the call graph for this function:

◆ GetOutputFormats()

const std::vector< const AVOutputFormatWrapper * > & FFmpegFunctions::GetOutputFormats ( ) const

Definition at line 442 of file FFmpegFunctions.cpp.

443{
444 if (mOutputFormats.empty())
445 const_cast<FFmpegFunctions*>(this)->FillOuptutFormatsList();
446
448}

References FillOuptutFormatsList(), mOutputFormatPointers, and mOutputFormats.

Here is the call graph for this function:

◆ GetSearchPaths()

std::vector< wxString > FFmpegFunctions::GetSearchPaths ( bool  fromUserPathOnly)
static

Definition at line 298 of file FFmpegFunctions.cpp.

299{
300 std::vector<wxString> paths;
301
302 const wxString userAVFormatFullPath = AVFormatPath.Read();
303
304 if (!userAVFormatFullPath.empty())
305 {
306 // For some directories, wxPathOnly will fail.
307 // For example, if path is `c:\ffmpeg-4.4`
308 // wxPathOnly will return `c:\`
309 if (wxDirExists(userAVFormatFullPath))
310 paths.emplace_back(userAVFormatFullPath);
311 else
312 paths.emplace_back(wxPathOnly(userAVFormatFullPath));
313 }
314
315 if (fromUserPathOnly)
316 return paths;
317
318#if defined(__WXMSW__)
319 wxRegKey reg(wxT("HKEY_LOCAL_MACHINE\\Software\\FFmpeg for Audacity"));
320 wxString path;
321
322 if (reg.Exists())
323 reg.QueryValue(wxT("InstallPath"), path);
324
325 if (!path.empty())
326 paths.emplace_back(path);
327
328#elif defined(__WXMAC__)
329 paths.emplace_back(wxT("/Library/Application Support/audacity/libs"));
330 paths.emplace_back(wxT("/usr/local/lib/audacity"));
331 // x86_64 Homebrew
332 paths.emplace_back(wxT("/usr/local/lib"));
333 // ARM64 Homebrew
334 paths.emplace_back(wxT("/opt/homebrew/lib"));
335#endif
336
337 return paths;
338}
wxT("CloseDown"))
StringSetting AVFormatPath
bool Read(T *pVar) const
overload of Read returning a boolean that is true if the value was previously defined *‍/
Definition: Prefs.h:200
BuiltinCommandsModule::Registration< CompareAudioCommand > reg

References AVFormatPath, Setting< T >::Read(), anonymous_namespace{CompareAudioCommand.cpp}::reg, and wxT().

Referenced by EnvSetter::EnvSetter(), FindFFmpegLibs(), and FFmpegFunctions::Private::LoadLibrary().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GuessOutputFormat()

std::unique_ptr< AVOutputFormatWrapper > FFmpegFunctions::GuessOutputFormat ( const char *  short_name,
const char *  filename,
const char *  mime_type 
)

Definition at line 374 of file FFmpegFunctions.cpp.

376{
377 AVOutputFormat* outputFormat =
378 av_guess_format(short_name, filename, mime_type);
379
380 return mPrivate->FormatFactories.CreateAVOutputFormatWrapper(outputFormat);
381}
AVOutputFormat *(* av_guess_format)(const char *short_name, const char *filename, const char *mime_type)

References AVFormatFunctions::av_guess_format, and mPrivate.

◆ Load()

std::shared_ptr< FFmpegFunctions > FFmpegFunctions::Load ( bool  fromUserPathOnly = false)
static

Definition at line 262 of file FFmpegFunctions.cpp.

263{
264 static std::weak_ptr<FFmpegFunctions> weakFunctions;
265
266 auto functions = weakFunctions.lock();
267
268 if (functions)
269 return functions;
270
271 std::shared_ptr<FFmpegFunctions> ffmpeg =
272 std::make_shared<FFmpegFunctions>();
273
274 const auto supportedVersions =
276
277#if !defined(__WXMAC__)
278 EnvSetter envSetter(fromUserPathOnly);
279#endif
280
281 for (int version : supportedVersions)
282 {
283 for (const wxString& path : BuildAVFormatPaths(version))
284 {
285 if (ffmpeg->mPrivate->Load(*ffmpeg, path, fromUserPathOnly))
286 {
287 weakFunctions = ffmpeg;
288 return ffmpeg;
289 }
290 }
291 }
292
293 return {};
294}
std::vector< wxString > BuildAVFormatPaths(int version)
std::vector< int > GetSuportedAVFormatVersions() const
static FFmpegAPIResolver & Get()

References BuildAVFormatPaths(), FFmpegAPIResolver::Get(), and FFmpegAPIResolver::GetSuportedAVFormatVersions().

Referenced by CheckFFmpegPresence(), ExportFFmpeg::CheckFileName(), ExportFFmpeg::ExportFFmpeg(), ExportFFmpegOptions::ExportFFmpegOptions(), FFmpegImportPlugin::FailureHint(), FindFFmpegLibs(), GetFFmpegVersion(), LoadFFmpeg(), ExportFFmpegCustomOptions::OnOpen(), and FFmpegImportPlugin::Open().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ GetAudacityCodecID

AudacityAVCodecID(* FFmpegFunctions::GetAudacityCodecID) (AVCodecIDFwd) = nullptr

Definition at line 92 of file FFmpegFunctions.h.

Referenced by FFmpegFunctions::Private::Load().

◆ GetAVCodecID

AVCodecIDFwd(* FFmpegFunctions::GetAVCodecID) (AudacityAVCodecID) = nullptr

Definition at line 91 of file FFmpegFunctions.h.

Referenced by FFmpegFunctions::Private::Load().

◆ mCodecPointers

std::vector<const AVCodecWrapper*> FFmpegFunctions::mCodecPointers
private

Definition at line 137 of file FFmpegFunctions.h.

Referenced by FillCodecsList(), and GetCodecs().

◆ mCodecs

std::vector<std::unique_ptr<AVCodecWrapper> > FFmpegFunctions::mCodecs
private

Definition at line 138 of file FFmpegFunctions.h.

Referenced by FillCodecsList(), and GetCodecs().

◆ mOutputFormatPointers

std::vector<const AVOutputFormatWrapper*> FFmpegFunctions::mOutputFormatPointers
private

Definition at line 140 of file FFmpegFunctions.h.

Referenced by FillOuptutFormatsList(), and GetOutputFormats().

◆ mOutputFormats

std::vector<std::unique_ptr<AVOutputFormatWrapper> > FFmpegFunctions::mOutputFormats
private

Definition at line 141 of file FFmpegFunctions.h.

Referenced by FillOuptutFormatsList(), and GetOutputFormats().

◆ mPrivate

std::unique_ptr<Private> FFmpegFunctions::mPrivate
private

The documentation for this struct was generated from the following files: