- don't assign any dynamic payload types by default

This commit is contained in:
Dmytro Bogovych 2024-12-16 10:13:52 +03:00
parent 4d7ca3e4f3
commit 0e044faf16
2 changed files with 30 additions and 12 deletions

View File

@ -62,6 +62,24 @@ std::string CodecList::Settings::toString() const
return oss.str(); return oss.str();
} }
void CodecList::Settings::clear()
{
// Remove all dynamic payload type assignments
mEvsSpec.clear();
mOpusSpec.clear();
mAmrNbOctetPayloadType.clear();
mAmrNbPayloadType.clear();
mAmrWbOctetPayloadType.clear();
mAmrWbPayloadType.clear();
mIsac16KPayloadType = -1;
mIsac32KPayloadType = -1;
mIlbc20PayloadType = -1;
mIlbc30PayloadType = -1;
mGsmEfrPayloadType = -1;
mGsmFrPayloadType = -1;
mGsmHrPayloadType = -1;
}
bool CodecList::Settings::EvsSpec::isValid() const bool CodecList::Settings::EvsSpec::isValid() const
{ {
return mPayloadType >= 96 && mPayloadType <= 127; return mPayloadType >= 96 && mPayloadType <= 127;
@ -297,7 +315,6 @@ void CodecList::fillCodecMap(CodecMap& cm)
} }
} }
CodecListPriority::CodecListPriority() CodecListPriority::CodecListPriority()
{ {

View File

@ -31,22 +31,22 @@ public:
bool mSkipDecode = false; bool mSkipDecode = false;
// AMR payload types // AMR payload types
std::set<int64_t> mAmrWbPayloadType = { MT_AMRWB_PAYLOADTYPE }; std::set<int64_t> mAmrWbPayloadType = { };
std::set<int64_t> mAmrNbPayloadType = { MT_AMRNB_PAYLOADTYPE }; std::set<int64_t> mAmrNbPayloadType = { };
std::set<int64_t> mAmrWbOctetPayloadType = { MT_AMRWB_OCTET_PAYLOADTYPE }; std::set<int64_t> mAmrWbOctetPayloadType = { };
std::set<int64_t> mAmrNbOctetPayloadType = { MT_AMRNB_OCTET_PAYLOADTYPE }; std::set<int64_t> mAmrNbOctetPayloadType = { };
bool isAmrWb(int ptype) const { return mAmrWbOctetPayloadType.count(ptype) > 0 || mAmrWbPayloadType.count(ptype) > 0; } bool isAmrWb(int ptype) const { return mAmrWbOctetPayloadType.count(ptype) > 0 || mAmrWbPayloadType.count(ptype) > 0; }
bool isAmrNb(int ptype) const { return mAmrNbOctetPayloadType.count(ptype) > 0 || mAmrNbPayloadType.count(ptype) > 0; } bool isAmrNb(int ptype) const { return mAmrNbOctetPayloadType.count(ptype) > 0 || mAmrNbPayloadType.count(ptype) > 0; }
int mIsac16KPayloadType = MT_ISAC16K_PAYLOADTYPE; int mIsac16KPayloadType = -1;
int mIsac32KPayloadType = MT_ISAC32K_PAYLOADTYPE; int mIsac32KPayloadType = -1;
int mIlbc20PayloadType = MT_ILBC20_PAYLOADTYPE; int mIlbc20PayloadType = -1;
int mIlbc30PayloadType = MT_ILBC30_PAYLOADTYPE; int mIlbc30PayloadType = -1;
int mGsmFrPayloadType = 3; // GSM is codec with fixed payload type. But sometimes it has to be overwritten. int mGsmFrPayloadType = 3; // GSM is codec with fixed payload type. But sometimes it has to be overwritten.
int mGsmFrPayloadLength = 33; // Expected GSM payload length int mGsmFrPayloadLength = 33; // Expected GSM payload length
int mGsmHrPayloadType = MT_GSMHR_PAYLOADTYPE; int mGsmHrPayloadType = -1;
int mGsmEfrPayloadType = MT_GSMEFR_PAYLOADTYPE; int mGsmEfrPayloadType = -1;
struct EvsSpec struct EvsSpec
{ {
@ -98,6 +98,7 @@ public:
// Textual representation - used in logging // Textual representation - used in logging
std::string toString() const; std::string toString() const;
void clear();
static Settings DefaultSettings; static Settings DefaultSettings;
@ -115,7 +116,7 @@ public:
Codec::Factory& codecAt(int index) const; Codec::Factory& codecAt(int index) const;
int findCodec(const std::string& name) const; int findCodec(const std::string& name) const;
void fillCodecMap(CodecMap& cm); void fillCodecMap(CodecMap& cm);
void clear();
protected: protected:
typedef std::vector<Codec::Factory*> FactoryList; typedef std::vector<Codec::Factory*> FactoryList;