KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I had extract Y U V data from video frame separately and saved them in data[0],data[1],data[2]; The frame size is 640*480; Now I creat the pixelBuffer as below: void *pYUV[3] = {data[0], data[1], data[2]}; size_t planeWidth = {640, 320, 320}; size_t planeHeight = {480, 240, 240}; size_t planeBytesPerRow = {640, 320, 320}; CVReturn renturn = CVPixelBufferCreateWithPlanarBytes(kCFAllocatorDefault, 640, 480, kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange, nil, nil, 3, pYUV, planeWidth, planeHeight, planeBytesPerRow, nil, nil, nil, &_pixelBuffer); CVPixelBufferLockBaseAddress(_pixelBuffer, 0); CVPixelBufferRetain(_pixelBuffer); // Periodic texture cache flush every frame CVOpenGLESTextureCacheFlush(_textureCache, 0); // The Buffer cannot be used with OpenGL as either its size, pixelformat or attributes are not supported by OpenGL glActiveTexture(GL_TEXTURE0); CVReturn err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, _textureCache, _pixelBuffer, NULL, GL_TEXTURE_2D, GL_LUMINANCE, im.width, im.height,
Tags (comma-separated)
Save Edits
Cancel