Related
hi i was wondering is there anyway to change the compression of the videos taken by the EVO to better improve the quality?
and if not can HTC change this thru a FW update?
This should be moved to the qa section. But HTC intentionally made the camera use a low bitrate. There are probably ways to change this and we are looking into it. Also use the search function
Hello.
First of all, my compliments to everone that makes great things like custom roms, mods, and so.
I'd like to know if is there a way to mod/improve/change the camera app, so the shutter speed can be set.
Thanks.
Hello again. It seems this thread gained some interest, but no one could give an answer. What I asked was if is there any way to hack, develop, activate improved settings for htc chacha camera.
Videos are saved in 3gp format. Is there any way to make camera app to save them as mp4?
Pictures get blurry if the subject moves quickly, or you are not steady when shooting. Is there any way to set the shutter speed?
I don't know if the camera app can be disassembled or something, and hacked into make that things.
Maybe the camera app can be ported from another model that uses the same camera model, and can do that.
I asked HTC about this, and they answered "latest 2.3.5 version has many improvements", but none about the camera...
The camera is way better than Wildfire, which my wife owns, but I think it can be even better if the camera app is up to it.
Thanks for reading.
The big question revolving around this issue is if the cameras themselves are the same between the phones. It's not only the camera.apk that's connecting them, it's the hardware as well. Yes, there could be a possibility that the cameras are the same, between ChaCha and Wildfire (for example), but at the same time the proc or image sensor might be of a newer generation. Unfortunately I have no hardware specs on this, if anyone knows it would be nice to know.
Question: Do you know of any phone that has advanced settings inside the Camera.apk that allows you to set shutter speed? Would be interesting to compare them a bit.
In the camera.parameters public class there is a setting called scene_mode_sports that seems to be the only way to set a faster shutter speed.
I can't see it in my HTC Chacha/Status, and even lgcamera hasn't that option in the menu.
There is a profile.xml file that sets the limitations of the camera, but it seems people hack it to allow the camera to record movies in higher resolutions, because many times the limitations are imposed by the manufacturer and not the hardware.
Also, hacking the firmware and/or the drivers of a camera would allow to gain the full features of it.
This reminds me of people that upgraded the Nokia N900 to allow it to record movies in 720p, just by replacing binary files in the phone.
Is there an app that tells you what exactly hardware your phone has, and such drivers or modules it uses?
Thanks all.
Hello all.
I'm reviving this with some news. The camera module the ChaCha uses is a Samsung s5k4e1gx (http://www.samsung.com/global/busin...t/cmos-imaging/detail?productId=5622&iaId=220), the same found in several other HTC models: HTC Desire Z, HTC Mini and others.
It seems that in the Desire Z this camera is able to record 720p video.
I think this is determined by the firmware loaded for the camera, and the app itself.
I'd like to know if it's possible to port change the original ChaCha camera related modules and firmware from the Desire Z ones, so the camera can get taht 720p video shooting.
Also, I'm searching for a way to disable the auto light metering so a manual can be set. There are many 'better camera' apps in the market but they all seem to improve the original camera app itself, instead of getting the most of the actual camera sensor.
Thanks all.
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.
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.
I'm interested in making a custom camera app for s**** & giggles on my One S. I got the camera parameters app to check out the parameter string.
I noticed the video-hfr modes with a list of frame rates (60, 90,120) and resolutions. The slow-motion parameters is the same our default app uses presumably since the video res matches. Now is it possible to activate these modes in a custom app by matching the key/value pairs under the set property? Also how will hfr mode work if video preview is locked to 31 fps max? Any insight or guides to more documentation would be appreciated greatly !