int QTFileBroadcaster::MapMovieToStream() { int result = -1; bool matches = false; ArrayList<bool> map; bool *isMappedPtr; int masterPos = 0; int mappedTracks = 0; map.SetSize(fStreamSDPParser.fSDPMediaList.Size()); isMappedPtr = map.Begin(); while (isMappedPtr) { *isMappedPtr = false; isMappedPtr = map.Next(); } TypeMap *movieMediaTypePtr = fMovieSDPParser->fSDPMediaList.Begin(); while (movieMediaTypePtr) { TypeMap *streamMediaTypePtr = fStreamSDPParser.fSDPMediaList.Begin(); while (streamMediaTypePtr) { matches = CompareMediaTypes(movieMediaTypePtr, streamMediaTypePtr); if (matches) { masterPos = fStreamSDPParser.fSDPMediaList.GetPos(); isMappedPtr = map.SetPos(masterPos); if (isMappedPtr == NULL) break; if (false == *isMappedPtr) { movieMediaTypePtr->fMediaStreamPtr = streamMediaTypePtr->fMediaStreamPtr; *isMappedPtr = true; mappedTracks++; break; } } streamMediaTypePtr = fStreamSDPParser.fSDPMediaList.Next(); } movieMediaTypePtr = fMovieSDPParser->fSDPMediaList.Next(); } result = mappedTracks; return result; }