Compresión de video usando búfer de píxeles creado en kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange format

Tengo un biplano de datos de búfer de video sin formatting en formatting YCbCr, que estoy usando como fuente para comprimir un nuevo video mp4 / mov en formatting H.264 en iPhone y iPad. Por lo tanto, estoy usando un CVPixelBufferRef para crear un nuevo búfer de píxeles y luego uso un AVAssetWriterInputPixelBufferAdaptor para adjuntar a la AVAssetWriterInputPixelBufferAdaptor de video.

Sin embargo, cuando estoy llamando a appendPixelBuffer con el nuevo búfer de píxeles con datos de YCbCr, appendPixelBuffer solo devuelve YES para el primer cuadro adjunto. Todos los demás frameworks son denegados por el escritor (devolviendo un NO ). El problema es que si utilizo los datos de video sin formatting del formatting BGRA32, está funcionando bien, así que me pregunto si tengo un búfer de píxeles creado erróneamente con formatting YCbCr.

Tenía dos methods para crear el búfer de píxeles:

1) Use CVPixelBufferCreateWithBytes :

 cvErr = CVPixelBufferCreateWithBytes(kCFAllocatorDefault, videoWidth_, videoHeight_, kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange, [videoFrame getBaseAddressOfPlane:0], [videoFrame getBytesPerRowOfPlane:0], NULL, NULL, NULL, &pixelBuffer); 

2) Use CVPixelBufferCreateWithPlanarBytes :

 cvErr = CVPixelBufferCreateWithPlanarBytes(kCFAllocatorDefault, videoWidth_, videoHeight_, kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange, NULL, 0, videoFrame.planeCount, planeBaseAddress, planeWidth, planeHeight, planeStride, NULL, NULL, NULL, &pixelBuffer); 

planeBaseAddress , planeWidth , planeHeight , planeStride son arrays 2D que contienen la dirección base, el ancho, la altura y la zancada del plano Y y el plano CbCr.

Entonces, ¿puedes mostrarme dónde estoy haciendo mal, o si hay algún código de ejemplo al que puedo recurrir, o si este es el problema del iPhone SDK?