6

I've found some odd behavior around Camera.Parameters.setRecordingHint that I'd like to understand better.

If I set it to true, the size of the preview image can come back different from what I pass to setPreviewSize. It depends on what size I set it to-- some aspect ratios work and some don't.

See the screenshots below-- setPreviewSize has been set to 640x480 for both, but one has setRecordingHint to true and the other to false. I have the code that produces this effect on GitHub.

Is this expected behavior? The docs for setRecordingHint don't indicate anything like this.

comparison of front-facing camera on S4 with setRecordingHint true/false

paleozogt
  • 6,393
  • 11
  • 51
  • 94

2 Answers2

7

You need to set video-size parameter to the correct value. I had the same problem - preview size was 640x480 and the preview appeared stretched while using setRecordingHint(true). I then used getParameters().flatten() to print out all parameters set for my Camera device. My video-size parameter was actually set to 1920x1080 causing the incorrect aspect ratio. You can change this parameter using params.set("video-size", "WxH"). Only then is the aspect ratio correct.

  • is `"video-size"` documented anywhere? – paleozogt Dec 22 '14 at 18:02
  • Thanks for the suggestion, I actually had to set all 3 sizes (preview, picture and video) to the same values to have it working properly on a Samsung S4 :/ This is really weird and not documented at all! – dmarcato Apr 02 '15 at 21:16
  • Note that it may not work to set "video-size" if it is not an approved resolution in the "video-size-values" list. – Daniel Smith Nov 19 '15 at 23:52
0

i've seen a lot of random behavior around this and it unfortunately depends on the oem as well. i see a difference in framerate as well on some phones, like nexus 4 preview framerate drops in half. we depend on the preview frame callback to come at our desired framerate so we have to switch it on phone model unfortunately.

ryan gordon
  • 140
  • 10
  • In fact on the MotoG running 4.4.2 this totally breaks video recording. You can record perhaps a single video but if you try to prepare the media recorder to record again using the the preview surface freezes and recording hangs. – Sani Elfishawy Jun 19 '14 at 01:17
  • I can confirm that on Nexus 4 (Android 5.0), the framerate breaks in half when disabling the recording hint. However, on many other devices it does not reduce the framerate at all (including the LG G3). – robert Dec 08 '14 at 16:37
  • our joke around the office is that the hint is to not setRecordingHint – paleozogt Dec 08 '14 at 17:31