Skip to content
This repository was archived by the owner on Jan 6, 2025. It is now read-only.

Commit 7b0b8a6

Browse files
committed
Process callback data inside @autoreleasepool block, fix #47
1 parent 9aa8afb commit 7b0b8a6

File tree

1 file changed

+39
-37
lines changed

1 file changed

+39
-37
lines changed

ios/src/MobileFFmpegConfig.m

+39-37
Original file line numberDiff line numberDiff line change
@@ -250,63 +250,65 @@ void callbackBlockFunction() {
250250
NSLog(@"Async callback block started.\n");
251251

252252
while(redirectionEnabled) {
253-
@try {
253+
@autoreleasepool {
254+
@try {
254255

255-
CallbackData *callbackData = callbackDataRemove();
256-
if (callbackData != nil) {
256+
CallbackData *callbackData = callbackDataRemove();
257+
if (callbackData != nil) {
257258

258-
if ([callbackData getType] == LogType) {
259+
if ([callbackData getType] == LogType) {
259260

260-
// LOG CALLBACK
261-
int activeLogLevel = [MobileFFmpegConfig getLogLevel];
261+
// LOG CALLBACK
262+
int activeLogLevel = [MobileFFmpegConfig getLogLevel];
262263

263-
if (runningSystemCommand == 1) {
264+
if (runningSystemCommand == 1) {
264265

265-
// REDIRECT SYSTEM OUTPUT
266-
if ((activeLogLevel != AV_LOG_QUIET) && ([callbackData getLogLevel] <= activeLogLevel)) {
267-
[systemCommandOutput appendString:[callbackData getLogData]];
268-
}
269-
} else if ((activeLogLevel == AV_LOG_QUIET) || ([callbackData getLogLevel] > activeLogLevel)) {
266+
// REDIRECT SYSTEM OUTPUT
267+
if ((activeLogLevel != AV_LOG_QUIET) && ([callbackData getLogLevel] <= activeLogLevel)) {
268+
[systemCommandOutput appendString:[callbackData getLogData]];
269+
}
270+
} else if ((activeLogLevel == AV_LOG_QUIET) || ([callbackData getLogLevel] > activeLogLevel)) {
270271

271-
// LOG NEITHER PRINTED NOR FORWARDED
272-
} else {
272+
// LOG NEITHER PRINTED NOR FORWARDED
273+
} else {
273274

274-
// ALWAYS REDIRECT COMMAND OUTPUT
275-
[lastCommandOutput appendString:[callbackData getLogData]];
275+
// ALWAYS REDIRECT COMMAND OUTPUT
276+
[lastCommandOutput appendString:[callbackData getLogData]];
276277

277-
if (logDelegate != nil) {
278+
if (logDelegate != nil) {
278279

279-
// FORWARD LOG TO DELEGATE
280-
[logDelegate logCallback:[callbackData getLogLevel]:[callbackData getLogData]];
280+
// FORWARD LOG TO DELEGATE
281+
[logDelegate logCallback:[callbackData getLogLevel]:[callbackData getLogData]];
281282

282-
} else {
283+
} else {
284+
285+
// WRITE TO NSLOG
286+
NSLog(@"%@: %@", [MobileFFmpegConfig logLevelToString:[callbackData getLogLevel]], [callbackData getLogData]);
287+
}
283288

284-
// WRITE TO NSLOG
285-
NSLog(@"%@: %@", [MobileFFmpegConfig logLevelToString:[callbackData getLogLevel]], [callbackData getLogData]);
286289
}
287-
288-
}
289290

290-
} else {
291+
} else {
291292

292-
// STATISTICS CALLBACK
293-
Statistics *newStatistics = [[Statistics alloc] initWithVideoFrameNumber:[callbackData getStatisticsFrameNumber] fps:[callbackData getStatisticsFps] quality:[callbackData getStatisticsQuality] size:[callbackData getStatisticsSize] time:[callbackData getStatisticsTime] bitrate:[callbackData getStatisticsBitrate] speed:[callbackData getStatisticsSpeed]];
294-
[lastReceivedStatistics update:newStatistics];
293+
// STATISTICS CALLBACK
294+
Statistics *newStatistics = [[Statistics alloc] initWithVideoFrameNumber:[callbackData getStatisticsFrameNumber] fps:[callbackData getStatisticsFps] quality:[callbackData getStatisticsQuality] size:[callbackData getStatisticsSize] time:[callbackData getStatisticsTime] bitrate:[callbackData getStatisticsBitrate] speed:[callbackData getStatisticsSpeed]];
295+
[lastReceivedStatistics update:newStatistics];
295296

296-
if (logDelegate != nil) {
297+
if (logDelegate != nil) {
297298

298-
// FORWARD STATISTICS TO DELEGATE
299-
[statisticsDelegate statisticsCallback:lastReceivedStatistics];
299+
// FORWARD STATISTICS TO DELEGATE
300+
[statisticsDelegate statisticsCallback:lastReceivedStatistics];
301+
}
300302
}
303+
304+
} else {
305+
callbackWait(100);
301306
}
302307

303-
} else {
304-
callbackWait(100);
308+
} @catch(NSException *exception) {
309+
NSLog(@"Async callback block received error: %@n\n", exception);
310+
NSLog(@"%@", [exception callStackSymbols]);
305311
}
306-
307-
} @catch(NSException *exception) {
308-
NSLog(@"Async callback block received error: %@n\n", exception);
309-
NSLog(@"%@", [exception callStackSymbols]);
310312
}
311313
}
312314

0 commit comments

Comments
 (0)