/usr/include/liveMedia/DarwinInjector.hh is in liblivemedia-dev 2011.12.23-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | /**********
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 2.1 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-2012 Live Networks, Inc. All rights reserved.
// An object that redirects one or more RTP/RTCP streams - forming a single
// multimedia session - into a 'Darwin Streaming Server' (for subsequent
// reflection to potentially arbitrarily many remote RTSP clients).
// C++ header
#ifndef _DARWIN_INJECTOR_HH
#define _DARWIN_INJECTOR_HH
#ifndef _RTSP_CLIENT_HH
#include <RTSPClient.hh>
#endif
#ifndef _RTCP_HH
#include <RTCP.hh>
#endif
/*
To use a "DarwinInjector":
1/ Create RTP sinks and RTCP instances for each audio or video subsession.
Note: These can use 0.0.0.0 for the address, and 0 for the port number,
of each 'groupsock')
2/ Call "addStream()" for each.
3/ Call "setDestination()" to specify the remote Darwin Streaming Server.
Note: You must have 'write' permission on the Darwin Streaming Server.
This can be set up using a "qtaccess" file in the server's 'movies'
directory. For example, the following "qtaccess" file allows anyone to
play streams from the server, but allows only valid users to
inject streams *into* the server:
<Limit WRITE>
require valid-user
</Limit>
require any-user
Use the "remoteUserName" and "remotePassword" parameters to
"setDestination()", as appropriate.
4/ Call "startPlaying" on each RTP sink (from the corresponding 'source').
*/
class SubstreamDescriptor; // forward
class DarwinInjector: public Medium {
public:
static DarwinInjector* createNew(UsageEnvironment& env,
char const* applicationName = "DarwinInjector",
int verbosityLevel = 0);
static Boolean lookupByName(UsageEnvironment& env, char const* name,
DarwinInjector*& result);
void addStream(RTPSink* rtpSink, RTCPInstance* rtcpInstance);
Boolean setDestination(char const* remoteRTSPServerNameOrAddress,
char const* remoteFileName,
char const* sessionName = "",
char const* sessionInfo = "",
portNumBits remoteRTSPServerPortNumber = 554,
char const* remoteUserName = "",
char const* remotePassword = "",
char const* sessionAuthor = "",
char const* sessionCopyright = "",
int timeout = -1);
private: // redefined virtual functions
virtual Boolean isDarwinInjector() const;
private:
DarwinInjector(UsageEnvironment& env,
char const* applicationName, int verbosityLevel);
// called only by createNew()
virtual ~DarwinInjector();
static void genericResponseHandler(RTSPClient* rtspClient, int responseCode, char* responseString);
void genericResponseHandler1(int responseCode, char* responseString);
private:
char const* fApplicationName;
int fVerbosityLevel;
RTSPClient* fRTSPClient;
unsigned fSubstreamSDPSizes;
SubstreamDescriptor* fHeadSubstream;
SubstreamDescriptor* fTailSubstream;
MediaSession* fSession;
unsigned fLastTrackId;
char fWatchVariable;
int fResultCode;
char* fResultString;
};
#endif
|