2010-12-03 3 views
3

Я хочу конвертировать Writablebitmap в поток Jpeg, и похоже, что нет поддержки платформы, а также я вижу кучу библиотек Encoder с открытым исходным кодом в Интернете, я хочу получить ваше мнение о том, является рекомендуемым с точки зрения производительности и надежности.Лучший Jpeg Encoder для Silverlight 4.0

ответ

5

Я провел немало времени с FJCore и LibJpeg.Net. FJCore проще в использовании, поскольку он был перенесен с Java и имеет объектную модель, которая смутно напоминает то, что вы ожидаете увидеть на C#. Однако LibJpeg.NET - это, безусловно, более полная библиотека (она основана на неофициально каноническом libjpeg), и это значительно быстрее. Чтобы привести один пример, FJCore использует наивную реализацию обратного дискретного косинусного преобразования, которое включает в себя что-то вроде 1024 умножений и дополнительные 1024 дополнения для каждого блока 8x8. Напротив, LibJpeg.NET использует высокопроизводительный алгоритм AAN, который принимает только 144 умножения и 464 дополнения (см. http://datasheets.chipdb.org/Intel/x86/MMX/MMX/AP528.HTM#AAN Algorithm). Кроме того, FJCore довольно неэффективен в том, как он использует память, постоянно воссоздавая объекты, которые можно легко использовать повторно. В то же время, поскольку FJCore имеет меньше оптимизаций, значительно легче взломать.

Для моего текущего проекта (который включает в себя запись видеокодека для Silverlight), я использовал FJCore в качестве отправной точки, исправил целую кучу его неэффективности, заменил его алгоритм IDCT на один из LibJpeg.NET и оказался в с чем-то, что дало мне примерно 10-кратное первоначальное представление.

+0

Hi Ken, вы можете поделиться обновленный код источника FJCore? Также в вашем собственном опыте в обеих библиотеках с точки зрения качества и сжатия, как вы думаете, лучше? – cubski 2011-05-13 00:04:00

+0

Когда я использовал термин «взломать» в моем ответе выше, я не шутил. Хотя я пытался не сломать что-либо в оригинальной библиотеке FJCore, моя главная задача заключалась в том, чтобы модифицировать ее для работы в моем кодексе видео в стиле Motion JPEG, не делая его легким в использовании для других людей или в других ситуациях. Тем не менее, см. Этот ответ (http://stackoverflow.com/questions/1773330/streaming-a-webcam-from-silverlight-4-beta) для ссылки на несколько более раннюю версию моего измененного кода. – 2011-05-13 16:15:59

Смежные вопросы