OPAL  Version 3.18.8
opalpluginmgr.h
Go to the documentation of this file.
1 /*
2  * opalpluginmgr.h
3  *
4  * OPAL codec plugins handler
5  *
6  * OPAL Library
7  *
8  * Copyright (C) 2005-2006 Post Increment
9  *
10  * The contents of this file are subject to the Mozilla Public License
11  * Version 1.0 (the "License"); you may not use this file except in
12  * compliance with the License. You may obtain a copy of the License at
13  * http://www.mozilla.org/MPL/
14  *
15  * Software distributed under the License is distributed on an "AS IS"
16  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
17  * the License for the specific language governing rights and limitations
18  * under the License.
19  *
20  * The Original Code is Open Phone Abstraction Library.
21  *
22  * The Initial Developer of the Original Code is Post Increment
23  *
24  * Contributor(s): ______________________________________.
25  */
26 
27 #ifndef OPAL_CODEC_OPALPLUGINMGR_H
28 #define OPAL_CODEC_OPALPLUGINMGR_H
29 
30 #ifdef P_USE_PRAGMA
31 #pragma interface
32 #endif
33 
34 #include <ptlib/object.h>
35 
36 #include <opal_config.h>
37 
38 #include <ptlib/pluginmgr.h>
39 #include <ptlib/pfactory.h>
40 #include <codec/opalplugin.h>
41 #include <opal/mediafmt.h>
42 #include <opal/transcoders.h>
43 
44 #if OPAL_H323
45 #include <h323/h323caps.h>
46 #endif
47 
48 #if OPAL_VIDEO
49 #include <codec/vidcodec.h>
50 #endif
51 
52 
54 
55 class H323Capability;
56 
58 {
59  public:
60  virtual ~H323StaticPluginCodec() { }
62  virtual PluginCodec_GetCodecFunction Get_GetCodecFn() = 0;
63 };
64 
65 typedef PFactory<H323StaticPluginCodec> H323StaticPluginCodecFactory;
66 
67 
69 
71 
73 
74 class OpalPluginCodecHandler : public PObject
75 {
76  PCLASSINFO(OpalPluginCodecHandler, PObject);
77  public:
79 
80  static int GetChannelCount(const PluginCodec_Definition * codeDefn);
81 
83  const PluginCodec_Definition * codecDefn,
84  const char * fmtName,
85  const char * rtpEncodingName,
86  unsigned frameTime,
87  unsigned timeUnits,
88  time_t timeStamp);
89  virtual void RegisterAudioTranscoder(const PString & src, const PString & dst, const PluginCodec_Definition * codec, bool isEnc);
90 
91 #if OPAL_VIDEO
93  const PluginCodec_Definition * codecDefn,
94  const char * fmtName,
95  const char * rtpEncodingName,
96  time_t timeStamp);
97  virtual void RegisterVideoTranscoder(const PString & src, const PString & dst, const PluginCodec_Definition * codec, bool isEnc);
98 #endif
99 
100 #if OPAL_FAX
102  const PluginCodec_Definition * codecDefn,
103  const char * fmtName,
104  const char * rtpEncodingName,
105  unsigned frameTime,
106  unsigned timeUnits,
107  time_t timeStamp);
108  virtual void RegisterFaxTranscoder(const PString & src, const PString & dst, const PluginCodec_Definition * codec, bool isEnc);
109 #endif
110 };
111 
112 
113 class OpalPluginCodecManager : public PPluginModuleManager
114 {
115  PCLASSINFO(OpalPluginCodecManager, PPluginModuleManager);
116  public:
117  OpalPluginCodecManager(PPluginManager * pluginMgr = NULL);
119 
120  PFACTORY_GET_SINGLETON(PFactory<PPluginModuleManager>, OpalPluginCodecManager);
121 
122  void RegisterStaticCodec(const H323StaticPluginCodecFactory::Key_T & name,
124  PluginCodec_GetCodecFunction getCodecFn);
125 
126  void OnLoadPlugin(PDynaLink & dll, P_INT_PTR code);
127 
128  virtual void OnStartup();
129 
130 #if OPAL_H323
132  const PString & _mediaFormat,
133  const PString & _baseName,
134  unsigned maxFramesPerPacket,
135  unsigned recommendedFramesPerPacket,
136  unsigned _pluginSubType);
137 #endif
138 
139  protected:
140  void RegisterCodecPlugins (unsigned int count, const PluginCodec_Definition * codecList, OpalPluginCodecHandler * handler);
141  void UnregisterCodecPlugins(unsigned int count, const PluginCodec_Definition * codecList, OpalPluginCodecHandler * handler);
142 
143  bool AddMediaFormat(
144  OpalPluginCodecHandler * handler,
145  const PTime & timeNow,
146  const PluginCodec_Definition * codecDefn,
147  const char * fmtName,
148  OpalMediaFormat & mediaFormat
149  );
150 #if OPAL_H323
151  void RegisterCapability(const PluginCodec_Definition * codecDefn);
152 #endif
153 };
154 
155 
157 
159 {
160  public:
161  OpalPluginControl(const PluginCodec_Definition * def, const char * name);
162 
163  bool Exists() const
164  {
165  return controlDef != NULL;
166  }
167 
168  int Call(void * parm, unsigned * parmLen, void * context = NULL) const
169  {
170  return controlDef != NULL ? (*controlDef->control)(codecDef, context, fnName, parm, parmLen) : -1;
171  }
172 
173  int Call(void * parm, unsigned parmLen, void * context = NULL) const
174  {
175  return Call(parm, &parmLen, context);
176  }
177 
178  const char * GetName() const { return fnName; }
179 
180  protected:
182  const char * fnName;
184 };
185 
186 
188 
190 {
191  public:
193 
194  bool AdjustOptions(OpalMediaFormatInternal & fmt, OpalPluginControl & control) const;
196  void SetOldStyleOption(OpalMediaFormatInternal & format, const PString & _key, const PString & _val, const PString & type);
197  bool IsValidForProtocol(const PString & _protocol) const;
198 
205 };
206 
207 
209 {
210  public:
211  OpalPluginTranscoder(const PluginCodec_Definition * defn, bool isEnc);
213 
214  bool UpdateOptions(OpalMediaFormat & fmt);
215  bool ExecuteCommand(const OpalMediaCommand & command);
216  bool Transcode(const void * from, unsigned * fromLen, void * to, unsigned * toLen, unsigned * flags) const
217  {
218  return codecDef != NULL && codecDef->codecFunction != NULL &&
219  (codecDef->codecFunction)(codecDef, context, from, fromLen, to, toLen, flags) != 0;
220  }
221 
222  protected:
223  bool CreateContext();
224  bool SetCodecOption(const PString & optionName, const PString & optionValue);
225 
227  bool isEncoder;
228  void * context;
230 
236 #if PTRACING
237  bool m_firstLoggedUpdateOptions[2];
238 #endif
239 };
240 
241 
243 
245 {
246  public:
248 
250  const PluginCodec_Definition * codecDefn,
251  const char * fmtName,
252  const char * rtpEncodingName,
253  unsigned frameTime,
254  unsigned timeUnits,
255  time_t timeStamp
256  );
257  virtual PObject * Clone() const;
258  virtual bool IsValidForProtocol(const PString & protocol) const;
259  virtual bool ToNormalisedOptions();
260  virtual bool ToCustomisedOptions();
261 };
262 
263 
265 {
267  public:
269  bool UpdateMediaFormats(const OpalMediaFormat & input, const OpalMediaFormat & output);
270  PBoolean ExecuteCommand(const OpalMediaCommand & command);
271  void GetStatistics(OpalMediaStatistics & statistics) const;
272  PBoolean ConvertFrame(const BYTE * input, PINDEX & consumed, BYTE * output, PINDEX & created);
273  virtual PBoolean ConvertSilentFrame(BYTE * buffer, PINDEX & created);
274  virtual bool AcceptComfortNoise() const { return comfortNoise; }
275  protected:
276  virtual bool OnCreated(const OpalMediaFormat & srcFormat,
277  const OpalMediaFormat & destFormat,
278  const BYTE * instance, unsigned instanceLen);
280 };
281 
282 
284 {
286  public:
288  bool UpdateMediaFormats(const OpalMediaFormat & input, const OpalMediaFormat & output);
289  PBoolean ExecuteCommand(const OpalMediaCommand & command);
290  virtual bool AcceptComfortNoise() const { return comfortNoise; }
291  virtual int ConvertOne(int from) const;
292  protected:
293  virtual bool OnCreated(const OpalMediaFormat & srcFormat,
294  const OpalMediaFormat & destFormat,
295  const BYTE * instance, unsigned instanceLen);
297 };
298 
299 
301 
302 #if OPAL_VIDEO
303 
305 {
306  public:
308  const PluginCodec_Definition * codec,
309  const char * fmtName,
310  const char * rtpEncodingName,
311  time_t timeStamp
312  );
313  virtual PObject * Clone() const;
314  virtual bool IsValidForProtocol(const PString & protocol) const;
315  virtual bool ToNormalisedOptions();
316  virtual bool ToCustomisedOptions();
317 };
318 
319 
321 {
323  public:
326 
327 #if OPAL_STATISTICS
328  virtual void GetStatistics(OpalMediaStatistics & statistics) const;
329 #endif
330 
331  PBoolean ConvertFrames(const RTP_DataFrame & src, RTP_DataFrameList & dstList);
332  bool UpdateMediaFormats(const OpalMediaFormat & input, const OpalMediaFormat & output);
333  PBoolean ExecuteCommand(const OpalMediaCommand & command);
334 
335  protected:
336  virtual bool OnCreated(const OpalMediaFormat & srcFormat,
337  const OpalMediaFormat & destFormat,
338  const BYTE * instance, unsigned instanceLen);
339  bool EncodeFrames(const RTP_DataFrame & src, RTP_DataFrameList & dstList);
340  bool DecodeFrames(const RTP_DataFrame & src, RTP_DataFrameList & dstList);
341  bool DecodeFrame(const RTP_DataFrame & src, RTP_DataFrameList & dstList);
342 
344  unsigned m_totalFrames;
345 
346  // Check for bad markers, or abd timestamps, work arounds
347  enum {
356  } m_markersState;
361 
362 #if PTRACING
363  unsigned m_consecutiveIntraFrames;
364 #endif
365 };
366 
367 #endif
368 
370 
371 #if OPAL_FAX
372 
374 {
375  public:
377  const PluginCodec_Definition * codec,
378  const char * fmtName,
379  const char * rtpEncodingName,
380  unsigned frameTime,
381  unsigned /*timeUnits*/,
382  time_t timeStamp
383  );
384  virtual PObject * Clone() const;
385  virtual bool IsValidForProtocol(const PString & protocol) const;
386 };
387 
388 #endif // OPAL_FAX
389 
390 
392 //
393 // this is the base class for codecs accessible via the abstract factory functions
394 //
395 
403 class OpalFactoryCodec : public PObject {
404  PCLASSINFO(OpalFactoryCodec, PObject)
405  public:
407  virtual const struct PluginCodec_Definition * GetDefinition()
408  { return NULL; }
409 
411  virtual PString GetInputFormat() const = 0;
412 
414  virtual PString GetOutputFormat() const = 0;
415 
417  virtual int Encode(const void * from,
418  unsigned * fromLen,
419  void * to,
420  unsigned * toLen,
421  unsigned int * flag
422  ) = 0;
423 
425  virtual unsigned int GetSampleRate() const = 0;
426 
428  virtual unsigned int GetBitsPerSec() const = 0;
429 
431  virtual unsigned int GetFrameTime() const = 0;
432 
434  virtual unsigned int GetSamplesPerFrame() const = 0;
435 
437  virtual unsigned int GetBytesPerFrame() const = 0;
438 
440  virtual unsigned int GetRecommendedFramesPerPacket() const = 0;
441 
443  virtual unsigned int GetMaxFramesPerPacket() const = 0;
444 
446  virtual BYTE GetRTPPayload() const = 0;
447 
449  virtual PString GetSDPFormat() const = 0;
450 };
451 
453 
454 template<class TranscoderClass>
456 {
457  protected:
458  class Worker : public OpalTranscoderFactory::WorkerBase
459  {
460  public:
461  Worker(const OpalTranscoderKey & key, const PluginCodec_Definition * codec, bool enc)
462  : OpalTranscoderFactory::WorkerBase()
463  , m_key(key)
464  , m_codecDefn(codec)
465  , m_isEncoder(enc)
466  {
467  }
468 
469  protected:
470  virtual OpalTranscoder * Create(const OpalTranscoderKey &) const
471  {
472  return new TranscoderClass(m_key, m_codecDefn, m_isEncoder);
473  }
474 
478  };
479 
480  public:
481  static void Register(const OpalTranscoderKey & key, const PluginCodec_Definition * codec, bool enc)
482  {
483  Worker * worker = PNEW Worker(key, codec, enc);
484  if (!OpalTranscoderFactory::Register(key, worker, true)) {
485  delete worker;
486  PTRACE(3, "OpalTranscoderFactory worker for " << key.first << '/' << key.second << " already registered.");
487  }
488  }
489 };
490 
492 //
493 // Helper class for handling plugin capabilities
494 //
495 
497 {
498  public:
499  H323PluginCapabilityInfo(const PluginCodec_Definition * codecDefn, const OpalMediaFormat & mediaFormat);
500 
501  //H323PluginCapabilityInfo(const PString & _baseName);
502 
503  const PString & GetFormatName() const
504  { return m_capabilityFormatName; }
505 
506  protected:
509 };
510 
511 #if OPAL_H323
512 
514 //
515 // Class for handling most audio plugin capabilities
516 //
517 
520 {
522  public:
524  const OpalMediaFormat & mediaFormat,
525  unsigned pluginSubType);
526 
527  virtual PObject * Clone() const;
528 
529  virtual PString GetFormatName() const;
530 
531  virtual unsigned GetSubType() const;
532 
533  protected:
534  unsigned pluginSubType;
535 };
536 
537 
539 //
540 // Class for handling G.723.1 codecs
541 //
542 
544 {
546  public:
548  const OpalMediaFormat & mediaFormat);
549 
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);
553 };
554 
555 
557 //
558 // Class for handling non standard audio capabilities
559 //
560 
563 {
565  public:
567  const OpalMediaFormat & mediaFormat,
569  const unsigned char * data, unsigned dataLen);
570 
572  const OpalMediaFormat & mediaFormat,
573  const unsigned char * data, unsigned dataLen);
574 
575  virtual PObject * Clone() const;
576 
577  virtual PString GetFormatName() const;
578 };
579 
581 //
582 // Class for handling generic audio capabilities
583 //
584 
587 {
589  public:
591  const OpalMediaFormat & mediaFormat,
592  const PluginCodec_H323GenericCodecData * data);
593 
594  virtual PObject * Clone() const;
595  virtual PString GetFormatName() const;
596 };
597 
598 
599 #if OPAL_VIDEO
600 
602 //
603 // Class for handling non standard video capabilities
604 //
605 
608 {
610  public:
612  const OpalMediaFormat & mediaFormat,
614  const unsigned char * data, unsigned dataLen);
615 
617  const OpalMediaFormat & mediaFormat,
618  const unsigned char * data, unsigned dataLen);
619 
620  virtual PObject * Clone() const;
621 
622  virtual PString GetFormatName() const;
623 };
624 
626 //
627 // Class for handling generic video capabilities
628 //
629 
632 {
634  public:
636  const OpalMediaFormat & mediaFormat,
637  const PluginCodec_H323GenericCodecData * data);
638 
639  virtual PObject * Clone() const;
640 
641  virtual PString GetFormatName() const;
642 };
643 
645 //
646 // Class for handling H.261 plugin capabilities
647 //
648 
650 {
652  public:
654 
655  Comparison Compare(const PObject & obj) const;
656 
657  virtual PObject * Clone() const;
658 
659  virtual PString GetFormatName() const;
660  virtual unsigned GetSubType() const;
661 
662  virtual PBoolean OnSendingPDU(
663  H245_VideoCapability & pdu
664  ) const;
665 
666  virtual PBoolean OnSendingPDU(
667  H245_VideoMode & pdu
668  ) const;
669 
670  virtual PBoolean OnReceivedPDU(
671  const H245_VideoCapability & pdu
672  );
673 };
674 
675 
678 {
680  public:
681  H323H261PluginCapability(const PluginCodec_Definition * codecDefn, const OpalMediaFormat & mediaFormat);
682 
683  virtual PObject * Clone() const;
684 };
685 
686 
688 //
689 // Class for handling H.263 plugin capabilities
690 //
691 
693 {
694  public:
695  H323H263Capability(const PString & variant);
696 
697  Comparison Compare(const PObject & obj) const;
698 
699  virtual PObject * Clone() const;
700 
701  virtual PString GetFormatName() const;
702  virtual unsigned GetSubType() const;
703 
704  virtual PBoolean OnSendingPDU(
705  H245_VideoCapability & pdu
706  ) const;
707 
708  virtual PBoolean OnSendingPDU(
709  H245_VideoMode & pdu
710  ) const;
711 
712  virtual PBoolean OnReceivedPDU(
713  const H245_VideoCapability & pdu
714  );
715  virtual PBoolean IsMatch(
716  const PASN_Object & subTypePDU,
717  const PString & mediaPacketization
718  ) const;
719 
720  protected:
721  PString m_variant;
722 };
723 
726 {
728  public:
729  H323H263PluginCapability(const PluginCodec_Definition * codecDefn, const OpalMediaFormat & mediaFormat)
730  : H323H263Capability(mediaFormat)
731  , H323PluginCapabilityInfo(codecDefn, mediaFormat)
732  {
733  }
734 };
735 
736 #endif // OPAL_VIDEO
737 #endif // OPAL_H323
738 
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:304
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)
Definition: mediafmt.h:1454
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
Definition: mediacmd.h:43
RTP_Timestamp m_lastPacketTimestamp
Definition: opalpluginmgr.h:359
bool AdjustOptions(OpalMediaFormatInternal &fmt, OpalPluginControl &control) 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:461
virtual PString GetFormatName() const
void PopulateOptions(OpalMediaFormatInternal &format)
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
Definition: opalpluginmgr.h:373
virtual unsigned int GetBytesPerFrame() const =0
Definition: opalpluginmgr.h:349
unsigned m_totalFrames
Definition: opalpluginmgr.h:344
virtual PBoolean OnReceivedPDU(const H245_VideoCapability &pdu)
OpalPluginMediaFormatInternal(const PluginCodec_Definition *defn)
Definition: transcoders.h:469
Definition: mediafmt.h:717
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
virtual PObject * Clone() 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
virtual bool IsValidForProtocol(const PString &protocol) const
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
virtual bool ToCustomisedOptions()
PBoolean ExecuteCommand(const OpalMediaCommand &command)
virtual unsigned int GetRecommendedFramesPerPacket() const =0
virtual PObject * Clone() const
const char * fnName
Definition: opalpluginmgr.h:182
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
bool IsValidForProtocol(const PString &_protocol) const
void OnLoadPlugin(PDynaLink &dll, P_INT_PTR code)
virtual PBoolean OnSendingPDU(H245_VideoCapability &pdu) const
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)
virtual PObject * Clone() const
Definition: rtp.h:540
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
Definition: mediafmt.h:806
virtual PBoolean OnSendingPDU(H245_VideoCapability &pdu) const
virtual PObject * Clone() 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)
virtual void OnStartup()
bool Exists() const
Definition: opalpluginmgr.h:163
unsigned m_maxPayloadSize
Definition: opalpluginmgr.h:229
virtual bool ToNormalisedOptions()
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
virtual PObject * Clone() const
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
virtual bool IsValidForProtocol(const PString &protocol) const
const PluginCodec_Definition * m_codecDefn
Definition: opalpluginmgr.h:507
virtual bool AcceptComfortNoise() const
Definition: opalpluginmgr.h:290
void SetOldStyleOption(OpalMediaFormatInternal &format, const PString &_key, const PString &_val, const PString &type)
Definition: transcoders.h:134
PCaselessString rtpEncodingName
Definition: mediafmt.h:780
virtual PString GetFormatName() const
const PluginCodec_Definition * codecDef
Definition: opalpluginmgr.h:199
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
OpalPluginControl validForProtocolControl
Definition: opalpluginmgr.h:202
PBoolean ExecuteCommand(const OpalMediaCommand &command)
OpalPluginControl toCustomisedControl
Definition: opalpluginmgr.h:204
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
virtual bool ToNormalisedOptions()
unsigned(* PluginCodec_GetAPIVersionFunction)()
Definition: opalplugin.h:399
virtual int ConvertOne(int from) const
OpalPluginFaxFormatInternal(const PluginCodec_Definition *codec, const char *fmtName, const char *rtpEncodingName, unsigned frameTime, unsigned, time_t timeStamp)
PFactory< OpalTranscoder, OpalTranscoderKey > OpalTranscoderFactory
Definition: transcoders.h:110
RTP_DataFrame * m_bufferRTP
Definition: opalpluginmgr.h:343
const PluginCodec_Definition * codecDef
Definition: opalpluginmgr.h:181
OpalPluginVideoFormatInternal(const PluginCodec_Definition *codec, const char *fmtName, const char *rtpEncodingName, time_t timeStamp)
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
Definition: opalpluginmgr.h:561
void RegisterCodecPlugins(unsigned int count, const PluginCodec_Definition *codecList, OpalPluginCodecHandler *handler)
OpalPluginAudioFormatInternal(const PluginCodec_Definition *codecDefn, const char *fmtName, const char *rtpEncodingName, unsigned frameTime, unsigned timeUnits, time_t timeStamp)
Definition: opalplugin.h:746
virtual void RegisterAudioTranscoder(const PString &src, const PString &dst, const PluginCodec_Definition *codec, bool isEnc)
Definition: mediafmt.h:1573
PBoolean ExecuteCommand(const OpalMediaCommand &command)
H323H263PluginCapability(const PluginCodec_Definition *codecDefn, const OpalMediaFormat &mediaFormat)
Definition: opalpluginmgr.h:729
Definition: mediasession.h:210
Definition: opalpluginmgr.h:244
bool UpdateMediaFormats(const OpalMediaFormat &input, const OpalMediaFormat &output)
OpalPluginControl toNormalisedControl
Definition: opalpluginmgr.h:203
virtual OpalMediaFormatInternal * OnCreateFaxFormat(OpalPluginCodecManager &mgr, const PluginCodec_Definition *codecDefn, const char *fmtName, const char *rtpEncodingName, unsigned frameTime, unsigned timeUnits, time_t timeStamp)
OpalPluginControl freeOptionsControl
Definition: opalpluginmgr.h:201
void GetStatistics(OpalMediaStatistics &statistics) const
virtual PObject * Clone() const
bool UpdateMediaFormats(const OpalMediaFormat &input, const OpalMediaFormat &output)
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 bool IsValidForProtocol(const PString &protocol) const
virtual PString GetFormatName() const
virtual PBoolean OnReceivedPDU(const H245_VideoCapability &pdu)
OpalPluginControl getOptionsControl
Definition: opalpluginmgr.h:200
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 ToCustomisedOptions()
virtual bool OnCreated(const OpalMediaFormat &srcFormat, const OpalMediaFormat &destFormat, const BYTE *instance, unsigned instanceLen)
Definition: vidcodec.h:142
Comparison Compare(const PObject &obj) const
Definition: opalpluginmgr.h:189
int Call(void *parm, unsigned *parmLen, void *context=NULL) const
Definition: opalpluginmgr.h:168
const PString & GetFormatName() const
Definition: opalpluginmgr.h:503