
Recherche avancée
Médias (17)
-
Matmos - Action at a Distance
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
DJ Dolores - Oslodum 2004 (includes (cc) sample of “Oslodum” by Gilberto Gil)
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
Danger Mouse & Jemini - What U Sittin’ On ? (starring Cee Lo and Tha Alkaholiks)
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
Cornelius - Wataridori 2
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
The Rapture - Sister Saviour (Blackstrobe Remix)
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
Chuck D with Fine Arts Militia - No Meaning No
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
Autres articles (85)
-
Amélioration de la version de base
13 septembre 2013Jolie sélection multiple
Le plugin Chosen permet d’améliorer l’ergonomie des champs de sélection multiple. Voir les deux images suivantes pour comparer.
Il suffit pour cela d’activer le plugin Chosen (Configuration générale du site > Gestion des plugins), puis de configurer le plugin (Les squelettes > Chosen) en activant l’utilisation de Chosen dans le site public et en spécifiant les éléments de formulaires à améliorer, par exemple select[multiple] pour les listes à sélection multiple (...) -
Emballe médias : à quoi cela sert ?
4 février 2011, parCe plugin vise à gérer des sites de mise en ligne de documents de tous types.
Il crée des "médias", à savoir : un "média" est un article au sens SPIP créé automatiquement lors du téléversement d’un document qu’il soit audio, vidéo, image ou textuel ; un seul document ne peut être lié à un article dit "média" ; -
Participer à sa traduction
10 avril 2011Vous pouvez nous aider à améliorer les locutions utilisées dans le logiciel ou à traduire celui-ci dans n’importe qu’elle nouvelle langue permettant sa diffusion à de nouvelles communautés linguistiques.
Pour ce faire, on utilise l’interface de traduction de SPIP où l’ensemble des modules de langue de MediaSPIP sont à disposition. ll vous suffit de vous inscrire sur la liste de discussion des traducteurs pour demander plus d’informations.
Actuellement MediaSPIP n’est disponible qu’en français et (...)
Sur d’autres sites (15092)
-
Evolution #2636 (Nouveau) : select des types de bases de données à l’install
9 avril 2012, par Fil UpIl faut revoir ce menu car pas très utilisable. Actuellement il y a plein de texte expliquant ce qu’on va trouver dans le menu => remplacer par une liste de radio buttons. Le choix par défaut (SQLite3) est le dernier en bas, ce qui n’est pas très logique. Ordonner du plus courant vers le moins (...)
-
iOS allocation grow using x264 encoding
19 juillet 2013, par cssmhylI get the video yuv data in callback and save the image data by NSData.Then I put the data into NSData,And put the array to queue(NSMutableArray). These are code :
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection{
if ([Application sharedInstance].isRecording) {
if (captureOutput == self.captureManager.videOutput) {
uint64_t capturedHostTime = [self GetTickCount];
int allSpace = capturedHostTime - lastCapturedHostTime;
NSNumber *spaces = [[NSNumber alloc] initWithInt:allSpace];
NSNumber *startTime = [[NSNumber alloc] initWithUnsignedLongLong:lastCapturedHostTime];
lastCapturedHostTime = capturedHostTime;
CVImageBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
CVPixelBufferLockBaseAddress(pixelBuffer, 0);
uint8_t *baseAddress0 = (uint8_t *)CVPixelBufferGetBaseAddressOfPlane(pixelBuffer, 0);
uint8_t *baseAddress1 = (uint8_t *)CVPixelBufferGetBaseAddressOfPlane(pixelBuffer, 1);
size_t width = CVPixelBufferGetWidth(pixelBuffer);
size_t height = CVPixelBufferGetHeight(pixelBuffer);
NSData *baseAddress0Data = [[NSData alloc] initWithBytes:baseAddress0 length:width*height];
NSData *baseAddress1Data = [[NSData alloc] initWithBytes:baseAddress1 length:width*height/2];
CVPixelBufferUnlockBaseAddress(pixelBuffer, 0);
NSArray *array = [[NSArray alloc] initWithObjects:baseAddress0Data,baseAddress1Data,spaces,startTime ,nil];
[baseAddress0Data release];
[baseAddress1Data release];
[spaces release];
[startTime release];
@synchronized([Application sharedInstance].pearVideoQueue){
[[Application sharedInstance] enqueuePearVideo:[Application sharedInstance].pearVideoQueue withData:array];
[array release];
}
}
}
}now,I run an operation and get data from the queue ,then encode them by x264.I destory de array after encoding.
- (void)main{
while ([Application sharedInstance].pearVideoQueue) {
if (![Application sharedInstance].isRecording) {
NSLog(@"encode operation break");
break;
}
if (![[Application sharedInstance].pearVideoQueue isQueueEmpty]) {
NSArray *pearVideoArray;
@synchronized([Application sharedInstance].pearVideoQueue){
pearVideoArray = [[Application sharedInstance].pearVideoQueue dequeue];
[[Application sharedInstance] encodeToH264:pearVideoArray];
[pearVideoArray release];
pearVideoArray = nil;
}
} else{
[NSThread sleepForTimeInterval:0.01];
}
}
}this is encoding method
- (void)encodeX264:(NSArray *)array{
int i264Nal;
x264_picture_t pic_out;
x264_nal_t *p264Nal;
NSNumber *st = [array lastObject];
NSNumber *sp = [array objectAtIndex:2];
uint64_t startTime = [st unsignedLongLongValue];
int spaces = [sp intValue];
NSData *baseAddress0Data = [array objectAtIndex:0];
NSData *baseAddress1Data = [array objectAtIndex:1];
const char *baseAddress0 = baseAddress0Data.bytes;
const char *baseAddress1 = baseAddress1Data.bytes;
if (baseAddress0 == nil) {
return;
}
memcpy(p264Pic->img.plane[0], baseAddress0, PRESENT_FRAME_WIDTH*PRESENT_FRAME_HEIGHT);
uint8_t * pDst1 = p264Pic->img.plane[1];
uint8_t * pDst2 = p264Pic->img.plane[2];
for( int i = 0; i < PRESENT_FRAME_WIDTH*PRESENT_FRAME_HEIGHT/4; i ++ )
{
*pDst1++ = *baseAddress1++;
*pDst2++ = *baseAddress1++;
}
if( x264_encoder_encode( p264Handle, &p264Nal, &i264Nal, p264Pic ,&pic_out) < 0 )
{
fprintf( stderr, "x264_encoder_encode failed/n" );
}
i264Nal = 0;
if (i264Nal > 0) {
int i_size;
int spslen =0;
unsigned char spsData[1024];
char * data = (char *)szBuffer+100;
memset(szBuffer, 0, sizeof(szBuffer));
if (ifFirstSps) {
ifFirstSps = NO;
if (![Application sharedInstance].ifAudioStarted) {
NSLog(@"video first");
[Application sharedInstance].startTick = startTime;
NSLog(@"startTick: %llu",startTime);
[Application sharedInstance].ifVideoStarted = YES;
}
}
for (int i=0 ; inal_buffer_size < p264Nal[i].i_payload*3/2+4) {
p264Handle->nal_buffer_size = p264Nal[i].i_payload*2+4;
x264_free( p264Handle->nal_buffer );
p264Handle->nal_buffer = x264_malloc( p264Handle->nal_buffer_size );
}
i_size = p264Nal[i].i_payload;
memcpy(data, p264Nal[i].p_payload, p264Nal[i].i_payload);
int splitNum = 0;
for (int i=0; i=1) {
timeSpace = spaces/(i264Nal-1)*i;
}else{
timeSpace = spaces/i264Nal*i;
}
int timeStamp = startTime-[Application sharedInstance].startTick + timeSpace;
switch (type) {
case NALU_TYPE_SPS:
spslen = i_size-splitNum;
memcpy(spsData, data, spslen);
break;
case NALU_TYPE_PPS:
timeStamp = timeStamp - timeSpace;
[self pushSpsAndPpsQueue:(char *)spsData andppsData:(char *)data withPPSlength:spslen andPPSlength:(i_size-splitNum) andTimeStamp:timeStamp];
break;
case NALU_TYPE_IDR:
[self pushVideoNALU:(char *)data withLength:(i_size-splitNum) ifIDR:YES andTimeStamp:timeStamp];
break;
case NALU_TYPE_SLICE:
case NALU_TYPE_SEI:
[self pushVideoNALU:(char *)data withLength:(i_size-splitNum) ifIDR:NO andTimeStamp:timeStamp];
break;
default:
break;
}
}
}
}the question is :
I used instruments and found that the data I captured increase ,but NSLog
show that the space-time I create de array and release it did not increase,and when I release ,the array's retain count is 1. the object's retain count it contains is also one.
then I didn't encode,the memory didn't increase...I was confused...please help..
the image pixel is 640x480.intruments leaks picture:
-
fftools/sync_queue : document overall design
13 avril 2022, par Anton Khirnov