Closed Bug 832638 Opened 11 years ago Closed 10 years ago

Unable to record videos with Nexus S

Categories

(Firefox OS Graveyard :: Gaia::Camera, defect)

ARM
Gonk (Firefox OS)
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: gerard-majax, Unassigned)

Details

Attachments

(2 files, 1 obsolete file)

When switching to video recording mode, the camera preview freezes. With Gecko built in debug mode, one can see the following in logcat:

I/PRLog   (  772): 25643216[44776940]: already_AddRefed<mozilla::GonkRecorderProfile> mozilla::GonkRecorderProfileManager::Get(const char*) const:234 : aProfileName='cif'
I/PRLog   (  772): 25643216[44776940]: Recorder profile 'cif' is not supported

Changing profile in Camera app to 480p, the recording fails (with an error message about being unable to save video file) but preview works:
diff --git a/apps/camera/js/camera.js b/apps/camera/js/camera.js
index ff6b090..6bc4b9a 100644
--- a/apps/camera/js/camera.js
+++ b/apps/camera/js/camera.js
@@ -67,10 +67,10 @@ var Camera = {
   },
 
   _previewConfigVideo: {
-    profile: 'cif',
+    profile: '480p',
     rotation: 0,
-    width: 352,
-    height: 288
+    width: 480,
+    height: 800
   },
 
   _shutterKey: 'camera.shutter.enabled',

Looking at the files, we can see that an MPEG4 video has been created:
----rwxr-x system   sdcard_rw   810040 2013-01-19 17:47 VID_0025.3gp
----rwxr-x system   sdcard_rw   810040 2013-01-19 17:47 VID_0026.3gp
----rwxr-x system   sdcard_rw   810040 2013-01-19 17:51 VID_0027.3gp
----rwxr-x system   sdcard_rw   810040 2013-01-19 17:52 VID_0028.3gp

Which seems to be invalid:
$ ffprobe VID_0025.3gp 
avprobe version 0.8.4-6:0.8.4-0ubuntu0.12.10.1, Copyright (c) 2007-2012 the Libav developers
  built on Nov  6 2012 16:51:11 with gcc 4.7.2
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x23a0ba0] moov atom not found
VID_0025.3gp: Invalid data found when processing input
grepping on adb logcat shows this error which could be interested and related:
E/OMXCodec(  400): [OMX.SEC.AVC.Encoder] ERROR(0x80001000, 0)
That last error was triggered from encoder, in device/samsung/crespo/sec_mm/sec_omx/sec_codecs/video/mfc_c110/dec/src/SsbSipMfcDecAPI.c, more precisely, it's due to open(/dev/s3c-mfc) failing. Changing permissions to 777, I managed to record a video successfully on Nexus S.
Proof of video recording success.
Stock permissions are:
# ls -al /dev/s3c-mfc                                           
crw-rw---- media    media     10, 252 2013-01-19 18:21 s3c-mfc
Changing permissions to system:camera is enough to get video recording working:

root@android:/ # ls -nal /dev/s3c-jpg                                          
crw-rw---- 1000     1006      10, 254 2013-01-19 18:21 s3c-jpg
root@android:/ # ls -nal /dev/s3c-mfc                                          
crw-rw---- 1013     1013      10, 252 2013-01-19 18:21 s3c-mfc
root@android:/ # chown 1000.1006 /dev/s3c-mfc                                  
root@android:/ # ls -nal /dev/s3c-mfc                                          
crw-rw---- 1000     1006      10, 252 2013-01-19 18:21 s3c-mfc
Pull request for device/samsung/crespo fixes at https://github.com/mozilla-b2g/android-device-crespo/pull/5
Comment on attachment 704240 [details] [diff] [review]
Patch setting correct permissions for /dev/s3c-mfc file

This as been merged.
Attachment #704240 - Attachment is obsolete: true
Bugs cleanup. This has been merged but the bug remains open.
Status: NEW → RESOLVED
Closed: 10 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: