I'm attempting to stream video data from the Panda board over UDP. I'm on an ICS build which is working well with HW acceleration enabled. I'm streaming using a foreground service, and then checking when each 1328-byte UDP packet (1 ethernet frame) leaves the Pandaboard using tcp-dump. The ethernet frame contains 7x 188 byte transport stream packets: It is highly desirable that the source data rate is maintained.
Now when I'm on Android's homescreen, I'm seeing on average 2 UDP packets every millisecond, and everything downstream copes perfectly (see first graph). However, as soon as I have any activity in the foreground (like settings, the app-draw, or calculator), I'm seeing bursty data with gaps of up to a second (see second graph). Downstream, I'm getting packet-loss due to buffer overflows. So, why would this happen and how can I fix it? A colleague has suggested that it may be due to scheduling delays (e.g. kernel locks due to HW-acceleration?) introducing the burstiness? What else could be causing it? How can I control it? <https://lh4.googleusercontent.com/-BAZmE1ybb4k/T970WgOzPnI/AAAAAAAAAAc/mLU08g0ayj4/s1600/dump_steady2.png><https://lh5.googleusercontent.com/-DPCP38nZLpU/T970akOkpqI/AAAAAAAAAAk/K6THnGsYwr4/s1600/dump_bursty.png> -- unsubscribe: android-porting+unsubscr...@googlegroups.com website: http://groups.google.com/group/android-porting