21#ifndef _QUICKTIME_FILE_SINK_HH
22#define _QUICKTIME_FILE_SINK_HH
24#ifndef _MEDIA_SESSION_HH
32 char const* outputFileName,
33 unsigned bufferSize = 20000,
34 unsigned short movieWidth = 240,
35 unsigned short movieHeight = 180,
36 unsigned movieFPS = 15,
44 void* afterClientData);
50 char const* outputFileName,
unsigned bufferSize,
51 unsigned short movieWidth,
unsigned short movieHeight,
52 unsigned movieFPS,
Boolean packetLossCompensate,
59 unsigned packetDataSize,
struct timeval
const& presentationTime);
64 unsigned numTruncatedBytes,
65 struct timeval presentationTime,
66 unsigned durationInMicroseconds);
106 void setWord(int64_t filePosn,
unsigned size);
112#define _atom(name) unsigned addAtom_##name()
char const * name() const
unsigned addWord(unsigned word)
static void onRTCPBye(void *clientData)
void completeOutputFile()
void setWord64(int64_t filePosn, u_int64_t size)
Boolean fHaveCompletedOutputFile
unsigned addArbitraryString(char const *str, Boolean oneByteLength=True)
unsigned fAppleCreationTime
struct timeval fStartTime
unsigned add4ByteString(char const *str)
afterPlayingFunc * fAfterFunc
unsigned fNumSyncedSubsessions
unsigned addAtom_genericMedia()
Boolean continuePlaying()
int64_t fMVHD_durationPosn
unsigned short fMovieHeight
QuickTimeFileSink(UsageEnvironment &env, MediaSession &inputSession, char const *outputFileName, unsigned bufferSize, unsigned short movieWidth, unsigned short movieHeight, unsigned movieFPS, Boolean packetLossCompensate, Boolean syncStreams, Boolean generateHintTracks, Boolean generateMP4Format)
unsigned addZeroWords(unsigned numWords)
class SubsessionIOState * fCurrentIOState
Boolean fGenerateMP4Format
MediaSession & fInputSession
unsigned short fMovieWidth
unsigned numActiveSubsessions() const
unsigned addAtom_soundMediaGeneral()
unsigned fLargestRTPtimestampFrequency
static void onSourceClosure(void *clientData)
unsigned addAtomHeader64(char const *atomName)
unsigned addHalfWord(unsigned short halfWord)
unsigned addAtomHeader(char const *atomName)
void() afterPlayingFunc(void *clientData)
static QuickTimeFileSink * createNew(UsageEnvironment &env, MediaSession &inputSession, char const *outputFileName, unsigned bufferSize=20000, unsigned short movieWidth=240, unsigned short movieHeight=180, unsigned movieFPS=15, Boolean packetLossCompensate=False, Boolean syncStreams=False, Boolean generateHintTracks=False, Boolean generateMP4Format=False)
struct timeval fNewestSyncTime fFirstDataTime
void setWord(int64_t filePosn, unsigned size)
Boolean startPlaying(afterPlayingFunc *afterFunc, void *afterClientData)
friend class SubsessionIOState
unsigned addWord64(u_int64_t word)
static void afterGettingFrame(void *clientData, unsigned frameSize, unsigned numTruncatedBytes, struct timeval presentationTime, unsigned durationInMicroseconds)
unsigned fMaxTrackDurationM
virtual void noteRecordedFrame(MediaSubsession &inputSubsession, unsigned packetDataSize, struct timeval const &presentationTime)
Boolean fPacketLossCompensate
virtual ~QuickTimeFileSink()
Boolean fAreCurrentlyBeingPlayed
unsigned movieTimeScale() const
unsigned addByte(unsigned char byte)