From 41bc5a329c73e3b43695f73f11c47c97c44cc1b6 Mon Sep 17 00:00:00 2001 From: chenke <chenke@454eff88-639b-444f-9e54-f578c98de674> Date: 星期四, 20 七月 2017 09:45:41 +0800 Subject: [PATCH] --- VisitFace/RtspNativeCodec/app/libs/live555/include/liveMedia/Media.hh | 137 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 137 insertions(+), 0 deletions(-) diff --git a/VisitFace/RtspNativeCodec/app/libs/live555/include/liveMedia/Media.hh b/VisitFace/RtspNativeCodec/app/libs/live555/include/liveMedia/Media.hh new file mode 100644 index 0000000..1f5cbec --- /dev/null +++ b/VisitFace/RtspNativeCodec/app/libs/live555/include/liveMedia/Media.hh @@ -0,0 +1,137 @@ +/********** +This library is free software; you can redistribute it and/or modify it under +the terms of the GNU Lesser General Public License as published by the +Free Software Foundation; either version 3 of the License, or (at your +option) any later version. (See <http://www.gnu.org/copyleft/lesser.html>.) + +This library is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for +more details. + +You should have received a copy of the GNU Lesser General Public License +along with this library; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +**********/ +// "liveMedia" +// Copyright (c) 1996-2017 Live Networks, Inc. All rights reserved. +// Medium +// C++ header + +#ifndef _MEDIA_HH +#define _MEDIA_HH + +#ifndef _LIVEMEDIA_VERSION_HH +#include "liveMedia_version.hh" +#endif + +#ifndef _HASH_TABLE_HH +#include "HashTable.hh" +#endif + +#ifndef _USAGE_ENVIRONMENT_HH +#include "UsageEnvironment.hh" +#endif + +// Lots of files end up needing the following, so just #include them here: +#ifndef _NET_COMMON_H +#include "NetCommon.h" +#endif +#include <stdio.h> + +// The following makes the Borland compiler happy: +#ifdef __BORLANDC__ +#define _strnicmp strnicmp +#define fabsf(x) fabs(x) +#endif + +#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; + +protected: + friend class MediaLookupTable; + Medium(UsageEnvironment& env); // abstract base class + virtual ~Medium(); // instances are deleted using close() only + + TaskToken& nextTask() { + return fNextTask; + } + +private: + UsageEnvironment& fEnviron; + char fMediumName[mediumNameMaxLen]; + TaskToken fNextTask; +}; + + +// A data structure for looking up a Medium by its string name. +// (It is used only to implement "Medium", but we make it visible here, in case developers want to use it to iterate over +// the whole set of "Medium" objects that we've created.) +class MediaLookupTable { +public: + static MediaLookupTable* ourMedia(UsageEnvironment& env); + HashTable const& getTable() { return *fTable; } + +protected: + MediaLookupTable(UsageEnvironment& env); + virtual ~MediaLookupTable(); + +private: + friend class Medium; + + Medium* lookup(char const* name) const; + // Returns NULL if none already exists + + void addNew(Medium* medium, char* mediumName); + void remove(char const* name); + + void generateNewName(char* mediumName, unsigned maxLen); + +private: + UsageEnvironment& fEnv; + HashTable* fTable; + unsigned fNameGenerator; +}; + + +// The structure pointed to by the "liveMediaPriv" UsageEnvironment field: +class _Tables { +public: + static _Tables* getOurTables(UsageEnvironment& env, Boolean createIfNotPresent = True); + // returns a pointer to a "_Tables" structure (creating it if necessary) + void reclaimIfPossible(); + // used to delete ourselves when we're no longer used + + MediaLookupTable* mediaTable; + void* socketTable; + +protected: + _Tables(UsageEnvironment& env); + virtual ~_Tables(); + +private: + UsageEnvironment& fEnv; +}; + +#endif -- Gitblit v1.8.0