Categories
Uncategorized

Just saved $5,000

I had a project I was sending out to potential contractors, to display a 320×200 video feed based off images from SQL. My performance requirement was 30 FPS for 4 videos, 15 FPS for 8. One company wrote: “For $5000, we can implement the proof of concept suggested by my senior engineers (see below)… For […]

I had a project I was sending out to potential contractors, to display a 320×200 video feed based off images from SQL. My performance requirement was 30 FPS for 4 videos, 15 FPS for 8. One company wrote:

“For $5000, we can
implement the proof of concept suggested by my senior engineers (see below)…

For example, I had two of my senior engineers review the RFP. They both zeroed in on a possible bottleneck between animating the user interface at 30fps vs. retrieval from the database. It is their recommendation that a *proof of concept* be implemented that indentified the bottleneck (if any) so that the appropriate infrastructure could be implemented to achieve your performance goals.”

Up until that point, I had only used QT for a few days, had never written OpenGL before. I’m not a graphics programmer.

I did it myself, in a day, by reading the SQL in a thread, buffering multiple rows at a time, bypassing the QT calls to skip code that doesn’t apply for single frame videos, and using glTexImage2D to generate the texture and glTexSubImage2D to update the texture.

I didn’t have to modify the QT source, or come up with new data structures, or call an expert. Just pick the low hanging fruit. For all I know it could be twice as fast again if I really knew what I was doing.

Take it as a word of warning when dealing with fat contracting firms, more used to dealing with Cisco than small businesses. These guys think nothing of asking for 2K a day, spending a week on what would take a motivated hungry programmer a few hours. Meeting after meeting, week after week, charging you for that time, just to come up with a price you’d reject out of hand.

Leave a Reply

Your email address will not be published. Required fields are marked *