FrameInterval(int ptr_type, long o){
		int frameIntvType;
		
		//check the pointer type
		switch(ptr_type){
		case 3:
			frameIntvType = 0; //UNSUPPORTED
			break;
		case 4:
			frameIntvType = 1; //DISCRETE
			break;
		case 5:
			frameIntvType = 2; //STEPWISE
			break;
		default:
			try {
				frameIntvType = doGetFrameIntvType(ptr_type, o);
			} catch (Exception e){
				//error checking frame interval type
				e.printStackTrace();
				System.err.println("There was an error checking the supported"
						+" interval types.\nPlease report this error to the"
						+"v4l4j mailing list.\nSee REAME file for "
						+"information on reporting bugs");
				type = Type.UNSUPPORTED;
				return;
			}
		}
		
		try {
			if(frameIntvType==1){
				discreteValues = new Vector<DiscreteInterval>();
				doGetDiscrete(ptr_type, o);
			} else if(frameIntvType==2){
				doGetStepwise(ptr_type, o);
			}
		} catch (Exception e){
			//error checking supported intervals
			e.printStackTrace();
			System.err.println("There was an error checking the supported"
					+" intervals.\nPlease report this error to the"
					+"v4l4j mailing list.\nSee REAME file for "
					+"information on reporting bugs");
			type = Type.UNSUPPORTED;
			return;
		}
		
		if(frameIntvType==0)
			type = Type.UNSUPPORTED;
		else if(frameIntvType==1){
			type = Type.DISCRETE;
		} else {
			type = Type.STEPWISE;
		}
	}