kean / DFJPEGTurbo

Objective-C libjpeg-turbo wrapper

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

DFJPEGTurbo (Deprecated)

Objective-C libjpeg-turbo wrapper (JPEG image codec that uses SIMD instructions (MMX, SSE2, NEON) to accelerate baseline JPEG compression and decompression on x86, x86-64, and ARM systems). DFJPEGTurbo uses libjpeg-turbo version 1.4.1, which now includes arm64 support.

Requirements

  • iOS 6.0

Examples

Decompressing JPEG

NSData *jpegData;
UIImage *image = [DFJPEGTurboImageDecoder imageWithData:data];

Decompressing JPEG with one of the libjpeg-turbo scale factors

NSData *jpegData;
// Scale must be implemented by libjpeg-turbo which supports only several scaling factors (1/1, 1/2, 1/4 etc).
DFJPEGScale scale = DFJPEGScaleMake(1, 2); // 0.5 scale
UIImage *image = [DFJPEGTurboImageDecoder imageWithData:jpegData orientation:UIImageOrientationDown scale:scale];

Benchmark (Baseline JPEG)

Benchmark on older ARM-based systems (iPhone 4S, iPhone 5C) shows that libjpeg-turbo provides a very noticable performance boost over native CGContextDrawImage. However, libjpeg-turbo underperforms on newer systems (iPhone 6). For benchmark implementation see Demo/DFJPEGTurboBenchmark in a project folder.

iPhone 6 (Apple A8)

Input Image CGContextDrawImage libjpeg-turbo
1024x768, 0.3 compression quality 10.51 ms 9.75 ms
1024x768, 0.5 compression quality 10.56 ms 10.15 ms
1024x768, 0.7 compression quality 10.14 ms 11.61 ms
1024x768, 0.9 compression quality 10.13 ms 12.44 ms
2048x1536, 0.3 compression quality 41.60 ms 36.98 ms
2048x1536, 0.5 compression quality 33.46 ms 40.56 ms
2048x1536, 0.7 compression quality 33.85 ms 45.53 ms
2048x1536, 0.9 compression quality 34.79 ms 52.60 ms

iPhone 5C (Apple A6)

Input Image CGContextDrawImage DFJPEGTurbo
1024x768, 0.3 compression quality 42.47 ms 22.26 ms
1024x768, 0.5 compression quality 40.75 ms 23.28 ms
1024x768, 0.7 compression quality 40.51 ms 26.11 ms
1024x768, 0.9 compression quality 39.82 ms 29.77 ms
2048x1536, 0.3 compression quality 130.72 ms 81.95 ms
2048x1536, 0.5 compression quality 129.83 ms 86.50 ms
2048x1536, 0.7 compression quality 130.42 ms 98.17 ms
2048x1536, 0.9 compression quality 130.03 ms 106.18 ms

Installation using CocoaPods

To install DFJPEGTurbo add a dependency in your Podfile.

pod 'DFJPEGTurbo'

Contacts

License

DFJPEGTurbo is available under the MIT license. See the LICENSE file for more info.

About

Objective-C libjpeg-turbo wrapper

License:Other


Languages

Language:C 89.5%Language:Objective-C 10.2%Language:Ruby 0.4%