Утечка памяти в Mac OS X 10.7 AVCaptureScreenInput setCropRect: функция - PullRequest
1 голос
/ 25 октября 2011

Я работаю над приложением для записи экрана для Lion, которое в основном использует новый класс Lion AVCaptureScreenInput для получения видеопотока экрана для указанного прямоугольника на экране. Все выглядит хорошо, но:

По данным монитора активности, каждый раз Я звоню setCropRect:, использование памяти будет увеличиваться на 10-20 МБ . Поскольку я предоставляю функцию, что размер прямоугольника может быть изменен во время записи, использование памяти может увеличиться до 1-2 Гб, так как пользователь сильно меняет прямоугольник, что является катастрофой: (* ​​1008 *

Я серьезно сомневаюсь, что это ошибка в SDK от Apple, поэтому в примере Apple AVSCreenShack есть и эта проблема.

Мой код такой:

[m_AVCaptureSession beginConfiguration];
[m_AVScreenInput setCropRect:CGRectMake((int)grabRect.origin.x, (int)grabRect.origin.y,(int)grabRect.size.width, (int)grabRect.size.height)];
 [m_AVCaptureSession commitConfiguration];

Может кто-нибудь сказать мне, если это ошибка в SDK, или я использовал ее неправильно, или я должен использовать другой класс для этого? THX

1 Ответ

0 голосов
/ 04 ноября 2011

Поскольку вы открываете транзакцию конфигурации, вносите изменения, а затем сразу же фиксируете изменение, почему бы не пропустить транзакцию?Возможно, библиотека откладывает очистку памяти транзакций до завершения сеанса записи.Я не думаю, что необходимо использовать транзакции конфигурации, если вам не нужна атомарная группа обновлений конфигурации.

Или это может быть подлинная утечка.

...