SpenceCore has created eight (8) applications, four (4) for Apple iOS, and four (4) for Apple macOS, all available in Apple’s App Store:

  • SCSnapShot for iOS: Accesses the built-in cameras of the device it runs on.
  • SCSnapShot for macOS: Accesses any built-in cameras as well as attached USB webcam type devices.
  • SCSnapShotIP for both iOS and macOS: Allows access to any network cameras which support http/mjpg streaming.
  • SCSnapShotRT for both iOS and macOS: Allows access to any network cameras which support rtsp/rtp streaming.
  • SCEditShot for iOS: Edits any photos saved in the Photos app.
  • SCEditShot for macOS: Edits any photo available in Finder.

Six (6) of these applications provide access to the video stream(s) of various camera sources; i.e. built-in, USB attached, and network attached devices. Two (2) of these applications provide basic editing functionality regarding still images; i.e. rotating, mirroring, and cropping. The goal is to eventually offer for sale the custom designed set of Swift language based frameworks used to develop these applications for use by other developers. These apps, useful in their own right, are also a proof of concept as to the degree of functionality offered by the proposed frameworks.

There are 29 custom protocol-oriented frameworks used in the development of the eight (8) applications listed above. These frameworks loosely comprise 4 code levels. An extensive amount of time has been spent defining well-crafted protocols, properties, methods, and events tying each framework together. Most importantly, the flexibility of these frameworks far exceeds that which are expressed by the eight applications.

The availability of image sample buffers for the creation of videos is the obvious feature untapped by the applications. Maybe an unexpected functionality provided is that of lifecycle considerations. Much effort has been expended in building such considerations into the frameworks. Therefore design of iOS apps using these frameworks do not have to address the lifecycle issues involved in properly starting and stopping the video stream during foregrounding, backgrounding, or screen locking of the application. Moreover, extensive use of concurrent execution is essentially unavoidable when developing video capture frameworks. Trying to address the application lifecycle apart from the frameworks would, at the very least, result in substantial additional development costs, and may very well be impossible to achieve for highly functional video capture applications.

Please leave a comment as to interest in the release of such frameworks, as a show of interest is very important in moving the process along. Exposure of the framework architectures will come if/when there is a recognition that SpenceCore has something to offer the community.

Sincerely, Spencer Burroughs