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,
100 virtual void RegisterVideoTranscoder(
const PString & src,
const PString & dst,
const PluginCodec_Definition * codec,
bool v);
103 #if OPAL_T38_CAPABILITY 106 const char * fmtName,
107 const char * rtpEncodingName,
124 void RegisterStaticCodec(
const H323StaticPluginCodecFactory::Key_T & name,
126 PluginCodec_GetCodecFunction getCodecFn);
128 void OnLoadPlugin(PDynaLink & dll, INT code);
130 virtual void OnShutdown();
134 const PString & _mediaFormat,
135 const PString & _baseName,
136 unsigned maxFramesPerPacket,
137 unsigned recommendedFramesPerPacket,
138 unsigned _pluginSubType);
164 return controlDef != NULL;
167 int Call(
void * parm,
unsigned * parmLen,
void * context = NULL)
const 169 return controlDef != NULL ? (*controlDef->control)(codecDef, context, fnName, parm, parmLen) : -1;
172 int Call(
void * parm,
unsigned parmLen,
void * context = NULL)
const 174 return Call(parm, &parmLen, context);
177 const char *
GetName()
const {
return fnName; }
195 void SetOldStyleOption(
OpalMediaFormatInternal & format,
const PString & _key,
const PString & _val,
const PString & type);
196 bool IsValidForProtocol(
const PString & _protocol)
const;
227 bool Transcode(
const void * from,
unsigned * fromLen,
void * to,
unsigned * toLen,
unsigned * flags)
const 229 return codecDef != NULL && codecDef->codecFunction != NULL &&
230 (codecDef->codecFunction)(codecDef, context, from, fromLen, to, toLen, flags) != 0;
252 const char * fmtName,
253 const char * rtpEncodingName,
258 virtual PObject * Clone()
const;
259 virtual bool IsValidForProtocol(
const PString & protocol)
const;
260 virtual bool ToNormalisedOptions();
261 virtual bool ToCustomisedOptions();
272 PBoolean ConvertFrame(
const BYTE * input, PINDEX & consumed, BYTE * output, PINDEX & created);
273 virtual PBoolean ConvertSilentFrame(BYTE * buffer);
288 virtual int ConvertOne(
int from)
const;
303 const char * fmtName,
304 const char * rtpEncodingName,
307 virtual PObject * Clone()
const;
308 virtual bool IsValidForProtocol(
const PString & protocol)
const;
309 virtual bool ToNormalisedOptions();
310 virtual bool ToCustomisedOptions();
321 PBoolean ConvertFrames(
const RTP_DataFrame & src, RTP_DataFrameList & dstList);
326 bool EncodeFrames(
const RTP_DataFrame & src, RTP_DataFrameList & dstList);
327 bool DecodeFrames(
const RTP_DataFrame & src, RTP_DataFrameList & dstList);
328 bool DecodeFrame(
const RTP_DataFrame & src, RTP_DataFrameList & dstList);
338 unsigned m_consecutiveIntraFrames;
353 const char * fmtName,
354 const char * rtpEncodingName,
359 virtual PObject * Clone()
const;
360 virtual bool IsValidForProtocol(
const PString & protocol)
const;
386 virtual PString GetInputFormat()
const = 0;
389 virtual PString GetOutputFormat()
const = 0;
392 virtual int Encode(
const void * from,
400 virtual unsigned int GetSampleRate()
const = 0;
403 virtual unsigned int GetBitsPerSec()
const = 0;
406 virtual unsigned int GetFrameTime()
const = 0;
409 virtual unsigned int GetSamplesPerFrame()
const = 0;
412 virtual unsigned int GetBytesPerFrame()
const = 0;
415 virtual unsigned int GetRecommendedFramesPerPacket()
const = 0;
418 virtual unsigned int GetMaxFramesPerPacket()
const = 0;
421 virtual BYTE GetRTPPayload()
const = 0;
424 virtual PString GetSDPFormat()
const = 0;
429 template<
class TranscoderClass>
433 class Worker :
public OpalTranscoderFactory::WorkerBase
438 { OpalTranscoderFactory::Register(key,
this); }
442 {
return new TranscoderClass(codecDefn, isEncoder); }
462 {
return m_capabilityFormatName; }
483 unsigned pluginSubType);
485 virtual PObject * Clone()
const;
487 virtual PString GetFormatName()
const;
489 virtual unsigned GetSubType()
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;
553 virtual PString GetFormatName()
const;
570 virtual PObject * Clone()
const;
571 virtual PString GetFormatName()
const;
590 const unsigned char * data,
unsigned dataLen);
594 const unsigned char * data,
unsigned dataLen);
596 virtual PObject * Clone()
const;
598 virtual PString GetFormatName()
const;
615 virtual PObject * Clone()
const;
617 virtual PString GetFormatName()
const;
632 Comparison Compare(
const PObject & obj)
const;
634 virtual PObject * Clone()
const;
636 virtual PString GetFormatName()
const;
637 virtual unsigned GetSubType()
const;
639 virtual PBoolean OnSendingPDU(
640 H245_VideoCapability & pdu
643 virtual PBoolean OnSendingPDU(
647 virtual PBoolean OnReceivedPDU(
648 const H245_VideoCapability & pdu
664 Comparison Compare(
const PObject & obj)
const;
666 virtual PObject * Clone()
const;
668 virtual PString GetFormatName()
const;
669 virtual unsigned GetSubType()
const;
671 virtual PBoolean OnSendingPDU(
672 H245_VideoCapability & pdu
675 virtual PBoolean OnSendingPDU(
679 virtual PBoolean OnReceivedPDU(
680 const H245_VideoCapability & pdu
682 virtual PBoolean IsMatch(
683 const PASN_Choice & subTypePDU,
684 const PString & mediaPacketization
691 #endif // OPAL_CODEC_OPALPLUGINMGR_H const PluginCodec_Definition * codecDef
Definition: opalpluginmgr.h:234
Definition: opalpluginmgr.h:378
bool isEncoder
Definition: opalpluginmgr.h:445
Definition: opalpluginmgr.h:561
virtual bool AcceptComfortNoise() const
Definition: opalpluginmgr.h:287
Definition: opalplugin.h:328
virtual ~H323StaticPluginCodec()
Definition: opalpluginmgr.h:64
Definition: opalpluginmgr.h:157
unsigned(* PluginCodec_GetAPIVersionFunction)()
Definition: opalplugin.h:388
Definition: opalpluginmgr.h:61
Definition: opalpluginmgr.h:454
virtual OpalTranscoder * Create(const OpalTranscoderKey &) const
Definition: opalpluginmgr.h:441
Worker(const OpalTranscoderKey &key, const PluginCodec_Definition *codec, bool enc)
Definition: opalpluginmgr.h:436
Definition: h323caps.h:89
DWORD m_lastSequenceNumber
Definition: opalpluginmgr.h:331
virtual bool AcceptComfortNoise() const
Definition: opalpluginmgr.h:274
virtual PluginCodec_GetAPIVersionFunction Get_GetAPIFn()=0
int Call(void *parm, unsigned *parmLen, void *context=NULL) const
Definition: opalpluginmgr.h:167
const char * GetName() const
Definition: opalpluginmgr.h:177
Definition: transcoders.h:459
Definition: opalpluginmgr.h:280
virtual const struct PluginCodec_Definition * GetDefinition()
Definition: opalpluginmgr.h:382
bool isEncoder
Definition: opalpluginmgr.h:235
const PluginCodec_ControlDefn * controlDef
Definition: opalpluginmgr.h:182
bool Transcode(const void *from, unsigned *fromLen, void *to, unsigned *toLen, unsigned *flags) const
Definition: opalpluginmgr.h:227
DWORD m_lastDecodedTimestamp
Definition: opalpluginmgr.h:332
Definition: opalpluginmgr.h:510
Definition: opalpluginmgr.h:115
PFACTORY_LOAD(OpalPluginCodecManager)
OpalPluginControl setCodecOptions
Definition: opalpluginmgr.h:238
const char * fnName
Definition: opalpluginmgr.h:181
Definition: opalpluginmgr.h:476
Definition: opalpluginmgr.h:265
void * context
Definition: opalpluginmgr.h:236
std::pair< PString, PString > OpalTranscoderKey
Definition: transcoders.h:112
Definition: opalpluginmgr.h:78
Definition: h323caps.h:1092
bool Exists() const
Definition: opalpluginmgr.h:162
PObject::Comparison(* CompareFuncType)(struct PluginCodec_H323NonStandardCodecData *)
Definition: h323caps.h:377
PString m_capabilityFormatName
Definition: opalpluginmgr.h:466
virtual PluginCodec_GetCodecFunction Get_GetCodecFn()=0
Definition: opalplugin.h:237
OpalPluginControl getOutputDataSizeControl
Definition: opalpluginmgr.h:239
const PluginCodec_Definition * codecDefn
Definition: opalpluginmgr.h:444
const PluginCodec_Definition * m_codecDefn
Definition: opalpluginmgr.h:465
Definition: transcoders.h:137
bool m_badMarkers
Definition: opalpluginmgr.h:334
Definition: opalpluginmgr.h:314
Definition: opalpluginmgr.h:433
Definition: opalpluginmgr.h:606
Definition: transcoders.h:370
Definition: h323caps.h:951
PList< OpalMediaFormat > mediaFormatsOnHeap
Definition: opalpluginmgr.h:143
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
int Call(void *parm, unsigned parmLen, void *context=NULL) const
Definition: opalpluginmgr.h:172
Definition: opalpluginmgr.h:219
Definition: h323caps.h:738
PFactory< H323StaticPluginCodec > H323StaticPluginCodecFactory
Definition: opalpluginmgr.h:69
Definition: opalpluginmgr.h:625
Definition: h323caps.h:1210
Definition: opalpluginmgr.h:537
Definition: opalplugin.h:699
PSimpleTimer m_videoPictureLossTimer
Definition: opalpluginmgr.h:335
const PString & GetFormatName() const
Definition: opalpluginmgr.h:461
Definition: h323caps.h:554
bool comfortNoise
Definition: opalpluginmgr.h:290
Definition: opalpluginmgr.h:657
Definition: h323caps.h:857
unsigned pluginSubType
Definition: opalpluginmgr.h:492
Definition: vidcodec.h:72