Анимированный GIF в NSImageView

Я использую NSImageView для отображения анимированного GIF с 80 кадрами, каждый из которых имеет длину 20 мс. NSImageView может отображать GIF-анимацию прямо "из коробки", но проблема в том, что ей нужно слишком много CPU, около 10% непрерывно (на моем ядре i5 proc). Инструменты показывают, что он тратит много процессорного времени на декодирование GIF.

Чтобы сделать его более эффективным, я пробовал следующее без особого успеха:

  • размещение фреймов внутри QTMovie и его воспроизведение (использует 4% для моего процесса и еще 15% для процесса QTKitServer, который воспроизводит фильм)

  • рисование непосредственно в представлении с помощью CGContextDrawImage (~ 5% использования ЦП) - я не экспортировал GIF-фреймы, я только что создал CGImageRef из 30x30px.png Я лежал.

    /li >

Я не знаю, что еще попробовать. Подклассификация NSImageView и некоторая кэширование изображений звучит как хорошая идея, но, увы, я новичок в Cocoa... Любые идеи будут высоко оценены. Спасибо!

Ответ 1

Откажитесь от этой статьи Рафаэля Шаада. Это, вероятно, настолько же результативно, как и получается, без чего-то сверхсложного. github repo выглядит как iOS, но я не думаю, что его будет сложно переносить.