La création de CMSampleBufferRef à partir des données

Je suis en train de créer un CMSampleBuffer Ref de données et d'essayer de l'alimenter AVAssetWriter.
Mais de l'actif de l'écrivain est de ne pas créer le film à partir des données. Voici le code pour créer le CMSampleBufferRef.

CVImageBufferRef cvimgRef = CMSampleBufferGetImageBuffer(sampleBuffer);
CVPixelBufferLockBaseAddress(cvimgRef,0);

uint8_t *buf=(uint8_t *)CVPixelBufferGetBaseAddress(cvimgRef);

int width = 480;
int height = 360;
int bitmapBytesPerRow   = width*4;
int bitmapByteCount     = bitmapBytesPerRow*height;


CVPixelBufferRef pixelBufRef = NULL;
CMSampleBufferRef newSampleBuffer = NULL;
CMSampleTimingInfo timimgInfo = kCMTimingInfoInvalid;
CMSampleBufferGetSampleTimingInfo(sampleBuffer, 0, &timimgInfo);

OSStatus result = 0;

OSType pixFmt = CVPixelBufferGetPixelFormatType(cvimgRef);

CVPixelBufferCreateWithBytes(kCFAllocatorDefault, width, height, pixFmt, buf, bitmapBytesPerRow, NULL, NULL, NULL, &pixelBufRef);

CMVideoFormatDescriptionRef videoInfo = NULL;

result = CMVideoFormatDescriptionCreateForImageBuffer(NULL, pixelBufRef, &videoInfo);

CMSampleBufferCreateForImageBuffer(kCFAllocatorDefault, pixelBufRef, true, NULL, NULL, videoInfo, &timimgInfo, &newSampleBuffer);

De création de film fonctionne très bien lorsque nous utilisons l'original CMSampleBufferRef obtenu à partir de la AVFoundation sortie de données de la méthode de rappel.

Mais le même échoue lorsque j'essaie de créer le film à l'aide de la coutume CMSampleBufferRef. De l'actif de l'écrivain jette l'erreur suivante:

The operation couldnt be completed. (AVFoundationErrorDomain error -11800.)

Merci de m'aider dans la résolution de ce problème.

OriginalL'auteur Subhash | 2010-09-24