liveMedia/AVIFileSink.cpp File Reference

#include "AVIFileSink.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 = ftell(fOutFid)
 size = addWord(0)
 size = addWord(0)
 size = addWord(AVIF_TRUSTCKTYPE|AVIF_HASINDEX|AVIF_ISINTERLEAVED)
 fAVIHFrameCountPosition = ftell(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 = ftell(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 = ftell(fOutFid); addWord(0); \
        add4ByteString("" #name ""); \
        unsigned ignoredSize = 8;/*don't include size of tag or size fields*/ \
        unsigned size = 12

Definition at line 537 of file AVIFileSink.cpp.

#define addFileHeader1 ( name   ) 

Value:

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

Definition at line 545 of file AVIFileSink.cpp.

#define addFileHeaderEnd

Value:

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

Definition at line 552 of file AVIFileSink.cpp.

#define AVI_MASTER_INDEX_SIZE   256

Definition at line 689 of file AVIFileSink.cpp.

Referenced by if().

#define AVIF_COPYRIGHTED   0x00020000

Definition at line 600 of file AVIFileSink.cpp.

#define AVIF_HASINDEX   0x00000010

Definition at line 595 of file AVIFileSink.cpp.

#define AVIF_ISINTERLEAVED   0x00000100

Definition at line 597 of file AVIFileSink.cpp.

#define AVIF_MUSTUSEINDEX   0x00000020

Definition at line 596 of file AVIFileSink.cpp.

#define AVIF_TRUSTCKTYPE   0x00000800

Definition at line 598 of file AVIFileSink.cpp.

#define AVIF_WASCAPTUREFILE   0x00010000

Definition at line 599 of file AVIFileSink.cpp.

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

Definition at line 25 of file AVIFileSink.cpp.

Referenced by 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 692 of file AVIFileSink.cpp.

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

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

else if ( fCurrentIOState->  fIsVideo  ) 

Definition at line 643 of file AVIFileSink.cpp.

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

Referenced by MPEG4VideoStreamDiscreteFramer::afterGettingFrame1(), MPEG1or2VideoStreamDiscreteFramer::afterGettingFrame1(), MPEG1or2Demux::handleClosure(), MP3HuffmanDecode(), NetAddressList::NetAddressList(), RTPReceptionStats::noteIncomingPacket(), ourIPAddress(), RTPInterface::startNetworkReading(), RTPInterface::stopNetworkReading(), and SubsessionIOState::useFrameForHinting().

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

iter reset (  ) 

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

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

Definition at line 572 of file AVIFileSink.cpp.

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

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


Variable Documentation

addFileHeaderEnd

Definition at line 711 of file AVIFileSink.cpp.

addFileHeaderEnd

Definition at line 687 of file AVIFileSink.cpp.

addFileHeaderEnd

Definition at line 624 of file AVIFileSink.cpp.

addFileHeaderEnd

Definition at line 617 of file AVIFileSink.cpp.

addFileHeaderEnd

Definition at line 593 of file AVIFileSink.cpp.

addFileHeaderEnd

Definition at line 562 of file AVIFileSink.cpp.

fAVIHFrameCountPosition = ftell(fOutFid)

Definition at line 609 of file AVIFileSink.cpp.

fAVIHMaxBytesPerSecondPosition = ftell(fOutFid)

Definition at line 605 of file AVIFileSink.cpp.

fJunkNumber = 0

Definition at line 622 of file AVIFileSink.cpp.

fJunkNumber

Definition at line 591 of file AVIFileSink.cpp.

fMoviSizePosition = headerSizePosn

Definition at line 709 of file AVIFileSink.cpp.

fMoviSizeValue = size-ignoredSize

Definition at line 710 of file AVIFileSink.cpp.

fRIFFSizePosition = headerSizePosn

Definition at line 560 of file AVIFileSink.cpp.

fRIFFSizeValue = size-ignoredSize

Definition at line 561 of file AVIFileSink.cpp.

fCurrentIOState fSTRHFrameCountPosition = ftell(fOutFid)

Definition at line 637 of file AVIFileSink.cpp.

MediaSubsessionIterator iter(fInputSession)

Referenced by HandlerSet::assignHandler(), AVIFileSink::AVIFileSink(), beginQOSMeasurement(), checkForPacketArrival(), checkInterPacketGaps(), closeMediaSinks(), QuickTimeFileSink::completeOutputFile(), AVIFileSink::completeOutputFile(), QuickTimeFileSink::continuePlaying(), AVIFileSink::continuePlaying(), RTSPServer::RTSPClientSession::handleCmd_SETUP(), RTSPServer::RTSPClientSession::handleCmd_withinSession(), MediaSession::initiateByMediaType(), main(), QuickTimeFileSink::onSourceClosure1(), AVIFileSink::onSourceClosure1(), Groupsock::outputToAllMembersExcept(), RTSPClient::playMediaSession(), printQOSData(), QuickTimeFileSink::QuickTimeFileSink(), RTCPMemberDatabase::reapOldMembers(), HandlerSet::removeHandler(), HashTable::RemoveNext(), RTPReceptionStatsDB::reset(), DarwinInjector::setDestination(), setupStreams(), BasicTaskScheduler::SingleStep(), subsessionAfterPlaying(), RTSPClient::teardownMediaSession(), AVIFileSink::~AVIFileSink(), QuickTimeFileSink::~QuickTimeFileSink(), and RTCPInstance::~RTCPInstance().

size = addWord(0)

Definition at line 642 of file AVIFileSink.cpp.

size = addWord(fCurrentIOState->fAVISize)

Definition at line 641 of file AVIFileSink.cpp.

size = addWord((unsigned)-1)

Definition at line 640 of file AVIFileSink.cpp.

size = addWord(fBufferSize)

Definition at line 639 of file AVIFileSink.cpp.

size = addWord(0)

Definition at line 638 of file AVIFileSink.cpp.

size = addWord(0)

Definition at line 636 of file AVIFileSink.cpp.

size = addWord(fCurrentIOState->fAVIRate)

Definition at line 635 of file AVIFileSink.cpp.

size = addWord(fCurrentIOState->fAVIScale)

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(0)

Definition at line 631 of file AVIFileSink.cpp.

size = addWord(fCurrentIOState->fAVICodecHandlerType)

Definition at line 630 of file AVIFileSink.cpp.

size

Initial value:

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

Definition at line 627 of file AVIFileSink.cpp.

size = addFileHeader_JUNK()

Definition at line 623 of file AVIFileSink.cpp.

size = addFileHeader_strf()

Definition at line 621 of file AVIFileSink.cpp.

size = addFileHeader_strh()

Definition at line 620 of file AVIFileSink.cpp.

size = addZeroWords(4)

Definition at line 616 of file AVIFileSink.cpp.

size = addWord(fMovieHeight)

Definition at line 615 of file AVIFileSink.cpp.

size = addWord(fMovieWidth)

Definition at line 614 of file AVIFileSink.cpp.

size = addWord(fBufferSize)

Definition at line 613 of file AVIFileSink.cpp.

size = addWord(fNumSubsessions)

Definition at line 612 of file AVIFileSink.cpp.

size = addWord(0)

Definition at line 611 of file AVIFileSink.cpp.

size = addWord(0)

Definition at line 610 of file AVIFileSink.cpp.

size = addWord(AVIF_TRUSTCKTYPE|AVIF_HASINDEX|AVIF_ISINTERLEAVED)

Definition at line 608 of file AVIFileSink.cpp.

size = addWord(0)

Definition at line 607 of file AVIFileSink.cpp.

size = addWord(0)

Definition at line 606 of file AVIFileSink.cpp.

size = addWord(usecPerFrame)

Definition at line 604 of file AVIFileSink.cpp.

size = addFileHeader_JUNK()

Definition at line 592 of file AVIFileSink.cpp.

size = addFileHeader_avih()

Definition at line 565 of file AVIFileSink.cpp.

size = addFileHeader_movi()

Definition at line 559 of file AVIFileSink.cpp.

size = addFileHeader_hdrl()

Definition at line 558 of file AVIFileSink.cpp.

Referenced by QuickTimeFileSink::addArbitraryString(), QuickTimeFileSink::addAtom_hdlr2(), MP3FrameParams::computeSideInfoSize(), RTSPClient::getResponse1(), if(), MPEG4GenericRTPSource::processSpecialHeader(), MPEG1or2DemuxedServerMediaSubsession::seekStreamSource(), SocketDescriptor::tcpReadHandler(), ClientTrickPlayState::updateStateOnPlayChange(), and while().

MediaSubsession* subsession

Definition at line 571 of file AVIFileSink.cpp.

Referenced by QuickTimeFileSink::addAtom_hdlr2(), ServerMediaSession::addSubsession(), AVIFileSink::AVIFileSink(), AVISubsessionIOState::AVISubsessionIOState(), beginQOSMeasurement(), checkForPacketArrival(), checkInterPacketGaps(), clientSetupSubsession(), closeMediaSinks(), QuickTimeFileSink::completeOutputFile(), AVIFileSink::completeOutputFile(), RTSPClient::constructSubsessionURL(), QuickTimeFileSink::continuePlaying(), AVIFileSink::continuePlaying(), ServerMediaSession::duration(), ServerMediaSession::generateSDPDescription(), RTSPServer::RTSPClientSession::handleCmd_PAUSE(), RTSPServer::RTSPClientSession::handleCmd_PLAY(), RTSPServer::RTSPClientSession::handleCmd_SETUP(), RTSPServer::RTSPClientSession::handleCmd_withinSession(), MediaSession::initializeWithSDP(), MediaSession::initiateByMediaType(), main(), QuickTimeFileSink::onRTCPBye(), AVIFileSink::onRTCPBye(), QuickTimeFileSink::onSourceClosure1(), AVIFileSink::onSourceClosure1(), RTSPClient::pauseMediaSubsession(), RTSPClient::playMediaSession(), RTSPClient::playMediaSubsession(), printQOSData(), QuickTimeFileSink::QuickTimeFileSink(), RTSPServer::RTSPClientSession::reclaimStreamStates(), RTSPClient::recordMediaSubsession(), DarwinInjector::setDestination(), RTSPClient::setupMediaSubsession(), setupStreams(), subsessionAfterPlaying(), subsessionByeHandler(), SubsessionIOState::SubsessionIOState(), RTSPClient::teardownMediaSession(), RTSPClient::teardownMediaSubsession(), ServerMediaSession::testScaleFactor(), while(), AVIFileSink::~AVIFileSink(), and QuickTimeFileSink::~QuickTimeFileSink().

unsigned subsessionCount = 0

Definition at line 569 of file AVIFileSink.cpp.

Referenced by while().

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

Definition at line 603 of file AVIFileSink.cpp.


Generated on Tue Oct 7 15:38:22 2008 for live by  doxygen 1.5.2