Skip to content

Commit de808be

Browse files
authored
Merge pull request #280 from taublast/applecam
quick ios cam video fix + gitignore
2 parents ef1b043 + edd29fe commit de808be

File tree

7 files changed

+558
-29
lines changed

7 files changed

+558
-29
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
docfx_project/log.txt
2626
log.txt
2727

28+
src/Native/* linguist-vendored
29+
2830
# Build results
2931
[Dd]ebug/
3032
[Dd]ebugPublic/

src/Maui/Addons/DrawnUi.Maui.Camera/Apple/SkiaCamera.Apple.cs

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -308,16 +308,9 @@ private async Task CaptureFrameCore()
308308
}
309309
}
310310

311-
if (imageToDraw == null)
312-
{
313-
var raw = nativeCam.GetRawFullImage();
314-
if (raw.Image != null)
315-
{
316-
imageToDraw = raw.Image;
317-
imageRotation = raw.Rotation;
318-
imageFlip = raw.Flip;
319-
}
320-
}
311+
// No fallback to GetRawFullImage - it reads _latestRecordingFrame which was
312+
// populated earlier and can be older than what zero-copy previously encoded,
313+
// causing out-of-order frames in the video. Better to drop a frame than glitch.
321314
}
322315

323316
// Fallback to standard preview image (slower, already rotated)

src/Maui/Samples/Camera/CameraTestPage.AppCamera.cs

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,43 +7,55 @@ public partial class CameraTestPage
77
public class AppCamera : SkiaCamera
88
{
99
// Audio visualizer (switch between AudioOscillograph and AudioLevels)
10-
private IAudioVisualizer _audioVisualizer = new AudioLevelsVU();
10+
private IAudioVisualizer _audioVisualizer = null;
1111
private int _visualizerIndex = 0;
1212

1313
public static readonly BindableProperty VisualizerNameProperty = BindableProperty.Create(
1414
nameof(VisualizerName),
1515
typeof(string),
1616
typeof(AppCamera),
17-
"VU Meter");
17+
"None");
1818

1919
public string VisualizerName
2020
{
2121
get => (string)GetValue(VisualizerNameProperty);
2222
set => SetValue(VisualizerNameProperty, value);
2323
}
2424

25-
public void SwitchVisualizer()
25+
public void SwitchVisualizer(int index = -1)
2626
{
27-
_visualizerIndex++;
28-
if (_visualizerIndex > 6) _visualizerIndex = 0;
27+
if (index >= 0)
28+
{
29+
_visualizerIndex = index;
30+
}
31+
else
32+
{
33+
_visualizerIndex++;
34+
}
35+
if (_visualizerIndex > 8) _visualizerIndex = 0;
2936

3037
var old = _audioVisualizer;
31-
bool useGain = true;
38+
bool useGain = true;
3239

3340
switch (_visualizerIndex)
3441
{
3542
case 0:
43+
_audioVisualizer = new AudioSoundBars();
44+
useGain = true;
45+
VisualizerName = "Sound Bars";
46+
break;
47+
case 1:
3648
_audioVisualizer = new AudioLevelsVU();
3749
VisualizerName = "VU Meter";
3850
break;
39-
case 1:
51+
case 2:
4052
_audioVisualizer = new AudioLevelsPeak();
4153
VisualizerName = "Peak Monitor";
4254
break;
43-
case 2:
44-
_audioVisualizer = new AudioLevels();
45-
VisualizerName = "Spectrum";
46-
break;
55+
//case 2:
56+
// _audioVisualizer = new AudioLevels();
57+
// VisualizerName = "Spectrum";
58+
// break;
4759
case 3:
4860
_audioVisualizer = new AudioOscillograph();
4961
useGain = true;
@@ -59,6 +71,10 @@ public void SwitchVisualizer()
5971
VisualizerName = "Tuner";
6072
break;
6173
case 6:
74+
_audioVisualizer = new AudioWaveformBars();
75+
VisualizerName = "Waveform Bars";
76+
break;
77+
case 8:
6278
_audioVisualizer = null;
6379
VisualizerName = "None";
6480
break;
@@ -89,7 +105,7 @@ public override void OnWillDisposeWithChildren()
89105
_paintRec = null;
90106
_paintPreview?.Dispose();
91107
_paintPreview = null;
92-
108+
93109
(_audioVisualizer as IDisposable)?.Dispose();
94110
_audioVisualizer = null;
95111
}
@@ -158,6 +174,6 @@ public void DrawOverlay(DrawableFrame frame)
158174
private SKPaint _paintRec;
159175
}
160176

161-
177+
162178
}
163179
}

src/Maui/Samples/Camera/CameraTestPage.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -263,14 +263,18 @@ private void CreateContent()
263263
CornerRadius = 8,
264264
UseCache = SkiaCacheType.Image
265265
}
266-
.OnTapped(me => { CameraControl.SwitchVisualizer(); })
266+
.OnTapped(me =>
267+
{
268+
CameraControl.SwitchVisualizer();
269+
})
267270
.ObserveProperty(CameraControl, nameof(CameraControl.VisualizerName), me =>
268271
{
269-
me.Text = $"Vis: {CameraControl.VisualizerName}";
272+
me.Text = $"{CameraControl.VisualizerName}";
270273
})
271274
.ObserveProperty(CameraControl, nameof(CameraControl.CaptureMode), me =>
272275
{
273-
me.IsVisible = CameraControl.CaptureMode == CaptureModeType.Video;
276+
CameraControl.SwitchVisualizer(0);
277+
//me.IsVisible = CameraControl.CaptureMode == CaptureModeType.Video;
274278
}),
275279

276280
// Take Picture button (only visible in Still mode)

0 commit comments

Comments
 (0)