27 #ifndef OPAL_CODEC_OPALPLUGINMGR_H
28 #define OPAL_CODEC_OPALPLUGINMGR_H
34 #include <ptlib/object.h>
38 #include <ptlib/pluginmgr.h>
39 #include <ptlib/pfactory.h>
85 const char * rtpEncodingName,
95 const char * rtpEncodingName,
103 const char * fmtName,
104 const char * rtpEncodingName,
124 PluginCodec_GetCodecFunction getCodecFn);
132 const PString & _mediaFormat,
133 const PString & _baseName,
134 unsigned maxFramesPerPacket,
135 unsigned recommendedFramesPerPacket,
136 unsigned _pluginSubType);
145 const PTime & timeNow,
147 const char * fmtName,
168 int Call(
void * parm,
unsigned * parmLen,
void * context = NULL)
const
173 int Call(
void * parm,
unsigned parmLen,
void * context = NULL)
const
175 return Call(parm, &parmLen, context);
216 bool Transcode(
const void * from,
unsigned * fromLen,
void * to,
unsigned * toLen,
unsigned * flags)
const
224 bool SetCodecOption(
const PString & optionName,
const PString & optionValue);
237 bool m_firstLoggedUpdateOptions[2];
251 const char * fmtName,
257 virtual PObject *
Clone()
const;
272 PBoolean
ConvertFrame(
const BYTE * input, PINDEX & consumed, BYTE * output, PINDEX & created);
278 const BYTE * instance,
unsigned instanceLen);
295 const BYTE * instance,
unsigned instanceLen);
309 const char * fmtName,
313 virtual PObject *
Clone()
const;
338 const BYTE * instance,
unsigned instanceLen);
363 unsigned m_consecutiveIntraFrames;
378 const char * fmtName,
384 virtual PObject *
Clone()
const;
417 virtual int Encode(
const void * from,
454 template<
class TranscoderClass>
458 class Worker :
public OpalTranscoderFactory::WorkerBase
484 if (!OpalTranscoderFactory::Register(key, worker,
true)) {
486 PTRACE(3,
"OpalTranscoderFactory worker for " << key.first <<
'/' << key.second <<
" already registered.");
527 virtual PObject *
Clone()
const;
550 virtual PObject *
Clone()
const;
551 virtual PBoolean
OnSendingPDU(H245_AudioCapability & cap,
unsigned packetSize)
const;
552 virtual PBoolean
OnReceivedPDU(
const H245_AudioCapability & cap,
unsigned & packetSize);
569 const unsigned char * data,
unsigned dataLen);
573 const unsigned char * data,
unsigned dataLen);
575 virtual PObject *
Clone()
const;
594 virtual PObject *
Clone()
const;
614 const unsigned char * data,
unsigned dataLen);
618 const unsigned char * data,
unsigned dataLen);
620 virtual PObject *
Clone()
const;
639 virtual PObject *
Clone()
const;
655 Comparison
Compare(
const PObject & obj)
const;
657 virtual PObject *
Clone()
const;
663 H245_VideoCapability & pdu
671 const H245_VideoCapability & pdu
683 virtual PObject *
Clone()
const;
697 Comparison
Compare(
const PObject & obj)
const;
699 virtual PObject *
Clone()
const;
705 H245_VideoCapability & pdu
713 const H245_VideoCapability & pdu
716 const PASN_Object & subTypePDU,
717 const PString & mediaPacketization
739 #endif // OPAL_CODEC_OPALPLUGINMGR_H
const PluginCodec_Definition * codecDef
Definition: opalpluginmgr.h:226
void RegisterCapability(const PluginCodec_Definition *codecDefn)
Definition: opalpluginmgr.h:403
OpalPluginControl(const PluginCodec_Definition *def, const char *name)
Definition: opalpluginmgr.h:585
void RegisterStaticCodec(const H323StaticPluginCodecFactory::Key_T &name, PluginCodec_GetAPIVersionFunction getApiVerFn, PluginCodec_GetCodecFunction getCodecFn)
virtual PBoolean OnSendingPDU(H245_AudioCapability &cap, unsigned packetSize) const
Definition: opalplugin.h:339
virtual ~H323StaticPluginCodec()
Definition: opalpluginmgr.h:60
Definition: opalpluginmgr.h:348
virtual struct PluginCodec_Definition * GetDefinition()
Definition: opalpluginmgr.h:407
OpalPluginTranscoder(const PluginCodec_Definition *defn, bool isEnc)
Definition: opalpluginmgr.h:158
bool UpdateOptions(OpalMediaFormat &fmt)
PBoolean ConvertFrame(const BYTE *input, PINDEX &consumed, BYTE *output, PINDEX &created)
PBoolean ConvertFrames(const RTP_DataFrame &src, RTP_DataFrameList &dstList)
virtual unsigned int GetSamplesPerFrame() const =0
Definition: opalpluginmgr.h:57
Definition: opalpluginmgr.h:355
PObject::Comparison(* CompareFuncType)(struct PluginCodec_H323NonStandardCodecData *)
Definition: h323caps.h:418
Definition: opalpluginmgr.h:496
RTP_Timestamp m_lastPacketTimestamp
Definition: opalpluginmgr.h:359
virtual unsigned int GetMaxFramesPerPacket() const =0
virtual unsigned int GetSampleRate() const =0
Worker(const OpalTranscoderKey &key, const PluginCodec_Definition *codec, bool enc)
Definition: opalpluginmgr.h:461
virtual PString GetFormatName() const
Definition: h323caps.h:95
static void Register(const OpalTranscoderKey &key, const PluginCodec_Definition *codec, bool enc)
Definition: opalpluginmgr.h:481
virtual PluginCodec_GetAPIVersionFunction Get_GetAPIFn()=0
OpalTranscoderKey m_key
Definition: opalpluginmgr.h:475
virtual unsigned int GetBytesPerFrame() const =0
Definition: opalpluginmgr.h:349
unsigned m_totalFrames
Definition: opalpluginmgr.h:344
virtual PBoolean OnReceivedPDU(const H245_VideoCapability &pdu)
Definition: transcoders.h:469
Definition: opalpluginmgr.h:283
H323Capability * CreateCapability(const PString &_mediaFormat, const PString &_baseName, unsigned maxFramesPerPacket, unsigned recommendedFramesPerPacket, unsigned _pluginSubType)
Definition: opalpluginmgr.h:692
Comparison Compare(const PObject &obj) const
bool isEncoder
Definition: opalpluginmgr.h:227
virtual unsigned int GetBitsPerSec() const =0
const PluginCodec_ControlDefn * controlDef
Definition: opalpluginmgr.h:183
OpalPluginControl getCodecStatistics
Definition: opalpluginmgr.h:235
int(* codecFunction)(const struct PluginCodec_Definition *codec, void *context, const void *from, unsigned *fromLen, void *to, unsigned *toLen, unsigned int *flag)
Definition: opalplugin.h:382
PFACTORY_GET_SINGLETON(PFactory< PPluginModuleManager >, OpalPluginCodecManager)
OpalPluginControl getActiveOptionsControl
Definition: opalpluginmgr.h:232
Definition: opalpluginmgr.h:543
Definition: opalpluginmgr.h:113
OpalPluginVideoTranscoder(const OpalTranscoderKey &key, const PluginCodec_Definition *codec, bool isEncoder)
PFACTORY_LOAD(OpalPluginCodecManager)
virtual bool OnCreated(const OpalMediaFormat &srcFormat, const OpalMediaFormat &destFormat, const BYTE *instance, unsigned instanceLen)
virtual PObject * Clone() const
virtual unsigned GetSubType() const
virtual PObject * Clone() const
virtual PString GetInputFormat() const =0
PBoolean ExecuteCommand(const OpalMediaCommand &command)
virtual unsigned int GetRecommendedFramesPerPacket() const =0
virtual PObject * Clone() const
const char * fnName
Definition: opalpluginmgr.h:182
Definition: opalpluginmgr.h:352
H323CodecPluginGenericAudioCapability(const PluginCodec_Definition *codecDefn, const OpalMediaFormat &mediaFormat, const PluginCodec_H323GenericCodecData *data)
virtual OpalTranscoder * Create(const OpalTranscoderKey &) const
Definition: opalpluginmgr.h:470
virtual void GetStatistics(OpalMediaStatistics &statistics) const
void OnLoadPlugin(PDynaLink &dll, P_INT_PTR code)
virtual PBoolean OnSendingPDU(H245_VideoCapability &pdu) const
Definition: opalpluginmgr.h:350
Definition: opalpluginmgr.h:518
Definition: opalpluginmgr.h:649
Definition: opalpluginmgr.h:264
void * context
Definition: opalpluginmgr.h:228
H323AudioPluginCapability(const PluginCodec_Definition *codecDefn, const OpalMediaFormat &mediaFormat, unsigned pluginSubType)
OpalPluginControl freeOptionsControl
Definition: opalpluginmgr.h:233
virtual PBoolean ConvertSilentFrame(BYTE *buffer, PINDEX &created)
std::pair< PString, PString > OpalTranscoderKey
Definition: transcoders.h:109
Definition: opalpluginmgr.h:74
virtual unsigned GetSubType() const
Definition: h323caps.h:1160
RTP_Timestamp m_currentFrameTimestamp
Definition: opalpluginmgr.h:358
bool DecodeFrames(const RTP_DataFrame &src, RTP_DataFrameList &dstList)
virtual OpalMediaFormatInternal * OnCreateAudioFormat(OpalPluginCodecManager &mgr, const PluginCodec_Definition *codecDefn, const char *fmtName, const char *rtpEncodingName, unsigned frameTime, unsigned timeUnits, time_t timeStamp)
OpalPluginFramedAudioTranscoder(const OpalTranscoderKey &key, const PluginCodec_Definition *codecDefn, bool isEncoder)
~OpalPluginCodecManager()
virtual PObject * Clone() const
bool AddMediaFormat(OpalPluginCodecHandler *handler, const PTime &timeNow, const PluginCodec_Definition *codecDefn, const char *fmtName, OpalMediaFormat &mediaFormat)
virtual PString GetSDPFormat() const =0
PString m_capabilityFormatName
Definition: opalpluginmgr.h:508
Definition: opalpluginmgr.h:351
OpalPluginControl setCodecOptionsControl
Definition: opalpluginmgr.h:231
H323PluginG7231Capability(const PluginCodec_Definition *codecDefn, const OpalMediaFormat &mediaFormat)
virtual PObject * Clone() const
virtual PBoolean OnSendingPDU(H245_VideoCapability &pdu) const
virtual PObject * Clone() const
#define PTRACE(level, section, args)
Definition: opalplugin.hpp:84
virtual bool OnCreated(const OpalMediaFormat &srcFormat, const OpalMediaFormat &destFormat, const BYTE *instance, unsigned instanceLen)
virtual PString GetFormatName() const
virtual PluginCodec_GetCodecFunction Get_GetCodecFn()=0
Definition: opalplugin.h:244
virtual OpalMediaFormatInternal * OnCreateVideoFormat(OpalPluginCodecManager &mgr, const PluginCodec_Definition *codecDefn, const char *fmtName, const char *rtpEncodingName, time_t timeStamp)
bool Exists() const
Definition: opalpluginmgr.h:163
unsigned m_maxPayloadSize
Definition: opalpluginmgr.h:229
H323CodecPluginGenericVideoCapability(const PluginCodec_Definition *codecDefn, const OpalMediaFormat &mediaFormat, const PluginCodec_H323GenericCodecData *data)
virtual unsigned int GetFrameTime() const =0
PString m_variant
Definition: opalpluginmgr.h:721
const PluginCodec_Definition * m_codecDefn
Definition: opalpluginmgr.h:476
bool DecodeFrame(const RTP_DataFrame &src, RTP_DataFrameList &dstList)
int Call(void *parm, unsigned parmLen, void *context=NULL) const
Definition: opalpluginmgr.h:173
OpalPluginControl getOutputDataSizeControl
Definition: opalpluginmgr.h:234
virtual int Encode(const void *from, unsigned *fromLen, void *to, unsigned *toLen, unsigned int *flag)=0
const PluginCodec_Definition * m_codecDefn
Definition: opalpluginmgr.h:507
virtual bool AcceptComfortNoise() const
Definition: opalpluginmgr.h:290
Definition: transcoders.h:134
virtual PString GetFormatName() const
virtual void RegisterFaxTranscoder(const PString &src, const PString &dst, const PluginCodec_Definition *codec, bool isEnc)
Definition: opalpluginmgr.h:320
OpalPluginCodecManager(PPluginManager *pluginMgr=NULL)
Definition: opalpluginmgr.h:458
virtual BYTE GetRTPPayload() const =0
virtual void RegisterVideoTranscoder(const PString &src, const PString &dst, const PluginCodec_Definition *codec, bool isEnc)
virtual PBoolean OnReceivedPDU(const H245_AudioCapability &cap, unsigned &packetSize)
Definition: opalpluginmgr.h:630
PBoolean ExecuteCommand(const OpalMediaCommand &command)
H323H263Capability(const PString &variant)
H323H261PluginCapability(const PluginCodec_Definition *codecDefn, const OpalMediaFormat &mediaFormat)
H323CodecPluginNonStandardAudioCapability(const PluginCodec_Definition *codecDefn, const OpalMediaFormat &mediaFormat, H323NonStandardCapabilityInfo::CompareFuncType compareFunc, const unsigned char *data, unsigned dataLen)
Definition: transcoders.h:372
virtual unsigned GetSubType() const
bool m_isEncoder
Definition: opalpluginmgr.h:477
CompareFuncType compareFunc
Definition: h323caps.h:509
H323CodecPluginNonStandardVideoCapability(const PluginCodec_Definition *codecDefn, const OpalMediaFormat &mediaFormat, H323NonStandardCapabilityInfo::CompareFuncType compareFunc, const unsigned char *data, unsigned dataLen)
Definition: h323caps.h:1019
virtual bool AcceptComfortNoise() const
Definition: opalpluginmgr.h:274
virtual PString GetFormatName() const
uint32_t RTP_Timestamp
Definition: rtp.h:44
bool Transcode(const void *from, unsigned *fromLen, void *to, unsigned *toLen, unsigned *flags) const
Definition: opalpluginmgr.h:216
unsigned(* PluginCodec_GetAPIVersionFunction)()
Definition: opalplugin.h:399
virtual int ConvertOne(int from) const
PFactory< OpalTranscoder, OpalTranscoderKey > OpalTranscoderFactory
Definition: transcoders.h:110
RTP_DataFrame * m_bufferRTP
Definition: opalpluginmgr.h:343
const PluginCodec_Definition * codecDef
Definition: opalpluginmgr.h:181
bool comfortNoise
Definition: opalpluginmgr.h:279
Definition: opalpluginmgr.h:455
virtual PObject * Clone() const
virtual PBoolean IsMatch(const PASN_Object &subTypePDU, const PString &mediaPacketization) const
Definition: opalpluginmgr.h:606
Definition: opalpluginmgr.h:208
Definition: h323caps.h:785
H323PluginCapabilityInfo(const PluginCodec_Definition *codecDefn, const OpalMediaFormat &mediaFormat)
bool SetCodecOption(const PString &optionName, const PString &optionValue)
PFactory< H323StaticPluginCodec > H323StaticPluginCodecFactory
Definition: opalpluginmgr.h:65
const char * GetName() const
Definition: opalpluginmgr.h:178
Definition: opalpluginmgr.h:676
bool ExecuteCommand(const OpalMediaCommand &command)
RTP_Timestamp m_lastMarkerTimestamp
Definition: opalpluginmgr.h:360
bool m_lastPacketMarker
Definition: opalpluginmgr.h:357
virtual PString GetOutputFormat() const =0
Definition: h323caps.h:1278
~OpalPluginVideoTranscoder()
Definition: opalpluginmgr.h:561
void RegisterCodecPlugins(unsigned int count, const PluginCodec_Definition *codecList, OpalPluginCodecHandler *handler)
Definition: opalplugin.h:746
virtual void RegisterAudioTranscoder(const PString &src, const PString &dst, const PluginCodec_Definition *codec, bool isEnc)
PBoolean ExecuteCommand(const OpalMediaCommand &command)
H323H263PluginCapability(const PluginCodec_Definition *codecDefn, const OpalMediaFormat &mediaFormat)
Definition: opalpluginmgr.h:729
bool UpdateMediaFormats(const OpalMediaFormat &input, const OpalMediaFormat &output)
virtual OpalMediaFormatInternal * OnCreateFaxFormat(OpalPluginCodecManager &mgr, const PluginCodec_Definition *codecDefn, const char *fmtName, const char *rtpEncodingName, unsigned frameTime, unsigned timeUnits, time_t timeStamp)
void GetStatistics(OpalMediaStatistics &statistics) const
virtual PObject * Clone() const
bool UpdateMediaFormats(const OpalMediaFormat &input, const OpalMediaFormat &output)
Definition: opalpluginmgr.h:354
bool UpdateMediaFormats(const OpalMediaFormat &input, const OpalMediaFormat &output)
Definition: h323caps.h:601
virtual PObject * Clone() const
void UnregisterCodecPlugins(unsigned int count, const PluginCodec_Definition *codecList, OpalPluginCodecHandler *handler)
OpalPluginStreamedAudioTranscoder(const OpalTranscoderKey &key, const PluginCodec_Definition *codec, bool isEncoder)
Definition: opalpluginmgr.h:353
virtual PString GetFormatName() const
virtual PString GetFormatName() const
virtual PBoolean OnReceivedPDU(const H245_VideoCapability &pdu)
bool comfortNoise
Definition: opalpluginmgr.h:296
static int GetChannelCount(const PluginCodec_Definition *codeDefn)
enum OpalPluginVideoTranscoder::@6 m_markersState
int(* control)(const struct PluginCodec_Definition *codec, void *context, const char *name, void *parm, unsigned *parmLen)
Definition: opalplugin.h:246
virtual PString GetFormatName() const
Definition: opalpluginmgr.h:724
Definition: h323caps.h:904
bool EncodeFrames(const RTP_DataFrame &src, RTP_DataFrameList &dstList)
unsigned pluginSubType
Definition: opalpluginmgr.h:534
virtual bool OnCreated(const OpalMediaFormat &srcFormat, const OpalMediaFormat &destFormat, const BYTE *instance, unsigned instanceLen)
Definition: vidcodec.h:142
Comparison Compare(const PObject &obj) const
int Call(void *parm, unsigned *parmLen, void *context=NULL) const
Definition: opalpluginmgr.h:168
const PString & GetFormatName() const
Definition: opalpluginmgr.h:503