Breaking Changes
Dependency Changes
Rocc no longer has a dependency on ThunderRequest
as it's code has been moved internally to Rocc
to easier support SPM and remove some clutter. You will have to detach ThunderRequest
from your embedded binaries and the Carthage run script if you are using Carthage to install Rocc.
Type Changes
A lot of camera function SendType
and ReturnType
types (As well as they're type on CameraEvent
had to be more strongly typed to allow support for serialising them to and from the binary format PTP/IP uses rather than simply relying on String
which the Sony API cameras use in a lot of places.
Function Typealias | Old Type | New Type |
---|---|---|
Aperture.SendType / Aperture.ReturnType |
String |
Aperture.Value |
ContinuousCapture.Mode.SendType / ContinuousCapture.Mode.ReturnType |
String |
ContinuousCapture.Mode.Value |
ContinuousCapture.Speed.SendType / ContinuousCapture.Speed.ReturnType |
String |
ContinuousCapture.Speed.Value |
Exposure.Compensation.SendType / Exposure.Compensation.ReturnType |
String |
Exposure.Compensation.Value |
Exposure.Mode.SendType / Exposure.Mode.ReturnType |
String |
Exposure.Mode.Value |
Flash.Mode.SendType / Flash.Mode.ReturnType |
String |
Flash.Mode.Value |
Focus.Mode.SendType / Focus.Mode.ReturnType |
String |
Focus.Mode.Value |
ISO.SendType / ISO.ReturnType |
String |
ISO.Value |
LiveView.QualityGet.ReturnType / LiveView.QualitySet.SendType * |
String |
LiveView.Quality |
StillCapture.Size.SendType / StillCapture.Size.ReturnType |
StillSize |
StillCapture.Size.Value |
StillCapture.Quality.SendType / StillCapture.Quality.ReturnType |
String |
StillCapture.Qualiity.Value |
VideoCapture.Quality.SendType / VideoCapture.Quality.ReturnType |
String |
VideoCapture.Quality.Value |
VideoCapture.FileFormat.SendType / VideoCapture.FileFormat.ReturnType |
String |
VideoCapture.FileFormat.Value |
WhiteBalance.SendType.Value.mode / WhiteBalance.ReturnType.Value.mode / WhiteBalance.Value.mode |
String |
WhiteBalance.Value.Mode |
There were various changes to the types returned on CameraEvent
too, such as additional parts of tuples such as:
videoQuality: (current: String, available: [String]])?
changing to:
videoQuality: (
current: VideoCapture.Quality.Value,
available: [VideoCapture.Quality.Value],
supported: [VideoCapture.Quality.Value]
)?
Note the addition of a supported
array.
*These two functions are seperated out because they have different return types! Setting live view quality returns a URL
but getting it returns the quality.
New Features
PTP/IP Support
The main work in this release was an effort to reverse-engineer support for Sony's more recent camera releases, which use a mechanism called PTP/IP. This adds support for a few cameras, including (but not limited to):
- RX100 VII
- a7rIV
- a9ii
- a7c
- zv-1
Please note: I have not tested PTP/IP support on all of these models personally, but have had reports from users of Camrote that they all function
Swift Package Manager Support
ROCC Now supports the Swift Package Manager for adding to your project of choice! For now it's only supported on macOS and iOS due to a few requirements on UIKit
or AppKit
classes such as UIImage/NSImage
e.t.c. but this may change in the future.
Camera Info Cache
Camera info is now cached (by SSID), which speeds up camera discovery as we don't have to wait on SSDP completing always before we can discover a camera.
Other
- Adds enum cases for new camera models
- Adds
bulbShootingUrl
to camera event so BULB previews can be displayed
Fixes
- Fixes issues around UPnP transfer (Send to smartphone)
- Images not having valid
uri
- Fixes video transfer
- Images not having valid
- Fixes support for RX100 II and some other earlier models
- Fixes errors with live view auto-restarting when manually stopped due to
URLSession
returncancelled
error to delegates - Fixes a6400 supported functionalities to correct issues capturing images
- Fixes issues switching between BULB shutter speed and non-BULB
- Fixes capture issues on a7iii/a9 e.t.c. due to required half-press of shutter
There are likely many other fixes that I have missed in this changelog, as 2.0.0 has been a massive overhaul of ROCC! Apologies if I have missed anything important.