GithubHelp home page GithubHelp logo

eszdman / photoncamera Goto Github PK

View Code? Open in Web Editor NEW
674.0 35.0 70.0 20.92 MB

Android Camera that uses Enhanced image processing

License: GNU General Public License v3.0

Java 81.11% GLSL 18.70% CMake 0.10% C++ 0.08%
android-camera android camera2-api computational-photography computer-vision image-processing photography gpu-acceleration

photoncamera's Introduction

PhotonCamera

Android Camera that uses Enhanced Image Processing

GPLv3 license

Links

Telegram - ENG Telegram - RU

Get it on Google Play

Screenshots

PhotonCamera

Libraries used by Photon Camera

License

PhotonCamera
Copyright (C) 2020-2022  Eszdman

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.

photoncamera's People

Contributors

abhishake1 avatar assasinfil avatar dramcryx avatar eszdman avatar hooni07 avatar johnsonran avatar killerink avatar minwoo-seong avatar nainsoo avatar nsherbina1999 avatar orstudio avatar realjohngalt avatar rvictorr avatar seong-minwoo avatar sm136599 avatar snajdovski avatar tigerfriend1 avatar urnyx05 avatar vibhorsrv avatar yoongunwo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

photoncamera's Issues

Images with bright backgrounds process way to underexposed.

Describe the bug
I've noticed that sometimes when I take a picture it is terribly underexposed. Below I have a link of a pic with photon camera and with the generic android camera. I've noticed its especially prevalent when the background is light but the foreground is dark.

Its worth noting, the preview for the image shows perfectly normal amounts of exposure, the issue only occurs when viewer the image AFTER it processes.

PhotonCamera
image

AOSP Camera
image

PhotonCamera
image

To Reproduce
Steps to reproduce the behavior:
Open camera app,
leave default settings (Auto focus mode: auto, Watermark Off (only default changed), HDRX Noise Reduction ON).
I'm happy to take a screenshot of any setting if necessary.

Expected behavior
A clear and concise description of what you expected to happen.
The photo look more like AOSP camera where a bright background doesn't darken the foreground to the point of being drastically underexposed.

Screenshots
See Above

Logs
Available upon request, not sure what is specifically needed to debug.

Smartphone (please complete the following information):

  • Device: OnePlus7ProNR
  • OS: YAAP (Yet Another AOSP Project) (Android 12)
  • Browser: Brave (chromium based)
  • Version: 0.8.14660

Additional context
None.

Share method improvements

When sharing from photon app after taking a photograph, the multiple share optiins do not show:

Photon app share implementation:

The share is general, recent optiims not shown

Default camera app, and other apps as well, share implementation:

Not only can you share by apps, but recent options, i.e. whatsapp/instagram/other apps, are included

Pixel 2 XL Images too dark, Incorrect ISO and Shutter Speed Calculation

Describe the bug
Without any manual changing of ISO and Shutter Speed the pictures are underexposed by 2 stops

To Reproduce
Steps to reproduce the behavior:

  1. Install latest APK
  2. Take a Picture
  3. Look at the Picture

Expected behavior
Better Exposure

Smartphone (please complete the following information):

  • Device: Pixel 2 XL
  • OS: Android 10 (QQ3A.200805.001)

Capturing different number of frames

i use PCam with 30 frames to stack, i checked that.
If i turn off debug mode (curves is hidden) and manually set ISO, PCam start capture different count of frames (20, 24, 15, 12 or 16... It seems to be random), but if i check settings i can see 30 of frames to stack.

PCam sometimes take wrong number of frames, although i use automatic mode.

If i turn on debug mode, PCam always capture number of frames what i set up in the settings.

Next thing what i saw linked with this it. If debug mode turned off, align works better - more precisely and capturing, processing is faster.

PCam version: PhotonCamera-0.737237-debug (latest from Telegram)
Device: OnePlus 6
Android 10
OxygenOS 10.3.8

How to change ratio preview camera

  • I try to change ratio of camera. Ex: 1:1 in layoutviewfinder (AutoFitPreviewView). Wrong Preview!. Best Preview with ratio 3:4, 9:16 Can you support me, please. Thanks you
  • How to create preview by mode centercrop. Full Screen for ratio: .9:16

Crash on startup because of updateGalleryThumb() and 5k+ images in DCIM directory

Describe the bug
With LineageOS 18.1 (Android 11) on a OnePlus 7 Pro, when there is a great amount of pictures in the DCIM directory (5k+ in my case), the application crashes on startup. This is caused by the application scanning ALL image files in that directory on startup to create the thumbnails for the gallery while building the Camera fragment.

The cameraFragmentViewModel.updateGalleryThumb(); call in the onResume() method in src/main/java/com/particlesdevs/photoncamera/ui/camera/CameraFragment.java takes several minutes in this case, and the application crashes after finishing.

To Reproduce
Steps to reproduce the behavior:

  1. Have a sizable amount of pictures on a LineageOS 18.1 / Android 11 phone
  2. Launch Photon Camera
  3. Wait
  4. Wait...
  5. Crash

Expected behavior
The application starts up. Maybe first boot takes longer. Maybe gallery startup takes longer.

Logs
https://gist.github.com/frikisama/ff78255ff0a6ca731f705ed2c04df9e4

Smartphone (please complete the following information):

  • Device: OnePlus 7 Pro
  • OS: LineageOS
  • Version: 18.1 - latest build

Additional context
The background could be the slow FS access on Android 11. See here for example: syncthing/syncthing-android#1630
Or here: https://www.reddit.com/r/androiddev/comments/kpn68k/android_11_very_slow_file_access_performance/

Bypassing the scanning on startup lets the application start, but it crashes getting into the gallery. Putting this in a background thread could help. Maybe a cache could help with the UX side of things, in this case. An option to use an external gallery app could be used as a workaround.

Manual Shutter Speed increase for Night/ Astrophotography

Is your feature request related to a problem? Please describe.
I have a Samsung Note 8 Snapdragon and have been researching the Samsung stock camera app and other apps for astrophotography. This app looks promising, but the maximum shutter speed for Night as well as Photo modes is only 1/6 second. This is too low for low noise astrophotography.

Describe the solution you'd like
Note8 camera max. Shutter speed is 10seconds, so I would like you to increase the manual shutter speed capability to 10 seconds, which will significantly improve the picture quality, in conjunction with stacking.

Describe alternatives you've considered

  1. Increasing ISO increases the noise significantly, so it is better to increase the shutter speed.
  2. I have experimented with the noise reduction settings, but the noise is still very high owing to very high ISO (6239 in the sky picture I took with partial moon). Result will be even worse with new moon ( dark sky).

Additional context

Android 11 Beta 3 Pixel 2 XL [CRASH]

Describe the bug
The bug occurs when taking a picture or more precisely when its time to process.

To Reproduce
Steps to reproduce the behavior:

  1. Have Pixel 2 XL with Android 11 (not sure about other Android 11 devices)
  2. Try to take a picture without changing the settings
    3.Crash

Expected behavior
A photo in Gallery and no Crash

Screenshots
No need for screenshots.

Logs
log_v_hdrx_on_default_settings_latest_commit.log
log_v_pinned_apk.log
Smartphone (please complete the following information):

  • Device: Pixel 2 XL
  • OS: Android 11 Beta 3 (RPB3.200720.005)

Additional context
With GPU alignment doesn't crash.

Crash on Xperia 5 I and view wrong preview.

Looks good, but does not support the Sony Xperia 5 I. When previewed vertically, it narrows the image. In turn, it stretches horizontally.
After shot it crash and exit from app. Screenshot_20211020-155800.pngScreenshot_20211020-155805.png

Feature request: Add "mute microphone" button for video recordings

In some cases, especially regarding laws of many countries as well as privacy concerns, it might be useful to have an option to record a video without audio.

I would propose to make a corresponding indicator visible on the screen during the time of recording while placing the switch in the quick settings.

Such a button might be useful for recordings where you try to preserve privacy of people speaking closeby while it's no option to convince people you will later remove the audio from the recording.

Crash on Pixel 6

Expected behavior:

  1. Open photoncamera
  2. Take picture
  3. Tap on image in the corner to view the image

Actual behavior:

  1. Open photoncamera
  2. Take picture (in normal photo mode)
  3. App crashes once all frames for computation are captured
  4. No image gets saved to gallery

Device: Google Pixel 6
OS: Android beta 13 (T1B3.221003.008)
Source: Downloaded from play store

Latest version shadow setting does nothing

PhotonCamera-0.7311085-debug.apk

Shadow gradient is always on

Still visible,

Also,
The bottom part seems to take more space than previous versions, a lot less space for the camera view,

Crash when I stop recording a video

Realme X2 RMX1991 CN. Android 10, Realme UI 1.

FATAL EXCEPTION: main
Process: com.particlesdevs.photoncamera, PID: 13538
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.io.File.delete()' on a null object reference
at com.particlesdevs.photoncamera.capture.CaptureController.stopRecordingVideo(CaptureController.java:1634)
at com.particlesdevs.photoncamera.capture.CaptureController.VideoEnd(CaptureController.java:1575)
at com.particlesdevs.photoncamera.ui.camera.CameraFragment$CameraUIController.onClick(CameraFragment.java:1011)
at com.particlesdevs.photoncamera.ui.camera.CameraFragment$CameraUIViewImpl.lambda$initListeners$1$CameraFragment$CameraUIViewImpl(CameraFragment.java:825)
at com.particlesdevs.photoncamera.ui.camera.CameraFragment$CameraUIViewImpl$$ExternalSyntheticLambda2.onClick(Unknown Source:2)
at android.view.View.performClick(View.java:7262)
at android.view.View.performClickInternal(View.java:7224)
at android.view.View.access$3800(View.java:824)
at android.view.View$PerformClick.run(View.java:27726)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:228)
at android.app.ActivityThread.main(ActivityThread.java:7820)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:981)

Unable to package after changing minSdkVersion to 21

Task :app:validateSigningDebug UP-TO-DATE
Task :app:mergeProjectDexDebug

Transform artifact scala-library-2.13.1.jar (org.scala-lang:scala-library:2.13.1) with DexingWithClasspathTransform
AGPBI: {"kind":"error","text":"MethodHandle.invoke and MethodHandle.invokeExact are only supported starting with Android O (--min-api 26)\nStack trace:\ncom.android.tools.r8.errors.a: MethodHandle.invoke and MethodHandle.invokeExact are only supported starting with Android O (--min-api 26)\n\tat com.android.tools.r8.errors.a.a(:7)\n\tat com.android.tools.r8.ir.conversion.O.b(:58)\n\tat com.android.tools.r8.ir.conversion.O.a(:104)\n\tat com.android.tools.r8.ir.conversion.O.a(:53)\n\tat com.android.tools.r8.graph.C.b(:40)\n\tat com.android.tools.r8.ir.conversion.O.b(:35)\n\tat com.android.tools.r8.utils.S0.a(:10)\n\tat com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:125)\n\tat com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:69)\n\tat com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:78)\n\tat com.google.common.util.concurrent.MoreExecutors$DirectExecutorService.execute(MoreExecutors.java:322)\n\tat java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)\n\tat com.google.common.util.concurrent.AbstractListeningExecutorService.submit(AbstractListeningExecutorService.java:66)\n\tat com.google.common.util.concurrent.AbstractListeningExecutorService.submit(AbstractListeningExecutorService.java:36)\n\tat com.android.tools.r8.utils.S0.a(:3)\n\tat com.android.tools.r8.ir.conversion.O.a(:10)\n\tat com.android.tools.r8.D8.d(:29)\n\tat com.android.tools.r8.D8.b(:1)\n\tat com.android.tools.r8.utils.W.a(:30)\n\tat com.android.tools.r8.D8.run(:11)\n\tat com.android.builder.dexing.D8DexArchiveBuilder.convert(D8DexArchiveBuilder.java:116)\n\tat com.android.build.gradle.internal.dependency.BaseDexingTransform.process(DexingTransform.kt:296)\n\tat com.android.build.gradle.internal.dependency.BaseDexingTransform.processNonIncrementally(DexingTransform.kt:243)\n\tat com.android.build.gradle.internal.dependency.BaseDexingTransform.doTransform(DexingTransform.kt:153)\n\tat com.android.build.gradle.internal.dependency.BaseDexingTransform.access$doTransform(DexingTransform.kt:69)\n\tat com.android.build.gradle.internal.dependency.BaseDexingTransform$transform$1.invoke(DexingTransform.kt:104)\n\tat com.android.build.gradle.internal.dependency.BaseDexingTransform$transform$1.invoke(DexingTransform.kt:69)\n\tat com.android.build.gradle.internal.tasks.BlocksUtilsKt.recordArtifactTransformSpan(BlocksUtils.kt:33)\n\tat com.android.build.gradle.internal.dependency.BaseDexingTransform.transform(DexingTransform.kt:100)\n\tat org.gradle.api.internal.artifacts.transform.DefaultTransformer.transform(DefaultTransformer.java:189)\n\tat org.gradle.api.internal.artifacts.transform.DefaultTransformerInvocationFactory$TransformerExecution.execute(DefaultTransformerInvocationFactory.java:332)\n\tat org.gradle.internal.execution.steps.ExecuteStep.lambda$execute$0(ExecuteStep.java:32)\n\tat java.util.Optional.map(Optional.java:215)\n\tat org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:32)\n\tat org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:26)\n\tat org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:63)\n\tat org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:35)\n\tat org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:49)\n\tat org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:34)\n\tat org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:43)\n\tat org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:73)\n\tat org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:54)\n\tat org.gradle.internal.execution.steps.CatchExceptionStep.execute(CatchExceptionStep.java:34)\n\tat org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:44)\n\tat org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:54)\n\tat org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:38)\n\tat org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:49)\n\tat org.gradle.internal.execution.steps.CacheStep.executeWithoutCache(CacheStep.java:153)\n\tat org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:67)\n\tat org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:41)\n\tat org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:44)\n\tat org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:33)\n\tat org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:38)\n\tat org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:24)\n\tat org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:92)\n\tat org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:85)\n\tat java.util.Optional.map(Optional.java:215)\n\tat org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:55)\n\tat org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:39)\n\tat org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:76)\n\tat org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:37)\n\tat org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:36)\n\tat org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:26)\n\tat org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:94)\n\tat org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:49)\n\tat org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:79)\n\tat org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:53)\n\tat org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:74)\n\tat org.gradle.internal.execution.steps.SkipEmptyWorkStep.lambda$execute$2(SkipEmptyWorkStep.java:78)\n\tat java.util.Optional.orElseGet(Optional.java:267)\n\tat org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:78)\n\tat org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:34)\n\tat org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:39)\n\tat org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:40)\n\tat org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:28)\n\tat org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:33)\n\tat org.gradle.api.internal.artifacts.transform.DefaultTransformerInvocationFactory$2.lambda$call$2(DefaultTransformerInvocationFactory.java:200)\n\tat org.gradle.api.internal.artifacts.transform.DefaultTransformerInvocationFactory.fireTransformListeners(DefaultTransformerInvocationFactory.java:269)\n\tat org.gradle.api.internal.artifacts.transform.DefaultTransformerInvocationFactory.access$300(DefaultTransformerInvocationFactory.java:79)\n\tat org.gradle.api.internal.artifacts.transform.DefaultTransformerInvocationFactory$2.call(DefaultTransformerInvocationFactory.java:178)\n\tat org.gradle.api.internal.artifacts.transform.DefaultTransformerInvocationFactory$2.call(DefaultTransformerInvocationFactory.java:175)\n\tat org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)\n\tat org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)\n\tat org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)\n\tat org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)\n\tat org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)\n\tat org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)\n\tat org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)\n\tat org.gradle.api.internal.artifacts.transform.DefaultTransformerInvocationFactory.lambda$doTransform$0(DefaultTransformerInvocationFactory.java:175)\n\tat org.gradle.api.internal.artifacts.transform.ImmutableTransformationWorkspaceProvider.lambda$withWorkspace$0(ImmutableTransformationWorkspaceProvider.java:81)\n\tat org.gradle.cache.internal.LockOnDemandCrossProcessCacheAccess.withFileLock(LockOnDemandCrossProcessCacheAccess.java:90)\n\tat org.gradle.cache.internal.DefaultCacheAccess.withFileLock(DefaultCacheAccess.java:181)\n\tat org.gradle.cache.internal.DefaultPersistentDirectoryStore.withFileLock(DefaultPersistentDirectoryStore.java:172)\n\tat org.gradle.cache.internal.DefaultCacheFactory$ReferenceTrackingCache.withFileLock(DefaultCacheFactory.java:196)\n\tat org.gradle.api.internal.artifacts.transform.ImmutableTransformationWorkspaceProvider.withWorkspace(ImmutableTransformationWorkspaceProvider.java:76)\n\tat org.gradle.api.internal.artifacts.transform.AbstractCachingTransformationWorkspaceProvider.lambda$withWorkspace$0(AbstractCachingTransformationWorkspaceProvider.java:56)\n\tat com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4718)\n\tat com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3445)\n\tat com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2194)\n\tat com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2153)\n\tat com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2043)\n\tat com.google.common.cache.LocalCache.get(LocalCache.java:3851)\n\tat com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4713)\n\tat org.gradle.api.internal.artifacts.transform.AbstractCachingTransformationWorkspaceProvider.withWorkspace(AbstractCachingTransformationWorkspaceProvider.java:55)\n\tat org.gradle.api.internal.artifacts.transform.DefaultTransformerInvocationFactory.doTransform(DefaultTransformerInvocationFactory.java:175)\n\tat org.gradle.api.internal.artifacts.transform.DefaultTransformerInvocationFactory.access$000(DefaultTransformerInvocationFactory.java:79)\n\tat org.gradle.api.internal.artifacts.transform.DefaultTransformerInvocationFactory$1.invoke(DefaultTransformerInvocationFactory.java:141)\n\tat org.gradle.api.internal.artifacts.transform.CacheableInvocation$1.invoke(CacheableInvocation.java:58)\n\tat org.gradle.api.internal.artifacts.transform.TransformationNode$ChainedTransformationNode$1.lambda$transform$0(TransformationNode.java:226)\n\tat org.gradle.internal.Try$Success.flatMap(Try.java:157)\n\tat org.gradle.api.internal.artifacts.transform.TransformationNode$ChainedTransformationNode$1.transform(TransformationNode.java:225)\n\tat org.gradle.api.internal.artifacts.transform.TransformationNode$ArtifactTransformationStepBuildOperation.call(TransformationNode.java:267)\n\tat org.gradle.api.internal.artifacts.transform.TransformationNode$ArtifactTransformationStepBuildOperation.call(TransformationNode.java:247)\n\tat org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)\n\tat org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)\n\tat org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)\n\tat org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)\n\tat org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)\n\tat org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)\n\tat org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)\n\tat org.gradle.api.internal.artifacts.transform.TransformationNode$ChainedTransformationNode.execute(TransformationNode.java:222)\n\tat org.gradle.execution.plan.WorkNodeExecutor.execute(WorkNodeExecutor.java:27)\n\tat org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:372)\n\tat org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:359)\n\tat org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:352)\n\tat org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:338)\n\tat org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)\n\tat org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)\n\tat org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)\n\tat org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)\n\tat org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)\n\tat org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)\n\tat java.lang.Thread.run(Thread.java:748)\n\tSuppressed: java.util.concurrent.ExecutionException: com.android.tools.r8.errors.a: MethodHandle.invoke and MethodHandle.invokeExact are only supported starting with Android O (--min-api 26)\n\t\tat com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:552)\n\t\tat com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:513)\n\t\tat com.google.common.util.concurrent.FluentFuture$TrustedFuture.get(FluentFuture.java:86)\n\t\tat com.android.tools.r8.utils.S0.a(:14)\n\t\tat com.android.tools.r8.utils.S0.a(:9)\n\t\t... 121 more\n\t[CIRCULAR REFERENCE:com.android.tools.r8.errors.a: MethodHandle.invoke and MethodHandle.invokeExact are only supported starting with Android O (--min-api 26)]\nCaused by: com.android.tools.r8.a: MethodHandle.invoke and MethodHandle.invokeExact are only supported starting with Android O (--min-api 26)\n\tat com.android.tools.r8.ir.conversion.N.a(:633)\n\tat com.android.tools.r8.ir.conversion.N.a(:674)\n\tat com.android.tools.r8.r.n.A.a(:236)\n\tat com.android.tools.r8.ir.conversion.o.a(:153)\n\tat com.android.tools.r8.ir.conversion.N.a(:133)\n\tat com.android.tools.r8.graph.l.a(:93)\n\tat com.android.tools.r8.graph.l.a(:71)\n\tat com.android.tools.r8.graph.l.buildIR(:1)\n\tat com.android.tools.r8.graph.C0.buildIR(:1)\n\tat com.android.tools.r8.graph.T.a(:152)\n\tat com.android.tools.r8.ir.conversion.O.a(:412)\n\tat com.android.tools.r8.ir.conversion.O.b(:53)\n\t... 134 more\n","sources":[{"file":"/Users/edz/.gradle/caches/transforms-2/files-2.1/72f1f2a266657c5a22f1325cd6597b43/jetified-scala-library-2.13.1.jar"}],"tool":"D8"}

Task :app:mergeExtDexDebug FAILED

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':app:mergeExtDexDebug'.

Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
Failed to transform scala-library-2.13.1.jar (org.scala-lang:scala-library:2.13.1) to match attributes {artifactType=android-dex, dexing-enable-desugaring=true, dexing-incremental-desugaring-v2=false, dexing-is-debuggable=true, dexing-min-sdk=21, org.gradle.category=library, org.gradle.libraryelements=jar, org.gradle.status=release, org.gradle.usage=java-runtime}.
> Execution failed for DexingWithClasspathTransform: /Users/edz/.gradle/caches/transforms-2/files-2.1/72f1f2a266657c5a22f1325cd6597b43/jetified-scala-library-2.13.1.jar.
> Error while dexing.

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Get more help at https://help.gradle.org

BUILD FAILED in 36s

Pictures regularly save as plain black images

Describe the bug
On my OnePlus 7 Pro running LineageOS, I've found that pictures taken with Photon Camera will often be saved as just plain black images. After taking an image, they'll typically appear in the built-in photo viewer just fine, then randomly become black, with the data erased. It's difficult to tell exactly what causes it. Sometimes the images will save as black immediately after taking them, while other times they'll stay normal through several app/phone restarts, only to be erased later.

To Reproduce
It seems difficult to reliably reproduce. I'd estimate that over half of the images I take end up getting erased/blacked-out later, but there doesn't seem to be any one thing that causes it. Here are some things I've tried to do to reproduce it, and have failed to do so consistently.

  1. Take several images back to back
  2. Take another image before the previous image has been processed
  3. Take images in both RAW and standard image formats
  4. Take images on a particular camera (telephoto, wide, etc.)
  5. Enable/disable various image processing
  6. Change the back-end for stacking image frames (CPU, GPU, etc.)

Expected behavior
After an image has been processed, it would make sense that Photon Camera shouldn't write to it again, unless explicitly asked too.

Screenshots
Here's several images shown in the Photon photo viewer, where random images have been overwritten with all black. These images have extremely small file sizes, and increasing the exposure shows that there is no data stored in them. Immediately after being taken, these images looked normal, then were blacked out at a later date. Despite not being edited or otherwise modified.
Screenshot_20220321-114047_Photon_Camera

Smartphone:

  • Device: OnePlus 7 Pro
  • OS: LineageOS 18

Problem with Exynos

Problem:
Whenever trying to take a photo, there's always the same crash

Settings:

photo_2020-09-30_15-46-30

Logcat:

time: 1601497451723
msg: java.lang.RuntimeException: Error creating shader.
stacktrace: java.lang.RuntimeException: Error creating shader.
	at com.eszdman.photoncamera.processing.opengl.GLProg.compileShader(GLProg.java:103)
	at com.eszdman.photoncamera.processing.opengl.GLProg.useProgram(GLProg.java:66)
	at com.eszdman.photoncamera.processing.opengl.nodes.postpipeline.GlobalTonemaping.Run(GlobalTonemaping.java:39)
	at com.eszdman.photoncamera.processing.opengl.GLBasePipeline.runAll(GLBasePipeline.java:51)
	at com.eszdman.photoncamera.processing.opengl.nodes.postpipeline.PostPipeline.Run(PostPipeline.java:117)
	at com.eszdman.photoncamera.processing.ImageProcessing.ApplyHdrX(ImageProcessing.java:465)
	at com.eszdman.photoncamera.processing.ImageProcessing.Run(ImageProcessing.java:487)
	at com.eszdman.photoncamera.processing.ImageSaver.done(ImageSaver.java:83)
	at com.eszdman.photoncamera.processing.ImageSaver.Process(ImageSaver.java:217)
	at com.eszdman.photoncamera.processing.ImageSaver.lambda$run$0$ImageSaver(ImageSaver.java:112)
	at com.eszdman.photoncamera.processing.-$$Lambda$ImageSaver$z_xT8ahTvCohpjCEjOl3obH29jU.handleMessage(Unknown Source:2)
	at android.os.Handler.dispatchMessage(Handler.java:103)
	at android.os.Looper.loop(Looper.java:214)
	at android.os.HandlerThread.run(HandlerThread.java:67)

Device Specs:

  • Device : Samsung Galaxy J6 - 2 GB Ram Variant
  • Board: Exynos 7870
  • Rom: CrDroid 6.9 - Android Q

Customize background colour

The current background:

It would be wonderful to allow user to customize background colour, and if shadow is applied purple to black.

Each user will have personal preference of colour and if shadow effect is appealing.

newer build apk availability

hi, It would be better if apks of latest builds are available via f-droid or downloadable apk release, so that many more people can test it. I'm currently using 0.72 whereas I cannot find 0.81(?),
using tecno LD7 and it doesn't work. When I start the app it tells device not supported and when I take a picture it says Failed

Zoom capabilities

Digital zooming does not seem to be allowed.
Main camera app allows pinch to zoom all the way to 7.9x

Add ability to change the directory for RAWs

Is your feature request related to a problem? Please describe.
It's very handy when user can choose where to put RAW-files, instead of right near the photos.

Describe the solution you'd like
Put a button near the "Enable Raw" switch, that would open system folder choosing menu.

32 bit device support

I have a device with 32 bit CPU (Redmi 9a) (yes Xiaomi still makes 32 bit devices). My phone does not support gcam and would love to use Photoncamera instead, thanks!

Latest release crashes on launch

Version: PhotonCamera-0.702515-debug
Crash on launch,

12-17 17:36:20.158  1312  1337 I ActivityTaskManager: START u0 {cmp=com.eszdman.photoncamera/.ui.camera.CameraActivity} from uid 10170
12-17 17:36:20.174  2168  2168 D ImageWallpaper: wallpaper visibility changes to: false
12-17 17:36:20.183 15360 15360 W ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@79634ee
12-17 17:36:20.189   866   866 E Layer   : [Surface(name=AppWindowToken{63c8eb5 token=Token{291aec ActivityRecord{4f1e99f u0 com.eszdman.photoncamera/.ui.SplashActivity t4638}}})/@0xc150569 - animation-leash#0] No local sync point found
12-17 17:36:20.189   866   866 E Layer   : [Surface(name=AppWindowToken{63c8eb5 token=Token{291aec ActivityRecord{4f1e99f u0 com.eszdman.photoncamera/.ui.SplashActivity t4638}}})/@0xc150569 - animation-leash#0] No local sync point found
12-17 17:36:20.189   866   866 E Layer   : [Surface(name=AppWindowToken{b413f75 token=Token{40316ac ActivityRecord{1cb7c5f u0 com.android.launcher3/.lineage.LineageLauncher t2989}}})/@0xc58498 - animation-leash#0] No local sync point found
12-17 17:36:20.189   866   866 E Layer   : [Surface(name=AppWindowToken{b413f75 token=Token{40316ac ActivityRecord{1cb7c5f u0 com.android.launcher3/.lineage.LineageLauncher t2989}}})/@0xc58498 - animation-leash#0] No local sync point found
12-17 17:36:20.199 15360 15360 E an.photoncamer: Invalid ID 0x00000000.
12-17 17:36:20.246 15360 15360 D AndroidRuntime: Shutting down VM
12-17 17:36:20.247 15360 15360 E AndroidRuntime: FATAL EXCEPTION: main
12-17 17:36:20.247 15360 15360 E AndroidRuntime: Process: com.eszdman.photoncamera, PID: 15360
12-17 17:36:20.247 15360 15360 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.eszdman.photoncamera/com.eszdman.photoncamera.ui.camera.CameraActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object[] java.util.Set.toArray(java.lang.Object[])' on a null object reference
12-17 17:36:20.247 15360 15360 E AndroidRuntime: 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3270)
12-17 17:36:20.247 15360 15360 E AndroidRuntime: 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
12-17 17:36:20.247 15360 15360 E AndroidRuntime: 	at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
12-17 17:36:20.247 15360 15360 E AndroidRuntime: 	at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
12-17 17:36:20.247 15360 15360 E AndroidRuntime: 	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
12-17 17:36:20.247 15360 15360 E AndroidRuntime: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
12-17 17:36:20.247 15360 15360 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:107)
12-17 17:36:20.247 15360 15360 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:214)
12-17 17:36:20.247 15360 15360 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:7356)
12-17 17:36:20.247 15360 15360 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
12-17 17:36:20.247 15360 15360 E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:491)
12-17 17:36:20.247 15360 15360 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:940)
12-17 17:36:20.247 15360 15360 E AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object[] java.util.Set.toArray(java.lang.Object[])' on a null object reference
12-17 17:36:20.247 15360 15360 E AndroidRuntime: 	at com.eszdman.photoncamera.api.CameraManager2.init(CameraManager2.java:54)
12-17 17:36:20.247 15360 15360 E AndroidRuntime: 	at com.eszdman.photoncamera.api.CameraManager2.<init>(CameraManager2.java:42)
12-17 17:36:20.247 15360 15360 E AndroidRuntime: 	at com.eszdman.photoncamera.settings.PreferenceKeys.setDefaults(PreferenceKeys.java:50)
12-17 17:36:20.247 15360 15360 E AndroidRuntime: 	at com.eszdman.photoncamera.ui.camera.CameraActivity.onCreate(CameraActivity.java:41)
12-17 17:36:20.247 15360 15360 E AndroidRuntime: 	at android.app.Activity.performCreate(Activity.java:7824)
12-17 17:36:20.247 15360 15360 E AndroidRuntime: 	at android.app.Activity.performCreate(Activity.java:7813)
12-17 17:36:20.247 15360 15360 E AndroidRuntime: 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1306)
12-17 17:36:20.247 15360 15360 E AndroidRuntime: 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245)
12-17 17:36:20.247 15360 15360 E AndroidRuntime: 	... 11 more
12-17 17:36:20.248  1312 18865 I DropBoxManagerService: add tag=data_app_crash isTagEnabled=true flags=0x2
12-17 17:36:20.249  1312  3220 W ActivityTaskManager:   Force finishing activity com.eszdman.photoncamera/.ui.camera.CameraActivity
12-17 17:36:20.256 15360 15360 I Process : Sending signal. PID: 15360 SIG: 9
12-17 17:36:20.268  1312  1337 I ActivityManager: Process com.eszdman.photoncamera (pid 15360) has died: fore TOP 
12-17 17:36:20.268  1312  1379 I libprocessgroup: Successfully killed process cgroup uid 10170 pid 15360 in 0ms
12-17 17:36:20.269   663   663 I Zygote  : Process 15360 exited due to signal 9 (Killed)
12-17 17:36:20.277  1312  1369 W WindowManager: Failed looking up window callers=com.android.server.wm.WindowManagerService.windowForClientLocked:5318 com.android.server.wm.WindowManagerService.removeWindow:1782 com.android.server.wm.Session.remove:176 
12-17 17:36:20.297  2168  2168 D ImageWallpaper: wallpaper visibility changes to: true
12-17 17:36:20.750  1312  1368 W ActivityTaskManager: Activity top resumed state loss timeout for ActivityRecord{e2ef8a1 u0 com.eszdman.photoncamera/.ui.camera.CameraActivity t-1 f}
12-17 17:36:20.755   949  1047 I ThermalEngine: vs_get_temperature: read[0] xo_therm 29862 mC, weight[0] 2
12-17 17:36:20.756   949  1047 I ThermalEngine: vs_get_temperature: read[1] quiet_therm 28899 mC, weight[1] 1
12-17 17:36:21.155  1312  1910 I ActivityTaskManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.eszdman.photoncamera/.ui.SplashActivity bnds=[437,692][643,1005]} from uid 10100
12-17 17:36:21.172   821   842 E ANDR-PERF-UTIL: Failed to update node /sys/class/mmc_host/mmc0/clk_scaling/enable with value 0
12-17 17:36:21.172   821   842 E ANDR-PERF-RESOURCEQS: Failed to apply optimization [11, 4]
12-17 17:36:21.178  1312  1378 I ActivityManager: Start proc 15361:com.eszdman.photoncamera/u0a170 for pre-top-activity {com.eszdman.photoncamera/com.eszdman.photoncamera.ui.SplashActivity}
12-17 17:36:21.181 15361 15361 I an.photoncamer: Late-enabling -Xcheck:jni
12-17 17:36:21.196 15361 15361 E an.photoncamer: Unknown bits set in runtime_flags: 0x8000
12-17 17:36:21.618 15361 18887 D native  : Found attached 0
12-17 17:36:21.618 15361 18887 D native  : Calling class is: java.lang.Class
12-17 17:36:21.618 15361 18888 D native  : Found attached 0
12-17 17:36:21.618 15361 18888 D native  : Calling class is: java.lang.Class
12-17 17:36:21.676  1312  2939 I ActivityTaskManager: START u0 {cmp=com.eszdman.photoncamera/.ui.camera.CameraActivity} from uid 10170
12-17 17:36:21.699 15361 15361 W ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@79634ee
12-17 17:36:21.711  2168  2168 D ImageWallpaper: wallpaper visibility changes to: false
12-17 17:36:21.714 15361 15361 E an.photoncamer: Invalid ID 0x00000000.
12-17 17:36:21.727   866   866 E Layer   : [Surface(name=AppWindowToken{e292b68 token=Token{bb63e8b ActivityRecord{33aec5a u0 com.eszdman.photoncamera/.ui.SplashActivity t4639}}})/@0xd6993ac - animation-leash#0] No local sync point found
12-17 17:36:21.727   866   866 E Layer   : [Surface(name=AppWindowToken{b413f75 token=Token{40316ac ActivityRecord{1cb7c5f u0 com.android.launcher3/.lineage.LineageLauncher t2989}}})/@0xc58498 - animation-leash#0] No local sync point found
12-17 17:36:21.758   949  1047 I ThermalEngine: vs_get_temperature: read[0] xo_therm 30000 mC, weight[0] 2
12-17 17:36:21.759   949  1047 I ThermalEngine: vs_get_temperature: read[1] quiet_therm 28899 mC, weight[1] 1
12-17 17:36:21.760 15361 15361 D AndroidRuntime: Shutting down VM
12-17 17:36:21.761 15361 15361 E AndroidRuntime: FATAL EXCEPTION: main
12-17 17:36:21.761 15361 15361 E AndroidRuntime: Process: com.eszdman.photoncamera, PID: 15361
12-17 17:36:21.761 15361 15361 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.eszdman.photoncamera/com.eszdman.photoncamera.ui.camera.CameraActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object[] java.util.Set.toArray(java.lang.Object[])' on a null object reference
12-17 17:36:21.761 15361 15361 E AndroidRuntime: 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3270)
12-17 17:36:21.761 15361 15361 E AndroidRuntime: 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
12-17 17:36:21.761 15361 15361 E AndroidRuntime: 	at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
12-17 17:36:21.761 15361 15361 E AndroidRuntime: 	at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
12-17 17:36:21.761 15361 15361 E AndroidRuntime: 	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
12-17 17:36:21.761 15361 15361 E AndroidRuntime: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
12-17 17:36:21.761 15361 15361 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:107)
12-17 17:36:21.761 15361 15361 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:214)
12-17 17:36:21.761 15361 15361 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:7356)
12-17 17:36:21.761 15361 15361 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
12-17 17:36:21.761 15361 15361 E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:491)
12-17 17:36:21.761 15361 15361 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:940)
12-17 17:36:21.761 15361 15361 E AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object[] java.util.Set.toArray(java.lang.Object[])' on a null object reference
12-17 17:36:21.761 15361 15361 E AndroidRuntime: 	at com.eszdman.photoncamera.api.CameraManager2.init(CameraManager2.java:54)
12-17 17:36:21.761 15361 15361 E AndroidRuntime: 	at com.eszdman.photoncamera.api.CameraManager2.<init>(CameraManager2.java:42)
12-17 17:36:21.761 15361 15361 E AndroidRuntime: 	at com.eszdman.photoncamera.settings.PreferenceKeys.setDefaults(PreferenceKeys.java:50)
12-17 17:36:21.761 15361 15361 E AndroidRuntime: 	at com.eszdman.photoncamera.ui.camera.CameraActivity.onCreate(CameraActivity.java:41)
12-17 17:36:21.761 15361 15361 E AndroidRuntime: 	at android.app.Activity.performCreate(Activity.java:7824)
12-17 17:36:21.761 15361 15361 E AndroidRuntime: 	at android.app.Activity.performCreate(Activity.java:7813)
12-17 17:36:21.761 15361 15361 E AndroidRuntime: 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1306)
12-17 17:36:21.761 15361 15361 E AndroidRuntime: 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245)
12-17 17:36:21.761 15361 15361 E AndroidRuntime: 	... 11 more
12-17 17:36:21.764  1312 18897 I DropBoxManagerService: add tag=data_app_crash isTagEnabled=true flags=0x2
12-17 17:36:21.764  1312  2939 W ActivityTaskManager:   Force finishing activity com.eszdman.photoncamera/.ui.camera.CameraActivity
12-17 17:36:21.771  1312  1366 I ActivityManager: Showing crash dialog for package com.eszdman.photoncamera u0
12-17 17:36:22.264  1312  1368 W ActivityTaskManager: Activity top resumed state loss timeout for ActivityRecord{ed8ac44 u0 com.eszdman.photoncamera/.ui.camera.CameraActivity t4639 f}
12-17 17:36:22.269  1312  1368 W ActivityTaskManager: Activity pause timeout for ActivityRecord{ed8ac44 u0 com.eszdman.photoncamera/.ui.camera.CameraActivity t4639 f}
12-17 17:36:22.285  2168  2168 D ImageWallpaper: wallpaper visibility changes to: true
12-17 17:36:22.326  3401 15867 E VLC     : [000000705e2b1790/3dfb] libvlc renderer discovery: mDNS entry callback error: Network is unreachable
12-17 17:36:22.762   949  1047 I ThermalEngine: vs_get_temperature: read[0] xo_therm 30196 mC, weight[0] 2
12-17 17:36:22.763   949  1047 I ThermalEngine: vs_get_temperature: read[1] quiet_therm 28899 mC, weight[1] 1
12-17 17:36:23.652  1312  2939 W ActivityTaskManager:   Force finishing activity com.eszdman.photoncamera/.ui.camera.CameraActivity
12-17 17:36:23.653  1312  2939 W ActivityTaskManager:   Force finishing activity com.eszdman.photoncamera/.ui.SplashActivity
12-17 17:36:23.654  1312  5046 D OpenGLRenderer: endAllActiveAnimators on 0x7006ef0500 (RippleDrawable) with handle 0x70ca69f2e0
12-17 17:36:23.667  1312  2939 I ActivityManager: Killing 15361:com.eszdman.photoncamera/u0a170 (adj 900): crash
12-17 17:36:23.671  1312  1337 E InputDispatcher: Window handle Window{b00d436 u0 Application Error: com.eszdman.photoncamera} has no registered input channel
12-17 17:36:23.709   663   663 I Zygote  : Process 15361 exited due to signal 9 (Killed)
12-17 17:36:23.716  1312  1379 I libprocessgroup: Successfully killed process cgroup uid 10170 pid 15361 in 48ms

Add legend

Maybe in settings
Legend explains what each icon does in camera view
and can also explain in more details the different settings
Currently, long clicking a button does not 'toast' the button name
So,

The difference between the icon above and below are not clear as no noticable change occurs,

FairEmail, open source
includes the following legend (which appears in navigatiinal drawer, but since photon does not use that it can be in settings)

Each icon is explained,

Autofocus

ะŸั€ะธะฒะตั‚, ะพั‡ะตะฝัŒ ะผะตะดะปะตะฝะฝั‹ะน ะฐะฒั‚ะพั„ะพะบัƒั ะธ ะพะฝ ะฝะต ั€ะฐะฑะพั‚ะฐะตั‚ ะฟะพ ะบะฐัะฐะฝะธัŽ.

Galaxy s6 edge+, ะฐะฝะดั€ะพะธะด 10 (ั€ะฐะดะธ ัั‚ะพะน ะบะฐะผะตั€ั‹ ะพะฑะฝะพะฒะธะปัั).

ะ ั€ะตะทัƒะปัŒั‚ะฐั‚ ะฒ ั€ะฐะฒะต - ะฟั€ะพัั‚ะพ ะพะณะพะฝัŒ, ะฝะฐะผะฝะพะณะพ ะปัƒั‡ัˆะต ะณะบะฐะผะฐ. ะกะบะพั€ะพัั‚ัŒ ะฒั‹ั€ะฐะฒะฝะธะฒะฐะฝะธั - ะฒั‹ัˆะต ะฒััะบะธั… ะฟะพั…ะฒะฐะป, ั‚ะฐะบ ะดะตั€ะถะฐั‚ัŒ!

Do not rotate the preview when switching to/from selfie camera

Is your feature request related to a problem? Please describe.
No

Describe the solution you'd like
Disable (or an option to) the rotation animation when switching cameras.

Describe alternatives you've considered

Additional context
Using a latest build from dev branch (9d510c8, v0.8.14951)

Input Bytebuffer of HDRX library.

Hi @eszdman,

Im trying to use a bytebuffer which read from a *.dng for input of HDRX instead of bytebuffer from Image but result is always black.

I would like to ask what is correctly type of bytebuffer for HDRX lib?

Thanks.

Wrong camera preview proportions

Describe the bug
Preview image is not proportioned like it should be in portrait mode. The camera view is just put in a square

To Reproduce

  1. Put your smartphone in the portrait mode (either manually or automatically)
  2. Open an app
  3. Look at the preview

Expected behavior
Well proportioned preview image in portrait mode

Screenshots
Portrait orientation:
image
Landscape orientation:
image

Smartphone (please complete the following information):

  • Device: ASUS ZenFone Max Pro M1
  • OS: Android 9
  • Browser: Google Chrome
  • Version: 1.0

Camera display freezes during autoexposure (in high brightness areas?)

Describe the bug
When moving the camera to look at a high-brightness area (e.g. out of a window into bright sunlight) the camera view will freeze. The rest of the UI will still accept input but taking a photo is impossible.

This happens with both 0.814841 and 0.814520.

To Reproduce
Steps to reproduce the behaviour:

  1. Start PCam
  2. Move camera via from area with low brightness to area with high brightness.

Expected behavior
UI should not freeze

Screenshots
n/a

Logs

03-22 13:11:07.437  1038  1782 I CHIUSECASE: DumpQueueState: ===== Dumping PendingResultDispatcher State Begin =====
03-22 13:11:07.437  1038  1782 I CHIUSECASE: DumpQueueState: shutter frameNum queue len = 4 | result queue len = 4.
03-22 13:11:07.437  1038  1782 I CHIUSECASE: DumpQueueState: metadata frameNum queue len = 5 | result queue len = 5.
03-22 13:11:07.437  1038  1782 I CHIUSECASE: DumpQueueState: outputStream frameNum queue len = 0 | result queue len = 0.
03-22 13:11:07.437  1038  1782 I CHIUSECASE: DumpQueueState: outputStream frameNum queue len = 5 | result queue len = 5.
03-22 13:11:07.437  1038  1782 I CHIUSECASE: DumpQueueState: inputstream frameNum queue len = 0 | result queue len = 0.
03-22 13:11:07.437  1038  1782 I CHIUSECASE: DumpQueueState: ===== Dumping PendingResultDispatcher State End =====
03-22 13:11:07.437  1038  1782 I CHIUSECASE: LogClassifiedStream: Camera 0 preview stream type = 0 format = 34 width = 1600 height = 1200
03-22 13:11:07.437  1038  1782 I CHIUSECASE: LogClassifiedStream: Camera 0 yuv stream type = 0 format = 35 width = 4032 height = 3024
03-22 13:11:07.437  1038  1782 I CHIUSECASE: Use preview aspect ratio as dummy stream
03-22 13:11:07.437  1038  1782 D CHIUSECASE: IsStreamConfigHdrplusCompatible: the fps is over hdr plus support.
03-22 13:11:07.437  1038  1782 I CHIUSECASE: CreatePipelines: Creating pipelines for CHI usecase: UsecaseGooglePhoto1
03-22 13:11:07.437  1038  1782 D CHIUSECASE: [Realtime] CreateChiPipeline: Creating the CHI pipeline.
03-22 13:11:07.446  1038  1782 I GoogleFDNode: Initialize: GoogleFDNode created ensemble detector successfully.
03-22 13:11:07.446  1038  1782 I GoogleFDNode: Initialize: GoogleFDNode uses dedicated thread for Ensemble.
03-22 13:11:07.457  1038  1782 E CamX    : [ERROR][PPROC  ] camxipenode.cpp:3598 GetEISMargin() No margin for stabilization type 0
03-22 13:11:07.457  1038  1782 D CamX    : [DEBUG][PPROC  ] camxipenode.cpp:2378 ProcessingNodeFinalizeInputRequirement() IPE video dimension: 0 x 0
03-22 13:11:07.457  1038  1782 I GoogleFDNode: QueryBufferInfo: [FD] Google FD Node publishing com.google.nexus.experimental2018 | faceSkipFrame to 8055000e
03-22 13:11:07.457  1038  1782 I GoogleFDNode: QueryBufferInfo: [FD] Google FD Node publishing com.google.nexus.experimental2018 | faceLandmark.count to 8055000f
03-22 13:11:07.457  1038  1782 I GoogleFDNode: QueryBufferInfo: [FD] Google FD Node publishing com.google.nexus.experimental2018 | faceLandmark.ids to 80550010
03-22 13:11:07.457  1038  1782 I GoogleFDNode: QueryBufferInfo: [FD] Google FD Node publishing com.google.nexus.experimental2018 | faceLandmark.xy to 80550011
03-22 13:11:07.457  1038  1782 I GoogleFDNode: QueryBufferInfo: [FD] Google FD Node publishing com.google.nexus.experimental2018 | faceLandmark.depth to 80550012
03-22 13:11:07.457  1038  1782 I GoogleFDNode: QueryBufferInfo: [FD] Google FD Node publishing com.google.nexus.experimental2018 | faceOrientation to 80550014
03-22 13:11:07.457  1038  1782 E CamX    : [ERROR][PPROC  ] camxipenode.cpp:3598 GetEISMargin() No margin for stabilization type 0
03-22 13:11:07.457  1038  1782 D CamX    : [DEBUG][PPROC  ] camxipenode.cpp:2378 ProcessingNodeFinalizeInputRequirement() IPE video dimension: 0 x 0
03-22 13:11:07.457  1038  1782 E CamX    : [ERROR][PPROC  ] camxipenode.cpp:3598 GetEISMargin() No margin for stabilization type 0
03-22 13:11:07.457  1038  1782 D CamX    : [DEBUG][PPROC  ] camxipenode.cpp:2378 ProcessingNodeFinalizeInputRequirement() IPE video dimension: 0 x 0
03-22 13:11:07.457  1038  1782 E CamX    : [ERROR][PPROC  ] camxipenode.cpp:3598 GetEISMargin() No margin for stabilization type 0
03-22 13:11:07.457  1038  1782 D CamX    : [DEBUG][PPROC  ] camxipenode.cpp:2378 ProcessingNodeFinalizeInputRequirement() IPE video dimension: 0 x 0
03-22 13:11:07.457  1038  1782 I CHIUSECASE: CameraID: 0, SelectedMode W=4032, H=3024, FPS:30, NumBatchedFrames:1, modeIndex:0
03-22 13:11:07.457  1038  1782 I CHIUSECASE: Initialize: Warping node detected when creating GoogleUsecaseRealtimePipeline.
03-22 13:11:07.457  1038  1782 I CHIUSECASE: Create: Created a GoogleUsecaseRealtimePipeline for camera 0
03-22 13:11:07.458  1038  1782 I CHIUSECASE: Build: building a session with pipeline for camera id 0
03-22 13:11:07.478  1038  1782 E CamX    : [ERROR][HAL    ] camxmetadatapool.cpp:1556 SetMetadataByTag() Invalid slot; cannot set metadata tag 80090003
03-22 13:11:07.479  1038  1782 E CamX    : [ERROR][HAL    ] camxmetadatapool.cpp:1720 PublishMetadataList() Invalid slot, cannot publish metadata list
03-22 13:11:07.479  1038  1782 I [email protected]_64: [GOOG_STATS] PDLibData already assigned
03-22 13:11:07.479  1038  1782 I [email protected]_64: [GOOG_STATS] Calling CreatePDLib in QC library
03-22 13:11:07.479  1038  1782 E CamX    : [ERROR][SENSOR ] camxsensornode.cpp:2174 LoadPDlibrary() PD library CreateLib failure result=0, m_pPDLib=0x7317ca9950
03-22 13:11:07.482  1038  1782 E CamX    : [ERROR][CORE   ] camxnode.cpp:4705 CreateBufferManagers() invalid type streamConfig 
03-22 13:11:07.482  1038  1782 E CamX    : [ERROR][CORE   ] camxnode.cpp:4705 CreateBufferManagers() invalid type streamConfig 
03-22 13:11:07.482  1038  1782 E CamX    : [ERROR][CORE   ] camxnode.cpp:4705 CreateBufferManagers() invalid type streamConfig 
03-22 13:11:07.482  1038  1782 E CamX    : [ERROR][CORE   ] camxnode.cpp:4705 CreateBufferManagers() invalid type streamConfig 
03-22 13:11:07.522  1038  1782 E CamX    : [ERROR][CORE   ] camxnode.cpp:4705 CreateBufferManagers() invalid type streamConfig 
03-22 13:11:07.525  1038  1782 E CamX    : [ERROR][CORE   ] camxnode.cpp:4705 CreateBufferManagers() invalid type streamConfig 
03-22 13:11:07.525  1038  1782 E CamX    : [ERROR][CORE   ] camxnode.cpp:4705 CreateBufferManagers() invalid type streamConfig 
03-22 13:11:07.526  1038  1782 E CamX    : [ERROR][CORE   ] camxnode.cpp:4705 CreateBufferManagers() invalid type streamConfig 
03-22 13:11:07.530  1038  1782 E CamX    : [ERROR][CORE   ] camxnode.cpp:4705 CreateBufferManagers() invalid type streamConfig 
03-22 13:11:07.531  1038  1782 E CamX    : [ERROR][CORE   ] camxnode.cpp:4705 CreateBufferManagers() invalid type streamConfig 
03-22 13:11:07.531  1038  1782 E CamX    : [ERROR][CORE   ] camxnode.cpp:4705 CreateBufferManagers() invalid type streamConfig 
03-22 13:11:07.532  1038  1782 E CamX    : [ERROR][CORE   ] camxnode.cpp:4705 CreateBufferManagers() invalid type streamConfig 
03-22 13:11:07.532  1038  1782 E CamX    : [ERROR][CORE   ] camxnode.cpp:4705 CreateBufferManagers() invalid type streamConfig 
03-22 13:11:07.533  1038  1782 E CamX    : [ERROR][CORE   ] camxnode.cpp:4705 CreateBufferManagers() invalid type streamConfig 
03-22 13:11:07.542  1038  1782 E CamX    : [ERROR][CORE   ] camxnode.cpp:4705 CreateBufferManagers() invalid type streamConfig 
03-22 13:11:07.543  1038  1782 E CamX    : [ERROR][CORE   ] camxnode.cpp:4705 CreateBufferManagers() invalid type streamConfig 
03-22 13:11:07.543  1038  1782 E CamX    : [ERROR][CORE   ] camxnode.cpp:4705 CreateBufferManagers() invalid type streamConfig 
03-22 13:11:07.543  1038  1782 E CamX    : [ERROR][CORE   ] camxnode.cpp:4705 CreateBufferManagers() invalid type streamConfig 
03-22 13:11:07.543  1038  1782 E CamX    : [ERROR][CORE   ] camxnode.cpp:4705 CreateBufferManagers() invalid type streamConfig 
03-22 13:11:07.543  1038  1782 E CamX    : [ERROR][CORE   ] camxnode.cpp:4705 CreateBufferManagers() invalid type streamConfig 
03-22 13:11:07.543  1038  1782 E CamX    : [ERROR][CORE   ] camxnode.cpp:4705 CreateBufferManagers() invalid type streamConfig 
03-22 13:11:07.543  1038  1782 E CamX    : [ERROR][CORE   ] camxnode.cpp:4705 CreateBufferManagers() invalid type streamConfig 
03-22 13:11:07.543  1038  1782 E CamX    : [ERROR][CORE   ] camxnode.cpp:4705 CreateBufferManagers() invalid type streamConfig 
03-22 13:11:07.543  1038  1782 E CamX    : [ERROR][CORE   ] camxnode.cpp:4705 CreateBufferManagers() invalid type streamConfig 
03-22 13:11:07.544  1038  1782 E CamX    : [ERROR][CORE   ] camxnode.cpp:4705 CreateBufferManagers() invalid type streamConfig 
03-22 13:11:07.544  1038  1782 E CamX    : [ERROR][CORE   ] camxnode.cpp:4705 CreateBufferManagers() invalid type streamConfig 
03-22 13:11:07.545  1038  1782 E CamX    : [ERROR][STATS_AF] camxcaecstatsprocessor.cpp:3392 ReadTuningModeParameter() PropertyIDUsecaseChiTuningModeParameter is not published!
03-22 13:11:07.545  1038  1782 E CamX    : [ERROR][STATS  ] gcamfastaeutil.cpp:1154 SetTuningData() [FastAE] ERROR! Failed to get the tuning data
03-22 13:11:07.545  1038  1782 E CamX    : [ERROR][HAL    ] camxmetadatapool.cpp:1397 GetMetadataByTag() Invalid Slot to get a metadata from
03-22 13:11:07.545  1038  1782 E CamX    : [ERROR][HAL    ] camxmetadatapool.cpp:1397 GetMetadataByTag() Invalid Slot to get a metadata from
03-22 13:11:07.545  1038  1782 E CamX    : [ERROR][STATS_AEC] aec_led_calibration.cpp:560: aec_led_cal_apply_calibration Invalid pointer 0x7248efde20 0x0
03-22 13:11:07.545  1038  1782 E CamX    : [ERROR][HAL    ] camxmetadatapool.cpp:1397 GetMetadataByTag() Invalid Slot to get a metadata from
03-22 13:11:07.546  1038  1782 E CamX    : [ERROR][HAL    ] camxmetadatapool.cpp:1397 GetMetadataByTag() Invalid Slot to get a metadata from
03-22 13:11:07.546  1038  1782 E CamX    : [ERROR][HAL    ] camxmetadatapool.cpp:1397 GetMetadataByTag() Invalid Slot to get a metadata from
03-22 13:11:07.546  1038  1782 E CamX    : [ERROR][HAL    ] camxmetadatapool.cpp:1397 GetMetadataByTag() Invalid Slot to get a metadata from
03-22 13:11:07.546  1038  1782 E CamX    : [ERROR][HAL    ] camxmetadatapool.cpp:1397 GetMetadataByTag() Invalid Slot to get a metadata from
03-22 13:11:07.546  1038  1782 E CamX    : [ERROR][HAL    ] camxmetadatapool.cpp:1397 GetMetadataByTag() Invalid Slot to get a metadata from
03-22 13:11:07.546  1038  1782 E CamX    : [ERROR][HAL    ] camxmetadatapool.cpp:1397 GetMetadataByTag() Invalid Slot to get a metadata from
03-22 13:11:07.546  1038  1782 E CamX    : [ERROR][HAL    ] camxmetadatapool.cpp:1397 GetMetadataByTag() Invalid Slot to get a metadata from
03-22 13:11:07.546  1038  1782 E GoogTuning: Error! Unsupported tuning mode (usecase: 65535, sensorMode: 65535) - using the default tuning header instead
03-22 13:11:07.546  1038  1782 D CamX    : [DEBUG][STATS_AWB] camxcawbstatsprocessor.cpp:787 SetOperationModetoAlgo() Mode set to Algo: 1
03-22 13:11:07.546  1038  1782 E CamX    : [ERROR][HAL    ] camxmetadatapool.cpp:1397 GetMetadataByTag() Invalid Slot to get a metadata from
03-22 13:11:07.551  1038  1777 I [email protected]_64: [GOOG_STATS] PDAF wrapper is successfully initialized
03-22 13:11:07.551  1038  1777 I [email protected]_64: [GOOG_STATS] PDAF infinity DAC = -185, macro DAC = 543, image bits = 8
03-22 13:11:07.551  1038  1777 I [email protected]_64: [GOOG_STATS] doDefaultPDProcess = 0
03-22 13:11:07.551  1038  1777 I [email protected]_64: [GOOG_STATS] Calling QC PDLibInitialize: run on sparse PD = 0
03-22 13:11:07.551  1038  1777 E CamX    : [ERROR][STATS_AF] pdlib_lcr_utils.cpp:136 pdaf_lcr_get_vertical_blocks() Cound not find a good partition, set mega_block_y = 1
03-22 13:11:07.553  1056  1056 I sensors-hal: flush_physical_sensor:328, android.sensor.gyroscope/41
03-22 13:11:07.553  1056  1056 I sensors-hal: flush_physical_sensor:336, android.sensor.gyroscope/41 completed
03-22 13:11:07.559  1038  1782 E CamX    : [ERROR][HAL    ] camxsession.cpp:3537 GetIntraRealtimePipelineId() Less than two realtime pipelines, no intra result
03-22 13:11:07.559  1038  1782 E CamX    : [ERROR][STATS_AF] camxcafioutil.cpp:378 ReadTuningModeParameter() PropertyIDUsecaseChiTuningModeParameter is not published!
03-22 13:11:07.559  1038  1782 E GoogTuning: Error! Unsupported tuning mode (usecase: 65535, sensorMode: 65535) - using the default tuning header instead
03-22 13:11:07.559  1038  1782 E CamX    : [ERROR][HAL    ] camxmetadatapool.cpp:1397 GetMetadataByTag() Invalid Slot to get a metadata from
03-22 13:11:07.602  1038  1782 E CamX    : [ERROR][HAL    ] camxmetadatapool.cpp:1397 GetMetadataByTag() Invalid Slot to get a metadata from
03-22 13:11:07.602  1038  1782 E CamX    : [ERROR][HAL    ] camxmetadatapool.cpp:1397 GetMetadataByTag() Invalid Slot to get a metadata from
03-22 13:11:07.603  1038  1782 I GoogSensorSync: GoogSensorSync 67 Sensor sync camera ID: 0
03-22 13:11:07.605  1038  1782 I GoogSensorSync: GetSensorHandle 109 handle for 0 is found.
03-22 13:11:07.608  1056  1056 I sensors-hal: batch_physical_sensor:285, com.google.sensor.camera_vsync/11051, period=5000000, max_latency=0
03-22 13:11:07.608  1056  1056 I sensors-hal: batch_physical_sensor:296, com.google.sensor.camera_vsync/11051, period=5000000, max_latency=0 request completed
03-22 13:11:07.608  1056  1056 I sensors-hal: activate_physical_sensor:220, com.google.sensor.camera_vsync/11051 en=1
03-22 13:11:07.608  1056  1056 I sensors-hal: get_qmi_debug_flag:245, support_qmi_debug : false
03-22 13:11:07.609  1056  1056 I sensors-hal: activate_physical_sensor:233, com.google.sensor.camera_vsync/11051 en=1 completed
03-22 13:11:07.610  1038  1782 D CHIUSECASE: Create: Initialized Google use case successfully.
03-22 13:11:07.611  1038 13641 I CHIUSECASE: SubmitRequest: ActivatePipeline camera id 0
03-22 13:11:07.627  1038  1775 E CamX    : [ERROR][STATS_AF] camxcafioutil.cpp:988 ReadAECInput() PropertyIDAECInternal null data
03-22 13:11:07.627  1038  1775 E CamX    : [ERROR][STATS_AF] camxcafioutil.cpp:1015 ReadAECInput() PropertyIDAECFrameInfo null data
03-22 13:11:07.627  1038  1776 E CamX    : [ERROR][STATS  ] camxcaecstatsprocessor.cpp:3347 ProcessRequestFastAE() [FastAE] Failed to apply gain to the stats!
03-22 13:11:07.627  1038  1776 E CamX    : [ERROR][STATS_AEC] aec_process.cpp:1229: aec_process_stats_parsing aec is null or invalid
03-22 13:11:07.627  1038  1776 E CamX    : [ERROR][STATS_AEC] aec_process.cpp:8002: aec_process_preview_and_video Error: invalid stats
03-22 13:11:07.628  1056 18420 I sensors-hal: handle_indication_realtime:456,  SCHED_FIFO(10) for qmi_cbk
03-22 13:11:07.628  1038  1776 D CamX    : [DEBUG][STATS  ] camxcawbstatsprocessor.cpp:622 IsValidAlgoOutput() gains from algo for ReqId :1 Red  = 2.105061, green  = 1.000000, blue  = 1.603830
03-22 13:11:07.630  1038  1776 E CamX    : [ERROR][STATS  ] camxcaecstatsprocessor.cpp:3347 ProcessRequestFastAE() [FastAE] Failed to apply gain to the stats!
03-22 13:11:07.630  1038  1776 E CamX    : [ERROR][STATS_AEC] aec_process.cpp:1229: aec_process_stats_parsing aec is null or invalid
03-22 13:11:07.630  1038  1776 E CamX    : [ERROR][STATS_AEC] aec_process.cpp:8002: aec_process_preview_and_video Error: invalid stats
03-22 13:11:07.631  1038  1776 D CamX    : [DEBUG][STATS  ] camxcawbstatsprocessor.cpp:622 IsValidAlgoOutput() gains from algo for ReqId :2 Red  = 2.105061, green  = 1.000000, blue  = 1.603830
03-22 13:11:07.634  1038  1775 E CamX    : [ERROR][STATS  ] camxcaecstatsprocessor.cpp:3347 ProcessRequestFastAE() [FastAE] Failed to apply gain to the stats!
03-22 13:11:07.634  1038  1775 E CamX    : [ERROR][STATS_AEC] aec_process.cpp:1229: aec_process_stats_parsing aec is null or invalid
03-22 13:11:07.634  1038  1775 E CamX    : [ERROR][STATS_AEC] aec_process.cpp:8002: aec_process_preview_and_video Error: invalid stats
03-22 13:11:07.635  1038  1775 D CamX    : [DEBUG][STATS  ] camxcawbstatsprocessor.cpp:622 IsValidAlgoOutput() gains from algo for ReqId :3 Red  = 2.105061, green  = 1.000000, blue  = 1.603830
03-22 13:11:07.637  1038  1774 E CamX    : [ERROR][STATS_AEC] camxcaecstatsprocessor.cpp:1745 SetAlgoBayerHistValue() Unsupported bayer hist channel!
03-22 13:11:07.637  1038  1774 E CamX    : [ERROR][STATS  ] camxcaecstatsprocessor.cpp:3347 ProcessRequestFastAE() [FastAE] Failed to apply gain to the stats!
03-22 13:11:07.638  1038  1774 E CamX    : [ERROR][STATS_AEC] aec_process.cpp:1229: aec_process_stats_parsing aec is null or invalid
03-22 13:11:07.638  1038  1774 E CamX    : [ERROR][STATS_AEC] aec_process.cpp:8002: aec_process_preview_and_video Error: invalid stats
03-22 13:11:07.638  1038  1774 D CamX    : [DEBUG][STATS  ] camxcawbstatsprocessor.cpp:622 IsValidAlgoOutput() gains from algo for ReqId :4 Red  = 2.105061, green  = 1.000000, blue  = 1.603830
03-22 13:11:07.662  1038  1168 E CamX    : [ERROR][HAL    ] camxmetadatapool.cpp:1556 SetMetadataByTag() Invalid slot; cannot set metadata tag 80210000
03-22 13:11:07.662  1038  1168 E CamX    : [ERROR][HAL    ] camxmetadatapool.cpp:1720 PublishMetadataList() Invalid slot, cannot publish metadata list
03-22 13:11:07.695  1048  1048 I [email protected]: capacity: 2774380
03-22 13:11:07.695  1038  1168 E CamX    : [ERROR][HAL    ] camxmetadatapool.cpp:1556 SetMetadataByTag() Invalid slot; cannot set metadata tag 80210000
03-22 13:11:07.695  1038  1168 E CamX    : [ERROR][HAL    ] camxmetadatapool.cpp:1720 PublishMetadataList() Invalid slot, cannot publish metadata list
03-22 13:11:08.449  1065 23908 I WifiHAL : event received NL80211_CMD_VENDOR, vendor_id = 0x1374, subcmd = 0xd
03-22 13:11:09.037  1038 13214 E CamX    : [ERROR][HAL    ] camxchicontext.cpp:4106 SubmitRequest() Request 5 failed when submitting requests.
03-22 13:11:09.037  1038 13214 E CamX    : [ERROR][HAL    ] camxchi.cpp:608 ChiSubmitPipelineRequest() Submit request failed with error 9.
03-22 13:11:09.037  1038 13214 E CHIUSECASE: chxextensionmodule.cpp:2748 SubmitRequest() Offline session is in bad state.
03-22 13:11:09.037  1038 13214 E CHIUSECASE: SubmitRequest: Submitting a request failed: Unknown error -9 (9).
03-22 13:11:09.037  1038 13214 E CHIUSECASE: ExecuteCaptureRequest: Submitting a request to realtime session failed: Unknown error -9 (9).
03-22 13:11:09.037  1038 13214 E CHIUSECASE: chxutils.cpp:836 StatusToCDKResult() Unable to match status (9). 
03-22 13:11:09.037  1038 13214 D CamX    : [DEBUG][CORE   ] camxsession.cpp:281 Destroy() Destroying session 0x7263a2d8a0
03-22 13:11:09.037  1038 13214 D CamX    : [DEBUG][CORE   ] camxsession.cpp:286 Destroy() Destroying Forced
03-22 13:11:09.038  1038  1252 E CamX    : [ERROR][CORE   ] camxnode.cpp:3269 CSLFenceCallback() Node:65536 [IFE] InstanceID:10 Fence 17 signaled with failure 1 in node fence handler FOR 2
03-22 13:11:09.038  1038  1252 E CamX    : [ERROR][CORE   ] camxnode.cpp:3269 CSLFenceCallback() Node:65536 [IFE] InstanceID:10 Fence 18 signaled with failure 1 in node fence handler FOR 2
03-22 13:11:09.038  1038  1252 E CamX    : [ERROR][CORE   ] camxnode.cpp:3269 CSLFenceCallback() Node:65536 [IFE] InstanceID:10 Fence 19 signaled with failure 1 in node fence handler FOR 2
03-22 13:11:09.038  1038  1774 E CamX    : [ERROR][CORE   ] camxnode.cpp:3451 ProcessFenceCallback() Fence error detected for Node: IFE  requestId: 2
03-22 13:11:09.039  1038  1774 E CamX    : [ERROR][DRQ    ] camxdeferredrequestqueue.cpp:938 UpdateDependency() Failure to update: property: ffffffff , fence: 27cd6340(00000011), request: 2...result willbe an error
03-22 13:11:09.039  1038  1252 E CamX    : [ERROR][CORE   ] camxnode.cpp:3269 CSLFenceCallback() Node:65536 [IFE] InstanceID:10 Fence 20 signaled with failure 1 in node fence handler FOR 2
03-22 13:11:09.039  1038  1774 E CamX    : [ERROR][CORE   ] camxnode.cpp:3451 ProcessFenceCallback() Fence error detected for Node: IFE  requestId: 2
03-22 13:11:09.039  1038  1774 E CamX    : [ERROR][DRQ    ] camxdeferredrequestqueue.cpp:938 UpdateDependency() Failure to update: property: ffffffff , fence: 27cfc4a0(00000012), request: 2...result willbe an error
03-22 13:11:09.039  1038  1252 E CamX    : [ERROR][CORE   ] camxnode.cpp:3269 CSLFenceCallback() Node:65536 [IFE] InstanceID:10 Fence 21 signaled with failure 1 in node fence handler FOR 2
03-22 13:11:09.039  1038  1774 E CamX    : [ERROR][CORE   ] camxnode.cpp:3451 ProcessFenceCallback() Fence error detected for Node: IFE  requestId: 2
03-22 13:11:09.039  1038  1774 E CamX    : [ERROR][DRQ    ] camxdeferredrequestqueue.cpp:938 UpdateDependency() Failure to update: property: ffffffff , fence: 37d3edf0(00000013), request: 2...result willbe an error
03-22 13:11:09.039  1038  1774 E CamX    : [ERROR][CORE   ] camxnode.cpp:3451 ProcessFenceCallback() Fence error detected for Node: IFE  requestId: 2
03-22 13:11:09.039  1038  1774 E CamX    : [ERROR][DRQ    ] camxdeferredrequestqueue.cpp:938 UpdateDependency() Failure to update: property: ffffffff , fence: 37d4dee0(00000014), request: 2...result willbe an error
03-22 13:11:09.039  1038  1252 E CamX    : [ERROR][CORE   ] camxnode.cpp:3269 CSLFenceCallback() Node:65536 [IFE] InstanceID:10 Fence 22 signaled with failure 1 in node fence handler FOR 2
03-22 13:11:09.039  1038  1774 E CamX    : [ERROR][CORE   ] camxnode.cpp:3451 ProcessFenceCallback() Fence error detected for Node: IFE  requestId: 2
...

Smartphone (please complete the following information):

  • Device: Pixel 3a
  • OS: CalyxOS 3.3.0 (12L)

Mi Note 10 crash after taking picture (sometimes)

Describe the bug
After taking a picture sometimes the latest photon (after tripod detection) crashes. This happens randomly.

Screenshots
Settings:

Screenshot_2020-08-27-09-23-17-229_com eszdman photoncamera

Logs

java.lang.IllegalStateException: Image is already closed
	at android.media.Image.throwISEIfImageIsInvalid(Image.java:72)
	at android.media.ImageReader$SurfaceImage.getPlanes(ImageReader.java:895)
	at com.eszdman.photoncamera.ImageProcessing.ApplyHdrX(ImageProcessing.java:353)
	at com.eszdman.photoncamera.ImageProcessing.Run(ImageProcessing.java:405)
	at com.eszdman.photoncamera.api.ImageSaver.done(ImageSaver.java:41)
	at com.eszdman.photoncamera.api.ImageSaver.Process(ImageSaver.java:177)
	at com.eszdman.photoncamera.api.ImageSaver.lambda$run$0$ImageSaver(ImageSaver.java:79)
	at com.eszdman.photoncamera.api.-$$Lambda$ImageSaver$p8WddnM-eM4NYgwNk6Oi69iNP58.handleMessage(Unknown Source:2)
	at android.os.Handler.dispatchMessage(Handler.java:103)
	at android.os.Looper.loop(Looper.java:224)
	at android.os.HandlerThread.run(HandlerThread.java:67)

Smartphone (please complete the following information):

  • Device: Xiaomi Mi Note 10
  • OS: MIUI 12.01 on Android 10
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

Info about 32bit devices

Hi,

I'm testing this app on my Oneplus Nord and looks very promising (I don't like closed source app, but for now GCam is the only really usable app).
But I've another question. It's possible to build a 32bit version!?
I've another oneplus one(not really bad hardware, but very bad software available)

Thanks in advance
Michele

OP5: Unsupported device and crashing

Describe the bug
Photon camera is crashing on OnePlus 5 also shows a toast that it's unsupported device.

To Reproduce
Steps to reproduce the behavior:

  1. Open Photon Camera
  2. Capture photo from either front/back camera
  3. See it's crashing on OnePlus 5

Expected behavior
Should save photo rather than ctashing.

Screenshots
If applicable, add screenshots to help explain your problem.

Logs
https://nekobin.com/boyagufoga

Smartphone (please complete the following information):

  • Device: OnePlus 5
  • OS: Android 11, RevengeOS
  • Browser: Bromite
  • Version: Version 0.72

Additional notes
May I know what are it's requirements? I know that OnePlus 5 isn't in Supported List, can it make working somehow?

Please set versionCode

The APK attached to the current release doesn't have versionCode set:

package: name='com.eszdman.photoncamera' versionCode='' versionName='0.3' compileSdkVersion='29' compileSdkVersionCodename='10'

That makes it hard to keep versions apart, as Android uses this field to determine if an APK file is an update or not. Could you please set that field in your build.gradle? I see you're referring to a variable there which probably isn't set. Especially if you want your app included with F-Droid once it's "stable", a literal value in this place would be very helpful (required by F-Droid's update check process) โ€“ but then, that would require a build flavor without proprietary dependencies (like currently Firebase and Crashlytics, which are not exactly known for good privacy anyway).

Thanks!

stops working with toast "Session onConfigFailed" on Tecno POVA

Describe the bug
when i capture photo, a toast appears saying Session onConfigureFailed. and image is not captured, btw on video mode, app crashes after pressing stop button.'

To Reproduce
Steps to reproduce the behavior:

  1. Open the app
  2. Press capture button in any mode.
  3. See the toast.

Expected behavior
An image is captured and saved on the device.

Screenshots
If applicable, add screenshots to help explain your problem.
Screenshot_20220522-070417~2

Logs
i dont know where it is saved.

Smartphone (please complete the following information):

  • Device: Tecno POVA (LD7)
  • OS: Android 10
  • Browser: chrome
  • Version 101

Additional context
i have tried many photoncamera versions from github releases, and i am 'currently trying 0.8.14660 debug version.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.