Thinking through CM10 720p Video Recording - Samsung Infuse 4G

This first post from me is going to be short. I welcome additional thoughts, of course. Sorry if this isn't the best place to drop this, but it's not a question and it's not anything in development!
First, an observation: the problem with 720p in CM10 is not bright light, it's the camera's ability to adapt to bright light from low light. In other words, the problem seems to be related to the light sensor. Although this is not completely new, what I noticed from playing around with LGCamera is that if I turn UP the video bitrate, the flickering is not as sever. The flickering will stop and stabilize when filming in consistent light. Any change in light quality will produce more sticking. This makes sense since 720p requires finer adjustments to light and dark than 420p. The other part of the equation is the h264 encoder. I'm guessing that certain values in the light sensor need to match up with the h264 encoder...
Second, I was playing around with these settings today: http://forum.xda-developers.com/showpost.php?p=17791551&postcount=20 I haven't had enough time to verify what makes a difference and what doesn't. I believe that some settings have helped a bit. Also, I felt that changing the ISO to 800 in camera and then switching to video improved the video, but that could be totally imagined! Essentially, what we need is ISO800 for the vidcam... I think!

Suggested fix that was here didn't work. I'm editing to see if I can correct the "Invalid User ID" error I keep getting on my XDA app. Started right after I went to correct this message.

if you think you have found a fix i'd suggest bringing it to the developer's attention, such as indeed posting this in the official thread.
Also your second post got chopped off lol

threi_ said:
if you think you have found a fix i'd suggest bringing it to the developer's attention, such as indeed posting this in the official thread.
Also your second post got chopped off lol
Click to expand...
Click to collapse
I'm just messing around right now. I don't think I've found a fix. A few things I've found: I can't find a way, using the included camera, to film above 25 fps. It doesn't matter what the settings are in media_profiles.xml, 25 is the cap. The cap should be a little above 30. I also can't force the camera to film above a bit rate of 6 Mbits/sec. I averaged around 8 Mbits on the stock camera and 10 in LG camera on GB. These settings will affect light responsiveness! Perhaps the oddest thing I've noticed is that the recording streams are inverted in JB. Everything I've filmed in GB has audio in stream 1 and video in stream 2. JB's streams are the other way around. EDIT: In fact, in GB 480p recordings use Stream 1 (or 0, depending on your player) for video and stream 2 for audio, but 720p recordings use Stream 1 for audio and Stream 2 for video. So, perhaps it's worth looking into the ways in which 720p recording is being "sent" to the codec.
In the process of sorting these things out, it would help if we could find out what the AVC h263 and MPEG4 profiles and levels were in GB. I'm not completely convinced that they are configured optimally for our phone.

[To Forum Mod: Is it possible to move this thread elsewhere? Possibly the Q&A section?]
I've spent more time on this than I intended today, so this will be brief(ish). I don't know if I've found a fix, but I may have discovered a good lead. This is definitely for people who can put together and test out kernel changes faster and more accurately than I can! The other day I thought I'd found something of use, a v4l2 driver modification for Crespo. I sent my findings over to Scotthartbti. The modification may still be of use, but there was an unanswered question: why is vidioc_dqbuf unable to to clear the buffer queue? If it's the preview screen size, the fix I discovered wouldn't repair everything. SO, when I read this morning that the kernel is actually based on a Rogers ROM with limited capabilities, I decided to run another diff on the JB kernel and the GB kernel from Samsung. What I discovered was that certain drivers s3c_bc.c and s3c_bc.h are absent from the JB kernel. These two files (?) contain information that sets screen and buffer size that I couldn't find replicated anywhere in the JB kernel. I don't think it's not there... so, in the process of trying to find out why these files might not be in the JB kernel, I discovered something better: the android exynos 3.4 Git. And surprise surprise! What is it that devs are fixing over there? Quite a few issues to do with s3c buffer size, particularly in s3c-fb, and the problem of the system ignoring preview frame size!
I suspect that some lingering bugs are being addressed here: https://android.googlesource.com/kernel/exynos.git/+/android-exynos-3.4

keep it up.
Thanks for working at this. I just learned how to pull a logcat and I nabbed one while barcode scanner was on. I'm running CM10 now and I ran CM9 until July. I wish I could help, but alas I am merely a padawan.

Thanks, reynaim. Yours looks pretty much like mine. It's useful to have that confirmation!
So, I've been working on this for awhile now, spending much more time than I ever thought I would. I'm not a developer. I taught myself html, css, and php and it looks to be following a similar route with c++ and python! I've learned a fair bit about how our phone works and I have some ideas about the problems with our camera. I'll list what I can here:
1. Google updated their camera code several revisions ago, but it appears Samsung either relied on aging code or has not released the actual code for the camera hal. Several commands that bind the driver layer to software are not up to date in our camera hal and may be part of the cause of the flickering. The way the camera works is that it calls up a preview, then dumps that information before it starts recording. I suspect that the camera is not clearing the buffer queue at that moment as it should. I am attempting to rewrite this portion of the driver, but it's laborious.
2. Let's be clear about what the problems actually are: Flicker in any transition of light conditions. I can get 720p to work in bright light if there are no shadows. The light sensor is not working with the camera correctly. Actually, the problem is the framerate. At the moment, the 720p stream is going through the wrong channel, as if it is running on a PAL device. Hence, not only is the datastream throttled, but the framerate is wrong. I tinkered a bit with the light sensor drivers - changed a few values here and there - but I haven't noticed a difference.
To note here: PAL = 25 fps, NTSC =30fps. Also, PAL = 50Hz, NTSC = 60 Hz. The Infuse may use a mixed mode that runs 30fps and 50Hz.
What you will notice as a user in addition to the flicker and stuck frames is that:
The video stream is stream 1. It should be #2 (you can check this most reliably in VLC on your computer or MX Player on your phone - VLC refers to the streams as 0 and 1).
FPS, despite media_profiles.xml demanding otherwise, will not rise above 25 and may drop to around 15.
Bitrate won't rise above 6Mbits/sec (interestingly, Android sdk has the bitrate capped at 8Mbits/sec). GB would ordinarily record at 10 - 11 Mbits/sec (there is a way to up the bitrate in JB, but it doesn't improve vid quality).
3. Some minor irritations can be corrected by adding the firmware packages back into the system folder. Add a directory called "firmware" to your system folder (so it should look like /system/firmware/), give it the permissions 754 (RWX,R-X,R-X), and add RS_M5LS_OI.bin, RS_M5LS_SI.bin, RS_M5LS_TB.bin (which you may find in an old GB backup). Give those the permissions RWX, R,R (or R-X, R-X for the last two - I'm not sure which is better!). Reboot. This gets rid of that odd lag you've probably noticed when you open up 3rd party cameras and they search for storage and sometimes crash as a result.
4. I don't think - I could be wrong! - that the problem is actually in fimc. Fimc is behaving normally. There are some curiosities in the current camera hal that fimc doesn't like.
5. In fact, it seems the camera hal was not written for an 8MP camera. Why doesn't Samsung release the camera hal? Does anyone know this? My best lead came when I bricked my phone and decided to take a couple of video logcats so I could at least pinch a few values and processes.

Its seems very long since update on this thread
Whizzpopper said:
Thanks, reynaim. Yours looks pretty much like mine. It's useful to have that confirmation!
So, I've been working on this for awhile now, spending much more time than I ever thought I would. I'm not a developer. I taught myself html, css, and php and it looks to be following a similar route with c++ and python! I've learned a fair bit about how our phone works and I have some ideas about the problems with our camera. I'll list what I can here:
1. Google updated their camera code several revisions ago, but it appears Samsung either relied on aging code or has not released the actual code for the camera hal. Several commands that bind the driver layer to software are not up to date in our camera hal and may be part of the cause of the flickering. The way the camera works is that it calls up a preview, then dumps that information before it starts recording. I suspect that the camera is not clearing the buffer queue at that moment as it should. I am attempting to rewrite this portion of the driver, but it's laborious.
2. Let's be clear about what the problems actually are: Flicker in any transition of light conditions. I can get 720p to work in bright light if there are no shadows. The light sensor is not working with the camera correctly. Actually, the problem is the framerate. At the moment, the 720p stream is going through the wrong channel, as if it is running on a PAL device. Hence, not only is the datastream throttled, but the framerate is wrong. I tinkered a bit with the light sensor drivers - changed a few values here and there - but I haven't noticed a difference.
To note here: PAL = 25 fps, NTSC =30fps. Also, PAL = 50Hz, NTSC = 60 Hz. The Infuse may use a mixed mode that runs 30fps and 50Hz.
What you will notice as a user in addition to the flicker and stuck frames is that:
The video stream is stream 1. It should be #2 (you can check this most reliably in VLC on your computer or MX Player on your phone - VLC refers to the streams as 0 and 1).
FPS, despite media_profiles.xml demanding otherwise, will not rise above 25 and may drop to around 15.
Bitrate won't rise above 6Mbits/sec (interestingly, Android sdk has the bitrate capped at 8Mbits/sec). GB would ordinarily record at 10 - 11 Mbits/sec (there is a way to up the bitrate in JB, but it doesn't improve vid quality).
3. Some minor irritations can be corrected by adding the firmware packages back into the system folder. Add a directory called "firmware" to your system folder (so it should look like /system/firmware/), give it the permissions 754 (RWX,R-X,R-X), and add RS_M5LS_OI.bin, RS_M5LS_SI.bin, RS_M5LS_TB.bin (which you may find in an old GB backup). Give those the permissions RWX, R,R (or R-X, R-X for the last two - I'm not sure which is better!). Reboot. This gets rid of that odd lag you've probably noticed when you open up 3rd party cameras and they search for storage and sometimes crash as a result.
4. I don't think - I could be wrong! - that the problem is actually in fimc. Fimc is behaving normally. There are some curiosities in the current camera hal that fimc doesn't like.
5. In fact, it seems the camera hal was not written for an 8MP camera. Why doesn't Samsung release the camera hal? Does anyone know this? My best lead came when I bricked my phone and decided to take a couple of video logcats so I could at least pinch a few values and processes.
Click to expand...
Click to collapse
Hi @Whizzpopper,
I was searching on Google for infuse 4g 720p recording on JB custom ROMs and found your thread,
it seems you had been gone throught very deep on this.
Have you found anything that help us on resolving this issue afterwards ?

yogi.306 said:
Hi @Whizzpopper,
I was searching on Google for infuse 4g 720p recording on JB custom ROMs and found your thread,
it seems you had been gone throught very deep on this.
Have you found anything that help us on resolving this issue afterwards ?
Click to expand...
Click to collapse
http://forum.xda-developers.com/showthread.php?p=38355903
Sent from my Galaxy Nexus using xda premium

yogi.306 said:
Hi @Whizzpopper,
I was searching on Google for infuse 4g 720p recording on JB custom ROMs and found your thread,
it seems you had been gone throught very deep on this.
Have you found anything that help us on resolving this issue afterwards ?
Click to expand...
Click to collapse
Indeed, I did leave the Infuse. There are so many variables, it's hard to say. The problem could be in the codec or in the settings used to interact with the codec (the media_profiles.xml or media_codecs.xml) or it could be in the kernel as Scott Hart used to suspect (don't know what he thinks now!). As you know, Samsung did not provide an honest release of the source for the Infuse.
Sorry I couldn't be of more help!

Thanks
Whizzpopper said:
Indeed, I did leave the Infuse. There are so many variables, it's hard to say. The problem could be in the codec or in the settings used to interact with the codec (the media_profiles.xml or media_codecs.xml) or it could be in the kernel as Scott Hart used to suspect (don't know what he thinks now!). As you know, Samsung did not provide an honest release of the source for the Infuse.
Sorry I couldn't be of more help!
Click to expand...
Click to collapse
Thank you for your updates,
Now Scott made a lot of improvement and fixed all most all the bugs for the kernel we are using in infuse 4g,
the only 720p recording and HDMi are not resolved yet, and i guess its not possible due to samasung not provided the source.
Thanks for your efforts on infuse.

Related

[MOD] 720p recording ported from Hancocks ROM

BEFORE YOU READ ANY FURTHER, THIS MOD/PORT (WHATEVER) WILL PROPABLY ONLY WORK ON RED LENSED DEFYS! SORRY BUT IT SEEMS TO BE A HARDWARE THING! AND THERE ALSO MIGHT BE THE SLIGHT POSSIBILITY THAT IT IS LIMITED TO 3.4.2_145-003 VERSION ONLY! (AT LEAST THIS IS THE VERSION HANCOCKS ROM IS BASED ON AND THE SAME I TESTED IT WITH)
to make it short, i (kind of) ported the 720p recording capability of hankocks rom 1.11 to pays rom 3.3 (based on 3.4.2_145-003).
first of all, I AM NO DEVELOPER! so all props go to hankock! what i did was the following:
i took all the libs from hancocks rom which had something to do with camera & encoding (as you can see, not a very devlike procedure) and put them into my system/libs. then i took media_profiles.xml from hancocks rom and put it to my system/etc (of course i changed back permissions afterwards). first i used hancocks patched stock camera app and merged my and his build.prop so that the whole thing would run on my rom. and it worked perfectly. but this solution has 2 drawbacks:
1. hancock used 3gpp container, which is imho inferior to mp4
2. the audio encoding is very bad (amr_nb, 8kbps)
then i found out, that if i used lgcamera instead i would't need to change build.prop anymore and it still worked fine. besides of that, lgcamera is much more customizable settingwise. and by not modifying build.prop, i hope to enhance compatibility of this mod to other froyo versions.
and that is what my package contains:
-all libs with "enc", "cam", "camera" in therr names from hancocks rom (i know, i'm an amateur )
-media_profiles.xml from hancocks rom
-lgcamera 5.25 (free) btw. it works with the latest pro version from the market too
please use tenfars clockwork mod or other custom recovery to flash this update.zip. the built in original recovery won't work (doesn't accept signature). BEFORE YOU START, DON'T FORGET TO MAKE A NADROID BACKUP!!!
here you find an untouched video sample: http://forum.kut-btu.de/video/VIDEO00017.mp4
([email protected],8fps, mp4-container, video: [email protected]~10000kbit/s, audio: [email protected]/s, 44khz)
i know, seems very choppy but this is because i was walking constantly. framerate is quite good. my defy runs at 1,2ghz but i tested 720p rec @ 800mhz too and it worked the same. it might be necessary to apply sdcard read_ahead_kb patch (mine runs at 2560 kb instead of 128) to avoid slow framerate effect which could be observed on hancocks rom.
sadly, recording with .h264 codec is still not possible (and i doubt it ever will). hence the resulting video is no match for the 720p recordings of e.g. the samsung wave but imho it is still a lot better than stock and looks almost great
now i leave it to the real devs to optimize this, whatever it is.
DISCLAIMER:
I WILL NOT BE HELD RESPONSIBLE FOR ANY DAMAGES RESULTING FROM THIS MODIFICATION!
/edit:
mod works fine on the following froyo versions:
-3.4.2-117
-3.4.2-145 (as the mod comes from this version)
-3.4.2-155
mod doesn't work on:
-3.4.3-11
strange behavior detected:
after recording in 720p dmesg shows:
Timed out waiting for DSP suspend 3
pm_op()latform_pm_suspend+0x0/0x54 returns -1
PMevice C6410 failed to suspend:error -1
PM:Some devices failed to suspend
Click to expand...
Click to collapse
don't know, which impact this has on battery drain. after fresh reboot and w/o recording in 720p this problem doesn't show up.
Thnaks for this - i'll have a play with it later today
It works with Barebones 1.4... when im recording it seems little bit choppy, but playing it in MoboPlayer is good (smooth, maybe not 30 fps but its good!).
Thank you!
Antszej said:
It works with Barebones 1.4... when im recording it seems little bit choppy, but playing it in MoboPlayer is good (smooth, maybe not 30 fps but its good!).
Thank you!
Click to expand...
Click to collapse
great! since Barebones 1.4 is based on CEE 3.4.2-155-002 Deblur, we can add it to the compatibility list.
yes, the recording view seems choppy on my system too, but the resulting video is quite smooth (~23-24fps).
http://www.multiupload.com/APEW3UPMI0
Here is the sample.
juuu
I want this for green lens...
insestito said:
juuu
I want this for green lens...
Click to expand...
Click to collapse
sorry. i believe that 720p recording isn't impossible for green lense models. but i do believe that this patch based on hancocks mod will do the trick only for red lens defys. because it isn't just the color of the lens but a totally different sensor. perhaps someone figures out a mod for green lenses too.
But official Froyo is near, just wait, it should have 720p recording for EVERYONE.
I compare it to xd1 ROM files, and find the different files are,
720p_mp4venc_sn.dll64P
libOMX.TI.720P.Encoder.so
libOMX.TI.JPEG.Encoder.so
libOMX.TI.mp4.splt.Encoder.so
libOMX.TI.Video.encoder.so
Hope it can reduce the update size.
Antszej said:
But official Froyo is near, just wait, it should have 720p recording for EVERYONE.
Click to expand...
Click to collapse
what leads you to this assumption?
sunoldman said:
I compare it to xd1 ROM files, and find the different files are,
720p_mp4venc_sn.dll64P
libOMX.TI.720P.Encoder.so
libOMX.TI.JPEG.Encoder.so
libOMX.TI.mp4.splt.Encoder.so
libOMX.TI.Video.encoder.so
Hope it can reduce the update size.
Click to expand...
Click to collapse
feel free to modify the package everyone... my work is done
Worked like a charm for me, thanks!
ToTTenTranz said:
Worked like a charm for me, thanks!
Click to expand...
Click to collapse
u r welcome
Yep it works here too but i cant see much difference between WVGA and this 720p..its almost the same. Is there any app on market that has continuous autofocus while recording video(like barcode scanner) ?
I'll create this patch for the green lens?
insestito said:
I'll create this patch for the green lens?
Click to expand...
Click to collapse
is this a statement or a question?
derbestimmer said:
is this a statement or a question?
Click to expand...
Click to collapse
Question for you or any Dev, sorry...
Google translator is very bad...
insestito said:
Question for you or any Dev, sorry...
Google translator is very bad...
Click to expand...
Click to collapse
i don't think i will be any helpfull, cause i'm no dev. i just took the work of a dev and ported it to another rom. sorry. perhaps someone else is able to do it.
My problem with Hancocks ROM is that lgcamera records very light sound, no matter what encoding I chose (AMR_NB, AMR_WB or AAC). I am not even sure the software records sound on defy with encoding as AMR_WB and AAC.
Video works ok with MPEG4 encoding though with twp slight issues. One is video file bitrate is not the same as configured in lgcamera settings. The other one is framerate is always below 25 - not sure if SD card speed is the bottleneck.
shural said:
My problem with Hancocks ROM is that lgcamera records very light sound, no matter what encoding I chose (AMR_NB, AMR_WB or AAC). I am not even sure the software records sound on defy with encoding as AMR_WB and AAC.
Video works ok with MPEG4 encoding though with twp slight issues. One is video file bitrate is not the same as configured in lgcamera settings. The other one is framerate is always below 25 - not sure if SD card speed is the bottleneck.
Click to expand...
Click to collapse
with light sound, do you mean quiet or bad quality? strange when i set lgcamera from amr_nb to aac, it does use this codec at least the resulting video shows this in codecinfo. and i think the sound quality is slightly better too compared to amr. concerning the other two issues, i have the same experience. the framerate never goes over 23,9fps and when i force it to 25 or even 30, lgcamera won't start recording. youre right the bitrates of the resulting video are mostly lower then the bitrates chosen in lgcamera. 13 prduces ~10, 10 produces ~8 and 8 produces ~6 mbps. but imho there is a difference visible between 13 and 8mbps respectively 10 and 6 in the resulting video. at least on the computer you can see the difference.
Sent from my MB525 using Tapatalk

[Q] How can I fix the HD video recording on my XT720? I'm only getting 21FPS

I stumbled across this video created by khalpowers on the XT720:
http://vodpod.com/watch/5015769-hd-recording-30-fps-xt720
This tells me that it's possible to get 30FPS out of this phone. Mine is only recording at 21fps according to Windows.
Will using one of khalpowers' ROMs fix my camcorder app?
I've tried the lgcamera app and I still get only 21FPS.
If any of you have any insight into this I would really appreciate it.
So I installed khalpowers' camera update and things seem smoother now, but I don't get 30fps. In Fraps I'm getting between 21fps and 24fps. It's better than it was before, but still not quite as smooth as I would like. The shutter lag in the camera is also better after the update.
Is this phone even capable of 30fps at 720p? The specs seem to say it can only do 24fps.
It can only do 24 FPS.
try khals video settings in lgcamerapro app. it allows for recording in 30fps.
SickBeast said:
I stumbled across this video created by khalpowers on the XT720:
http://vodpod.com/watch/5015769-hd-recording-30-fps-xt720
This tells me that it's possible to get 30FPS out of this phone. Mine is only recording at 21fps according to Windows.
Will using one of khalpowers' ROMs fix my camcorder app?
I've tried the lgcamera app and I still get only 21FPS.
If any of you have any insight into this I would really appreciate it.
Click to expand...
Click to collapse
It turns out that the FPS thing is really difficult to evaluate. This is because the phone records variable bit rate. The actual rate recorded seems to depend on how much light is hits the camera sensor (i.e. brighter scenes get higher framerates and darker scenes get lower framerates which makes sense to me).
To make things even more confusing the file contains a number as a "guesstimate" of the frame rate. This guesstimate is what most programs show. Unfortunately, the guesstimate seems to be incorrect most of the time. IIRC the only thing we found that seemed to show us the actual framerate was Windows Media Player in Windows 7.
There's a lot more about this in Dexter's stock221v13 development thread. Page 126 of that thread seems to be in the middle of it http://forum.xda-developers.com/showthread.php?t=939644&page=126 I think it started here: http://forum.xda-developers.com/showthread.php?p=11630078#post11630078 but it's really spread out.
Can someone post a link to kahl's camera update and khal's LGCamera settings. And should I apply the update if I'm running StealEpicBlue, or the ROM already has the update?
Thanks.
Even with lgcamera and khal's settings, the files are still not 30fps. Even watching his sample videos, they don't look any smoother than what I'm getting with his "fix" installed on the default camcorder app.
Anyhow, I can live with 24fps. I just wanted to know if 30fps was possible, and it seems as though it's not.
Thanks everyone for your input.
Perhaps khal can chime in and confirm that his files are indeed 30fps. IMO Fraps is a good way to verify it.
Higher rate on xt just 24fps.....that video from eclair..now can produce better than that with airplane mode ..
So............... does we have Camupdate on StealEpicBlue or not?
Thanks.
yes..complete patches included with cam update...
khalpowers said:
yes..complete patches included with cam update...
Click to expand...
Click to collapse
That's why we all ♥ U!
On stock 2.1.1, I did that :http://forum.xda-developers.com/showthread.php?t=1088297
but, I mean it's already done in khalpowers ROM
Can someone post the best settings for LG Camera, please?
Thanks in advance.

New to android.

This is (or will be come June) my first experience with an android set. Now I've read that the codec support in Sensation is quite poor but I'm wondering if that support could be extended to include e.g. .mkv playback now that Sensation will (hopefully) be unlocked.
first: welcome to the android world
second: http://forum.xda-developers.com/showthread.php?t=1097503
Thanks! So the codec support depends on the media player like in PC OSs.
I'm also wondering if there's any possible "fix" for the quality of the photos taken with Sensation's camera. The photos I've seen aren't too bad but someone mentioned too high level of compression of the file which creates artifacts. Are there apps for the camera that will lower the compression level? The ones I've looked at on Android Market don't mention anything about compression. Or maybe it's a hardware limitation.
Welcome to android as well.
To be honest I am pretty new myself. The sensation when purchased, will be my first android smartphone. Had an Archos tablet for a few weeks before lending it to my sister 6 months ago lol...
Regarding the camera, I am not certain if we are talking about the same thing but they do seem similar. In the engadget review, they mentioned 'artifacts' where isolated areas of a picture were randomly soften or blurred. This is most likely due to software/settings that are processing the raw image before saving as pictures/files. With the recent HTC bootloader unlocking announcement, we should be able to see custom ROMs or even just single solution, fixes, tweaks, updates or whatever you want to call them to address issues like this. Or of course HTC can also fix the issue themselves.
Here is a link to the review if you need it
http://www.engadget.com/2011/05/27/htc-sensation-review/
if you are looking for the camera portion scroll down until you see the picture of the daisy? (sorry know very little about flowers)
apex84 said:
Thanks! So the codec support depends on the media player like in PC OSs.
I'm also wondering if there's any possible "fix" for the quality of the photos taken with Sensation's camera. The photos I've seen aren't too bad but someone mentioned too high level of compression of the file which creates artifacts. Are there apps for the camera that will lower the compression level? The ones I've looked at on Android Market don't mention anything about compression. Or maybe it's a hardware limitation.
Click to expand...
Click to collapse

Identify CM7 HD Recording issue and need help to modify libcameraservice.so

This post is better to be in xt720 Dev board. But it is a pity that I don't have the privilege to post in that board now. So anybody who kindly help forward to the dev board would be great appreicated.
For quite a long time, we sufferred to HD record issue in CM7. And I spent some days inveistigaing this issue and fortunatelly got some interesting findings to share.
1. 720p HD recording fail becasue of wrong width and height parameter pass to function createOverlay in libsurfaceflinger.so.
02-13 17:38:12.030: D/TIOverlay(1876): overlay_createOverlay:IN w=768 h=432 format=99
02-13 17:38:12.030: I/Overlay(1876): v4l2_overlay_init:: w=480 h=854
02-13 17:38:12.030: I/Overlay(1876): v4l2_overlay_init:: w=768 h=432
02-13 17:38:12.030: I/Overlay(1876): v4l2_overlay_init:: w=768 h=432
Here we see, the paramter passed to createOverly is (768,432). And in comparison with 2.2 stocked Rom, the right parameter should be (1280,720) for HD recording.
2. The wrong width/height parameter is set in libcameraservice.so. Perhaps CM7 forbids HD recording...
02-13 17:38:12.030: D/CameraService(1540): Changing overlay dimensions to 768X432 for 720p recording.
And double check by open libcameraservice.so, we found the matched words in the above at the address of 0x000ae00h. The very possible guess is CM7's libcameraservice.so check width/height parameter, whenever it detect the parameters are for HD record, it reset the paramter to (768,432)!!
Proposed solution:
If someone could kindly help modify the code to comment the piece of code and build a new libcameraservice.so, we may have chance to bring HD recording back.
I forwarded into developpement thread but I don't know if it is the only problem because librairies from 2.1 to 2.2 and 2.3.
Great thanks!
libcameraservice.so is the current blocking issue I have identified. Certainly, there are possible some issues come out after we solved this one.
BTW, I've enabled 720p hardware video decoding in CM7. The phone could now play 720p video smoothly. This should be a good basie to fix HD recording issue.
Interesting. I don't have much to say about this at the moment, but for now I can point you into the source (Line 767):
https://github.com/CyanogenModXT720...ces/camera/libcameraservice/CameraService.cpp
These commits seem relevant (from the "blame" view):
https://github.com/CyanogenModXT720...mmit/a930c3c872cf6eaa57bfdddc923132cf0d48564b
https://github.com/CyanogenModXT720...mmit/cf997d0147228ece729ceb95745d20905664426d
Edit: So, it looks like to set the overlay size to whatever we want, we just change line 74 of CameraService.cpp to put the desired resolution. The other part of the puzzle is to adjust media_profiles.xml to add the HD profile. I had done that in the past by copying settings from decompiled MotoCamera, but the screen would go black and get weird or cause a reboot when the camcorder was switched to HD. I think your finding about the overlay resolution might explain why.
FYI: *Temporarily*, I don't have access to an XT720 (due to a laundry incident that took out both my second XT720 and my wife's Nexus S--so she's using my primary XT720 and I'm luddite mode until we sort out what to do about her phone--surprisingly they both may have survived--they power on, the XT720 boots all the way but no touch (when the screen is on you can see some streaking under the screen so I think possibly some residual moisture is interfering with capacitance so I'm going to let it dry some more--I tore a different XT720 into tiny pieces recently and there's a whole stack of paper-like pieces under the screen and I think they're still somewhat wet) and the NS turns on but get's stuck at the Google logo even when trying to enter recovery so I think it needs to be reloaded, I've only made it as far as fastboot mode on that one due to only having a power-only usb cable handy at the time).
what you mean by 720p playback?
i have tested with youtube videos (searched for 1080p hd
what other test can be made?
btw, hope you will be able soon to post in the devel section
Hi peshovec, I also read your reply in dev board.
As you got the same finding and have already fixed the code, could you please share the new built libcameraservice.so? I don't have CM7 source code at hand, and it will take me several days to sync. Last month, I spent near two weeks to sync CM9 code ...
And one important thing, we might need to keep libcameraswervice.so compatible with old 2.2 driver libcamera.so. libcameraservice.so from other 2.3 Rom contains a new function "_HAL_Camerainfo" ( sorry, did not remember clearly) that does not implemented in old libcamera.so. The trick I saw in the code is to "#define BOARD_USE_FROYO_LIBCAMERA".
I am quite interested to follow-up on this HD record issue with all of you help!
And for 720p playback, I mean to hardware decode some 720p video.
Xt720's CPU is able to support h264 baseline profile, but could not support H264 high profile. So I am afraid for 1080p video and H264 high profile 720p on youtube, our phone still could not play with hardware decode.
The trick to fix 720p hardware decode is to use old xt720 2.1's codec: lib\hw\*, and libOMX.TI.*. The existed libOMX.TI.720P.Decode.so in CM7 support other phones (e.g. Defy) well, but not support xt720.
I tested my phone after the fix of 720p HW decode with one 720p video, and found my phone could play the video smoothly with either Moboplayer or Moto Videoplayer. And before the fix, the playback could only use SW decode, and even overclock to 1GHz, the pictures was still lag behind of voice.
Hi Mioze7Ae, I also did investigations on media_profiles.xml and build.prop.
Acutually, stocked 2.2 xt720 Rom is not necessarily to rely on those settings in either media_profiles.xml or build.prop. As you observed, all resolution parameter was set in Camera.apk. I tested xt720 2.2 Rom without media_profiles.xml and none of related settings in build.prop, 720p HD video still work fine. And for xt711 phone, it even don't have media_profiles.xml in the official Rom.
Ah, 5 post now. Still need 5 other post ...
hhcat said:
Hi peshovec, I also read your reply in dev board.
As you got the same finding and have already fixed the code, could you please share the new built libcameraservice.so? I don't have CM7 source code at hand, and it will take me several days to sync. Last month, I spent near two weeks to sync CM9 code ...
And one important thing, we might need to keep libcameraswervice.so compatible with old 2.2 driver libcamera.so. libcameraservice.so from other 2.3 Rom contains a new function "_HAL_Camerainfo" ( sorry, did not remember clearly) that does not implemented in old libcamera.so. The trick I saw in the code is to "#define BOARD_USE_FROYO_LIBCAMERA".
I am quite interested to follow-up on this HD record issue with all of you help!
Click to expand...
Click to collapse
here is it (attachment)
also here is the mediaprofile.xml (which i use), with high and wide working
https://github.com/CyanogenModXT720...la_sholest/blob/pesh-modif/media_profiles.xml
can you try to search in youtube for 1080p hd videos and try to play some of them? i am curious if they will play on your setup (`couse in my test build i am able to play them...)
Thanks for the attachment! I will have try and give update later.
I tried to play some H264 high profile video: voice only and no pictures.
xt720's CPU fail to HW decode thoese video.
The workaround solution is to download the video, then we could choose SW decode in mediaplayer ( I used moboplayer). But the video play is very terrible, the picture play frame by frame, even though I have overclock to 1GHz.
Haha, the quick update is HD 720p recording preview work fine! Verly clearly and smoothly view from preview window!!
On the way home now, will do some more tests later.
Mark: 9 post now
Yeah, 720p HD recording is perfectly fixed!
Now we could enjoy HD recording in CM7!
BTW, I didn't tested your media_profile.xml. Now I used the one in 2.2 stocked ROM.
10 post now, heihei...
I will packed my Rom and share in Dev board tomorrow.
Great job, it's awesome and sweet.
I‘m looking forward to it!
omg, lol, so can someone confirm that hd video really work on any cm7 ? =)
well, afaik good that you have fixed preview.
Problem now in hd encoder...
Well.. we don't have it.
my fast testing doesn't seems good...
preview ok, but can't focus well (after try-ing to focus, the focus is set to the minimum distance), recording seems to start, preview display freeze. some file is generated trough.....
but that should be just my setup (is motoroi with the moto froyo able to record 1280x720p ? , if yes we can find way*)
p.s. *remark. in my opinion 1280x720 recording is just marketing, also it is not job for the phone to record at this resolution, working wide 848x480 is more than enough...
My phone is able to HD recorde in 2.1 and and 2.2 Rom, but lose this ablity when upgrade to CM7 2.3 Rom.
Not sure whether our phone have some HW difference.
I am uploading my Rom to DEV board.
Have a try.

[TIPS]A/V out of sync when compressing 720p videos

I'm sure you noticed that when you record a 720p/1080p video with a smartphone, the bitrate will be pretty high, in the 10-15Mbps area.
This is not really necessary if you watch the videos just on your smartphone or on a limited size LCD TV, and you can just recompress it using x264 codec at about 2Mbps without severe quality loss (unless it's a sport video).
However you'll notice severe audio video out-of-sync issues if you compress both audio and video tracks and DON'T CHOOSE MP4 (which is the default container for the videos recorded by the smartphone) as default container for your x264 video.
Furthermore, if you want to compress and then JOIN different videos, you have to compress them one by one and THEN join them, otherwise you'll notice glitches in the playback.
I tried with mkv and avi but I kept having sync issues, so I thought that it was worth to share this tip.
SUPER @ video conversion program
Have you tried a video conversion program called SUPER @? Here's its link:
http://www.erightsoft.com/SUPER.html
The program can be pretty intensive in terms of memory used but it usually does a great job for me and bitrates can be chosen for just any vid type you might want to save to. Usually, I turn off my internet connection prior to executing it (so it can't do an update check) and run it by itself.
Yep, I guess it's something similar to Wondershare Video Converter Ultimate, it's just that I prefer more control over encoding parameters (so I tend to use programs such as Avidemux)
flapane said:
Yep, I guess it's something similar to Wondershare Video Converter Ultimate, it's just that I prefer more control over encoding parameters (so I tend to use programs such as Avidemux)
Click to expand...
Click to collapse
You've probably already thought of this but you can load your video in virtualdubmod and have it change framerate so video and audio match perfectly.
No re encoding needed and even on large files it takes less than a minute or two.
If you find virtualdubmod won't recognise the video you can download a suitable vfw codec and it should then.
Dave
( http://www.google.com/producer/editions/CAownKXmAQ/bigfatuniverse )
Sent from my LG P920 using Tapatalk 2
The problem is that vdubmod won't help, because framerate is not constant and it varies from some 19 to 30fps, at least on Vibrant.
In a lot of cases the fps number gets lost during encoding (and you'll obtain a video which has a constant framerate of 29.97fps), because softwares such as Avidemux doesn't have an option to leave the FPS untouched (or at least it seems that the fps number gets lost if you want to use MKV as container).
flapane said:
The problem is that vdubmod won't help, because framerate is not constant and it varies from some 19 to 30fps, at least on Vibrant.
In a lot of cases the fps number gets lost during encoding (and you'll obtain a video which has a constant framerate of 29.97fps), because softwares such as Avidemux doesn't have an option to leave the FPS untouched (or at least it seems that the fps number gets lost if you want to use MKV as container).
Click to expand...
Click to collapse
I've used it in similar situations so it might be worth a try as it doesn't need a constant framerate, it looks at the audio length then adjusts video framerate to match.
If it is just a problem created while actually recording, ie if the video itself records at varying framerates it would suggest that it can't write to storage quick enough and is dropping frames.
In that case you would need to record in lower resolution or perhaps find a replacement camera application and see if that could fix your problem as sometimes default apps are not all that good.
It also makes a difference if you can close un needed background apps to free ram if low on memory. That can cause frames to drop as well.
Dave
( http://www.google.com/producer/editions/CAownKXmAQ/bigfatuniverse )
Sent from my LG P920 using Tapatalk 2
Actually it seems that the framerate is lower in case of dark scenes, which seems to be a behaviour found on other phones. I'm writing on the internal storage and I always kill everything before taking a video, so I gotta try another Camera app and see if anything changes.
I'll also take a look at that interesting vdubmod feature, I didn't know it.
Thanks.
flapane said:
Actually it seems that the framerate is lower in case of dark scenes, which seems to be a behaviour found on other phones. I'm writing on the internal storage and I always kill everything before taking a video, so I gotta try another Camera app and see if anything changes.
I'll also take a look at that interesting vdubmod feature, I didn't know it.
Thanks.
Click to expand...
Click to collapse
Is there a setting where you can change encoding parameters of your x264 on your phone?
On a pc the codec has a feature that can compress more data per frame in darker areas, on a phone I don't know if that is active or not but might be worth checking. Sorry I couldn't help more but hope you find a solution.
Dave
( http://www.google.com/producer/editions/CAownKXmAQ/bigfatuniverse )
Sent from my LG P920 using Tapatalk 2

Categories

Resources