Status Update
Comments
er...@google.com <er...@google.com> #2
optimize for load once, query many
Perfetto trace shell processor now runs in http server mode.
g....@gmail.com <g....@gmail.com> #3
Pulling back to 1.2 because there are many instances of external users blocked on this. Plan is to open up what we have as experimental in 1.2.
er...@google.com <er...@google.com> #4
Branch: androidx-main
commit 80d9e8a14fae3015890c6ada4d6f72131cfd0d39
Author: Chris Craik <ccraik@google.com>
Date: Mon Feb 20 10:06:57 2023
Public experimental API for TraceProcessor
Bug:219851406
Test: ./gradlew bench:b-m:cC
Test: PerfettoTraceProcessorTest
Test: PerfettoTraceProcessorBenchmark
Relnote: "Added public experimental API for PerfettoTraceProcessor to
enable parsing trace content. This is a step toward fully custom
metrics based on Perfetto trace data."
Change-Id: I2659e84e85281f62f77abb6806f9c00bc2442f56
M benchmark/benchmark-macro/api/public_plus_experimental_current.txt
M benchmark/benchmark-macro/build.gradle
M benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/PerfettoTraceRuleTest.kt
M benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/PowerMetricTest.kt
M benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/StartupTimingMetricTest.kt
M benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/TraceSectionMetricTest.kt
M benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/perfetto/AndroidxTracingTraceTest.kt
M benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/perfetto/AudioUnderrunQueryTest.kt
M benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/perfetto/BatteryDischargeQueryTest.kt
M benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/perfetto/FrameTimingQueryTest.kt
M benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/perfetto/PerfettoCaptureSweepTest.kt
M benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/perfetto/PerfettoSdkTraceTest.kt
D benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/perfetto/PerfettoTraceProcessorTest.kt
M benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/perfetto/PowerQueryTest.kt
M benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/perfetto/StartupTimingQueryTest.kt
A benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/perfetto/PerfettoTraceProcessorTest.kt
A benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/perfetto/RowTest.kt
M benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/Macrobenchmark.kt
M benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/Metric.kt
M benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/perfetto/AudioUnderrunQuery.kt
M benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/perfetto/BatteryDischargeQuery.kt
M benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/perfetto/FrameTimingQuery.kt
D benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/perfetto/PerfettoTraceProcessor.kt
M benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/perfetto/PowerQuery.kt
M benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/perfetto/StartupTimingQuery.kt
M benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/perfetto/StringHelper.kt
M benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/perfetto/server/PerfettoHttpServer.kt
A benchmark/benchmark-macro/src/main/java/androidx/benchmark/perfetto/ExperimentalPerfettoTraceProcessorApi.kt
A benchmark/benchmark-macro/src/main/java/androidx/benchmark/perfetto/PerfettoTraceProcessor.kt
M benchmark/benchmark-macro/src/main/java/androidx/benchmark/perfetto/QueryResultIterator.kt
A benchmark/benchmark-macro/src/main/java/androidx/benchmark/perfetto/Row.kt
M benchmark/benchmark-macro/src/main/java/androidx/benchmark/perfetto/Slice.kt
M benchmark/benchmark/build.gradle
M benchmark/integration-tests/macrobenchmark/src/androidTest/java/androidx/benchmark/integration/macrobenchmark/PerfettoTraceProcessorBenchmark.kt
er...@google.com <er...@google.com>
er...@google.com <er...@google.com> #5
Branch: androidx-main
commit a1afb0d256ee6bf1aafb0ffd2cd958ac09c1fadd
Author: Chris Craik <ccraik@google.com>
Date: Thu Mar 09 16:43:42 2023
Add Experimental TraceMetric for fully custom metrics from traces
Fixes: 219851406
Test: ./gradlew bench:b-m:cC
Relnote: "Added new experimental TraceMetric API for defining fully
custom metrics based on content of a Perfetto trace."
Along with opening up the metric, migrates Metric to more extensible
output types. This allows us to eventually add further per-submetric
customization (such as per-submetric strictness on presence in each
iteration, custom display in studio, etc.
Also now correctly propogates TraceProcessor errors (e.g. query syntax
errors) to Kotlin callers.
This change also removes the concept of timelineRange in metric
results / trace UiState, as it's no longer necessary after
optimizations to remove sleep()s at the beginning/end of trace
capture.
Change-Id: I4ce3147b5bd1a13ae6a500389abdae3df461cacd
M benchmark/benchmark-common/src/main/java/androidx/benchmark/perfetto/UiState.kt
M benchmark/benchmark-macro/api/public_plus_experimental_current.txt
M benchmark/benchmark-macro/build.gradle
M benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/PowerMetricTest.kt
M benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/StartupTimingMetricTest.kt
A benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/TraceMetricTest.kt
M benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/TraceSectionMetricTest.kt
M benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/perfetto/PerfettoTraceProcessorTest.kt
D benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/IterationResult.kt
M benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/Macrobenchmark.kt
M benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/Metric.kt
M benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/MetricResultExtensions.kt
M benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/perfetto/server/PerfettoHttpServer.kt
M benchmark/benchmark-macro/src/main/java/androidx/benchmark/perfetto/PerfettoTraceProcessor.kt
M benchmark/benchmark-macro/src/main/java/androidx/benchmark/perfetto/QueryResultIterator.kt
mi...@gmail.com <mi...@gmail.com> #6
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.benchmark:benchmark-macro:1.2.0-alpha12
er...@google.com <er...@google.com> #7
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.benchmark:benchmark-common:1.2.0-alpha13
androidx.benchmark:benchmark-macro:1.2.0-alpha13
wu...@google.com <wu...@google.com>
sc...@google.com <sc...@google.com> #9
In our experiments, it does make a lot of differences in file size. We will continue to explore the possibility of adding new API to configure jpeg quality.
sc...@google.com <sc...@google.com>
ch...@google.com <ch...@google.com>
ap...@google.com <ap...@google.com> #10
Branch: androidx-main
commit 4d5782ce903c98f3236ae1171effc34f506b5f17
Author: Charcoal Chen <charcoalchen@google.com>
Date: Wed Aug 25 14:54:24 2021
Compress the output image with the specified JPEG quality level for capture modes when cropping is needed
Relnote: "When cropping is needed for ImageCapture, compressing the output cropped image with the specified JPEG quality level according to the set capture mode. If the capture mode is CAPTURE_MODE_MINIMIZE_LATENCY, the JPEG compression quality will be 95. If the capture mode is CAPTURE_MODE_MAXIMIZE_QUALITY, the JPEG compression quality will be 100."
Bug: 142856426
Test: ./gradlew camera:camera-core:build && ./gradlew camera:camera-core:connectedAndroidTest
Change-Id: Ieb37cfede4173d165bd481b86a04545887b0d487
M camera/camera-core/src/androidTest/java/androidx/camera/core/ImageSaverTest.java
M camera/camera-core/src/main/java/androidx/camera/core/ImageCapture.java
M camera/camera-core/src/main/java/androidx/camera/core/ImageSaver.java
M camera/camera-core/src/main/java/androidx/camera/core/internal/utils/ImageUtil.java
M camera/camera-core/src/test/java/androidx/camera/core/internal/utils/ImageUtilTest.java
ch...@google.com <ch...@google.com> #11
About the below issue mentioned in
in case the picture is cropped (which is not my case), the compression quality is set to 100
The issue has been fixed by
Bug Fixes
- When cropping is needed for ImageCapture, compressing the output cropped image with the specified JPEG quality level according to the set capture mode. If the capture mode is CAPTURE_MODE_MINIMIZE_LATENCY, the JPEG compression quality will be 95. If the capture mode is CAPTURE_MODE_MAXIMIZE_QUALITY, the JPEG compression quality will be 100.
After
aa...@gmail.com <aa...@gmail.com> #12
I have 3 buttons to set different jpedQulity to image capture use case,
Low - 30 -> file obtained is of size 300KB
Medium - 50 -> 250KB
High - 100 -> 1MB
When I pass 50 as the value, ideally the image size should increase (I have put camera on a stand, so I am clicking same view) however it’s even less than the image captured with 30 as quality.
On keenly observing this, I saw that on changing the jpeg quality to 30, the preview gets zoomed out automatically.
Can anyone help here?
Is this the default behaviour that preview will zoom out on lowering the quality?
ch...@google.com <ch...@google.com> #13
Hi,
Thanks for reporting this. I have created
aa...@gmail.com <aa...@gmail.com> #14
Thanks for raising a separate ticket for my issue.
I have replied to the asked questions on the same, please have a look.
Description
I was not expecting to have the same output size, especially if we consider the different resolutions of the cameras, but I think the difference is in this case too much.
I see that CameraX is currently not specifying the compression quality, so I assume each device uses whatever the manufacturer defined. It would be great to have a way to define the compression quality not to have to manually compress the JPEG, which is can easily lead to OOM issues.
Related to this, I also noticed that in case the picture is cropped (which is not my case), the compression quality is set to 100, which may not be desired.