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

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 538 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 546 of file AVIFileSink.cpp.

#define addFileHeaderEnd

Value:

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

Definition at line 553 of file AVIFileSink.cpp.

#define AVI_MASTER_INDEX_SIZE   256

Definition at line 690 of file AVIFileSink.cpp.

Referenced by if().

#define AVIF_COPYRIGHTED   0x00020000

Definition at line 601 of file AVIFileSink.cpp.

#define AVIF_HASINDEX   0x00000010

Definition at line 596 of file AVIFileSink.cpp.

#define AVIF_ISINTERLEAVED   0x00000100

Definition at line 598 of file AVIFileSink.cpp.

#define AVIF_MUSTUSEINDEX   0x00000020

Definition at line 597 of file AVIFileSink.cpp.

#define AVIF_TRUSTCKTYPE   0x00000800

Definition at line 599 of file AVIFileSink.cpp.

#define AVIF_WASCAPTUREFILE   0x00010000

Definition at line 600 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(), and SubsessionIOState::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 693 of file AVIFileSink.cpp.

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

00693                           {
00694       size += addHalfWord(4); // wLongsPerEntry
00695       size += addHalfWord(0); // bIndexSubType + bIndexType
00696       size += addWord(0); // nEntriesInUse #####
00697       size += addWord(fCurrentIOState->fAVISubsessionTag); // dwChunkId
00698       size += addZeroWords(2); // dwReserved
00699       size += addZeroWords(AVI_MASTER_INDEX_SIZE*4);
00700     } else {

else if ( fCurrentIOState->  fIsVideo  ) 

Definition at line 644 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().

00644                                    {
00645         size += addHalfWord(fMovieWidth);
00646         size += addHalfWord(fMovieHeight);
00647     } else {

iter reset (  ) 

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

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

Definition at line 573 of file AVIFileSink.cpp.

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

Referenced by NetAddressList::NetAddressList().

00573                                                {
00574       fCurrentIOState = (AVISubsessionIOState*)(subsession->miscPtr);
00575       if (fCurrentIOState == NULL) continue;
00576       if (strcmp(subsession->mediumName(), "video") != 0) continue;
00577 
00578       fCurrentIOState->setAVIstate(subsessionCount++);
00579       size += addFileHeader_strl();
00580     }


Variable Documentation

addFileHeaderEnd

Definition at line 712 of file AVIFileSink.cpp.

addFileHeaderEnd

Definition at line 688 of file AVIFileSink.cpp.

addFileHeaderEnd

Definition at line 625 of file AVIFileSink.cpp.

addFileHeaderEnd

Definition at line 618 of file AVIFileSink.cpp.

addFileHeaderEnd

Definition at line 594 of file AVIFileSink.cpp.

addFileHeaderEnd

Definition at line 563 of file AVIFileSink.cpp.

fAVIHFrameCountPosition = (unsigned)TellFile64(fOutFid)

Definition at line 610 of file AVIFileSink.cpp.

fAVIHMaxBytesPerSecondPosition = (unsigned)TellFile64(fOutFid)

Definition at line 606 of file AVIFileSink.cpp.

fJunkNumber = 0

Definition at line 623 of file AVIFileSink.cpp.

fJunkNumber

Definition at line 592 of file AVIFileSink.cpp.

fMoviSizePosition = headerSizePosn

Definition at line 710 of file AVIFileSink.cpp.

fMoviSizeValue = size-ignoredSize

Definition at line 711 of file AVIFileSink.cpp.

fRIFFSizePosition = headerSizePosn

Definition at line 561 of file AVIFileSink.cpp.

fRIFFSizeValue = size-ignoredSize

Definition at line 562 of file AVIFileSink.cpp.

fCurrentIOState fSTRHFrameCountPosition = (unsigned)TellFile64(fOutFid)

Definition at line 638 of file AVIFileSink.cpp.

MediaSubsessionIterator iter(fInputSession)

Referenced by AVIFileSink::AVIFileSink(), beginQOSMeasurement(), checkForPacketArrival(), checkInterPacketGaps(), closeMediaSinks(), QuickTimeFileSink::completeOutputFile(), AVIFileSink::completeOutputFile(), continueAfterDESCRIBE(), QuickTimeFileSink::continuePlaying(), AVIFileSink::continuePlaying(), RTSPServer::RTSPClientSession::handleCmd_SETUP(), RTSPServer::RTSPClientSession::handleCmd_withinSession(), MatroskaDemux::handleEndOfFile(), MatroskaFile::handleEndOfTrackHeaderParsing(), RTSPServerSupportingHTTPStreaming::RTSPClientSessionSupportingHTTPStreaming::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 643 of file AVIFileSink.cpp.

size = addWord(fCurrentIOState->fAVISize)

Definition at line 642 of file AVIFileSink.cpp.

size = addWord((unsigned)-1)

Definition at line 641 of file AVIFileSink.cpp.

size = addWord(fBufferSize)

Definition at line 640 of file AVIFileSink.cpp.

size = addWord(0)

Definition at line 639 of file AVIFileSink.cpp.

size = addWord(0)

Definition at line 637 of file AVIFileSink.cpp.

size = addWord(fCurrentIOState->fAVIRate)

Definition at line 636 of file AVIFileSink.cpp.

size = addWord(fCurrentIOState->fAVIScale)

Definition at line 635 of file AVIFileSink.cpp.

size = addWord(0)

Definition at line 634 of file AVIFileSink.cpp.

size = addWord(0)

Definition at line 633 of file AVIFileSink.cpp.

size = addWord(0)

Definition at line 632 of file AVIFileSink.cpp.

size = addWord(fCurrentIOState->fAVICodecHandlerType)

Definition at line 631 of file AVIFileSink.cpp.

size

Initial value:

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

Definition at line 628 of file AVIFileSink.cpp.

size = addFileHeader_JUNK()

Definition at line 624 of file AVIFileSink.cpp.

size = addFileHeader_strf()

Definition at line 622 of file AVIFileSink.cpp.

size = addFileHeader_strh()

Definition at line 621 of file AVIFileSink.cpp.

size = addZeroWords(4)

Definition at line 617 of file AVIFileSink.cpp.

size = addWord(fMovieHeight)

Definition at line 616 of file AVIFileSink.cpp.

size = addWord(fMovieWidth)

Definition at line 615 of file AVIFileSink.cpp.

size = addWord(fBufferSize)

Definition at line 614 of file AVIFileSink.cpp.

size = addWord(fNumSubsessions)

Definition at line 613 of file AVIFileSink.cpp.

size = addWord(0)

Definition at line 612 of file AVIFileSink.cpp.

size = addWord(0)

Definition at line 611 of file AVIFileSink.cpp.

size = addWord(AVIF_TRUSTCKTYPE|AVIF_HASINDEX|AVIF_ISINTERLEAVED)

Definition at line 609 of file AVIFileSink.cpp.

size = addWord(0)

Definition at line 608 of file AVIFileSink.cpp.

size = addWord(0)

Definition at line 607 of file AVIFileSink.cpp.

size = addWord(usecPerFrame)

Definition at line 605 of file AVIFileSink.cpp.

size = addFileHeader_JUNK()

Definition at line 593 of file AVIFileSink.cpp.

size = addFileHeader_avih()

Definition at line 566 of file AVIFileSink.cpp.

size = addFileHeader_movi()

Definition at line 560 of file AVIFileSink.cpp.

size = addFileHeader_hdrl()

Definition at line 559 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 572 of file AVIFileSink.cpp.

Referenced by 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_withinSession(), RTSPServerSupportingHTTPStreaming::RTSPClientSessionSupportingHTTPStreaming::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 570 of file AVIFileSink.cpp.

Referenced by while().

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

Definition at line 604 of file AVIFileSink.cpp.


Generated on Thu Feb 2 23:51:47 2012 for live by  doxygen 1.5.2