@@ -13,6 +13,10 @@ const testName = 'osn-advanced-replay-buffer';
1313describe ( testName , ( ) => {
1414 let obs : OBSHandler ;
1515 let hasTestFailed : boolean = false ;
16+ let replayBuffer : osn . IAdvancedReplayBuffer | undefined | null ;
17+ let recording : osn . IAdvancedRecording | undefined | null ;
18+ let stream : osn . IAdvancedStreaming | undefined | null ;
19+
1620 // Initialize OBS process
1721 before ( async ( ) => {
1822 logInfo ( testName , 'Starting ' + testName + ' tests' ) ;
@@ -38,17 +42,37 @@ describe(testName, () => {
3842 }
3943
4044 obs = null ;
45+ replayBuffer = null ;
46+ recording = null ;
47+ stream = null ;
4148 deleteConfigFiles ( ) ;
4249 logInfo ( testName , 'Finished ' + testName + ' tests' ) ;
4350 logEmptyLine ( ) ;
4451 } ) ;
4552
4653 afterEach ( async function ( ) {
54+ // Destroying created outputs and encoders in case the test failed before they were destroyed in the test itself
55+ const videoEncoder = recording ?. videoEncoder ;
56+ if ( replayBuffer ) {
57+ osn . AdvancedReplayBufferFactory . destroy ( replayBuffer ) ;
58+ replayBuffer = null ;
59+ }
60+ if ( recording ) {
61+ osn . AdvancedRecordingFactory . destroy ( recording ) ;
62+ recording = null ;
63+ }
64+ const streamVideoEncoder = stream ?. videoEncoder ;
65+ if ( stream ) {
66+ osn . AdvancedStreamingFactory . destroy ( stream ) ;
67+ stream = null ;
68+ }
69+ videoEncoder ?. release ( ) ;
70+ streamVideoEncoder ?. release ( ) ;
4771 hasTestFailed = ( await obs . finalizeRetryableTest ( this ) ) || hasTestFailed ;
4872 } ) ;
4973
5074 it ( 'Create advanced replay buffer' , async ( ) => {
51- const replayBuffer = osn . AdvancedReplayBufferFactory . create ( ) ;
75+ replayBuffer = osn . AdvancedReplayBufferFactory . create ( ) ;
5276 expect ( replayBuffer ) . to . not . equal (
5377 undefined , "Error while creating the simple replayBuffer output" ) ;
5478
@@ -104,15 +128,13 @@ describe(testName, () => {
104128 true , "Invalid usesStream value" ) ;
105129 expect ( replayBuffer . mixer ) . to . equal (
106130 7 , "Invalid mixer default value" ) ;
107-
108- osn . AdvancedReplayBufferFactory . destroy ( replayBuffer ) ;
109131 } ) ;
110132
111133 it ( 'Start advanced replay buffer - Use Recording' , async function ( ) {
112134 if ( obs . isDarwin ( ) ) {
113135 this . skip ( ) ;
114136 }
115- const replayBuffer = osn . AdvancedReplayBufferFactory . create ( ) ;
137+ replayBuffer = osn . AdvancedReplayBufferFactory . create ( ) ;
116138 replayBuffer . path = path . join ( path . normalize ( __dirname ) , '..' , 'osnData' ) ;
117139 replayBuffer . format = osn . ERecordingFormat . MP4 ;
118140 replayBuffer . overwrite = false ;
@@ -123,7 +145,7 @@ describe(testName, () => {
123145 replayBuffer . prefix = 'Prefix' ;
124146 replayBuffer . suffix = 'Suffix' ;
125147
126- const recording = osn . AdvancedRecordingFactory . create ( ) ;
148+ recording = osn . AdvancedRecordingFactory . create ( ) ;
127149 recording . path = path . join ( path . normalize ( __dirname ) , '..' , 'osnData' ) ;
128150 recording . format = osn . ERecordingFormat . MP4 ;
129151 recording . useStreamEncoders = false ;
@@ -236,18 +258,13 @@ describe(testName, () => {
236258 EOBSOutputType . Recording , GetErrorMessage ( ETestErrorMsg . RecordingOutput ) ) ;
237259 expect ( signalInfo . signal ) . to . equal (
238260 EOBSOutputSignal . Wrote , GetErrorMessage ( ETestErrorMsg . RecordingOutput ) ) ;
239-
240- const streamEncoder = recording . videoEncoder ;
241- osn . AdvancedReplayBufferFactory . destroy ( replayBuffer ) ;
242- osn . AdvancedRecordingFactory . destroy ( recording ) ;
243- streamEncoder . release ( ) ;
244261 } ) ;
245262
246263 it ( 'Start advanced replay buffer - Use Stream through Recording' , async function ( ) {
247264 if ( obs . isDarwin ( ) ) {
248265 this . skip ( ) ;
249266 }
250- const replayBuffer = osn . AdvancedReplayBufferFactory . create ( ) ;
267+ replayBuffer = osn . AdvancedReplayBufferFactory . create ( ) ;
251268 replayBuffer . path = path . join ( path . normalize ( __dirname ) , '..' , 'osnData' ) ;
252269 replayBuffer . format = osn . ERecordingFormat . MP4 ;
253270 replayBuffer . overwrite = false ;
@@ -258,7 +275,7 @@ describe(testName, () => {
258275 replayBuffer . prefix = 'Prefix' ;
259276 replayBuffer . suffix = 'Suffix' ;
260277
261- const recording = osn . AdvancedRecordingFactory . create ( ) ;
278+ recording = osn . AdvancedRecordingFactory . create ( ) ;
262279 recording . path = path . join ( path . normalize ( __dirname ) , '..' , 'osnData' ) ;
263280 recording . format = osn . ERecordingFormat . MP4 ;
264281 recording . useStreamEncoders = true ;
@@ -268,7 +285,7 @@ describe(testName, () => {
268285 recording . useStreamEncoders = true ;
269286 recording . signalHandler = ( signal ) => { obs . signals . push ( signal ) } ;
270287
271- const stream = osn . AdvancedStreamingFactory . create ( ) ;
288+ stream = osn . AdvancedStreamingFactory . create ( ) ;
272289 stream . video = obs . defaultVideoContext ;
273290 stream . videoEncoder =
274291 osn . VideoEncoderFactory . create ( 'obs_x264' , 'video-encoder-adv-stream-1' ) ;
@@ -432,11 +449,5 @@ describe(testName, () => {
432449 EOBSOutputType . Streaming , GetErrorMessage ( ETestErrorMsg . StreamOutput ) ) ;
433450 expect ( signalInfo . signal ) . to . equal (
434451 EOBSOutputSignal . Deactivate , GetErrorMessage ( ETestErrorMsg . StreamOutput ) ) ;
435-
436- const videoEncoder = stream . videoEncoder ;
437- osn . AdvancedReplayBufferFactory . destroy ( replayBuffer ) ;
438- osn . AdvancedRecordingFactory . destroy ( recording ) ;
439- osn . AdvancedStreamingFactory . destroy ( stream ) ;
440- videoEncoder . release ( ) ;
441452 } ) ;
442453} ) ;
0 commit comments