1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
|
/**********************************************************************
Audacity: A Digital Audio Editor
FFmpegAPIResolver.cpp
Dmitry Vedenko
**********************************************************************/
#include "FFmpegAPIResolver.h"
FFmpegAPIResolver& FFmpegAPIResolver::Get()
{
static FFmpegAPIResolver instance;
return instance;
}
bool FFmpegAPIResolver::GetAVCodecIDResolver(int avCodecVersion, AVCodecIDResolver& resolver) const
{
const auto it = mAVCodecIDResolvers.find(avCodecVersion);
if (it == mAVCodecIDResolvers.end())
return false;
resolver = it->second;
return true;
}
bool FFmpegAPIResolver::GetAVCodecFactories(int avCodecVersion, AVCodecFactories& factories) const
{
const auto it = mAVCodecFactories.find(avCodecVersion);
if (it == mAVCodecFactories.end())
return false;
factories = it->second;
return true;
}
bool FFmpegAPIResolver::GetAVFormatFactories(int avFormatVersion, AVFormatFactories& factories) const
{
const auto it = mAVFormatFactories.find(avFormatVersion);
if (it == mAVFormatFactories.end())
return false;
factories = it->second;
return true;
}
bool FFmpegAPIResolver::GetAVUtilFactories(int avUtilVersion, AVUtilFactories& factories) const
{
const auto it = mAVUtilFactories.find(avUtilVersion);
if (it == mAVUtilFactories.end())
return false;
factories = it->second;
return true;
}
void FFmpegAPIResolver::AddAVCodecIDResolver(int avCodecVersion, const AVCodecIDResolver& resolver)
{
mAVCodecIDResolvers.emplace(avCodecVersion, resolver);
}
void FFmpegAPIResolver::AddAVCodecFactories(int avCodecVersion, const AVCodecFactories& factories)
{
mAVCodecFactories.emplace(avCodecVersion, factories);
}
void FFmpegAPIResolver::AddAVFormatFactories(int avFormatVersion, const AVFormatFactories& factories)
{
mAVFormatFactories.emplace(avFormatVersion, factories);
}
void FFmpegAPIResolver::AddAVUtilFactories(int avUtilVersion, const AVUtilFactories& factories)
{
mAVUtilFactories.emplace(avUtilVersion, factories);
}
std::vector<int> FFmpegAPIResolver::GetSuportedAVFormatVersions() const
{
std::vector<int> result;
result.reserve(mAVFormatFactories.size());
for (auto it = mAVFormatFactories.rbegin(), end = mAVFormatFactories.rend();
it != end; ++it)
{
result.emplace_back(it->first);
}
return result;
}
|