31 #ifndef OPAL_CODEC_OPALPLUGINMGR_H
32 #define OPAL_CODEC_OPALPLUGINMGR_H
38 #include <ptlib/object.h>
42 #include <ptlib/pluginmgr.h>
43 #include <ptlib/pfactory.h>
89 const char * rtpEncodingName,
98 const char * rtpEncodingName,
103 #if OPAL_T38_CAPABILITY
106 const char * fmtName,
107 const char * rtpEncodingName,
126 PluginCodec_GetCodecFunction getCodecFn);
134 const PString & _mediaFormat,
135 const PString & _baseName,
136 unsigned maxFramesPerPacket,
137 unsigned recommendedFramesPerPacket,
138 unsigned _pluginSubType);
167 int Call(
void * parm,
unsigned * parmLen,
void * context = NULL)
const
172 int Call(
void * parm,
unsigned parmLen,
void * context = NULL)
const
174 return Call(parm, &parmLen, context);
227 bool Transcode(
const void * from,
unsigned * fromLen,
void * to,
unsigned * toLen,
unsigned * flags)
const
252 const char * fmtName,
258 virtual PObject *
Clone()
const;
272 PBoolean
ConvertFrame(
const BYTE * input, PINDEX & consumed, BYTE * output, PINDEX & created);
303 const char * fmtName,
307 virtual PObject *
Clone()
const;
338 unsigned m_consecutiveIntraFrames;
353 const char * fmtName,
359 virtual PObject *
Clone()
const;
392 virtual int Encode(
const void * from,
429 template<
class TranscoderClass>
433 class Worker :
public OpalTranscoderFactory::WorkerBase
438 { OpalTranscoderFactory::Register(key,
this); }
485 virtual PObject *
Clone()
const;
495 #define OPAL_DECLARE_EMPTY_AUDIO_CAPABILITY(fmt, type) \
496 class fmt##_CapabilityRegisterer { \
498 fmt##_CapabilityRegisterer() \
499 { H323CapabilityFactory::Register(fmt, new H323AudioPluginCapability(fmt, fmt, type)); } \
502 #define OPAL_DEFINE_EMPTY_AUDIO_CAPABILITY(fmt) \
503 static fmt##_CapabilityRegisterer fmt##_CapabilityRegisterer_instance; \
517 virtual PObject *
Clone()
const;
518 virtual PBoolean
OnSendingPDU(H245_AudioCapability & cap,
unsigned packetSize)
const;
519 virtual PBoolean
OnReceivedPDU(
const H245_AudioCapability & cap,
unsigned & packetSize);
522 #define OPAL_DECLARE_EMPTY_G7231_CAPABILITY(fmt, annex) \
523 class fmt##_CapabilityRegisterer { \
525 fmt##_CapabilityRegisterer() \
526 { H323CapabilityFactory::Register(fmt, new H323PluginG7231Capability(fmt, annex)); } \
529 #define OPAL_DEFINE_EMPTY_G7231_CAPABILITY(fmt) \
530 static fmt##_CapabilityRegisterer fmt##_CapabilityRegisterer_instance; \
545 const unsigned char * data,
unsigned dataLen);
549 const unsigned char * data,
unsigned dataLen);
551 virtual PObject *
Clone()
const;
570 virtual PObject *
Clone()
const;
590 const unsigned char * data,
unsigned dataLen);
594 const unsigned char * data,
unsigned dataLen);
596 virtual PObject *
Clone()
const;
615 virtual PObject *
Clone()
const;
632 Comparison
Compare(
const PObject & obj)
const;
634 virtual PObject *
Clone()
const;
640 H245_VideoCapability & pdu
648 const H245_VideoCapability & pdu
664 Comparison
Compare(
const PObject & obj)
const;
666 virtual PObject *
Clone()
const;
672 H245_VideoCapability & pdu
680 const H245_VideoCapability & pdu
683 const PASN_Choice & subTypePDU,
684 const PString & mediaPacketization
691 #endif // OPAL_CODEC_OPALPLUGINMGR_H
const PluginCodec_Definition * codecDef
Definition: opalpluginmgr.h:234
void RegisterCapability(const PluginCodec_Definition *codecDefn)
Definition: opalpluginmgr.h:378
OpalPluginControl(const PluginCodec_Definition *def, const char *name)
virtual void OnShutdown()
bool isEncoder
Definition: opalpluginmgr.h:445
virtual PString GetFormatName() const
Definition: opalpluginmgr.h:561
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:328
virtual ~H323StaticPluginCodec()
Definition: opalpluginmgr.h:64
OpalPluginTranscoder(const PluginCodec_Definition *defn, bool isEnc)
Definition: opalpluginmgr.h:157
unsigned(* PluginCodec_GetAPIVersionFunction)()
Definition: opalplugin.h:388
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:61
virtual PBoolean OnSendingPDU(H245_VideoCapability &pdu) const
virtual PBoolean IsMatch(const PASN_Choice &subTypePDU, const PString &mediaPacketization) const
bool AddMediaFormat(OpalPluginCodecHandler *handler, const PTime &timeNow, const PluginCodec_Definition *codecDefn, const char *fmtName)
Definition: opalpluginmgr.h:454
virtual PBoolean OnSendingPDU(H245_VideoCapability &pdu) const
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:436
virtual PString GetFormatName() const
Definition: h323caps.h:89
DWORD m_lastSequenceNumber
Definition: opalpluginmgr.h:331
virtual PluginCodec_GetAPIVersionFunction Get_GetAPIFn()=0
bool UpdateOptions(const OpalMediaFormat &fmt)
virtual unsigned int GetBytesPerFrame() const =0
Definition: transcoders.h:459
Definition: opalpluginmgr.h:280
H323Capability * CreateCapability(const PString &_mediaFormat, const PString &_baseName, unsigned maxFramesPerPacket, unsigned recommendedFramesPerPacket, unsigned _pluginSubType)
virtual const struct PluginCodec_Definition * GetDefinition()
Definition: opalpluginmgr.h:382
bool isEncoder
Definition: opalpluginmgr.h:235
virtual unsigned int GetBitsPerSec() const =0
const PluginCodec_ControlDefn * controlDef
Definition: opalpluginmgr.h:182
DWORD m_lastDecodedTimestamp
Definition: opalpluginmgr.h:332
PFACTORY_GET_SINGLETON(PFactory< PPluginModuleManager >, OpalPluginCodecManager)
Definition: opalpluginmgr.h:510
Definition: opalpluginmgr.h:115
PFACTORY_LOAD(OpalPluginCodecManager)
virtual PObject * Clone() 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
OpalPluginControl setCodecOptions
Definition: opalpluginmgr.h:238
const char * fnName
Definition: opalpluginmgr.h:181
H323CodecPluginGenericAudioCapability(const PluginCodec_Definition *codecDefn, const OpalMediaFormat &mediaFormat, const PluginCodec_H323GenericCodecData *data)
virtual OpalTranscoder * Create(const OpalTranscoderKey &) const
Definition: opalpluginmgr.h:441
Definition: opalpluginmgr.h:476
Definition: opalpluginmgr.h:265
void * context
Definition: opalpluginmgr.h:236
H323AudioPluginCapability(const PluginCodec_Definition *codecDefn, const OpalMediaFormat &mediaFormat, unsigned pluginSubType)
virtual void RegisterVideoTranscoder(const PString &src, const PString &dst, const PluginCodec_Definition *codec, bool v)
Comparison Compare(const PObject &obj) const
std::pair< PString, PString > OpalTranscoderKey
Definition: transcoders.h:112
Definition: opalpluginmgr.h:78
virtual unsigned GetSubType() const
Definition: h323caps.h:1092
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)
~OpalPluginCodecManager()
PObject::Comparison(* CompareFuncType)(struct PluginCodec_H323NonStandardCodecData *)
Definition: h323caps.h:377
virtual PObject * Clone() const
virtual PString GetSDPFormat() const =0
PString m_capabilityFormatName
Definition: opalpluginmgr.h:466
H323PluginG7231Capability(const PluginCodec_Definition *codecDefn, const OpalMediaFormat &mediaFormat)
virtual PObject * Clone() const
OpalPluginFramedAudioTranscoder(const PluginCodec_Definition *codecDefn, bool isEncoder)
virtual PString GetFormatName() const
int(* control)(const struct PluginCodec_Definition *codec, void *context, const char *name, void *parm, unsigned *parmLen)
Definition: opalplugin.h:239
virtual PluginCodec_GetCodecFunction Get_GetCodecFn()=0
Definition: opalplugin.h:237
virtual OpalMediaFormatInternal * OnCreateVideoFormat(OpalPluginCodecManager &mgr, const PluginCodec_Definition *codecDefn, const char *fmtName, const char *rtpEncodingName, time_t timeStamp)
bool Exists() const
Definition: opalpluginmgr.h:162
H323CodecPluginGenericVideoCapability(const PluginCodec_Definition *codecDefn, const OpalMediaFormat &mediaFormat, const PluginCodec_H323GenericCodecData *data)
virtual unsigned int GetFrameTime() const =0
virtual PString GetFormatName() const
bool DecodeFrame(const RTP_DataFrame &src, RTP_DataFrameList &dstList)
int Call(void *parm, unsigned parmLen, void *context=NULL) const
Definition: opalpluginmgr.h:172
OpalPluginControl getOutputDataSizeControl
Definition: opalpluginmgr.h:239
const PluginCodec_Definition * codecDefn
Definition: opalpluginmgr.h:444
virtual int Encode(const void *from, unsigned *fromLen, void *to, unsigned *toLen, unsigned int *flag)=0
const PluginCodec_Definition * m_codecDefn
Definition: opalpluginmgr.h:465
virtual bool AcceptComfortNoise() const
Definition: opalpluginmgr.h:287
Definition: transcoders.h:137
bool m_badMarkers
Definition: opalpluginmgr.h:334
virtual PBoolean ConvertSilentFrame(BYTE *buffer)
Definition: opalpluginmgr.h:314
OpalPluginCodecManager(PPluginManager *pluginMgr=NULL)
Definition: opalpluginmgr.h:433
virtual unsigned GetSubType() const
virtual BYTE GetRTPPayload() const =0
virtual PBoolean OnReceivedPDU(const H245_AudioCapability &cap, unsigned &packetSize)
Definition: opalpluginmgr.h:606
PBoolean ExecuteCommand(const OpalMediaCommand &command)
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:370
CompareFuncType compareFunc
Definition: h323caps.h:468
H323CodecPluginNonStandardVideoCapability(const PluginCodec_Definition *codecDefn, const OpalMediaFormat &mediaFormat, H323NonStandardCapabilityInfo::CompareFuncType compareFunc, const unsigned char *data, unsigned dataLen)
Definition: h323caps.h:951
virtual bool AcceptComfortNoise() const
Definition: opalpluginmgr.h:274
Comparison Compare(const PObject &obj) const
bool Transcode(const void *from, unsigned *fromLen, void *to, unsigned *toLen, unsigned *flags) const
Definition: opalpluginmgr.h:227
PList< OpalMediaFormat > mediaFormatsOnHeap
Definition: opalpluginmgr.h:143
virtual int ConvertOne(int from) const
PFactory< OpalTranscoder, OpalTranscoderKey > OpalTranscoderFactory
Definition: transcoders.h:113
RTP_DataFrame * m_bufferRTP
Definition: opalpluginmgr.h:330
const PluginCodec_Definition * codecDef
Definition: opalpluginmgr.h:180
bool comfortNoise
Definition: opalpluginmgr.h:276
Definition: opalpluginmgr.h:430
Definition: opalpluginmgr.h:582
DWORD m_lastMarkerTimestamp
Definition: opalpluginmgr.h:333
Definition: opalpluginmgr.h:219
Definition: h323caps.h:738
H323PluginCapabilityInfo(const PluginCodec_Definition *codecDefn, const OpalMediaFormat &mediaFormat)
virtual PBoolean OnReceivedPDU(const H245_VideoCapability &pdu)
PFactory< H323StaticPluginCodec > H323StaticPluginCodecFactory
Definition: opalpluginmgr.h:69
const char * GetName() const
Definition: opalpluginmgr.h:177
Definition: opalpluginmgr.h:625
bool ExecuteCommand(const OpalMediaCommand &command)
virtual PString GetOutputFormat() const =0
void OnLoadPlugin(PDynaLink &dll, INT code)
Definition: h323caps.h:1210
~OpalPluginVideoTranscoder()
Definition: opalpluginmgr.h:537
OpalPluginStreamedAudioTranscoder(const PluginCodec_Definition *codec, bool isEncoder)
void RegisterCodecPlugins(unsigned int count, const PluginCodec_Definition *codecList, OpalPluginCodecHandler *handler)
Definition: opalplugin.h:699
OpalPluginVideoTranscoder(const PluginCodec_Definition *codec, bool isEncoder)
PSimpleTimer m_videoPictureLossTimer
Definition: opalpluginmgr.h:335
int(* codecFunction)(const struct PluginCodec_Definition *codec, void *context, const void *from, unsigned *fromLen, void *to, unsigned *toLen, unsigned int *flag)
Definition: opalplugin.h:371
PBoolean ExecuteCommand(const OpalMediaCommand &command)
H323H263PluginCapability(const PluginCodec_Definition *codecDefn, const OpalMediaFormat &mediaFormat)
bool UpdateMediaFormats(const OpalMediaFormat &input, const OpalMediaFormat &output)
virtual PObject * Clone() const
bool UpdateMediaFormats(const OpalMediaFormat &input, const OpalMediaFormat &output)
bool UpdateMediaFormats(const OpalMediaFormat &input, const OpalMediaFormat &output)
virtual PObject * Clone() const
Definition: h323caps.h:554
virtual unsigned GetSubType() const
virtual PObject * Clone() const
void UnregisterCodecPlugins(unsigned int count, const PluginCodec_Definition *codecList, OpalPluginCodecHandler *handler)
virtual PString GetFormatName() const
virtual PString GetFormatName() const
bool comfortNoise
Definition: opalpluginmgr.h:290
virtual PBoolean OnReceivedPDU(const H245_VideoCapability &pdu)
static int GetChannelCount(const PluginCodec_Definition *codeDefn)
virtual PString GetFormatName() const
Definition: opalpluginmgr.h:657
Definition: h323caps.h:857
bool EncodeFrames(const RTP_DataFrame &src, RTP_DataFrameList &dstList)
unsigned pluginSubType
Definition: opalpluginmgr.h:492
Definition: vidcodec.h:72
int Call(void *parm, unsigned *parmLen, void *context=NULL) const
Definition: opalpluginmgr.h:167
const PString & GetFormatName() const
Definition: opalpluginmgr.h:461