#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) |
| MediaSubsession * | subsession |
| 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 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:
Definition at line 623 of file AVIFileSink.cpp.
| #define AVI_MASTER_INDEX_SIZE 256 |
| #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 | ) | ( ((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().
| 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 | ( | ) |
| 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 }
Definition at line 782 of file AVIFileSink.cpp.
Definition at line 758 of file AVIFileSink.cpp.
Definition at line 695 of file AVIFileSink.cpp.
Definition at line 688 of file AVIFileSink.cpp.
Definition at line 664 of file AVIFileSink.cpp.
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.
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.
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().
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 |
| unsigned usecPerFrame = fMovieFPS == 0 ? 0 : 1000000/fMovieFPS |
Definition at line 674 of file AVIFileSink.cpp.
1.5.2