I'm quite pissed.
Before Windows Mobile 2005, HTC did not make their camera API public, so developers could not make use of the camera.
This all changed with WM2005 and the introduction of DirectShow. For devices released in the first year (since release of WM2005), this meant that one could "simply" use DirectShow to access the cameras.
But then HTC fell back to old habits again:
The HTC TyTN (Hermes) reports only a single video mode via DirectShow: 160x120 at 7.5 fps, which is a joke. Furthermore, trying to access the front camera via DirectShow fails too: It is simply not exposed (enumerated) at all.
The HTC Mteor (Breeze) goes even one step furher: It does report 160x120 and 320x240 (both at 15 fps), but actually both modes deliver pictures at 160x120. For the 320x240 mode, everything seems to work fine: IMediaSample tells that the picture is in that resolution. The memory buffer has the correct size (320x240x12bits), but the image in the buffer is really just 160x120.
Of course I tried several ROM versions (HTC, i-mate, etc.) but no chance.
So, I'm quite pissed. I already tried calling HTC but didn't get very far (which makes sense if these restrictions are on purpose...)
Daniel
No comments on this?
Nobody every using DirectShow?
I guess I also wouldn't do it if I wasn't force to...
Daniel
So with simple words if you want to use WM5 camera api in your application you can not do it in any HTC device
So how did the makers of CoolCamera go about? I was kinda under the impression that it used wm5s camera api, or am I wrong?
I think they've rewritten the interface from scratch. Look into the CPU developers' manuals. Not a small endevour!
V
CPU Developers' manual
Hi Vijay555,
Would you be so kind to post a link to where I can get this manual ?
Thanks in advance!
I don't think anyone wrote anything from scratch nor do I think this has much to do with a CPU manual... the devs at CoolCamera may have *somehow* managed to get their hands on the infamous HTC TyTN camera api... what exactly are you referring to when you mention the CPU manual?
Also, has anyone ever found a location where this api may be available or a means to get it? HTC developer support is non existant.
Eric, what makes you so sure that they didn't write it from scratch? Maybe they did acquire illegally or otherwise HTC's intellectual property, or maybe they just did what other manfacturers do and wrote some code.
Look at the device support - it's not a single device, it's many, across many different CPUs (Intel, Omap, Samsung), across many different camera sensors and support chips. However, implementation of a camera at software level is not impossible: how else do companies sell their sensors and chipsets?
http://www.ovt.com
Ask the sensor manufacturer, they'll give you chips specs, schematics, implementation code and draft driver code.
Then, look up the SC32442A developers' manual and you'll see that it encompasses a camera interface, again with necessary schematics and hardware IO information.
Sure it's hard to write a camera interface, but once you've written one, it gets easier to support others.
V
they need to continue writing then because my camera application frequently fails in that pictures are corrupt, can't be viewed, and the picture review is just black
Sure it's hard to write a camera interface, but once you've written one, it gets easier to support others.
V
Click to expand...
Click to collapse
What kind of effort are we talking about here? Days? Weeks? Do you think this would need to run in kernel space, or we could get away with user space?
Is there a smartphone or PDA with a camera that would allow photographing of pages of books, or parts of pages? The image needs to be good enough so that once I pull it up on my desktop, I'd be able to run OCR on it. What I really need is a contemporary version of this:
http://www.pimall.com/NAIS/pivintage/minox.html
I played around with a Nokia E90 in macro mode, but ended up getting either fuzzy full-page images or very small parts of the page in focus.
Anybody have any ideas? There must be someone else out there doing exactly this.
Vikram
the camera on the tilt and i think any phone with auto focus and a enough enough resolution 3MP+ should get u going.
I second the Tilt. Without the cover http://wmpoweruser.com/?p=339. The camera is extremely good.
The issue of lighting and making sure the page is completely flat remains however.
Surur
Go to Check My Camera Phone and check the scores. Of the HTC models listed, the X7500 scores the highest. (My personal favorite non-smartphone, the i-mobile 902, has the highest of them all but that's hardly surprising as it contains a real Sony 5 MP CCD camera module.)
Deleted
Hello devs!
I wonder if anyone is interested in/capable of implementing a manual focus feature in android, at least for G1. Hardware-wise, I think it is probably feasible since (the great dev) DZO has already done it for the Kaiser (and I have seen it in action)!
CLARIFICATION EDIT: by Manual Focus I mean controlling the focal length, not just triggering the autofocus. For example, on the Kaiser, dzo has mapped the up/down side-wheel to focus-farther/focus-nearer!
See here the source code commit.
It would be great if the implementation introduced a relevant Java-level API, or extent the current Camera API.
My idea is to use this feature to fix-focus the camera, just a few centimeters away and make barcode scanning faster, not relying so much on auto-focusing. But I'm sure that there are plenty more useful stuff that can be done with manual focus (e.g. inspiring/artistic photo captures).
I'm rather new in android-dev and not experienced enough (yet) to work on the below-Java space, that's why I'm kindly asking for someone else to have a look at it
any thoughts?
have fun,
hypest
This is a great idea. Hope to see someone working on it.
This would be awesome! Espcially for photographers like muah
lapalways05 said:
This would be awesome! Espcially for photographers like muah
Click to expand...
Click to collapse
Photographers use shoddy-quality 3MPx cameras? Is your dSLR in the shop or something?
MattKilla said:
Photographers use shoddy-quality 3MPx cameras? Is your dSLR in the shop or something?
Click to expand...
Click to collapse
No, but it's not in my pocket most or all of the time, either. In a pinch, between 3Mpixel and 0Mpixel, the photographer will usually choose the former.
marxmarv said:
No, but it's not in my pocket most or all of the time, either. In a pinch, between 3Mpixel and 0Mpixel, the photographer will usually choose the former.
Click to expand...
Click to collapse
Yeah exactly. I love my dSLR to death, but I can't always have that beast with me. My phone is ALWAYS with me. I would a lot rather take a quick shot with it than no shot at all.
To the OP. Look in the android source repo at the camera code. Or is the G1 camera drivers in the closed source area? I know the actual camera driver is (thats why 2.X didnt have a camera at first) but is the AF code there too?
As the phone has auto focus i see no reason why manual focus couldn't be coded in.
In fact, i'm surprised no one has done it yet. I remember it being done on my old LG Viewty (that had a fantastic camera) and my SE k750i and was great for the really close up shots that the auto focus can't normally achieve.
Ok I looked at the code. Here is the camera code for the MSM7xxx chips:
http://android.git.kernel.org/?p=pl...=libcamera/QualcommCameraHardware.cpp;hb=HEAD
http://android.git.kernel.org/?p=pl...;f=libcamera/QualcommCameraHardware.h;hb=HEAD
http://android.git.kernel.org/?p=pl...a=blob_plain;f=libcamera/camera_ifc.h;hb=HEAD
If you look at the first one, it does all its autofocus calls thru libqcamera. That is one of the proprietary HTC/Qualcomm drivers. Here is the code:
Code:
status_t QualcommCameraHardware::autoFocus(autofocus_callback af_cb,
void *user)
{
LOGV("Starting auto focus.");
Mutex::Autolock l(&mLock);
Mutex::Autolock lock(&mStateLock);
if (mCameraState != QCS_PREVIEW_IN_PROGRESS) {
LOGE("Invalid camera state %s: expecting QCS_PREVIEW_IN_PROGRESS,"
" cannot start autofocus!",
getCameraStateStr(mCameraState));
return INVALID_OPERATION;
}
if (mAutoFocusCallback != NULL) {
LOGV("Auto focus is already in progress");
return mAutoFocusCallback == af_cb ? NO_ERROR : INVALID_OPERATION;
}
mAutoFocusCallback = af_cb;
mAutoFocusCallbackCookie = user;
LINK_camera_start_focus(CAMERA_AUTO_FOCUS, camera_cb, this);
return NO_ERROR;
}
First off you can see its calling the QualcommCameraHardware library which is libqcamera and then the method autoFocus. I think this is a dead end.
However, for 2.X we reverse engineered the drivers since we didn't have them available. They are open source. We may be able to look at them and get how they use the AF code.
Geniusdog254, thanx for sharing your thoughts, info and findings.
I'm assuming here: if the AF is done in software, even in proprietry drivers, it may indeed be possible to use it by RE it. Best case scenario would be to find functions lingering in there, waiting to be called
I'm wondering though, if the IOCTL's dzo is using are directly triggering hardware "switches", or are they handled in the drivers...
Could you please also share links to the open sourced 2.x driver?
Geniusdog254 said:
First off you can see its calling the QualcommCameraHardware library which is libqcamera and then the method autoFocus. I think this is a dead end.
Click to expand...
Click to collapse
Maybe not. I vaguely remember that the HTC camera app from CM 4.0 or 4.1 would allow you to switch between autofocus and infinity focus. Maybe that's a start?
I found these symbols in the libqcamera.so on my CM g1 (and highlighted some interesting ones):
Code:
af_algo_config
af_algo_execution
af_algo_preview
af_check_aec_settled_cnt
[SIZE="5"][B]af_do_move_lens[/B][/SIZE]
af_done
af_do_process_exhaustive_search
af_do_process_hill_climbing
[SIZE="5"][B]af_do_reset_lens[/B][/SIZE]
af_do_safe_move
af_init_process_exhaustive_search
af_init_process_hill_climbing
af_is_active
[SIZE="5"][B]af_move_lens_to[/B][/SIZE]
af_process_focus_sensor
af_process_lens_move_done
af_process_start_focus
af_process_stats
af_read_process_type
af_read_sharpness
af_start_stats
af_stop_focus
seems to me that maybe there are suitable means for manipulating the lens/focus.
I've attached the whole readelf dump...
I'd love to see this implimented
I think that if with proprietary drivers we can't manually move the hardware, perhaps we can indirectly trick it into focusing closer, thinking that it's "autofocusing" on a close object. Either one of these methods is a bit of a longshot with a proprietary driver, but they are both worth exploring. I'd LOVE to see some control over the focus of the camera, and if we can't do it with the AOSP code, let's look at Hero.... it offers significantly more focus control, with touch-to-focus. I haven't even glanced at the code there, though, so I have no idea. I'm just throwing thoughts at the wall in hopes that one of them will stick.
Here is the code for the opensource, reverse engineered driver for eclair. Have it at, I may look & post my findings:
http://gitorious.org/eclair-camera-drivers
EDIT: Well of course I'm looking at it lol, I can't resist.
Look on line 345 of this page (they're numbered): http://gitorious.org/eclair-camera-...are_msm7k/blobs/master/libcamera/camera_ifc.h
CAMERA_PARM_FOCUS_STEP is defined. It sounds like a way to step the focus forward/backward but I don't know which way.
Also, there is a LOT of interesting things in here, including some that our hardware doesn't support, so take it with a grain of salt (it has flash & all kinds of stuff, pretty much a generic Qualcomm camera driver). Anyways, here are some of the interesting ones;
CAMERA_PARM_ISO, (duh)
CAMERA_PARM_APERTURE, (maybe change aperture speed for better shots?)
CAMERA_PARM_SHUTTER_SPEED, (better response time?)
CAMERA_PARM_HISTOGRAM, (not useful for me, but neat)
CAMERA_PARM_FPS_LIST, (this one is defined under a video section, maybe change frame rate??)
Neat huh?
Anyway, the really cool part is line 405-409:
typedef enum
{
CAMERA_AUTO_FOCUS,
CAMERA_MANUAL_FOCUS
} camera_focus_e_type;
Now I can't tell you what all this means, but I can read & tell you that that does say manual focus where it defines the options for focus type
Also, ISO options are; MAX, HIGH, DEBLUR, 100, 200, 400, 800. There are also some WB settings that we don't have available, here is the full list; AUTO, CUSTOM, INCANDESCENT, FLUORESCENT, DAYLIGHT, CLOUDY_DAYLIGHT, TWILIGHT, SHADE, MAX_PLUS_1. Most of those are available in the 1.5 HTC based camera apps, but twilight & shade aren't.
Actually speaking of the HTC camera, it does almost EVERYTHING mentioned in this code. It misses a few of them, as I said, but it has debanding, WB, brightness. It is just missing the ISO (different from brightness, I promise).
This is about all I know, that its REALLY interesting to look through, and that we should make a camera app that can use all this
Also, just to say in my last post, I DO know what all of those camera terms mean, I'm a photo buff, I just put them in terms that apply to the G1
Bump. Isn't there any other interest in this? I don't have the experience nor the time to do this, but I REALLY want it. I already looked at the code & did a writeup. Surely someone can do it...
Geniusdog254 said:
Bump. Isn't there any other interest in this? I don't have the experience nor the time to do this, but I REALLY want it. I already looked at the code & did a writeup. Surely someone can do it...
Click to expand...
Click to collapse
Hey Geniusdog254,
thanx for sharing your findings! I guess is just a matter of (spare) time. I'm personally (but slowly) trying to get into kernel building (and low-level dev in general) so to try these myself...
An already experienced and interested fellow dev would certainly help if he/she came forward
I am very interested in this as well. Has any progress been made?
lapalways05 said:
This would be awesome! Espcially for photographers like muah
Click to expand...
Click to collapse
If you are a photographer and rely on a phone camera something tells me oyu dont get much work.
My only advice at this point is to change the title of the thread to [Think Tank] camera manual focus... you'll get more devs to glance at it.
I'm in need of a rangefinder, and was wondering, why not my always handy Leo?
Since it has a focusing function for the camera, it must have some sort of a sensor for measuring distance - or whatever algorithm it uses might be calibrated for actually displaying the(approximate) measured distance.
I would pay for a usable app.
Did a quick search of the Leo forum, no returns for "rangefinder".
Thanx
Cannot help you with a range finder tip, i don't think this is possible with a focusing camera, but why not google disto.
re
up you go!
re
one more time
Hello,
does this phone support the Camera2API module? I frequently use OpenCamera and FilmicPro on my Honor 10 so I was wondering if I can do the same with Honor 20. If possible, could someone send screenshots from the 'Camera2 API Probe' and 'Filmic Pro Evaluator' apps?
Thank you.
Ok, so I got ahold of this phone and I tested out what it can and can't do regarding these functions. The result are are not terrible but not great either.
Camera2API
Here is the full report from the Camera2 API Probe. It's hard to read compared to the Android app, but here is my summary: It supports resolutions up to 48MP. It supports manual exposure (ISO/shutter). White balance too. The biggest caveat: no RAW support. You can't shoot in RAW with 3rd party applications like OpenCamera. Manual exposure works, you can also use the wide angle camera with manual exposure controls.
FilmicPro / OpenCamera
Here are the screenshots from the FilmicPro Evaluator app for all of the cameras available. In this case most of the features are supported. The EIS works only up to [email protected] though. You can't shoot 120fps videos with third party applications. The biggest caveat - no Cinematography Kit (aka LOG profile) support. I'm guessing this is related to the RAW format compatibility but I don't actually know. Same goes for OpenCamera, the color profile setting isn't available for video mode. Also, the EIS doesn't seem to work on OpenCamera for some reason.
(here starts the rant)
Honestly it's not bad (better than the P30 for example) but I don't understand why they disabled the RAW shooting option. I don't actually understand why they would limit the API at all for a phone at this price range. Especially when my Honor 10 (which was relased 1 year earlier) has this option. My guess is that it messes with their ****ty marketing gimmicks like 'Ultra-sharp 48mp mode' etc. This phone is good, but Huawei always makes a lot of specific enhancements with their software, and thus the options for customisation are limited. It's not a bad thing for "regular" customers that don't care about features like this, but I think they should allow the enthusiast to do their thing if they want to. It's going downhill since they stopped giving out bootloader unlock codes. While Huawei makes good phones, I feel like they are going more the closed-up iPhone way, and unfortunately this isn't something that suits me. I'll probably look somewhere else for my next phone - something like OnePlus (if the situation doesn't change).
If you have any other questions about the camera, or phone in general, feel free to ask.