Examine MSE support in Nuvola CDK/ADK #288

Open
fenryxo opened this Issue Feb 3, 2017 · 5 comments

Projects

In Progress in Flatpaks

Done in HTML5 Audio

1 participant

@fenryxo
Member
fenryxo commented Feb 3, 2017 edited

MSE landed in October 2016 but is turned off by default:

To test it you first have to build WebKitGTK+ with support for it by
passing -DENABLE_MEDIA_SOURCE=ON to CMake, and then in your application
you have to enable the WebKitSettings property "enable-mediasource".

Then test Google Play Music.

@fenryxo fenryxo self-assigned this Feb 3, 2017
@fenryxo fenryxo added in progress and removed ready labels Feb 4, 2017
@fenryxo
Member
fenryxo commented Feb 6, 2017

Nuvola CDK with WebKitGTK+ & MSE is ready. I didn't have enough time to test it properly though. I remember there were some GStreamer errors in the console. I'm going to discuss that with upstream at the weekend.

@fenryxo fenryxo added this to the February 2017 milestone Feb 6, 2017
@fenryxo fenryxo added to In Progress in Flatpaks Feb 6, 2017
@fenryxo fenryxo added to In Progress in HTML5 Audio Feb 6, 2017
@fenryxo fenryxo moved from In Progress to Done in HTML5 Audio Feb 12, 2017
@fenryxo fenryxo changed the title from Create Nuvola CDK with MSE turned on to Examine MSE support in Nuvola CDK/ADK Feb 12, 2017
@fenryxo
Member
fenryxo commented Feb 12, 2017

It is necessary tio upgrade GStreamer:

[GLib-GObject] g_object_set_valist: object class 'GstQTDemux' has no property named 'always-honor-tfdt'

MSE 2016 Test suite gives poor results:

TestExecutor:  45:AudioWithLargeGap: Failed with "Assert failed: Source buffer number is (1) which should be (2)" 
TestExecutor:  40:AppendOutOfOrder: Failed with "Assert failed: Range start is (10.0078) which should be (0)" 
TestExecutor:  22:SourceRemove: Failed with "NotSupportedError (DOM Exception 9): The operation is not supported." 
TestExecutor:  4:SupportedFormats: Failed with "NotSupportedError (DOM Exception 9): The operation is not supported." 
TestExecutor:  3:addSourceBuffer: Failed with "NotSupportedError (DOM Exception 9): The operation is not supported." 
TestExecutor:  All tests are completed 
TestExecutor:  Longest test is FrameOverlaps, it takes 0.6754 of its timeout. 
TestExecutor:  Test 57:XHROpenState PASSED. 
TestExecutor:  checkEq passed: XHR responseType is (arraybuffer). 
TestExecutor:  Test 57:XHROpenState STARTED with timeout 30000 
TestExecutor:  Test 56:XHRAbort PASSED. 
TestExecutor:  Test 56:XHRAbort STARTED with timeout 30000 
TestExecutor:  Test 55:XHRUint8Array PASSED. 
TestExecutor:  checkEq passed: XHR response is (XHR DATA). 
TestExecutor:  Test 55:XHRUint8Array STARTED with timeout 10000 
TestExecutor:  Test 54:AAC51 threw an error: Test 54:AAC51 TIMED OUT! 
AAC51:  sb0.buffered.length 0 
AAC51:  ms.sb count = 1 
AAC51:  video.networkState = 2 
AAC51:  video.readyState = 0 
AAC51:  video.currentTime = 0 
TestExecutor:  Test 54:AAC51 STARTED with timeout 30000 
TestExecutor:  New longest test FrameOverlaps with timeout 30000 takes 20262 
TestExecutor:  Test 53:FrameOverlaps PASSED. 
TestExecutor:  Test 53:FrameOverlaps STARTED with timeout 30000 
TestExecutor:  New longest test FrameGaps with timeout 30000 takes 20259 
TestExecutor:  Test 52:FrameGaps PASSED. 
TestExecutor:  Test 52:FrameGaps STARTED with timeout 30000 
TestExecutor:  Test 51:EventTimestamp threw an error: Test 51:EventTimestamp TIMED OUT! 
EventTimestamp:  ms.sb count = 0 
EventTimestamp:  video.networkState = 2 
EventTimestamp:  video.readyState = 0 
EventTimestamp:  video.currentTime = 0 
TestExecutor:  Test 51:EventTimestamp STARTED with timeout 30000 
TestExecutor:  Test 50:DelayedVideo threw an error: Test 50:DelayedVideo TIMED OUT! 
DelayedVideo:  sb0.buffered.length 0 
DelayedVideo:  ms.sb count = 1 
DelayedVideo:  video.networkState = 2 
DelayedVideo:  video.readyState = 0 
DelayedVideo:  video.currentTime = 0 
TestExecutor:  Test 50:DelayedVideo STARTED with timeout 30000 
TestExecutor:  Test 49:DelayedAudio threw an error: Test 49:DelayedAudio TIMED OUT! 
DelayedAudio:  ms.sb count = 0 
DelayedAudio:  video.networkState = 2 
DelayedAudio:  video.readyState = 0 
DelayedAudio:  video.currentTime = 0 
TestExecutor:  Test 49:DelayedAudio STARTED with timeout 30000 
TestExecutor:  Test 48:BufUnbufSeek threw an error: Test 48:BufUnbufSeek TIMED OUT! 
BufUnbufSeek:  ms.sb count = 0 
BufUnbufSeek:  video.networkState = 2 
BufUnbufSeek:  video.readyState = 0 
BufUnbufSeek:  video.currentTime = 0 
TestExecutor:  Test 48:BufUnbufSeek STARTED with timeout 30000 
TestExecutor:  Test 47:Seek threw an error: Test 47:Seek TIMED OUT! 
Seek:  ms.sb count = 0 
Seek:  video.networkState = 2 
Seek:  video.readyState = 0 
Seek:  video.currentTime = 0 
TestExecutor:  Test 47:Seek STARTED with timeout 30000 
TestExecutor:  Test 46:SeekTimeUpdate threw an error: Test 46:SeekTimeUpdate TIMED OUT! 
SeekTimeUpdate:  ms.sb count = 0 
SeekTimeUpdate:  video.networkState = 2 
SeekTimeUpdate:  video.readyState = 0 
SeekTimeUpdate:  video.currentTime = 0 
TestExecutor:  Test 46:SeekTimeUpdate STARTED with timeout 30000 
TestExecutor:  Test 45:AudioWithLargeGap threw an error: Assert failed: Source buffer number is (1) which should be (2) 
AudioWithLargeGap:    0: (0, 20.045598) 
AudioWithLargeGap:  sb0.buffered.length 1 
AudioWithLargeGap:  ms.sb count = 1 
AudioWithLargeGap:  video.networkState = 2 
AudioWithLargeGap:  video.readyState = 4 
AudioWithLargeGap:  video.currentTime = 0 
TestExecutor:  Test 45:AudioWithLargeGap FAILED 
Seeking to segment index=0 time=0 start=0 length=10.00780045351474 
TestExecutor:  checkEq passed: Source buffer number is (1). 
TestExecutor:  Test 45:AudioWithLargeGap STARTED with timeout 30000 
TestExecutor:  Test 44:AudioWithSmallGap PASSED. 
TestExecutor:  checkApproxEq passed: Range end is (20.025598). 
TestExecutor:  checkEq passed: Source buffer number is (1). 
Seeking to segment index=0 time=0 start=0 length=10.00780045351474 
TestExecutor:  checkEq passed: Source buffer number is (1). 
TestExecutor:  Test 44:AudioWithSmallGap STARTED with timeout 30000 
TestExecutor:  Test 43:AudioWithOverlap PASSED. 
TestExecutor:  checkApproxEq passed: Range end is (19.915598). 
TestExecutor:  checkEq passed: Source buffer number is (1). 
Seeking to segment index=0 time=0 start=0 length=10.00780045351474 
TestExecutor:  checkEq passed: Source buffer number is (1). 
TestExecutor:  Test 43:AudioWithOverlap STARTED with timeout 30000 
TestExecutor:  Test 42:MediaSourceDuration threw an error: Test 42:MediaSourceDuration TIMED OUT! 
MediaSourceDuration:  ms.sb count = 0 
MediaSourceDuration:  video.networkState = 2 
MediaSourceDuration:  video.readyState = 0 
MediaSourceDuration:  video.currentTime = 0 
TestExecutor:  Test 42:MediaSourceDuration STARTED with timeout 30000 
TestExecutor:  Test 41:BufferedRange threw an error: Test 41:BufferedRange TIMED OUT! 
BufferedRange:  ms.sb count = 0 
BufferedRange:  video.networkState = 2 
BufferedRange:  video.readyState = 0 
BufferedRange:  video.currentTime = 0 
TestExecutor:  Test 41:BufferedRange STARTED with timeout 30000 
TestExecutor:  Test 40:AppendOutOfOrder threw an error: Assert failed: Range start is (10.0078) which should be (0) 
AppendOutOfOrder:    0: (10.0078, 30.0234) 
AppendOutOfOrder:  sb0.buffered.length 1 
AppendOutOfOrder:  ms.sb count = 1 
AppendOutOfOrder:  video.networkState = 2 
AppendOutOfOrder:  video.readyState = 1 
AppendOutOfOrder:  video.currentTime = 0 
TestExecutor:  Test 40:AppendOutOfOrder FAILED 
TestExecutor:  checkEq passed: Source buffer number is (1). 
TestExecutor:  checkGr passed: Range start is (10.0078). 
TestExecutor:  checkEq passed: Source buffer number is (1). 
TestExecutor:  checkEq passed: Source buffer number is (0). 
TestExecutor:  Test 40:AppendOutOfOrder STARTED with timeout 30000 
TestExecutor:  Test 39:AppendMultipleInitVideo threw an error: Test 39:AppendMultipleInitVideo TIMED OUT! 
AppendMultipleInitVideo:  ms.sb count = 0 
AppendMultipleInitVideo:  video.networkState = 2 
AppendMultipleInitVideo:  video.readyState = 0 
AppendMultipleInitVideo:  video.currentTime = 0 
TestExecutor:  Test 39:AppendMultipleInitVideo STARTED with timeout 30000 
TestExecutor:  Test 38:AppendMultipleInitAudio PASSED. 
TestExecutor:  checkEq passed: Range end is (10.007799). 
TestExecutor:  Test 38:AppendMultipleInitAudio STARTED with timeout 30000 
TestExecutor:  Test 37:VideoChangeRate threw an error: Test 37:VideoChangeRate TIMED OUT! 
VideoChangeRate:  ms.sb count = 0 
VideoChangeRate:  video.networkState = 2 
VideoChangeRate:  video.readyState = 0 
VideoChangeRate:  video.currentTime = 0 
TestExecutor:  Test 37:VideoChangeRate STARTED with timeout 30000 
TestExecutor:  Test 36:AppendAudioOffset PASSED. 
TestExecutor:  checkApproxEq passed: Range end is (17.422674). 
TestExecutor:  checkEq passed: Range start is (0). 
TestExecutor:  checkEq passed: Source buffer number is (1). 
TestExecutor:  Test 36:AppendAudioOffset STARTED with timeout 30000 
TestExecutor:  Test 35:IncrementalAudio PASSED. 
TestExecutor:  checkApproxEq passed: Range end is (12.422674). 
TestExecutor:  checkEq passed: Range start is (0). 
TestExecutor:  checkEq passed: Source buffer number is (1). 
TestExecutor:  Test 35:IncrementalAudio STARTED with timeout 30000 
TestExecutor:  Test 34:PlayPartialSegment threw an error: Test 34:PlayPartialSegment TIMED OUT! 
PlayPartialSegment:  ms.sb count = 0 
PlayPartialSegment:  video.networkState = 2 
PlayPartialSegment:  video.readyState = 0 
PlayPartialSegment:  video.currentTime = 0 
TestExecutor:  Test 34:PlayPartialSegment STARTED with timeout 30000 
TestExecutor:  Test 33:StartPlayWithoutData threw an error: Test 33:StartPlayWithoutData TIMED OUT! 
StartPlayWithoutData:  ms.sb count = 0 
StartPlayWithoutData:  video.networkState = 2 
StartPlayWithoutData:  video.readyState = 0 
StartPlayWithoutData:  video.currentTime = 0 
TestExecutor:  Test 33:StartPlayWithoutData STARTED with timeout 30000 
TestExecutor:  Test 32:PlaybackState threw an error: Test 32:PlaybackState TIMED OUT! 
PlaybackState:  ms.sb count = 0 
PlaybackState:  video.networkState = 2 
PlaybackState:  video.readyState = 0 
PlaybackState:  video.currentTime = 0 
TestExecutor:  Test 32:PlaybackState STARTED with timeout 30000 
TestExecutor:  Test 31:VideoDimension threw an error: Test 31:VideoDimension TIMED OUT! 
VideoDimension:  ms.sb count = 0 
VideoDimension:  video.networkState = 2 
VideoDimension:  video.readyState = 0 
VideoDimension:  video.currentTime = 0 
TestExecutor:  Test 31:VideoDimension STARTED with timeout 30000 
TestExecutor:  Test 30:SourceChain threw an error: Test 30:SourceChain TIMED OUT! 
SourceChain:  ms.sb count = 0 
SourceChain:  video.networkState = 2 
SourceChain:  video.readyState = 0 
SourceChain:  video.currentTime = 0 
TestExecutor:  Test 30:SourceChain STARTED with timeout 30000 
TestExecutor:  Test 29:VideoBufferSize threw an error: Test 29:VideoBufferSize TIMED OUT! 
VideoBufferSize:  ms.sb count = 0 
VideoBufferSize:  video.networkState = 2 
VideoBufferSize:  video.readyState = 0 
VideoBufferSize:  video.currentTime = 0 
TestExecutor:  Test 29:VideoBufferSize STARTED with timeout 30000 
TestExecutor:  Test 28:MediaSourceEvents threw an error: Test 28:MediaSourceEvents TIMED OUT! 
MediaSourceEvents:  sb0.buffered.length 0 
MediaSourceEvents:  ms.sb count = 1 
MediaSourceEvents:  video.networkState = 2 
MediaSourceEvents:  video.readyState = 0 
MediaSourceEvents:  video.currentTime = 0 
TestExecutor:  Test 28:MediaSourceEvents STARTED with timeout 30000 
TestExecutor:  Test 27:MediaElementEvents threw an error: Test 27:MediaElementEvents TIMED OUT! 
MediaElementEvents:  sb0.buffered.length 0 
MediaElementEvents:  ms.sb count = 1 
MediaElementEvents:  video.networkState = 2 
MediaElementEvents:  video.readyState = 0 
MediaElementEvents:  video.currentTime = 0 
TestExecutor:  Test 27:MediaElementEvents STARTED with timeout 30000 
TestExecutor:  Test 26:PausedStateWithVideo threw an error: Test 26:PausedStateWithVideo TIMED OUT! 
PausedStateWithVideo:  ms.sb count = 0 
PausedStateWithVideo:  video.networkState = 2 
PausedStateWithVideo:  video.readyState = 0 
PausedStateWithVideo:  video.currentTime = 0 
TestExecutor:  Test 26:PausedStateWithVideo STARTED with timeout 30000 
TestExecutor:  Test 25:PausedStateWithAudio PASSED. 
TestExecutor:  checkEq passed: media.paused is (true). 
TestExecutor:  checkEq passed: media.paused is (true). 
TestExecutor:  checkEq passed: media.paused is (true). 
TestExecutor:  checkEq passed: media.paused is (true). 
TestExecutor:  Test 25:PausedStateWithAudio STARTED with timeout 30000 
TestExecutor:  Test 24:DurationAfterAppendVideo threw an error: Test 24:DurationAfterAppendVideo TIMED OUT! 
DurationAfterAppendVideo:  ms.sb count = 0 
DurationAfterAppendVideo:  video.networkState = 2 
DurationAfterAppendVideo:  video.readyState = 0 
DurationAfterAppendVideo:  video.currentTime = 0 
TestExecutor:  Test 24:DurationAfterAppendVideo STARTED with timeout 30000 
TestExecutor:  Test 23:DurationAfterAppendAudio threw an error: Test 23:DurationAfterAppendAudio TIMED OUT! 
DurationAfterAppendAudio:    0: (0, 65.87501) 
DurationAfterAppendAudio:  sb0.buffered.length 1 
DurationAfterAppendAudio:  ms.sb count = 1 
DurationAfterAppendAudio:  video.networkState = 2 
DurationAfterAppendAudio:  video.readyState = 3 
DurationAfterAppendAudio:  video.currentTime = 0 
TestExecutor:  Test 23:DurationAfterAppendAudio STARTED with timeout 30000 
TestExecutor:  Test 22:SourceRemove threw an error: NotSupportedError (DOM Exception 9): The operation is not supported. 
SourceRemove:  sb0.buffered.length 0 
SourceRemove:  ms.sb count = 1 
SourceRemove:  video.networkState = 2 
SourceRemove:  video.readyState = 0 
SourceRemove:  video.currentTime = 0 
TestExecutor:  Test 22:SourceRemove FAILED 
TestExecutor:  checkEq passed: Source buffer number is (1). 
TestExecutor:  checkEq passed: Source buffer number is (0). 
TestExecutor:  Test 22:SourceRemove STARTED with timeout 30000 
TestExecutor:  Test 21:Duration PASSED. 
TestExecutor:  checkEq passed: ms.duration is (10). 
TestExecutor:  Test 21:Duration STARTED with timeout 30000 
TestExecutor:  Test 20:DASHLatency threw an error: Test 20:DASHLatency TIMED OUT! 
DASHLatency:  ms.sb count = 0 
DASHLatency:  video.networkState = 2 
DASHLatency:  video.readyState = 0 
DASHLatency:  video.currentTime = 0 
TestExecutor:  Test 20:DASHLatency STARTED with timeout 30000 
TestExecutor:  Test 19:TimestampOffsetVideo threw an error: Test 19:TimestampOffsetVideo TIMED OUT! 
TimestampOffsetVideo:  ms.sb count = 0 
TimestampOffsetVideo:  video.networkState = 2 
TimestampOffsetVideo:  video.readyState = 0 
TimestampOffsetVideo:  video.currentTime = 0 
TestExecutor:  Test 19:TimestampOffsetVideo STARTED with timeout 30000 
TestExecutor:  Test 18:TimestampOffsetAudio PASSED. 
TestExecutor:  checkApproxEq passed: Range end is (70.87501). 
TestExecutor:  checkEq passed: Range start is (5). 
TestExecutor:  checkEq passed: Source buffer number is (1). 
TestExecutor:  Test 18:TimestampOffsetAudio STARTED with timeout 30000 
TestExecutor:  Test 17:AbortVideo threw an error: Test 17:AbortVideo TIMED OUT! 
AbortVideo:  ms.sb count = 0 
AbortVideo:  video.networkState = 2 
AbortVideo:  video.readyState = 0 
AbortVideo:  video.currentTime = 0 
TestExecutor:  Test 17:AbortVideo STARTED with timeout 30000 
TestExecutor:  Test 16:AbortAudio PASSED. 
TestExecutor:  checkGr passed: Range end is (65.87501). 
TestExecutor:  checkEq passed: Range start is (0). 
TestExecutor:  checkEq passed: Source buffer number is (1). 
TestExecutor:  Test 16:AbortAudio STARTED with timeout 30000 
TestExecutor:  Test 15:AppendVideo threw an error: Test 15:AppendVideo TIMED OUT! 
AppendVideo:  ms.sb count = 0 
AppendVideo:  video.networkState = 2 
AppendVideo:  video.readyState = 0 
AppendVideo:  video.currentTime = 0 
TestExecutor:  Test 15:AppendVideo STARTED with timeout 30000 
TestExecutor:  Test 14:AppendAudio PASSED. 
TestExecutor:  checkApproxEq passed: Range end is (65.87501). 
TestExecutor:  checkEq passed: Range start is (0). 
TestExecutor:  checkEq passed: Source buffer number is (1). 
TestExecutor:  Test 14:AppendAudio STARTED with timeout 30000 
TestExecutor:  Test 13:InitialMSReadyState PASSED. 
TestExecutor:  checkEq passed: readyState is (open). 
TestExecutor:  Test 13:InitialMSReadyState STARTED with timeout 30000 
TestExecutor:  Test 12:InitialMSDuration PASSED. 
TestExecutor:  checkEq passed: duration is (NaN). 
TestExecutor:  Test 12:InitialMSDuration STARTED with timeout 30000 
TestExecutor:  Test 11:InitialMediaCurrentSrc PASSED. 
TestExecutor:  checkNE passed: currentSrc is (blob:http://yt-dash-mse-test.commondatastorage.googleapis.com/074284c6-6e6a-43e9-a4ef-5db144309a0b). 
TestExecutor:  Test 11:InitialMediaCurrentSrc STARTED with timeout 30000 
TestExecutor:  Test 10:InitialMediaSrc PASSED. 
TestExecutor:  checkNE passed: src is (blob:http://yt-dash-mse-test.commondatastorage.googleapis.com/f18361be-1a26-424b-b042-213a69ab9b63). 
TestExecutor:  Test 10:InitialMediaSrc STARTED with timeout 30000 
TestExecutor:  Test 9:InitialMediaReadyState PASSED. 
TestExecutor:  checkEq passed: readyState is (0). 
TestExecutor:  Test 9:InitialMediaReadyState STARTED with timeout 30000 
TestExecutor:  Test 8:InitialMediaVideoHeight PASSED. 
TestExecutor:  checkEq passed: videoHeight is (0). 
TestExecutor:  Test 8:InitialMediaVideoHeight STARTED with timeout 30000 
TestExecutor:  Test 7:InitialMediaVideoWidth PASSED. 
TestExecutor:  checkEq passed: videoWidth is (0). 
TestExecutor:  Test 7:InitialMediaVideoWidth STARTED with timeout 30000 
TestExecutor:  Test 6:InitialMediaDuration PASSED. 
TestExecutor:  checkEq passed: duration is (NaN). 
TestExecutor:  Test 6:InitialMediaDuration STARTED with timeout 30000 
TestExecutor:  Test 5:AddSBException PASSED. 
TestExecutor:  checkEq passed: Exception is (11). 
TestExecutor:  checkEq passed: Exception is (9). 
TestExecutor:  Test 5:AddSBException STARTED with timeout 30000 
TestExecutor:  Test 4:SupportedFormats threw an error: NotSupportedError (DOM Exception 9): The operation is not supported. 
SupportedFormats:  sb0.buffered.length 0 
SupportedFormats:  ms.sb count = 1 
SupportedFormats:  video.networkState = 2 
SupportedFormats:  video.readyState = 0 
SupportedFormats:  video.currentTime = 0 
TestExecutor:  Test 4:SupportedFormats FAILED 
SupportedFormats:  Trying format video/webm; codecs="vp9" 
SupportedFormats:  Trying format audio/mp4; codecs="mp4a.40.2" 
TestExecutor:  Test 4:SupportedFormats STARTED with timeout 30000 
TestExecutor:  Test 3:addSourceBuffer threw an error: NotSupportedError (DOM Exception 9): The operation is not supported. 
addSourceBuffer:  sb0.buffered.length 0 
addSourceBuffer:  ms.sb count = 1 
addSourceBuffer:  video.networkState = 2 
addSourceBuffer:  video.readyState = 0 
addSourceBuffer:  video.currentTime = 0 
TestExecutor:  Test 3:addSourceBuffer FAILED 
TestExecutor:  checkEq passed: Source buffer number is (1). 
TestExecutor:  checkEq passed: Source buffer number is (0). 
TestExecutor:  Test 3:addSourceBuffer STARTED with timeout 30000 
TestExecutor:  New longest test Attach with timeout 2000 takes 911 
TestExecutor:  Test 2:Attach PASSED. 
TestExecutor:  Test 2:Attach STARTED with timeout 2000 
TestExecutor:  New longest test Presence with timeout 30000 takes 27 
TestExecutor:  Test 1:Presence PASSED. 
Presence:  Media source version reported as MSE-live 
TestExecutor:  Test 1:Presence STARTED with timeout 30000 
TestExecutor:  Media Source and Encrypted Media Conformance Tests (version 20161221170552-lgF2Zc5KRLppRE5N) 
@fenryxo fenryxo moved from In Progress to To be Released in Flatpaks Feb 12, 2017
@fenryxo fenryxo moved from To be Released to Done in Flatpaks Feb 12, 2017
@fenryxo fenryxo moved from Done to In Progress in Flatpaks Feb 12, 2017
@fenryxo
Member
fenryxo commented Feb 12, 2017

BBC & YouTube HTML5 support pages:
bbc_html5
youtube_html5

@fenryxo
Member
fenryxo commented Feb 17, 2017

It is necessary tio upgrade GStreamer:

Nuvola CDK/ADK now contain GStreamer built form git master.

g_object_set_valist: object class 'GstQTDemux' has no property named 'always-honor-tfdt'

This has actually been removed in the WebKitGTK's git master.

@fenryxo
Member
fenryxo commented Feb 17, 2017

TODO: Run MSE test cases again

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment