Medium

live555
MediaSource -

#define mediumNameMaxLen 30
 
class Medium {
public:
  static Boolean lookupByName(UsageEnvironment& env,
                              char const* mediumName,
                              Medium*& resultMedium);
  static void close(UsageEnvironment& env, char const* mediumName);
  static void close(Medium* medium); // alternative close() method using ptrs
      // (has no effect if medium == NULL)
 
  UsageEnvironment& envir() const {return fEnviron;}
 
  char const* name() const {return fMediumName;}
 
  // Test for specific types of media:
  virtual Boolean isSource() const;
  virtual Boolean isSink() const;
  virtual Boolean isRTCPInstance() const;
  virtual Boolean isRTSPClient() const;
  virtual Boolean isRTSPServer() const;
  virtual Boolean isMediaSession() const;
  virtual Boolean isServerMediaSession() const;
  virtual Boolean isDarwinInjector() const;
 
protected:
  Medium(UsageEnvironment& env); // abstract base class
  virtual ~Medium(); // instances are deleted using close() only
 
  TaskToken& nextTask() {
        return fNextTask;
  }
 
private:
  friend class MediaLookupTable;
  UsageEnvironment& fEnviron;
  char fMediumName[mediumNameMaxLen];
  TaskToken fNextTask;
};
 
// The structure pointed to by the "liveMediaPriv" UsageEnvironment field:
class _Tables {
public:
  static _Tables* getOurTables(UsageEnvironment& env);
      // returns a pointer to an "ourTables" structure (creating it if necessary)
  void reclaimIfPossible();
      // used to delete ourselves when we're no longer used
 
  void* mediaTable;
  void* socketTable;
 
protected:
  _Tables(UsageEnvironment& env);
  virtual ~_Tables();
 
private:
  UsageEnvironment& fEnv;
};