Skip to content

Repository files navigation

BeEvent

BeEvent is an iOS camera app that converts ordinary iPhone camera frames into simulated event-camera style photos and videos.

It does not capture real hardware event-camera data. It simulates event output from conventional camera frames on device.

Positive events render red, negative events render blue, and no-event pixels render black.

Requirements

  • macOS with Xcode installed
  • iOS 17+
  • XcodeGen
  • Real iPhone for final camera verification

Setup

./scripts/bootstrap.sh
open BeEvent.xcodeproj

Test

./scripts/test.sh

Source Layout

  • BeEvent/: iOS app source.
  • BeEvent/Features/Camera: SwiftUI camera UI, preview, controls, and Docs.
  • BeEvent/Features/Capture: AVFoundation session and frame pipeline.
  • BeEvent/Infrastructure/Permissions: camera, microphone, and photo-library permissions.
  • BeEvent/Infrastructure/Export: event photo/video export and Photos saving.
  • EventCore/: event simulation, rendering, and Metal processing.
  • EventCore/Tests: deterministic EventCore tests.
  • Icons/: source assets for generated app icon.
  • scripts/: bootstrap, test, and asset-generation scripts.

Product Contract

  • On-device media processing only.
  • No accounts.
  • No analytics.
  • No ads.
  • No tracking.
  • No uploads.
  • No network access.
  • No location permission.
  • Do not store, save, export, or transmit raw RGB camera frames.
  • Normal user saves go to Photos as simulated event photos/videos.
  • Temporary save-staging files are deleted after successful Photos insertion.
  • Event polarity is always red for positive, blue for negative, and black for none.

Simulation Modes

Selectable modes:

  • Basic Frame Difference
  • Log Intensity DVS
  • Accumulated DVS
  • v2e Inspired
  • Stylized Event

Basic Frame Difference is the default mode at app launch and after non-persistent state reset.

Every selectable mode must use the optimized Metal/Core Video path for live preview, photo capture, video recording, and export. CPU simulation may exist only as deterministic test/reference code that the app runtime cannot call.

Camera UI

The main screen is a real camera UI, not a mock:

  • Full-screen event preview
  • Photo/Video toggle
  • Centered shutter
  • Lower-right front/back camera switch
  • Zoom slider
  • Simulation mode picker
  • Mode-specific Parameters dropdown for controls such as thresholds, intensity, accumulation, and v2e-inspired settings
  • Preview resolution picker
  • Background RGB camera FPS picker when supported
  • Lower-left Photos affordance
  • Permission fallback UI
  • Centered recording timer in video mode
  • Bilingual English/Japanese in-app Docs

During active video recording, configuration-changing controls are hidden and disabled. Zoom and the front/back camera switch remain available unless a platform limitation requires truthful disabling.

App Icon

The app icon is generated from Icons/BeEvent_icon_gray.png by scripts/generate_app_icon.py.

The generator creates a 1024 x 1024 opaque PNG in the app icon asset catalog using Basic Frame Difference, a 4.8 px subpixel shift per copy, an 11/255 luminance threshold, and black/red/blue quantization.

Documentation

Primary implementation documents:

  • AGENTS.md
  • PRODUCT_REQUIREMENTS.md
  • TECHNICAL_SPEC.md
  • TASKS.md
  • PRIVACY.md

These files are the source of truth for implementing the production app.

About

Event camera simulator as an iOS app.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages