I bought a DV camcorder for the birth of my son in 2000, and started editing the videos on my PC. I was really impressed by the technology, and the fact that if could record one hour of digital video. I worked out the math, and the result was an incredible 15GB of data on a very small tape cassette costing about 5$. At the time, the only archive storage available to the general public was the CD where one could burn only 600MB.
A little while later, while backing up my PC's data on CDROM, I felt terribly frustrated, because I was able to save gigabytes of digital video on tape in a simple operation, while it took me ages to burn CD's a few hundred megabytes at a time. I thought at the time that if I could make the data look like video, it would be possible to save it on DV tape.
I started experimenting with AVI files (DV capture format), and developed a product able to insert and extract data in the video frames. This initial program calle AVIFE (AVI Filler and Extractor) worked well, but was not very convenient : because it worked in two steps : you had to load the data in an available AVI file, and then upload the file to the DV. The opposite operation worked also in two steps : first capture the video on disk, and then extract the data. It became also very rapidly obvious that an error protection mechanism was mandatorybecause the writing and reading on/from video tape is not error-free (although it can be considered as extraordinary reliable - typically only 4 to 5 errored frames for a one-hour tape, i.e. 10 Gigabyte data).
I concluded that AVIFE was not commercially viable and started designing a more powerful and more user friendly program able to insert or extract data in/from a video stream in real-time. Its development and tuning proved quite challenging, as it was necessary to use DirectShow, Microsoft's (complex) Multimedia architecture. Furthermore, the real-time aspect was difficult to master as Windows is not a real time OS (lack of pre-emptive multitasking). The final product, DVStreamer, reads data files and inserts the data inside the frames of a generated video stream. Redundant data are inserted in order to correct potential errors.
Thanks to the enthousiasm of betatesters and user feedback, DVStreamer quickly evolved from the initial beta version into a stable and reliable product.
During the course of this development, I ended up building a significant expertise in DirectShow which, as I found out to my surprise, is rather scarce on the market and quite in demand.
DVStreamer also led me to dig into issues as diverse as multi-threading, software protection, and many other subjects I had never envisaged when I started this project in the first place.