Oiseyer Inc. is a California-based software development company that was established in March, 2006.
2006
- March – Developed the multithread style server application capable of connecting multiple people. This server became the core foundation of the KeyHole system. Developed video encoder, decoder, and communication module to utilize the server. A game company adopted this server as their network engine .
-
April – Developed the following software:
- KeyHoleVideo (Windows), hybrid of video encoder, P2P communication and server communication modules.
- KeyHoleTV (Windows) that contains video decoder and communication module.
- September – Filed patent application for the unique encoding system in USA. Began video distribution via KeyHoleVideo and KeyHoleTV .
2007
- Upgraded voice encoder and decoder – the previous KeyHole system that used voice-based encoder was not able to reproduce complex sounds (voice and music, handclap, etc.) due to its large frequency range. The upgraded version enabled to play complex sounds and allowed to express sound as one packet, which helped to create flowing sound even during packet loss .
2008
-
Developed the following versions for
KeyHoleTV
:
- Linux
- Windows Mobile
- MacOSX
2009
- Developed iPhone version of KeyHoleTV
All video encoder/decoder, sound encoder/decoder and communication module are developed with ANSI C .
GUI parts are developed on either Objective-C or C , depending on the OS. Underlying layer (Window for Windows, View for Mac and GTK+ for Linux) is used to create the upper layer for the GUI’s basic features, like buttons and picture lists.
Current KeyHole system is designed to be operated by multi-thread . All threads are in cooperative relationship without Mutex . Each thread is in an infinite loop format using Sleep (or usleep) and the threads process events using queues from the infinite list. In order for a thread to delegate processing from another thread , it will always have the queue from the infinite list.
Infinite List
Windows, Mac or Linux can only display items on MainLoop only, therefore, other threads should not be allowed to display items. Exclusion processing is performed by one thread writing to queue and its data gets extracted by a timer function for display items.
Thread Loop
The KeyHole system is designed not to perform dynamic memory allocation . During initialization of the application, KeyHole system allocates all memory, which then gets recycling by the application. However, there are cases where OS dependent memory allocations will be used in case of chat processing for an OS dependent drawing process.