- - (CVPixelBufferRef)CVPixelBufferRef {
-
- CGSize size = self.frame.size;
- NSDictionary *options = @{(NSString*)kCVPixelBufferCGImageCompatibilityKey : @YES,
- (NSString*)kCVPixelBufferCGBitmapContextCompatibilityKey : @YES,
- (NSString*)kCVPixelBufferIOSurfacePropertiesKey: [NSDictionary dictionary]};
- CVPixelBufferRef pxbuffer = NULL;
-
- CGFloat frameWidth = size.width;
- CGFloat frameHeight = size.height;
-
- CVReturn status = CVPixelBufferCreate(kCFAllocatorDefault,
- frameWidth,
- frameHeight,
- kCVPixelFormatType_32ARGB,
- (__bridge CFDictionaryRef) options,
- &pxbuffer);
-
- NSParameterAssert(status == kCVReturnSuccess && pxbuffer != NULL);
-
- CVPixelBufferLockBaseAddress(pxbuffer, 0);
- void *pxdata = CVPixelBufferGetBaseAddress(pxbuffer);
- NSParameterAssert(pxdata != NULL);
-
- CGColorSpaceRef rgbColorSpace = CGColorSpaceCreateDeviceRGB();
-
- CGContextRef context = CGBitmapContextCreate(pxdata, size.width, size.height, 8, CVPixelBufferGetBytesPerRow(pxbuffer), rgbColorSpace, kCGImageAlphaPremultipliedFirst);
-
- NSParameterAssert(context);
-
- CGContextConcatCTM(context, CGAffineTransformMakeRotation(0));
- CGAffineTransform flipVertical = CGAffineTransformMake( 1, 0, 0, -1, 0, frameHeight);
- CGContextConcatCTM(context, flipVertical);
-
- // CGAffineTransform flipHorizontal = CGAffineTransformMake( -1.0, 0.0, 0.0, 1.0, frameWidth, 0.0 );
- // CGContextConcatCTM(context, flipHorizontal);
-
-
- [self.webView.layer renderInContext:context];
-
- CGColorSpaceRelease(rgbColorSpace);
- CGContextRelease(context);
- CVPixelBufferUnlockBaseAddress(pxbuffer, 0);
-
- return pxbuffer;
- }