GoCoder SDK for iOS release notes

Wowza GoCoder™ SDK is regularly updated with bug fixes as well as new features and functionality. This article describes the latest updates to Wowza GoCoder SDK for iOS.

Latest version


The latest version of Wowza GoCoder SDK for iOS is Wowza GoCoder SDK 1.9.0 build 1377.

Code-breaking changes (since 1.8.1.1369)

  • Created separate state machines for broadcast and playback with updated states and classes. We’ve streamlined the number of states and created consistency between platforms for a more unified developer experience. This is a breaking change.

    The WOWZStatus and WOWZStatusCallback classes are no longer available.

    For broadcast, as of version 1.9.0, use WOWZBroadcastStatus and WOWZBroadcastStatusCallback classes with these states:
     
    • WOWZBroadcastStateIdle
    • WOWZBroadcastStateReady
    • WOWZBroadcastStateBroadcasting (replaces WOWZStateRunning)

    For playback, as of version 1.9.0, use WOWZPlayerStatus and WOWZPlayerStatusCallback classes with these states:
     
    • WOWZPlayerStateIdle
    • WOWZPlayerStateConnecting (replaces WOWZStateStarting)
    • WOWZPlayerStateBuffering
    • WOWPlayerStatePlaying (replaces WOWZStateRunning)
    • WOWPlayerStateStopping

    The states below are no longer available in the WOWZState class as of version 1.9.0. To avoid an interruption in playback or broadcast when migrating to version 1.9.0, you’ll need to update your code to remove these states and replace them with the states above.
     
    • WOWZStateStarting
    • WOWZStateRunning

Enhancements and fixed issues (since 1.8.1.1369)

  • Added support for broadcasting when using iOS version 13.
  • Fixed an issue that occurred while backgrounding an app during broadcasting, then returning the app to the foreground and re-initiating a broadcast. Video playback from the broadcast no longer flickers and pauses, and the app no longer freezes.
  • Fixed a problem where certain iOS devices broadcasting 4K video would overheat, resulting in an error and the termination of the broadcast.
  • Updated the All-in-One iOS sample app to resolve numerous build warnings.

Known issues

There are no new known issues in this release. For a list of known issues that are still in effect, see the GoCoder SDK for iOS known issues.

Earlier versions of Wowza GoCoder SDK for iOS


Version 1.8.1

1.8.1 build 1369

Code-breaking changes (since 1.8.0.1351)

There are no code-breaking changes in this release.

Enhancements and fixed issues (since 1.8.0.1351)

  • Fixed an issue that caused audio to be mute when an ultra low latency VOD stream started to play.
  • Changed the way the broadcast average bitrate is calculated. Now, the GoCoderBroadcastManager updates the bitrate every 1 second as an average of the previous 2 seconds (instead of the previous 15 seconds). This is consistent with the way Wowza Streaming Engine calculates average outbound network bitrate. 
  • Fixed an issue that caused a playback app to crash when playback was quickly and repeatedly stopped and restarted.

Version 1.8.0

1.8.0 build 1351

Code-breaking changes (since 1.7.0.1079)

There are no code-breaking changes in this release.

Enhancements and fixed issues (since 1.7.0.1079)

  • Fixed an issue that prevented a broadcast app from stopping a broadcast on command.
  • Fixed issue that caused a broadcast app to crash when switched from the foreground to background and local recording was enabled.
  • Fixed an issue that kept a broadcast app running even though its connection to an ultra low latency stream target dropped.
  • Fixed an issue that caused audio to drop during a network route change.
  • Fixed an issue that prevented audio from resuming when a broadcast app was switched from the background to the foreground.
  • Improved performance of ultra low latency streams to reduce CPU, GPU, and memory usage.
  • Fixed an issue that sometimes triggered dual audio to play.
  • Fixed an issue that caused audio to jump to maximum volume when playback was stopped or paused and then restarted.
  • Made general stability improvements to reduce instances of playback apps crashing.
  • Reduced the time it takes for playback to resume when a playback app crashes.
  • Fixed state handling so that when a playback app switches from the foreground to the background and back to the foreground, playback and recording (if enabled) resume as expected.
  • Fixed several issues with playback apps not stopping on command or when the app was closed.
  • Added the method updateMaxLatencyInSecondsForAudio to address drift in ultra low latency streams. Part of the WOWZPlayer class, updateMaxLatencyInSecondsForAudio defines the number of maximum allowable seconds of audio latency when a Wowza Streaming Cloud ultra low latency stream plays. When audio latency reaches the maximum, the audio buffer resets on the most recent incoming audio frame. This setting applies audio-only streams as well as streams that contain both audio and video. The default, which we recommend, is 3 seconds; acceptable values are 1, 2, 3, and 4. Using a value other than 3 can cause brief audio quality issues when the buffer fills.
  • Fixed camera orientation issues that could cause video to appear upside down or stretched on playback.

Version 1.7.0

1.7.0 build 1079

Code-breaking changes (since 1.6.0.1027)

  • Fixed an issue with background/foreground swapping. This is a breaking change. You must update your code. Now, to get the current playing state of a WOWZPlayer instance, apps built with the GoCoder SDK for iOS need to use the new currentPlayState method instead of the playing property. The playing property is no longer available. Using the currentPlayState method provides proper state handling. For example, it is no longer necessary to manually code delays between calls to stop methods and start methods in order to avoid race conditions that were sometimes experienced previously with network connection losses and background/foreground swapping.

Enhancements and fixed issues (since 1.6.0.1027)

  • Added the ability to get the bitrate of the encoded live stream as it is being transmitted across the network socket.
  • In the GoCoder SDK for iOS, added the public shouldHandleBackgroundNotificationAndStopPlayer
    property in the WOWZPlayer class to improve the ability to control stoppage of playback streams when an app is backgrounded.
  • Fixed an issue with GoCoder SDK for iOS where a GoCoder SDK-based player configured to play a Wowza Streaming Cloud ultra low latency live stream would erroneously enter a Running state when attempting to connect to HLS fallback when HLS fallback was enabled and an HLS URL was not provided.
  • Fixed an issue with the GoCoder SDK for iOS where 1) a GoCoder SDK-based player erroneously stays in a Connecting state after successfully connecting and playing a valid HLS fallback stream, and 2) the HLS fallback stream, after stopping when entering background mode, erroneously does not remain in a stopped/idle state when returning from background mode.
  • Fixed an issue where a GoCoder SDK-based player would sometimes crash while playing a live stream as a result of stopping the source encoder during streaming.
  • Fixed an issue where video streams would pause during scroll actions that use UIScrollView and UICollectionView objects in the GoCoder SDK player sample app (PlayerSampleApp.objc.xcodeproj). Prior to the fix, if a user scrolled while a video stream was playing, the stream would pause until scrolling finished and then the stream would resume and play faster until it reached the intended current frame. Now video streams display as expected even when a user scrolls during playback.
  • Updated the API reference documentation on the WOWZBroadcastOrientation constants in the WOWZMediaConfig class.

Version 1.6.0

1.6.0 build 1027

  • Added an Objective-C sample app that uses the GoCoder SDK to inject timed metadata into a live stream.
  • Added a Swift sample app that uses the GoCoder SDK to play a live stream.
  • Updated access and navigation for GoCoder SDK downloads and API reference docs.
  • Fixed buffering and intermittent crashing issues with 4K playback.
  • Fixed a lag when publishing AMF metadata using ultra low latency and the GoCoder SDK playback feature.
  • Fixed an issue where the PCM encoder would not start when trying to stream on an iOS 11 device.
  • Fixed the error message that displays when playback stops due to a stream not found issue (error 13).
  • Fixed an aspect ratio issue when trying to stream with landscape orientation.
  • Fixed an issue where the capture orientation is not preserved when a stream is played back. The issue occurred if the device was in a horizontal position (as if placed flat on a table) at the time the mobile streaming app was started. Note also that, to set the orientation to landscape for broadcasts, the WOWZBroadcastOrientation needs to be changed from the default setting (WOWZBroadcastOrientationSameAsDevice) to WOWZBroadcastOrientationAlwaysLandscapeLeft.
  • Fixed a displayLink callback leak with a player created using GoCoder SDK.
  • Improved the error message when the broadcast license is valid but the player license is invalid.
  • Improved the error message when a broadcast/playback license is invalid.

Version 1.5.1

1.5.1 build 0949

  • Changed the prefix of all WZ classes to WOWZ to comply with Apple policy. This is a breaking change. You must update your code. Apple will not approve apps that use the two-character WZ prefix.
  • Added the capability to play streams, including ultra low latency streams from the Wowza Streaming Cloud™ service, using a the WOWZPlayer class. WOWZPlayer supports Apple HLS fallback, video- and audio-only streams, preroll buffering, and 48 kHz audio.
  • Added support for connection codes for live streams and ultra low latency streams from the Wowza Streaming Cloud™ service.
  • Audio improvements:
    • Fixed audio graph to handle the playback of incoming audio sample rates on devices with a different native sample rate.
    • Fixed intermittent failure of audio queue to get default properties for broadcast when used in conjunction with other audio queue services.
    • Fixed an audio memory leak.
    • Fixed 44.1 kHz mono issue with crackle and buffer looping.
  • Video improvements:
    • Fixed long keyframe visual issues.
    • Updated the handling of video so that if it's sent to the background, the broadcast displays a black frame.
  • Implemented buffer fixes and improvements.
  • Added adaptive bitrate controls with the updateEncoderLimitedBitrate and updateEncoderTargetedBitrate methods in the WowzaGoCoder class.

Known Issues

  • On iOS, 4K broadcasting is currently only supported on iPhone 8 and later.

Version 1.0.5

1.0.5 build 735

  • Fixed an issue that caused an error in the audio configuration if no default values were set.
  • Fixed an issue that prevented the audio stream from being restarted after an app was placed in the background.
  • Fixed an issue preventing audio from being captured by external devices, such as Bluetooth headsets.
  • Updated the SDK so that if a hardware audio converter fails, the SDK attempts to use a software-based converter instead.
  • Added additional logging diagnostics to the audio converter.
  • Significantly improved error detection and reporting for the audio encoding components of the SDK.
  • Updated the WZMediaConfig so that specifying a sample rate and leaving the bitrate as 0 results in an optimal bitrate to be chosen for the specified sample rate. If you set both the sample rate and the bitrate to 0, the SDK will query the device for optimal values.
  • Added a static method, (NSArray *_Nullable) supportedBirtatesForSampleRateAndChannels:(Float64)sampleRate channels:(UInt32)numChannels, to the WZAudoiDevice class that returns an NSArray of NSNumbers that contain the audio encoding bitrates supported for the specified audio sample rate and number of audio channels.

Version 1.0.3

1.0.3 build 699

  • Added a connectionParameters property to the WZStreamConfig class that enables you to define a WZDataMap of name/value pairs that are used as query string parameters in the server connection string.
  • Added a mirrorFrontCamera boolean property to the WZMediaConfig class that enables clients to set the mirroring behavior of front camera recording. The default value is YES, which matches the pre-existing behavior of recording with the front camera. 

1.0.3 build 581

  • Fixed an issue with the background encoding flag when an app is resumed.

1.0.3 build 579

  • Fixed an issue where endStreaming wasn't releasing references to event listeners, which caused client objects to be retained.

1.0.3 build 576

  • Fixed a bug with cropping non-canonical frame sizes.

1.0.3 build 573 

  • Observers can now safely be removed inside a callback.
  • Updated the Objective-C SDKSampleApp to demonstrate the proper way to interact with metadata. Added documentation for all APIs related to metadata.

1.0.3. build 565

  • The x86 code strips of the fat-binary SDK files are now built with bitcode enabled, which should enable you to build bitcode-compliant apps with Wowza GoCoder SDK.

1.0.3 build 545

  • The SDK is now built with Xcode 8. Developers must use Xcode 8 with this version of the SDK and later.
  • Updated the Swift-based SDK sample apps to use Swift 3.0 syntax. All sample apps now require Xcode 8.

Version 1.0.2

1.0.2 build 506

  • Fixed a couple potential memory leaks with PCM audio code.
  • Added more intelligence to the startBroadcasting function to prevent calling stop if it isn't already broadcasting.

1.0.2 build 489

  • Fixed a bug in the audio encoder.

1.0.2 build 472

  • Added support for IPv6 addressing.
  • Updated the audio encoder to generate an audio prime frame if the writer doesn't encounter one.

1.0.2 build 469

  • Fixed bugs in the SDK sample app MP4 writing example.

1.0.2 build 466

  • Added support for broadcasting while the host application is in the background. A backgroundBroadcastEnabled flag was added to WowzaConfig, with a default value of NO. To broadcast in the background, your app must add the Audio Background Mode capability, and set backgroundBroadcastEnabled to YES. In this configuration, only live audio is broadcasted. Access to the camera is prohibited while the app is in the background, so a frozen video frame is broadcast in place of the live video.
  • Added the audioPCFrameWasCaptured protocol method to WZAudioSink. Clients implementing the audioPCFrameWasCaptured method can modify the PCM audio frames before they are encoded to AAC and broadcast
  • Updated the SDKSampleApp to include a setting for changing the backgroundBroadcastEnabled flag. The SDKSampleApp now includes the audio background mode.

Version 1.0.1

1.0.1 build 459

  • Fixed a bug in the onWZEvent callback that caused the WZStatus data member to be set incorrectly for the WZEventBitrateReduced and WZEventBitrateIncreased events.

1.0.1 build 456

  • Fixed a bug with audio conversion on A5 devices.

1.0.1 build 451

  • Added a videoFrameRateLowBandwidthSkipCount parameter to WZMediaConfig, which can be used to set the number of video frames to skip when the encoder can't keep up with the broadcaster.
  • Added an optional videoCaptureInterruptionStarted method to WZVideoSink, which is called when video capture is first interrupted. For example, an app going to the background is an interruption.

1.0.1 build 424

  • Fixed an issue where muted audio caused the video stream to hang in Apple HLS players.

1.0.1 build 420

  • Updated the SDK so that when the audio sample rate is set to 0, the SDK chooses an optimal sample rate based on the current hardware capabilities.

1.0.1 build 398

  • Added interfaces to  WZAudioDevice and WowzaGoCoder to allow setting AVAudioSessionCategoryOptions for the shared AVAudioSession.
  • Fixed an issue with previews that are embedded in a presented view controller's view by basing the initial video orientation on the UI orientation rather than the orientation of the device.

1.0.1 build 391

  • Fixed an issue that caused blank video frames to be broadcast for audio-only streams.

1.0.1 build 388

  • Fixed an issue with incorrectly oriented broadcast frames that occurred when the initial broadcast orientation is UIDeviceOrientationLandscapeLeft and then changed to UIDeviceOrientationLandscapeRight when the device rotates.

1.0.1 build 377

  • Added a new WZBroadcastScaleMode type and parameter to WZMediaConfig (also called WowzaConfig) that tells the SDK how to scale or crop frames when the frame size doesn't match the specified broadcast size. There are two valid values: WZBroadcastScaleModeAspectFit and WZBroadcastScaleModeAspectFill.
  • Updated the SDKSampleApp and SwiftSDKSampleApp to include a setting for changing the WZBroadcastScaleMode.

1.0.1 build 367

  • Added the following methods to WowzaGoCoder:
    • registerVideoEncoderSink:WZVideoEncoderSink
    • unregisterVideoEncoderSink:WZVideoEncoderSink
    • registerAudioEncoderSink:WZAudioEncoderSink
    • unregisterAudioEncoderSink:WZAudioEncoderSink
  • Encoders can now access audio and video frames as they wish to.
  • Updated the documentation released with the SDK to have the correct SDK headers.
  • Updated the WowzaGoCoderSDKSampleApp to include an example of writing a local MP4 movie of the broadcasted video stream. 

1.0.1 build 348

  • Added the following methods to the WowzaGoCoder class to enable clients to explicitly request camera and microphone permissions:
    • (void) requestPermissionForType:(WowzaGoCoderPermissionType)type response:(nullable WZPermissionBlock) response;
    • (WowzaGoCoderCapturePermission) permissionForType:(WowzaGoCoderPermissionType)type;
    If the client doesn't explicitly request these permissions, the SDK requests permissions as the camera and microphone resources are accessed during the preview and broadcast lifecycle. However, we recommend using the explicit mechanisms because client apps know the best time to display the permission prompts to users.
  • Updated the SDK so that streaming will now fail if the client specifies that audio or video is enabled in the client configuration, but the permission for the corresponding audio or video resource is denied. Similarly, streaming will also fail if the client configuration specifies audio or video and the corresponding resource is being used by a higher priority app, such as the Phone app using the microphone.
  • Updated the H264Encoder stopBroadcasting method to synchronize with the capture device's capture queue. This may address an issue with runaway encoding sessions.
  • Updated the WowzaGoCoderSDKSampleApp and WowzaGoCoderSDKSampleApp.swift sample apps include an example using the explicit requestPermissionForType requests.

Version 1.0.0

1.0.0 build 338

  • Updated the WZCameraPreview to provide access to the underlying AVCaptureVideoPreviewPlayer, which allows players to update the AVCaptureVideoPreviewPlayer when the bounds change in client views that host the preview layer.

1.0.0 build 333

  • Fixed a crash that occurred when using the WowzaGoCoder interface to do an audio-only broadcast.

1.0.0 build 330

  • Added the following event types to WZEvent so that clients who implement WZStatusCallback can listen for bitrate-related events with onWZEvent.
    • WZEventBitrateReduced
    • WZEventBitrateIncreased
    • WZEventEncoderPaused
    • WZEventEncoderResumed
  • Added data, an NSDictionary property, to WZStatus. This property contains data related to the WZStatus for particular event cases.
  • Deprecated the videoBitrateDidChange method of the WZVideoEncoderSink protocol. This protocol still exists and will be called, but will be removed in the next major SDK revision. Clients should use the WZEvent methods to get information about bitrate changes.
  • Fixed an issue with cropping when the configured frame size doesn't match a device preset frame size.

1.0.0 build 323

  • Updated the following method signatures in the WZStatusCallback protocol to reduce the chance of collisions with identically named methods in other sources and libraries.
    • onSuccess is now named onWZStatus.
    • onEvent is now named onWZEvent.
    • onError is now named onWZError.

       

    Note: This is a breaking change. Your code must be updated to to use the new method names.

  • Updated all SDK sample apps to reflect the changes to the WZStatusCallback protocol.

1.0.0 build 318

  • The SDK is now also available as a static library. The static library and associated headers are in the wowzagocoder_static_lib directory.
  • Added the ios_getting_started.html guide to the docs directory.
  • Improved the formatting and location of the API reference documentation. It is now a file (api_reference.html) available in the docs directory.

1.0.0 build 310

  • Added videoCaptureInterruptionEnded, an optional protocol method, to the WZVideoSink class.
  • Fixed an issue with frame stretching when captured video or video preview rotates are false and the capture aspect ratio doesn't match the broadcast aspect ratio.
  • Added WowzaGoCoderMP4Sample.swift.xcodeproj, a new Swift sample app that demonstrates how to broadcast frames from a local MP4 file using an AVAssetReader.
  • Added allSampleApps.xcworkspace, which contains all of the sample app projects.

1.0.0 build 296

  • Fixed a video orientation bug that occurred when broadcasting from the front camera with videoPreviewRotates set to NO and capturedVideoRotates set to YES.
  • Updated the SDK so that video broadcasted from the front camera is now mirrored.
  • Renamed the SDK sample apps so that they are all grouped together in the sample-apps directory:
    • SDKSampleApp.xcodeproj is now WowzaGoCoderSDKSampleApp.xcodeproj
    • SceneKitReel_GoCoder.xcodeproj is now WowzaGoCoder.SceneKitReel.xcodeproj
    • WowzaGoCoderSDKSampleapp.swift.xcodeproj, a new project, is a Swift interpretation of the functionality in the WowzaGoCoderSDKSampleApp project. 

1.0.0 build 287

  • Removed the portraitLetterBoxed property from WZMediaConfig. Use the broadcastVideoOrientation property instead.
  • Added the broadcastVideoOrientation property, of type WZBroadcastOrientation (enum), to  WZMediaConfig, which provides a more explicit mechanism for clients to specify the orientation of the broadcasted video.
  • Added event property, of type WZEvent (enum), to WZStatus, which is used to event information emitted by the encoder and capture devices.
  • Removed WZErrorLowBandwidth. This condition is now reported by the onEvent method of WZStatusCallback.
  • Removed videoFrameWasEncoded and videoBitrateDidChange  protocol method definitions from WZVideoSink. They are now in WZEncoderSink.
  • Added access to the WowzaGocoderEncoder for the following new classes and protocols:
    • WZH264Encoder
    • WZAACEncoder
    • WZAudioDevice
    • WZVideoEncoderSink
    • WZAudioEncoderSink
    • WZBroadcastComponent
    • WZBroadcast
  • Renamed the SDK sample apps directory to sample-apps.
  • Updated the sample app settings screen to include options for setting the broadcastVideoOrientation.
  • Updated the sample apps to implement the onEvent method, which is used for notification of low-bandwidth conditions.
  • Added SceneKitReel_GoCoder, a new sample app that adds Wowza GoCoder broadcasting to Apple's SceneKitReel sample. This sample demonstrates how to broadcast a game app's screen (or any bitmap data) to Wowza GoCoder with the WZBroadcast, WZH264Encoder, WZAudioDevice, WZAACEncoder, and WZBroadcastComponent classes and protocols.

1.0.0 build 255

  • Added the videoBitrateLowBandwidthScalingFactor and videoFrameSizeMultiplier properties to WZMediaConfig to enable finer client control over bandwidth throttling behavior.
  • Added WZVideoSink and WZAudioSink protocols as well as mechanisms to register adopters of these protocols with Wowza GoCoder.
  • Increased socket send buffer size from 128KB to 1MB to provide better performance for high-latency networks.
  • Added a UI to the SDK sample apps Settings to enable user configuration of videoBitrateLowBandwidthScalingFactor, videoFrameBufferSizeMultiplier, videoBitrate, videoFrameRate, and videoKeyFrameInterval.
  • Updated the SDK sample app VideoPlayerViewController so that it implements the WZVideoSink and WZAudioSink protocols.
  • Added functionality to the SDK sample app to conditionally convert captured video frames to grayscale to demonstrate an implementation of the WZVideoSink protocol.

1.0.0 build 249

  • Increased the maximum number of buffered frames that must accumulate before bandwidth is throttled to four times the current frame rate.

1.0.0 build 245

  • Added documentation for Wowza GoCoder SDK to the docs directory in the distribution package. index.html is the landing page.
  • Removed the WZPreset enumeration and replaced it with WZFrameSizePreset.
  • Removed WZSessions.
  • Added an audioMuted flag to WowzaGoCoder.
  • Added WZMediaConfig and WZStreamConfig as subclasses of WowzaConfig. These changes are largely transparent to clients.
  • Added the following to WZCamera:
    • hasTorch (property)
    • supportsFocusMode (method)
    • supportsExposureMode (method)
  • Removed the following from WZCamera:
    • hasCapabilities (method)
    • activated (property)
  • Added the following to WZCameraPreview:
    • previewGravity (property)
  • Removed the following from WZCameraPreview:
    • deviceOrientation
    • orientationLocked
    • frameSize
    • isSwitchCameraAvailable (method). Use the isSwitchCameraAvailableForConfig:WZMediaConfig method instead, or use WZCameraPreview deviceCamera].count > 1 to determine whether switching cameras is available.
    • viewBounds (property). The camera preview is sized based on the view you provide when initializing WZCameraPreview.
       
  • Removed the WZVideoDisplayOrientation enum.
  • Added the WZCameraPreviewGravity enum.
  • Removed the Black and White effect option from the SDK sample app. It will be added back in a later version.

1.0.0 build 236

  • Added the (nullable instancetype) sharedInstance; class method to WowzaGoCoder. The WowzaGoCoder init methods are no longer available; instead, do the following:

    if ([WowzaGoCoder sharedInstance] != nil) { [WowzaGoCoder sharedInstance].config = myConfig; // etc... }

  • Added the WZPlatformInfo and WZVersionInfo classes.
  • Fixed an issue that prevented broadcast messages from being sent if the streaming server goes offline while streaming.
  • Fixed a potential call recursion when switching cameras.
  • Improved the error handling of the WOWZ protocol (read and write).
  • Updated the cameraView in WowzaGoCoder so that it can be set multiple times. Setting it resets any active previews, capture sessions, and audio sessions.
  • Updated the broadcaster so that when it encounters low-bandwidth conditions, it reports limited bandwidth to the client as an error rather than terminating the broadcast session.
  • Added logic to the SDK sample app to only display an error alert once for a given broadcast session.

1.0.0 build 216

  • Modified video orientation:
    • Removed the captureOrientationBehavior boolean and WZCaptureOrientation enum from WowzaConfig.
    • Added the capturedVideoRotates boolean to WowzaConfig. The default value, FALSE, orients the captured frames to match the orientation of the preview layer at the time streaming begins. Set to TRUE to rotate captured frames to match the rotation of the device.
    • Added the videoPreviewRotates boolean to WowzaConfig. The default value, FALSE, matches the behavior of iPhone's built-in camera app. Set to TRUE to rotate the preview layer when the device rotates.
    • Added the portraitLetterBoxed boolean to WowzaConfig. The default value, FALSE, streams all portrait frames in full portrait orientation, scaled to fit within the stream's frame. Set to TRUE to crop portrait-oriented frames to fit into a letterbox format, where a letterbox is the canonical width and height of a video frame (width is always greater than the height).
    • Added support for arbitrary (not preset) frame sizes. The only requirement is that the width must be greater than the height. (This doesn't preclude portrait video; see portraitLetterBoxed options.)
  • Modified audio:
    • Converted the audioChannels, audioSampleRate, and audioBitrate properties in WowzaConfig to be read/write. This enables clients to set these properties prior to streaming.
    • Updated the isSwitchCameraAvailable method in WZCameraPreview to take withoutRestart, a boolean parameter. The withoutRestart parameter determines whether you can switch cameras without restarting the stream. If withoutRestart is set to YES, isSwitchCameraAvailable only returns true if both cameras support the video configurations specified in WowzaConfig.

      Added isSwitchCameraAvailableForConfig:WowzaConfig, a boolean, that returns true only if the camera you're switching to supports the settings specified in WowzaConfig. The switchCamera method fails if the camera doesn't support the current settings. See the SDK sample app for an example of 

    • Added the class (void) setLogLevel:(WowzaGoCoderLogLevel)level to WowzaGoCoder. Available log levels are:
      • WowzaGoCoderLogLevelOff - Emits no NSLog statements from the SDK.
      • WowzaGoCoderLogLevelDefault - Emits a minimum level of useful log statements from the SDK. Note that this is the default setting, and is used if the client doesn't specify a different log level.
      • WowzaGoCoderLogLevelVerbose - Emits all available log statements from the SDK, including a log statement for each encoded video frame.
    • Updated the options on the Settings screen for the SDK sample app to reflect the video orientation and audio modifications.