Several Android porting projects we’ve been working on require video optimization.
Video performance issues are usually related to one of the following:
- video drivers
- OpenGL
- codecs
The most recent video performance issue occurred because video displayed with a rate of 7 frames per second instead of 25 FPS (the way it should be).
After using a series of benchmark programs to isolate the problem cause, it became clear the video player was displaying frames with frequency based on the audio stream time. As soon as we changed the frame rate frequency based on system time, everything started working OK.
Of course, this partial fix is not the final solution since some side effects are possible, such as non-synchronized video and audio streams. Experience shows that troubleshooting such issues becomes the essential and significant part of Android porting projects.
We wanted to share our approach to project estimation based on our extensive experience on a variety of projects. Early project estimation is the key to proper project definition and communication with customers. It helps establish project attributes (such as cost, duration, resources, and tasks), set expectations, and ensure that all parties involved have the same understanding of the project objectives.
Estimation process is a difficult task for a variety of reasons, including over/under estimation, exclusion of risks, lack of requirements, failure to involve the experts, etc.
DSR’s project estimation is done at a WBS (work breakdown structure) level and each task is estimated down to an hour. Estimating at this level helps identify areas of potential concern and expose inconsistencies between the estimates and client’s expectations. Inconsistencies may exist either due to client’s lack of understanding of the underlying complexities or DSR’s incomplete understanding of a task. Resolving these types of issues early in the process decreases the overall project risk, increases the quality of the estimates, and creates a realistic representation of a project.
During the estimation process, we generally try to keep in contact with the customer as much as needed to get the necessary clarifications on tasks and customer’s expectations. This ensures that the scope of the project is set correctly and increases the quality of the estimates.
At DSR, estimates are always done by resource(s) with most experience in the given task type and are reviewed by other specialists in the company to ensure validity. In addition, the estimation process goes through several iterations, which allows the customer and DSR to develop full understanding of the project and its execution, which contributes to the overall quality of the project delivery. Using previous projects’ performance and experience to refine the estimates increases the accuracy. Estimates are produced in three measures – optimistic, expected, and pessimistic. The final estimate is a combination of those measures taking into account the risk of each task.
All of these factors contribute to DSR’s project estimation process and deliver our customers quality information about the cost and duration of their projects.
We have been creating mobile solutions for our customers for almost a decade. But with each project’s experience come interesting challenges. Recently, we developed an iPhone application that is now available in the Apple Store. It required us to determine a user’s location at various points using GPS. It turned out that in developing GPS-based mobile applications, the accuracy of the coordinates can vary. These inaccuracies appear on the screen as sudden jumps in a user’s location on the map and are especially visible if the application is trying to plot a route that the user is traveling. These inaccuracies are the result of not discarding bad coordinate points and not detecting fluctuation of points in a route.
In certain situations the
CoreLocation framework can return points with incorrect coordinates. To deal with this issue, we developed the following criteria to determine that a point is invalid:
- Object’s location is null
- horizontalAccuracy < 0
- Temporary marker of the new location has a value less than the value of the temporary marker of the previous location. This indicates that the LocationManager has returned locations in the wrong order.
- New location’s temporary marker indicates that it was returned prior to starting the application because the CoreLocation framework caches points from the last time the GPS was used. This can create an undesirable result. For example, the user exits the GPS application, drives 40 miles, re-launches the GPS application, and the LocationManager returns the coordinate point that is off by 40 miles from the user’s current location.
In a situation where the signal is weak or the mobile device is on standby, the CoreLocation manager can return coordinate points that greatly vary from one another. To address this problem, we have applied specific filters (Kalman filter) and interpolation algorithms for detecting these false coordinates and smoothing out the points on the route. However, if you are building an application that requires you to know a user’s precise location without performing the additional analysis, you can use a shortcut that can significantly decrease the amount of inaccurate points – discard all points where horizontalAccuracy > 150 m.
Until next time, when we continue to share our experience in the mobile world!
Why a DSR Blog?
Why on earth would a contract software development company produce a blog? It’s a good question. People blog to share, to make money, or to feed their egos. Companies aren’t much different. Our company, DSR (Data Storage Research), isn’t much different either. That’s why we’re doing this—at least it’s a main reason why.
We’re blogging a several other reasons, too. Reasons like:
- Keeping in touch with our customers, partners, and anyone else interested in the things we are working on and working towards.
- Providing insight into our culture and experience. An open book is much better read.
- Posting about the various projects we have going on, discussing the challenges we encounter along the way, and talking about the tools, techniques, and processes we use to overcome them.
- Providing expert solutions and advice from our team’s knowledge and experience of our team. Common software development issues–both technical and process related—are interesting to explore in a blog format. (At least we think they are…)
This blog will let you get to know our team a little better and become a little more familiar with our culture. We’ve been around for about 12 years, and we use standard management and software development methodologies. Since DSR has extensive experience developing:
- Web-based systems
- Embedded systems applications
- Enterprise databases
- Device drivers
- iPhone, BlackBerry, Android, Brew, Symbian applications
we believe this blog will provide you with an insider’s look at how this development work happens. We hope we all learn something along the journey.
“New knowledge is the most valuable commodity on earth. The more truth we have to work with, the richer we become.” – Kurt Vonnegut
What’s Next?
This conversation place starts mostly as a monologue, but will evolve to include more integrated methods of direct communication. Please share your comments, questions, and suggestions.
Thank you, and we look forward to getting to know you. Like they say in Russian:
Do vstrechi, druz’ia! (Until next time, friends!)