I’ve stumbeld over some really odd behaviour that I thought is worth bringing up here.
We’re building an application that records streams of attached cameras to compressed video files, using Argus and the multimedia framework on a Jetson Xavier.
All works well until I make use of a specific feature, setting the clip rectangle to define the relevant image area to record using setSourceClipRect().
Let’s say we have a sensor delivering 1936x1100 and we want to crop out the inner 1920x1080 pixels (btw. it’s a shame that we can’t just drop pixels on the edges), I calculate the source clip rectangle to be ~ (0.004132, 0.009091, 0.995868, 0.990909). I pass it to the function, it returns STATUS_OK and everything looks fine until I try to acquire a buffer, which hangs forever.
Now the funny thing is that if I take a value with a lower float resolution, it seems to work fine: (0.004, 0.009, 0.996, 0.991) works nicely. I tried just rounding the precision and it works, but only for some clipping numbers, eg it wouldn’t work for clipping 1920x640.
I suspect it might be that the resulting stream size has to be even or something like this?
Anyway, would be great if this would be just working. I want to mention that this happens only when using STREAM_TYPE_BUFFER & BUFFER_TYPE_EGL_IMAGE, I had no such problems when using STREAM_TYPE_EGL and acquired the images using a frame consumer.
Your help is much appreciated.