diff options
author | Shinichi Watanabe <swatanabe@xevo.com> | 2020-12-04 19:15:48 +0900 |
---|---|---|
committer | Shinichi Watanabe <swatanabe@xevo.com> | 2020-12-04 19:15:48 +0900 |
commit | 3adc0eaf12c453ad4ca4bf2adcff92408bf4350d (patch) | |
tree | 317bacb02a25965ba086eea95073fca25ab15f04 | |
parent | 3c276eb8821f0e7df7da6b53a8afa67b798ece5b (diff) | |
download | sdl_android-3adc0eaf12c453ad4ca4bf2adcff92408bf4350d.tar.gz |
Implementing SDL 0323: Align VideoStreamingParameters with VideoStreamingCapability.
2 files changed, 32 insertions, 30 deletions
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/video/VideoStreamManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/video/VideoStreamManager.java index 714005041..69f5cfe3f 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/video/VideoStreamManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/video/VideoStreamManager.java @@ -294,38 +294,37 @@ public class VideoStreamManager extends BaseVideoStreamManager { stateMachine.transitionToState(StreamingStateMachine.ERROR); return; } - if (parameters == null) { - if (majorProtocolVersion >= 5) { - if (internalInterface.getSystemCapabilityManager() != null) { - internalInterface.getSystemCapabilityManager().getCapability(SystemCapabilityType.VIDEO_STREAMING, new OnSystemCapabilityListener() { - @Override - public void onCapabilityRetrieved(Object capability) { - VideoStreamingParameters params = new VideoStreamingParameters(); - params.update((VideoStreamingCapability) capability, vehicleMake); //Streaming parameters are ready time to stream - startStreaming(params, encrypted); - } + // regardless of VideoStreamingParameters are specified or not, we should refer to VideoStreamingCapability. + if (majorProtocolVersion >= 5) { + if (internalInterface.getSystemCapabilityManager() != null) { + final VideoStreamingParameters params = ( parameters == null) ? new VideoStreamingParameters() : new VideoStreamingParameters(parameters); + internalInterface.getSystemCapabilityManager().getCapability(SystemCapabilityType.VIDEO_STREAMING, new OnSystemCapabilityListener() { + @Override + public void onCapabilityRetrieved(Object capability) { + params.update((VideoStreamingCapability) capability, vehicleMake); //Streaming parameters are ready time to stream + startStreaming(params, encrypted); + } - @Override - public void onError(String info) { - stateMachine.transitionToState(StreamingStateMachine.ERROR); - DebugTool.logError(TAG, "Error retrieving video streaming capability: " + info); - } - }, false); - } + @Override + public void onError(String info) { + stateMachine.transitionToState(StreamingStateMachine.ERROR); + DebugTool.logError(TAG, "Error retrieving video streaming capability: " + info); + } + }, false); } else { - //We just use default video streaming params - VideoStreamingParameters params = new VideoStreamingParameters(); - DisplayCapabilities dispCap = null; - if (internalInterface.getSystemCapabilityManager() != null) { - dispCap = (DisplayCapabilities) internalInterface.getSystemCapabilityManager().getCapability(SystemCapabilityType.DISPLAY, null, false); - } - if (dispCap != null) { - params.setResolution(dispCap.getScreenParams().getImageResolution()); - } - startStreaming(params, encrypted); + DebugTool.logError(TAG, "Cannot start video streaming because getSystemCapabilityManager is null."); } } else { - startStreaming(parameters, encrypted); + //We just use default video streaming params + VideoStreamingParameters params = (parameters == null) ? new VideoStreamingParameters() : new VideoStreamingParameters(parameters); + DisplayCapabilities dispCap = null; + if (internalInterface.getSystemCapabilityManager() != null) { + dispCap = (DisplayCapabilities) internalInterface.getSystemCapabilityManager().getCapability(SystemCapabilityType.DISPLAY, null, false); + } + if (dispCap != null) { + params.setResolution(dispCap.getScreenParams().getImageResolution()); + } + startStreaming(params, encrypted); } } diff --git a/base/src/main/java/com/smartdevicelink/streaming/video/VideoStreamingParameters.java b/base/src/main/java/com/smartdevicelink/streaming/video/VideoStreamingParameters.java index c78359d92..6df41059e 100644 --- a/base/src/main/java/com/smartdevicelink/streaming/video/VideoStreamingParameters.java +++ b/base/src/main/java/com/smartdevicelink/streaming/video/VideoStreamingParameters.java @@ -142,6 +142,9 @@ public class VideoStreamingParameters { if (params.interval > 0) { this.interval = params.interval; } + if (this.resolution == null) { + this.resolution = new ImageResolution(); + } if (params.resolution != null) { if (params.resolution.getResolutionHeight() != null && params.resolution.getResolutionHeight() > 0) { this.resolution.setResolutionHeight(params.resolution.getResolutionHeight()); @@ -168,7 +171,7 @@ public class VideoStreamingParameters { */ public void update(VideoStreamingCapability capability, String vehicleMake) { if (capability.getMaxBitrate() != null) { - this.bitrate = capability.getMaxBitrate() * 1000; + this.bitrate = Math.min(this.bitrate, capability.getMaxBitrate() * 1000); } // NOTE: the unit of maxBitrate in getSystemCapability is kbps. double scale = DEFAULT_SCALE; if (capability.getScale() != null) { @@ -191,7 +194,7 @@ public class VideoStreamingParameters { } } if (capability.getPreferredFPS() != null) { - this.frameRate = capability.getPreferredFPS(); + this.frameRate = Math.min(this.frameRate, capability.getPreferredFPS()); } // This should be the last call as it will return out once a suitable format is found |