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)
 
std::unique_ptr< AVChannelLayoutWrapperCreateDefaultChannelLayout (int channelsCount) const
 
std::unique_ptr< AVChannelLayoutWrapperCreateLegacyChannelLayout (uint64_t layout, int channelsCount) const
 
std::unique_ptr< AVChannelLayoutWrapperCreateAVChannelLayout (const AVChannelLayout *layout) const
 
const std::vector< const AVOutputFormatWrapper * > & GetOutputFormats () const
 
const std::vector< const AVCodecWrapper * > & GetCodecs () 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
 
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
 
void(* av_channel_layout_default )(AVChannelLayout *layout, int nb_channels) = 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 255 of file FFmpegFunctions.cpp.

256 : mPrivate(std::make_unique<Private>())
257{
258}
std::unique_ptr< Private > mPrivate

◆ ~FFmpegFunctions()

FFmpegFunctions::~FFmpegFunctions ( )

Definition at line 260 of file FFmpegFunctions.cpp.

261{
262}

Member Function Documentation

◆ CreateAVChannelLayout()

std::unique_ptr< AVChannelLayoutWrapper > FFmpegFunctions::CreateAVChannelLayout ( const AVChannelLayout layout) const

Definition at line 401 of file FFmpegFunctions.cpp.

402{
403 return mPrivate->UtilFactories.CreateAVChannelLayout(*this, layout);
404}

References mPrivate.

◆ CreateAVCodecContextWrapper()

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

Definition at line 447 of file FFmpegFunctions.cpp.

448{
449 return mPrivate->CodecFactories.CreateAVCodecContextWrapper(
450 *this, context);
451}

References mPrivate.

◆ CreateAVCodecContextWrapperFromCodec()

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

Definition at line 454 of file FFmpegFunctions.cpp.

456{
457 if (codec == nullptr)
458 return {};
459
460 return mPrivate->CodecFactories.CreateAVCodecContextWrapperFromCodec(
461 *this, std::move(codec));
462}

References mPrivate.

◆ CreateAVFormatContext()

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

Definition at line 348 of file FFmpegFunctions.cpp.

349{
350 return mPrivate->FormatFactories.CreateAVFormatContextWrapper(*this);
351}

References mPrivate.

◆ CreateAVFrameWrapper()

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

Definition at line 364 of file FFmpegFunctions.cpp.

365{
366 return mPrivate->UtilFactories.CreateAVFrameWrapper(*this);
367}

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 370 of file FFmpegFunctions.cpp.

372{
373 return mPrivate->FormatFactories.CreateAVInputFormatWrapper(inputFormat);
374}

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 342 of file FFmpegFunctions.cpp.

343{
344 return mPrivate->FormatFactories.CreateAVIOContextWrapper(*this);
345}

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 407 of file FFmpegFunctions.cpp.

409{
410 return mPrivate->FormatFactories.CreateAVOutputFormatWrapper(outputFormat);
411}

References mPrivate.

◆ CreateAVPacketWrapper()

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

Definition at line 359 of file FFmpegFunctions.cpp.

360{
361 return mPrivate->CodecFactories.CreateAVPacketWrapper(*this);
362}

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 354 of file FFmpegFunctions.cpp.

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

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 414 of file FFmpegFunctions.cpp.

415{
416 AVCodec* codec = avcodec_find_decoder(codecID);
417
418 if (codec == nullptr)
419 return {};
420
421 return mPrivate->CodecFactories.CreateAVCodecWrapper(codec);
422}
AVCodec *(* avcodec_find_decoder)(AVCodecIDFwd id)

References AVCodecFunctions::avcodec_find_decoder, and mPrivate.

◆ CreateDefaultChannelLayout()

std::unique_ptr< AVChannelLayoutWrapper > FFmpegFunctions::CreateDefaultChannelLayout ( int  channelsCount) const

Definition at line 386 of file FFmpegFunctions.cpp.

387{
388 return mPrivate->UtilFactories.CreateDefaultChannelLayout(
389 *this, channelsCount);
390}

References mPrivate.

◆ CreateEncoder() [1/2]

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

Definition at line 425 of file FFmpegFunctions.cpp.

426{
427 auto codec = avcodec_find_encoder(codecID);
428
429 if (codec == nullptr)
430 return {};
431
432 return mPrivate->CodecFactories.CreateAVCodecWrapper(codec);
433}
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 436 of file FFmpegFunctions.cpp.

437{
439
440 if (codec == nullptr)
441 return {};
442
443 return mPrivate->CodecFactories.CreateAVCodecWrapper(codec);
444}
wxString name
Definition: TagsEditor.cpp:166
AVCodec *(* avcodec_find_encoder_by_name)(const char *name)

References AVCodecFunctions::avcodec_find_encoder_by_name, mPrivate, and name.

◆ CreateLegacyChannelLayout()

std::unique_ptr< AVChannelLayoutWrapper > FFmpegFunctions::CreateLegacyChannelLayout ( uint64_t  layout,
int  channelsCount 
) const

Definition at line 393 of file FFmpegFunctions.cpp.

395{
396 return mPrivate->UtilFactories.CreateLegacyChannelLayout(
397 *this, layout, channelsCount);
398}

References mPrivate.

◆ CreateMemoryBuffer()

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

Definition at line 127 of file FFmpegFunctions.h.

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

◆ FillCodecsList()

void FFmpegFunctions::FillCodecsList ( )
private

Definition at line 481 of file FFmpegFunctions.cpp.

482{
483 mCodecs.clear();
484 mCodecPointers.clear();
485
486 if (av_codec_iterate != nullptr)
487 {
488 const AVCodec* currentCodec = nullptr;
489 void* i = 0;
490
491 while ((currentCodec = av_codec_iterate(&i)))
492 {
493 mCodecs.emplace_back(
494 mPrivate->CodecFactories.CreateAVCodecWrapper(currentCodec));
495 }
496 }
497 else if (av_codec_next != nullptr)
498 {
499 AVCodec* currentCodec = nullptr;
500
501 while ((currentCodec = av_codec_next(currentCodec)) != nullptr)
502 {
503 mCodecs.emplace_back(
504 mPrivate->CodecFactories.CreateAVCodecWrapper(currentCodec));
505 }
506 }
507
508 mCodecPointers.reserve(mCodecs.size());
509
510 for (const auto& codec : mCodecs)
511 mCodecPointers.emplace_back(codec.get());
512}
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 514 of file FFmpegFunctions.cpp.

515{
516 mOutputFormats.clear();
517 mOutputFormatPointers.clear();
518
519 if (av_muxer_iterate != nullptr)
520 {
521 const AVOutputFormat* currentFormat = nullptr;
522 void* i = 0;
523
524 while ((currentFormat = av_muxer_iterate(&i)))
525 {
526 mOutputFormats.emplace_back(
527 mPrivate->FormatFactories.CreateAVOutputFormatWrapper(
528 currentFormat));
529 }
530 }
531 else if (av_oformat_next != nullptr)
532 {
533 AVOutputFormat* currentFormat = nullptr;
534
535 while ((currentFormat = av_oformat_next(currentFormat)) != nullptr)
536 {
537 mOutputFormats.emplace_back(
538 mPrivate->FormatFactories.CreateAVOutputFormatWrapper(currentFormat));
539 }
540 }
541
543
544 for (const auto& format : mOutputFormats)
545 mOutputFormatPointers.emplace_back(format.get());
546}
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, anonymous_namespace{ExportPCM.cpp}::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 473 of file FFmpegFunctions.cpp.

474{
475 if (mCodecs.empty())
476 const_cast<FFmpegFunctions*>(this)->FillCodecsList();
477
478 return mCodecPointers;
479}

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 465 of file FFmpegFunctions.cpp.

466{
467 if (mOutputFormats.empty())
468 const_cast<FFmpegFunctions*>(this)->FillOuptutFormatsList();
469
471}

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 300 of file FFmpegFunctions.cpp.

301{
302 std::vector<wxString> paths;
303
304 const wxString userAVFormatFullPath = AVFormatPath.Read();
305
306 if (!userAVFormatFullPath.empty())
307 {
308 // For some directories, wxPathOnly will fail.
309 // For example, if path is `c:\ffmpeg-4.4`
310 // wxPathOnly will return `c:\`
311 if (wxDirExists(userAVFormatFullPath))
312 paths.emplace_back(userAVFormatFullPath);
313 else
314 paths.emplace_back(wxPathOnly(userAVFormatFullPath));
315 }
316
317 if (fromUserPathOnly)
318 return paths;
319
320#if defined(__WXMSW__)
321 wxRegKey reg(wxT("HKEY_LOCAL_MACHINE\\Software\\FFmpeg for Audacity"));
322 wxString path;
323
324 if (reg.Exists())
325 reg.QueryValue(wxT("InstallPath"), path);
326
327 if (!path.empty())
328 paths.emplace_back(path);
329
330#elif defined(__WXMAC__)
331 paths.emplace_back(wxT("/Library/Application Support/audacity/libs"));
332 paths.emplace_back(wxT("/usr/local/lib/audacity"));
333 // x86_64 Homebrew
334 paths.emplace_back(wxT("/usr/local/lib"));
335 // ARM64 Homebrew
336 paths.emplace_back(wxT("/opt/homebrew/lib"));
337#endif
338
339 return paths;
340}
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:207
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 376 of file FFmpegFunctions.cpp.

378{
379 AVOutputFormat* outputFormat =
380 av_guess_format(short_name, filename, mime_type);
381
382 return mPrivate->FormatFactories.CreateAVOutputFormatWrapper(outputFormat);
383}
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 264 of file FFmpegFunctions.cpp.

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

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

Referenced by anonymous_namespace{ExportFFmpeg.cpp}::ExportOptionsFFmpegCustomEditor::CheckFFmpeg(), ExportFFmpeg::CheckFileName(), ExportFFmpeg::ExportFFmpeg(), ExportFFmpegOptions::ExportFFmpegOptions(), FFmpegImportPlugin::FailureHint(), FFmpegExporter::FFmpegExporter(), FindFFmpegLibs(), GetFFmpegVersion(), FFmpegExportProcessor::Initialize(), LoadFFmpeg(), 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 139 of file FFmpegFunctions.h.

Referenced by FillCodecsList(), and GetCodecs().

◆ mCodecs

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

Definition at line 140 of file FFmpegFunctions.h.

Referenced by FillCodecsList(), and GetCodecs().

◆ mOutputFormatPointers

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

Definition at line 142 of file FFmpegFunctions.h.

Referenced by FillOuptutFormatsList(), and GetOutputFormats().

◆ mOutputFormats

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

Definition at line 143 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: