Я делаю заявление Voip, который также имеет поддержку видео,Использование NSImageView для потокового видео
для видео, я получаю данные в формате YUV и для декодирования я использую libvpx,
, а затем я будет RGB данные,
Теперь для отображения я использую NSImageView где я изменю NSImage, пожалуйста, обратитесь кодом ниже
-(void)gotNewRGBBuffer:(void *)imageData Height:(int)height Width:(int)width Scan:(int)scan VideoId:(const char *)pId{
@autoreleasepool {
// display the image (on the UI thread)
NSBitmapImageRep *bitmap = [[NSBitmapImageRep alloc]
initWithBitmapDataPlanes:(unsigned char **)&imageData
pixelsWide:width pixelsHigh:height
bitsPerSample:8
samplesPerPixel:3 // or 4 with alpha
hasAlpha:NO
isPlanar:NO
colorSpaceName:NSDeviceRGBColorSpace
bitmapFormat:0
bytesPerRow:scan // 0 == determine automatically
bitsPerPixel:24]; // 0 == determine automatically
NSImage *image = [[NSImage alloc] initWithSize:NSMakeSize(width, height)];
[image addRepresentation:bitmap];
if (![NSThread isMainThread]){
[self performSelectorOnMainThread:@selector(updateImage:) withObject:image waitUntilDone:NO];
}else{
[self updateImage:image];
}
}
}
и функция для обновления изображения часов прежде чем он идет,
-(void)updateImage:(NSImage *)pNewLocalImage{
[self pImageView].image = pNewLocalImage;
[[self pImageView] setNeedsDisplay:YES];
NSLog(@" Updating the image ");
}
это работает, но с каким-то значительным объемом памяти, поэтому я мой вопрос, есть ли другой способ, чтобы оптимизировать его!