liveMedia/AVIFileSink.cpp File Reference

#include "AVIFileSink.hh"
#include "InputFile.hh"
#include "OutputFile.hh"
#include "GroupsockHelper.hh"

Include dependency graph for AVIFileSink.cpp:

Go to the source code of this file.

Data Structures

class  SubsessionBuffer
class  AVISubsessionIOState
class  AVIIndexRecord

Defines

#define fourChar(x, y, z, w)   ( ((w)<<24)|((z)<<16)|((y)<<8)|(x) )
#define addFileHeader(tag, name)
#define addFileHeader1(name)
#define addFileHeaderEnd
#define AVIF_HASINDEX   0x00000010
#define AVIF_MUSTUSEINDEX   0x00000020
#define AVIF_ISINTERLEAVED   0x00000100
#define AVIF_TRUSTCKTYPE   0x00000800
#define AVIF_WASCAPTUREFILE   0x00010000
#define AVIF_COPYRIGHTED   0x00020000
#define AVI_MASTER_INDEX_SIZE   256

Functions

 addFileHeader (RIFF, AVI)
 addFileHeader (LIST, hdrl)
 while ((subsession=iter.next())!=NULL)
iter reset ()
 addFileHeader1 (avih)
 addFileHeader (LIST, strl)
 addFileHeader1 (strh)
 if (fCurrentIOState->fIsVideo)
 addFileHeader1 (strf)
 addFileHeader1 (JUNK)
 if (fJunkNumber==0)
 addFileHeader (LIST, movi)

Variables

 size = addFileHeader_hdrl()
 size = addFileHeader_movi()
 fRIFFSizePosition = headerSizePosn
 fRIFFSizeValue = size-ignoredSize
 addFileHeaderEnd
 size = addFileHeader_avih()
unsigned subsessionCount = 0
MediaSubsessionIterator iter (fInputSession)
MediaSubsessionsubsession
 fJunkNumber
 size = addFileHeader_JUNK()
 addFileHeaderEnd
unsigned usecPerFrame = fMovieFPS == 0 ? 0 : 1000000/fMovieFPS
 size = addWord(usecPerFrame)
 fAVIHMaxBytesPerSecondPosition = (unsigned)TellFile64(fOutFid)
 size = addWord(0)
 size = addWord(0)
 size = addWord(AVIF_TRUSTCKTYPE|AVIF_HASINDEX|AVIF_ISINTERLEAVED)
 fAVIHFrameCountPosition = (unsigned)TellFile64(fOutFid)
 size = addWord(0)
 size = addWord(0)
 size = addWord(fNumSubsessions)
 size = addWord(fBufferSize)
 size = addWord(fMovieWidth)
 size = addWord(fMovieHeight)
 size = addZeroWords(4)
 addFileHeaderEnd
 size = addFileHeader_strh()
 size = addFileHeader_strf()
 fJunkNumber = 0
 size = addFileHeader_JUNK()
 addFileHeaderEnd
 size
 size = addWord(fCurrentIOState->fAVICodecHandlerType)
 size = addWord(0)
 size = addWord(0)
 size = addWord(0)
 size = addWord(fCurrentIOState->fAVIScale)
 size = addWord(fCurrentIOState->fAVIRate)
 size = addWord(0)
fCurrentIOState fSTRHFrameCountPosition = (unsigned)TellFile64(fOutFid)
 size = addWord(0)
 size = addWord(fBufferSize)
 size = addWord((unsigned)-1)
 size = addWord(fCurrentIOState->fAVISize)
 size = addWord(0)
 addFileHeaderEnd
 fMoviSizePosition = headerSizePosn
 fMoviSizeValue = size-ignoredSize
 addFileHeaderEnd


Define Documentation

#define addFileHeader ( tag,
name   ) 

Value:

unsigned AVIFileSink::addFileHeader_##name() { \
        add4ByteString("" #tag ""); \
        unsigned headerSizePosn = (unsigned)TellFile64(fOutFid); addWord(0); \
        add4ByteString("" #name ""); \
        unsigned ignoredSize = 8;/*don't include size of tag or size fields*/ \
        unsigned size = 12

Definition at line 608 of file AVIFileSink.cpp.

#define addFileHeader1 ( name   ) 

Value:

unsigned AVIFileSink::addFileHeader_##name() { \
        add4ByteString("" #name ""); \
        unsigned headerSizePosn = (unsigned)TellFile64(fOutFid); addWord(0); \
        unsigned ignoredSize = 8;/*don't include size of name or size fields*/ \
        unsigned size = 8

Definition at line 616 of file AVIFileSink.cpp.

#define addFileHeaderEnd

Value:

setWord(headerSizePosn, size-ignoredSize); \
  return size; \
}

Definition at line 623 of file AVIFileSink.cpp.

#define AVI_MASTER_INDEX_SIZE   256

Definition at line 760 of file AVIFileSink.cpp.

Referenced by if().

#define AVIF_COPYRIGHTED   0x00020000

Definition at line 671 of file AVIFileSink.cpp.

#define AVIF_HASINDEX   0x00000010

Definition at line 666 of file AVIFileSink.cpp.

#define AVIF_ISINTERLEAVED   0x00000100

Definition at line 668 of file AVIFileSink.cpp.

#define AVIF_MUSTUSEINDEX   0x00000020

Definition at line 667 of file AVIFileSink.cpp.

#define AVIF_TRUSTCKTYPE   0x00000800

Definition at line 669 of file AVIFileSink.cpp.

#define AVIF_WASCAPTUREFILE   0x00010000

Definition at line 670 of file AVIFileSink.cpp.

#define fourChar ( x,
y,
z,
 )     ( ((w)<<24)|((z)<<16)|((y)<<8)|(x) )

Definition at line 26 of file AVIFileSink.cpp.

Referenced by QuickTimeFileSink::addAtom_hdlr2(), SubsessionIOState::afterGettingFrame(), AVISubsessionIOState::setAVIstate(), SubsessionIOState::setQTstate(), SubsessionIOState::useFrame(), and AVISubsessionIOState::useFrame().


Function Documentation

addFileHeader ( LIST  ,
movi   
)

addFileHeader ( LIST  ,
strl   
)

addFileHeader ( LIST  ,
hdrl   
)

addFileHeader ( RIFF  ,
AVI   
)

addFileHeader1 ( JUNK   ) 

addFileHeader1 ( strf   ) 

addFileHeader1 ( strh   ) 

addFileHeader1 ( avih   ) 

if ( fJunkNumber  = = 0  ) 

Definition at line 763 of file AVIFileSink.cpp.

References AVIFileSink::addHalfWord(), AVIFileSink::addWord(), AVIFileSink::addZeroWords(), AVI_MASTER_INDEX_SIZE, AVISubsessionIOState::fAVISubsessionTag, AVIFileSink::fCurrentIOState, and size.

00763                           {
00764       size += addHalfWord(4); // wLongsPerEntry
00765       size += addHalfWord(0); // bIndexSubType + bIndexType
00766       size += addWord(0); // nEntriesInUse #####
00767       size += addWord(fCurrentIOState->fAVISubsessionTag); // dwChunkId
00768       size += addZeroWords(2); // dwReserved
00769       size += addZeroWords(AVI_MASTER_INDEX_SIZE*4);
00770     } else {

else if ( fCurrentIOState->  fIsVideo  ) 

Definition at line 714 of file AVIFileSink.cpp.

References AVIFileSink::addHalfWord(), AVIFileSink::fMovieHeight, AVIFileSink::fMovieWidth, and size.

Referenced by DummySink::afterGettingFrame(), MPEG4VideoStreamDiscreteFramer::afterGettingFrame1(), MPEG1or2VideoStreamDiscreteFramer::afterGettingFrame1(), MPEG1or2Demux::handleClosure(), MP3HuffmanDecode(), RTPReceptionStats::noteIncomingPacket(), and SubsessionIOState::useFrameForHinting().

00714                                    {
00715         size += addHalfWord(fMovieWidth);
00716         size += addHalfWord(fMovieHeight);
00717     } else {

iter reset (  ) 

Referenced by InputESSourceRecord::InputESSourceRecord(), MPEG1or2AudioStreamFramer::MPEG1or2AudioStreamFramer(), MultiFramedRTPSource::MultiFramedRTPSource(), and ServerMediaSubsessionIterator::ServerMediaSubsessionIterator().

while ( (subsession=iter.next())!  = NULL  ) 

Definition at line 643 of file AVIFileSink.cpp.

References AVIFileSink::fCurrentIOState, MediaSubsession::mediumName(), MediaSubsession::miscPtr, NULL, AVISubsessionIOState::setAVIstate(), size, subsession, and subsessionCount.

Referenced by NetAddressList::NetAddressList().

00643                                                {
00644       fCurrentIOState = (AVISubsessionIOState*)(subsession->miscPtr);
00645       if (fCurrentIOState == NULL) continue;
00646       if (strcmp(subsession->mediumName(), "video") != 0) continue;
00647 
00648       fCurrentIOState->setAVIstate(subsessionCount++);
00649       size += addFileHeader_strl();
00650     }


Variable Documentation

addFileHeaderEnd

Definition at line 782 of file AVIFileSink.cpp.

addFileHeaderEnd

Definition at line 758 of file AVIFileSink.cpp.

addFileHeaderEnd

Definition at line 695 of file AVIFileSink.cpp.

addFileHeaderEnd

Definition at line 688 of file AVIFileSink.cpp.

addFileHeaderEnd

Definition at line 664 of file AVIFileSink.cpp.

addFileHeaderEnd

Definition at line 633 of file AVIFileSink.cpp.

fAVIHFrameCountPosition = (unsigned)TellFile64(fOutFid)

Definition at line 680 of file AVIFileSink.cpp.

fAVIHMaxBytesPerSecondPosition = (unsigned)TellFile64(fOutFid)

Definition at line 676 of file AVIFileSink.cpp.

fJunkNumber = 0

Definition at line 693 of file AVIFileSink.cpp.

fJunkNumber

Definition at line 662 of file AVIFileSink.cpp.

fMoviSizePosition = headerSizePosn

Definition at line 780 of file AVIFileSink.cpp.

fMoviSizeValue = size-ignoredSize

Definition at line 781 of file AVIFileSink.cpp.

fRIFFSizePosition = headerSizePosn

Definition at line 631 of file AVIFileSink.cpp.

fRIFFSizeValue = size-ignoredSize

Definition at line 632 of file AVIFileSink.cpp.

fCurrentIOState fSTRHFrameCountPosition = (unsigned)TellFile64(fOutFid)

Definition at line 708 of file AVIFileSink.cpp.

MediaSubsessionIterator iter(fInputSession)

Referenced by MediaSession::absEndTime(), MediaSession::absStartTime(), AVIFileSink::AVIFileSink(), beginQOSMeasurement(), checkForPacketArrival(), checkInterPacketGaps(), RTSPServer::closeAllClientSessionsForServerMediaSession(), closeMediaSinks(), QuickTimeFileSink::completeOutputFile(), AVIFileSink::completeOutputFile(), continueAfterDESCRIBE(), ProxyServerMediaSession::continueAfterDESCRIBE(), QuickTimeFileSink::continuePlaying(), AVIFileSink::continuePlaying(), HashTable::getFirst(), RTSPServer::RTSPClientSession::handleCmd_SETUP(), RTSPServer::RTSPClientSession::handleCmd_withinSession(), MatroskaDemux::handleEndOfFile(), MatroskaFile::handleEndOfTrackHeaderParsing(), RTSPServerSupportingHTTPStreaming::RTSPClientConnectionSupportingHTTPStreaming::handleHTTPCmd_StreamingGET(), RTSPClient::handlePLAYResponse(), MediaSession::initiateByMediaType(), HandlerSet::lookupHandler(), QuickTimeFileSink::onSourceClosure1(), AVIFileSink::onSourceClosure1(), ourIPAddress(), Groupsock::outputToAllMembersExcept(), printQOSData(), QuickTimeFileSink::QuickTimeFileSink(), RTCPMemberDatabase::reapOldMembers(), HashTable::RemoveNext(), RTPReceptionStatsDB::reset(), DarwinInjector::setDestination(), setupStreams(), shutdownStream(), BasicTaskScheduler::SingleStep(), subsessionAfterPlaying(), AVIFileSink::~AVIFileSink(), QuickTimeFileSink::~QuickTimeFileSink(), and RTCPInstance::~RTCPInstance().

size = addWord(0)

Definition at line 713 of file AVIFileSink.cpp.

size = addWord(fCurrentIOState->fAVISize)

Definition at line 712 of file AVIFileSink.cpp.

size = addWord((unsigned)-1)

Definition at line 711 of file AVIFileSink.cpp.

size = addWord(fBufferSize)

Definition at line 710 of file AVIFileSink.cpp.

size = addWord(0)

Definition at line 709 of file AVIFileSink.cpp.

size = addWord(0)

Definition at line 707 of file AVIFileSink.cpp.

size = addWord(fCurrentIOState->fAVIRate)

Definition at line 706 of file AVIFileSink.cpp.

size = addWord(fCurrentIOState->fAVIScale)

Definition at line 705 of file AVIFileSink.cpp.

size = addWord(0)

Definition at line 704 of file AVIFileSink.cpp.

size = addWord(0)

Definition at line 703 of file AVIFileSink.cpp.

size = addWord(0)

Definition at line 702 of file AVIFileSink.cpp.

size = addWord(fCurrentIOState->fAVICodecHandlerType)

Definition at line 701 of file AVIFileSink.cpp.

size

Initial value:

 add4ByteString(fCurrentIOState->fIsVideo ? "vids" :
                           fCurrentIOState->fIsAudio ? "auds" :
                           "????")

Definition at line 698 of file AVIFileSink.cpp.

size = addFileHeader_JUNK()

Definition at line 694 of file AVIFileSink.cpp.

size = addFileHeader_strf()

Definition at line 692 of file AVIFileSink.cpp.

size = addFileHeader_strh()

Definition at line 691 of file AVIFileSink.cpp.

size = addZeroWords(4)

Definition at line 687 of file AVIFileSink.cpp.

size = addWord(fMovieHeight)

Definition at line 686 of file AVIFileSink.cpp.

size = addWord(fMovieWidth)

Definition at line 685 of file AVIFileSink.cpp.

size = addWord(fBufferSize)

Definition at line 684 of file AVIFileSink.cpp.

size = addWord(fNumSubsessions)

Definition at line 683 of file AVIFileSink.cpp.

size = addWord(0)

Definition at line 682 of file AVIFileSink.cpp.

size = addWord(0)

Definition at line 681 of file AVIFileSink.cpp.

size = addWord(AVIF_TRUSTCKTYPE|AVIF_HASINDEX|AVIF_ISINTERLEAVED)

Definition at line 679 of file AVIFileSink.cpp.

size = addWord(0)

Definition at line 678 of file AVIFileSink.cpp.

size = addWord(0)

Definition at line 677 of file AVIFileSink.cpp.

size = addWord(usecPerFrame)

Definition at line 675 of file AVIFileSink.cpp.

size = addFileHeader_JUNK()

Definition at line 663 of file AVIFileSink.cpp.

size = addFileHeader_avih()

Definition at line 636 of file AVIFileSink.cpp.

size = addFileHeader_movi()

Definition at line 630 of file AVIFileSink.cpp.

size = addFileHeader_hdrl()

Definition at line 629 of file AVIFileSink.cpp.

Referenced by QuickTimeFileSink::addArbitraryString(), QuickTimeFileSink::addAtom_hdlr2(), MP3FrameParams::computeSideInfoSize(), if(), MatroskaFileParser::lookForNextBlock(), MatroskaFileParser::lookForNextTrack(), MatroskaFileParser::parseCues(), MatroskaFileParser::parseEBMLIdAndSize(), MatroskaFileParser::parseEBMLVal_binary(), MatroskaFileParser::parseEBMLVal_float(), MatroskaFileParser::parseEBMLVal_string(), MatroskaFileParser::parseEBMLVal_unsigned(), MatroskaFileParser::parseEBMLVal_unsigned64(), MatroskaFileParser::parseStartOfFile(), MatroskaFileParser::parseTrack(), MPEG4GenericRTPSource::processSpecialHeader(), MPEG1or2DemuxedServerMediaSubsession::seekStreamSource(), MatroskaFileParser::skipHeader(), SocketDescriptor::tcpReadHandler1(), ClientTrickPlayState::updateStateOnPlayChange(), and while().

MediaSubsession* subsession

Definition at line 642 of file AVIFileSink.cpp.

Referenced by MediaSession::absEndTime(), MediaSession::absStartTime(), QuickTimeFileSink::addAtom_hdlr2(), ServerMediaSession::addSubsession(), AVIFileSink::AVIFileSink(), AVISubsessionIOState::AVISubsessionIOState(), beginQOSMeasurement(), checkForPacketArrival(), checkInterPacketGaps(), closeMediaSinks(), QuickTimeFileSink::completeOutputFile(), AVIFileSink::completeOutputFile(), RTSPClient::constructSubsessionURL(), continueAfterDESCRIBE(), continueAfterSETUP(), QuickTimeFileSink::continuePlaying(), AVIFileSink::continuePlaying(), DummySink::createNew(), ServerMediaSession::duration(), ServerMediaSession::generateSDPDescription(), RTSPServer::RTSPClientSession::handleCmd_PAUSE(), RTSPServer::RTSPClientSession::handleCmd_PLAY(), RTSPServer::RTSPClientSession::handleCmd_SETUP(), RTSPServer::RTSPClientSession::handleCmd_TEARDOWN(), RTSPServer::RTSPClientSession::handleCmd_withinSession(), RTSPServerSupportingHTTPStreaming::RTSPClientConnectionSupportingHTTPStreaming::handleHTTPCmd_StreamingGET(), RTSPClient::handlePLAYResponse(), RTSPClient::handleSETUPResponse(), MediaSession::initializeWithSDP(), MediaSession::initiateByMediaType(), QuickTimeFileSink::onRTCPBye(), AVIFileSink::onRTCPBye(), QuickTimeFileSink::onSourceClosure1(), AVIFileSink::onSourceClosure1(), operator<<(), printQOSData(), QuickTimeFileSink::QuickTimeFileSink(), RTSPServer::RTSPClientSession::reclaimStreamStates(), RTSPClient::sendPauseCommand(), RTSPClient::sendPlayCommand(), RTSPClient::sendRecordCommand(), RTSPClient::sendRequest(), RTSPClient::sendSetupCommand(), RTSPClient::sendTeardownCommand(), DarwinInjector::setDestination(), setupStreams(), setupSubsession(), shutdownStream(), subsessionAfterPlaying(), subsessionByeHandler(), SubsessionIOState::SubsessionIOState(), ServerMediaSession::testScaleFactor(), while(), AVIFileSink::~AVIFileSink(), and QuickTimeFileSink::~QuickTimeFileSink().

unsigned subsessionCount = 0

Definition at line 640 of file AVIFileSink.cpp.

Referenced by while().

unsigned usecPerFrame = fMovieFPS == 0 ? 0 : 1000000/fMovieFPS

Definition at line 674 of file AVIFileSink.cpp.


Generated on Mon Apr 29 13:28:24 2013 for live by  doxygen 1.5.2