Fixed an issue preventing the audio stream to be restarted once an app was placed in the background
Fixed an issue preventing audio from being captured from external devices such as Bluetooth headsets
1.0.3.726
1.0.3.724
Significantly improved error detection and reporting for the audio encoding components of the SDK.
Specifying the audio sample rate and bitrate as 0 in WZMediaConfig
or WowzaConfig
will cause the SDK to query the device for the optimal values. Specifying a sample rate but leaving the bitrate as 0 will cause an optimal bitrate to be chosen for the specified sample rate.
Added the static method (NSArray *_Nullable) supportedBitratesForSampleRateAndChannels:(Float64)sampleRate channels:(UInt32)numChannels
to the WZAudioDevice
class that will return an NSArray
of NSNumber
s that contain the audio encoding bitrates supported for the specified audio sample rate and number of audio channels.
1.0.3.699
Added a connectionParameters
property to the WZStreamConfig
class allowing you to define a WZDataMap
of name/value pairs that will be used as query string parameters to the server connection string.
Added a mirrorFrontCamera
bool property to WowzaConfig (WZMediaConfig)
to allow clients to set the mirroring behavior of front camera recording. Defaults to YES, which matches the pre-existing behavior of recording with the front camera.
1.0.3.581
1.0.3.579
WowzaGoCoderSDK
1.0.3.576
WowzaGoCoderSDK
1.0.3.573
WowzaGoCoderSDK
SDK Sample Apps
1.0.3.565
WowzaGoCoderSDK
1.0.3.545
WowzaGoCoderSDK
SDK Sample Apps
1.0.2.506
WowzaGoCoderSDK
Fixed a couple potential memory leaks with the PCM audio code.
Added a bit more intelligence to the startBroadcasting function to not call stop if not already broadcasting
1.0.2.489
WowzaGoCoderSDK
1.0.2.472
WowzaGoCoderSDK
Added support for IPV6 addressing
Update the audio encoder to generate an audio prime frame if the writer doesn't encounter one
1.0.2.469
SDK Sample Apps
1.0.2.466
WowzaGoCoderSDK
The SDK now supports broadcasting while the host application is in the
background. A new flag has been added to WowzaConfig
-
backgroundBroadcastEnabled
. The default value is NO. If you wish to
broadcast in the background, your application must add the Audio
Background Mode capability, and you should set backgroundBroadcastEnabled
to YES. While broadcasting in the background, only live audio will be
broadcasted, since access to the camera is prohibited while the application
is in the background. While in the background, a frozen video frame will be
broadcast in place of live video.
Added a new WZAudioSink
protocol method: audioPCMFrameWasCaptured
. Clients
implementing this protocol can use it to modify the PCM audio frames before
they are encoded to AAC and broadcasted.
SDK Sample Apps
backgroundBroadcastEnabled
flag; and the
SDKSampleApp now includes the Audio background mode.1.0.1.459
WowzaGoCoderSDK
onWZEvent
callback wherein the WZStatus
data member
was not being set correctly for the WZEventBitrateReduced
and
WZEventBitrateIncreased
events.1.0.1.456
WowzaGoCoderSDK
1.0.1.451
WowzaGoCoderSDK
Added videoFrameRateLowBandwidthSkipCount
param to WZMediaConfig
; used
to set the number of video frames to skip when the encoder cannot keep up
with the broadcaster.
Added optional videoCaptureInterruptionStarted
method to WZVideoSink
. Called
when video capture is first interrupted - for example, when the app goes
into the background.
1.0.1.424
WowzaGoCoderSDK
1.0.1.420
WowzaGoCoderSDK
1.0.1.398
WowzaGoCoderSDK
Added interfaces to WZAudioDevice
and WowzaGoCoder
to allow setting the
AVAudioSessionCategoryOptions
for the shared AVAudioSession
.
The initial video orientation is now based on UI orientation instead of device orientation. This fixes an orientation issue with previews that are embedded within a presented view controller's view.
1.0.1.391
WowzaGoCoderSDK
1.0.1.388
WowzaGoCoderSDK
UIDeviceOrientationLandscapeLeft
and device
is then rotated to UIDeviceOrientationLandscapeRight
.1.0.1.377
WowzaGoCoderSDK
Added a newWZBroadcastScaleMode
type and parameter to WZMediaConfig
(a.k.a WowzaConfig
). The 2 values for WZBroadcastScaleMode
are:
WZBroadcastScaleModeAspectFit
WZBroadcastScaleModeAspectFill
This setting tells the SDK how to scale and/or crop frames whose sizes don't match the specified broadcast size. The most common example of this frame size mismatch occurs when the device is rotated while encoding.
SDK Sample Apps
1.0.1.377
WowzaGoCoderSDK
Added a new WZBroadcastScaleMode
type and parameter to WZMediaConfig
(a.k.a WowzaConfig). The 2 values for WZBroadcastScaleMode
are:
WZBroadcastScaleModeAspectFit
WZBroadcastScaleModeAspectFill
This setting tells the SDK how to scale and/or crop frames whose sizes don't match the specified broadcast size. The most common example of this frame size mismatch occurs when the device is rotated while encoding.
SDK Sample Apps
1.0.1.367
WowzaGoCoderSDK
Added the following methods to WowzaGoCoder:
registerVideoEncoderSink:WZVideoEncoderSink
unregisterVideoEncoderSink:WZVideoEncoderSink
registerAudioEncoderSink:WZAudioEncoderSink
unregisterAudioEncoderSink:WZAudioEncoderSink
Clients can now access encoding audio and video frames if they wish to.
Fixed an issue with the documentation that is released with the SDK not being up-to-date with the SDK headers.
SDK Sample Apps
1.0.1.348
WowzaGoCoderSDK
The following class methods were added to WowzaGoCoder:
(void) requestPermissionForType:(WowzaGoCoderPermissionType)type response:(nullable WZPermissionBlock)response;
(WowzaGoCoderCapturePermission) permissionForType:(WowzaGoCoderPermissionType)type;
These allow clients to explicitly request camera and microphone access permission. Previously, it was the case that the SDK would cause these permission requests to occur as camera and microphone resources were accessed during the preview/broadcasting lifecycle. It is still the case that if the client application doesn't explicitly make these permission requests, the SDK will do it at appropriate times. Clients are encouraged, however, to use these explicit mechanisms as client applications know best when these prompts should be displayed to the user.
Streaming will now fail if the client specifies that audio or video is enabled in their config, and permission for the corresponding audio or video resource is denied. Similarly, streaming will fail if the config specifies audio, and the microphone is being used by a higher-priority application (such as the Phone app, or a VOIP app).
The H264Encoder's stopBroadcasting
method is now synchronized with the
capture device's capture queue; this may address an issue with runaway
encoding sessions.
SDK Sample Apps
1.0.0.338
WZCameraPreview
now provides access to the underlying AVCaptureVideoPreviewLayer
; this will allow clients to update the
AVCaptureVideoPreviewLayer
when the bounds change in client views that host the preview layer.1.0.0.333
WowzaGoCoderSDK
1.0.0.330
WowzaGoCoderSDK
WZEventBitrateReduced
WZEventBitrateIncreased
WZEventEncoderPaused
WZEventEncoderResumed
Clients that implement the WZStatusCallback protocol can listen for these bitrate related events via onWZEvent
Added an NSDictionary property named "data" to WZStatus. This property will contain data releated to the WZStatus for particular Event cases. See documenation for further details.
Deprecated the videoBitrateDidChange method of the WZVideoEncoderSink protocol. This protocol method still exists and will be called, but will be removed in the next major SDK revision. Clients should use the WZEvent related methods in order to get informed about bitrate changes.
Fixed a cropping bug in cases where the config frame size does not match a device preset frame size.
1.0.0.323
WowzaGoCoderSDK
In the WZStatusCallback protocol, the following method signatures have been changed in order to reduce the chance of collision with identically named methods in other sources/libraries.
PLEASE NOTE: THIS IS A BREAKING CHANGE, AND YOUR CODE WILL NEED TO BE UPDATED TO USE THESE NEW METHOD NAMES
SDK Sample Apps
1.0.0.318
WowzaGoCoderSDK
The SDK is now also available as a static library; the static library and associated headers can be found in the 'wowzagocoder_static_lib' directory.
Added a getting started guide to the 'docs' directory: ios_getting_started.html
Improved the formatting and location of the API reference: now just open the 'api-reference.html' file in the 'docs' directory.
1.0.0.310
WowzaGoCoderSDK
Added 'videoCaptureInterruptionEnded' as an optional protocol method to WZVideoSink. See documentation for the WZVideoSink class for more information about this protocol.
Fixed a frame stretching issue when captured video and/or preview rotates are false, and capture aspect ratio didn't match broadcast aspect ratio.
SDK Sample Apps
NEW WowzaGoCoderMP4PlayerSample.swift.xcodeproj; this is a Swift sample app that demonstrates how to broadcast the frames from a local MP4 file using an AVAssetReader.
Added 'AllSampleApps.xcworkspace', which contains all of the individual sample app projects.
1.0.0.296
WowzaGoCoderSDK
SDK Sample Apps
1.0.0.287
WowzaGoCoderSDK
Removed 'portraitLetterBoxed' property from WZMediaConfig. Use the new 'broadcastVideoOrientation' property instead.
Added 'broadcastVideoOrientation' property to WZMediaConfig, of type (enum) 'WZBroadcastOrientation'. This provides a more explicit mechanism than the former 'portraitLetterBoxed' property for clients to specify how they want the broadcasted video oriented.
Removed 'WZErrorLowBandwidth'. This condition is now reported via the new 'onEvent' protocol method of WZStatusCallback (also, see item below).
Added 'event' property, of type WZEvent (enum), to WZStatus. Used to communicate event information emitted by the encoders or capture devices.
Removed 'videoFrameWasEncoded' and 'videoBitrateDidChange' protocol method definitions from WZVideoSink (they are now in WZEncoderSink)
Added access to the WowzaGoCoder encoder via the following new classes and protocols: WZH264Encoder WZAACEncoder WZAudioDevice WZVideoEncoderSink WZAudioEncoderSink WZBroadcastComponent WZBroadcast
*SDKSampleApp
Sample app directory is now named "sample-apps" (plural, because now there is more than one, see below).
The settings screen has been updated to include the 3 options for setting broadcastVideoOrientation.
The sample app now implements the new 'onEvent' method, which it uses to get notified on low bandwidth conditions.
NEW == SceneKitReel_GoCoder Sample App ==
1.0.0.255
WowzaGoCoderSDK
Added 'videoBitrateLowBandwidthScalingFactor' and 'videoFrameBufferSizeMultiplier' properties to WZMediaConfig; these enable finer client control over bandwidth throttling behavior.
Added WZVideoSink and WZAudioSink protocols, as well as mechanisms to register adopters of these protocols with WowzaGoCoder.
Increased socket send buffer size to 1MB (from default of 128ish K). This should provide better performance for high-latency networks.
*SDKSampleApp
Added UI to Settings to allow videoBitrateLowBandwidthScalingFactor, videoFrameBufferSizeMultiplier, videoBitrate, videoFrameRate and videoKeyFrameInterval to be adjusted by the user.
VideoPlayerViewController now implements the WZVideoSink and WZAudioSink protocols.
Added functionality to conditionally convert captured video frames to grayscale as an example of what one might do when implementing the WZVideoSink protocol.
1.0.0.249
WowzaGoCoderSDK
1.0.0.245
WowzaGoCoderSDK
Documentation! GoCoder SDK documentation can now be found in the "Docs" directory of the distribution package; index.html is the landing page.
Removed 'WZPreset' enumeration and replaced with 'WZFrameSizePreset'.
Added WZMediaConfig and WZStreamConfig classes, but subclasses of WowzaConfig, thus: WZMediaConfig -> WZStreamConfig -> WowzaConfig. Changes are largely transparent to clients.
Removed 'hasCapability' method from WZCamera
Removed isSwitchCameraAvailable method from WZCameraPreivew, since it was mis-leading; use the isSwitchCameraAvailableForConfig:WZMediaConfig method instead; or if you just want to know if switching cameras is available at all, use [WZCameraPreview deviceCameras].count > 1
Added 'previewGravity' property to WZCameraPreview
*SDKSampleApp
1.0.0.236
WowzaGoCoderSDK
*SDKSampleApp
1.0.0.216
WowzaGoCoderSDK
in addition to the various video size presets enumerated in 'WZPreset', WowzaGoCoderSDK now supports arbitrary frame sizes. The only requirement is that width must be greater than height (which does not preclude portrait video - see portrait settings above).
Audio modifications:
'audioChannels', 'audioSampleRate' and 'audioBitrate' properties in WowzaConfig are now read/write. This allows the client to set these properties prior to streaming.
In 'WZCameraPreview', the 'isSwitchCameraAvailable' method now takes a a BOOL parameter 'withoutRestart'. This effectively means "can I switch cameras without restarting the video stream?". If 'withoutRestart' is 'YES', then 'isSwitchCameraAvailable' will only return true if the other camera supports the current video configurations as specified in WowzaConfig. A new method:
In 'WowzaGoCoder', the class method: (void) setLogLevel:(WowzaGoCoderLogLevel)level has been added. Available log levels are: 'WowzaGoCoderLogLevelOff' - emit no NSLog statements from the SDK 'WowzaGoCoderLogLevelDefault' - emit a minimum of generally useful log statements from the SDK. This is the default level if the client doesn't otherwise specifiy a log level. 'WowzaGoCoderLogLevelVerbose' - emit all available log statements from the SDK; in this mode, you will see log statements for each encoded video frame, so the output is really quite verbose.
SDKSampleApp