#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) |
| MediaSubsession * | subsession |
| 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 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:
Definition at line 552 of file AVIFileSink.cpp.
| #define AVI_MASTER_INDEX_SIZE 256 |
| #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 | ) | ( ((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().
| 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 | ( | ) |
| 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 }
Definition at line 711 of file AVIFileSink.cpp.
Definition at line 687 of file AVIFileSink.cpp.
Definition at line 624 of file AVIFileSink.cpp.
Definition at line 617 of file AVIFileSink.cpp.
Definition at line 593 of file AVIFileSink.cpp.
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.
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.
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().
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 |
| unsigned usecPerFrame = fMovieFPS == 0 ? 0 : 1000000/fMovieFPS |
Definition at line 603 of file AVIFileSink.cpp.
1.5.2