
Recherche avancée
Médias (91)
-
GetID3 - Boutons supplémentaires
9 avril 2013, par
Mis à jour : Avril 2013
Langue : français
Type : Image
-
Core Media Video
4 avril 2013, par
Mis à jour : Juin 2013
Langue : français
Type : Video
-
The pirate bay depuis la Belgique
1er avril 2013, par
Mis à jour : Avril 2013
Langue : français
Type : Image
-
Bug de détection d’ogg
22 mars 2013, par
Mis à jour : Avril 2013
Langue : français
Type : Video
-
Exemple de boutons d’action pour une collection collaborative
27 février 2013, par
Mis à jour : Mars 2013
Langue : français
Type : Image
-
Exemple de boutons d’action pour une collection personnelle
27 février 2013, par
Mis à jour : Février 2013
Langue : English
Type : Image
Autres articles (84)
-
Websites made with MediaSPIP
2 mai 2011, parThis page lists some websites based on MediaSPIP.
-
Use, discuss, criticize
13 avril 2011, parTalk to people directly involved in MediaSPIP’s development, or to people around you who could use MediaSPIP to share, enhance or develop their creative projects.
The bigger the community, the more MediaSPIP’s potential will be explored and the faster the software will evolve.
A discussion list is available for all exchanges between users. -
MediaSPIP v0.2
21 juin 2013, parMediaSPIP 0.2 est la première version de MediaSPIP stable.
Sa date de sortie officielle est le 21 juin 2013 et est annoncée ici.
Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
Comme pour la version précédente, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...)
Sur d’autres sites (11072)
-
Anomalie #2044 : (Ergonomie) Renforcer les "indicateurs d’emplacement" pour les pages de l’espace ...
15 février 2021, par RastaPopoulos ♥Je suis immensément d’accord, et c’est un sujet super importante (la "spacialisation", de "où je suis") pour une refonte complète de l’admin.
Dans Drupal, c’est comme dans nos objets publics : il y a une hiérarchie principale explicite, quand on ajoute des pages à l’admin. Quasi page d’admin à un parent (ou racine), ce qui permet donc de générer un chemin hiérarchique complet de où on se trouve. Et de mettre en actives les entrées de menus des parents. Perso je trouve ça très bien que toute page de l’admin ait toujours un chemin principal obligatoire (après qu’il y ait des raccourcis pour y accéder de plusieurs manières c’est en plus).
-
Anomalie #4540 : Accessibilité des boutons radios et checkboxes
18 février 2021fieldset:not(.editer)
ça fait un sélecteur super spécifique plus fort quefieldset.editer
, c’est la galère après ces histoires.Dans l’autre sens alors, une classe variante de .editer pour dire « c’est un .editer sous forme de fieldset ».
<span class="CodeRay"><span class="tag">span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">editer editer_fieldset …</span><span class="delimiter">"</span></span><span class="tag">></span>
</span></span> -
How to improve the performance of Audio Queue Services when playing audio ?
11 décembre 2014, par 谢小进I want to play
RTMP
’sH.264
/AAC
usingFFmpeg
for decoding and playing video,Audio Queue Services
for playing audio. I have successfully done them all, but still some tough issues, for example high memory allocation when playing audio. I have debugged and found thatAudio Queue Services
lead to high memory allocation, and then crash ! Does anybody know how to improve the memory performance ? Here is my code forAudio Queue Services
playing audio.//
// RTMPAudioPlayer.h
//
#import <foundation></foundation>Foundation.h>
#import <audiotoolbox></audiotoolbox>AudioToolbox.h>
@interface AQBuffer : NSObject
@property (nonatomic) AudioQueueBufferRef buffer;
@end
@interface RTMPAudioPlayer : NSObject {
AudioQueueRef queue;
AudioStreamBasicDescription dataFormat;
NSMutableArray *buffers;
NSMutableArray *reusableBuffers;
}
- (id)initWithSampleRate:(int)sampleRate channels:(int)channels bitsPerChannel:(int)bitsPerChannel;
- (void)start;
- (void)stop;
- (void)putData:(NSData *)data;
@end
//
// RTMPAudioPlayer.m
//
#import "RTMPAudioPlayer.h"
static const int kNumberBuffers = 3;
static const int kBufferSize = 0xA000;
@implementation AQBuffer
@end
@implementation RTMPAudioPlayer
void AQOutputCallback(void *inUserData, AudioQueueRef inAQ, AudioQueueBufferRef inCompleteAQBuffer) {
RTMPAudioPlayer *THIS = (__bridge RTMPAudioPlayer *)inUserData;
[THIS handleAQOutputCallback:inAQ buffer:inCompleteAQBuffer];
}
- (void)handleAQOutputCallback:(AudioQueueRef)audioQueue buffer:(AudioQueueBufferRef)buffer {
for (int i = 0; i < [buffers count]; ++i) {
if (buffer == [buffers[i] buffer]) {
[reusableBuffers addObject:buffers[i]];
break;
}
}
}
- (id)initWithSampleRate:(int)sampleRate channels:(int)channels bitsPerChannel:(int)bitsPerChannel {
self = [super init];
if (self) {
memset(&dataFormat, 0, sizeof(dataFormat));
dataFormat.mSampleRate = sampleRate;
dataFormat.mFormatID = kAudioFormatLinearPCM;
dataFormat.mFormatFlags = kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked;
dataFormat.mBitsPerChannel = bitsPerChannel;
dataFormat.mChannelsPerFrame = channels;
dataFormat.mFramesPerPacket = 1;
dataFormat.mBytesPerFrame = (dataFormat.mBitsPerChannel / 8) * dataFormat.mChannelsPerFrame;
dataFormat.mBytesPerPacket = dataFormat.mBytesPerFrame * dataFormat.mFramesPerPacket;
}
return self;
}
- (void)start {
OSStatus status = AudioQueueNewOutput(&dataFormat, AQOutputCallback, (__bridge void *)self, NULL, NULL, 0, &queue);
if (status == noErr) {
buffers = [NSMutableArray array];
reusableBuffers = [NSMutableArray array];
for (int i = 0; i < kNumberBuffers; i++) {
AudioQueueBufferRef buffer;
status = AudioQueueAllocateBuffer(queue, kBufferSize, &buffer);
if (status == noErr) {
AQBuffer *bufferObj = [[AQBuffer alloc] init];
bufferObj.buffer = buffer;
[buffers addObject:bufferObj];
[reusableBuffers addObject:bufferObj];
} else {
AudioQueueDispose(queue, true);
queue = NULL;
break;
}
}
AudioQueueStart(queue, NULL);
} else {
queue = NULL;
}
}
- (void)stop {
if (queue) {
AudioQueueStop(queue, true);
}
}
- (void)putData:(NSData *)data {
AQBuffer *bufferObj = [reusableBuffers firstObject];
[reusableBuffers removeObject:bufferObj];
AudioQueueBufferRef buffer;
OSStatus status = AudioQueueAllocateBuffer(queue, kBufferSize, &buffer);
if (status == noErr) {
bufferObj = [[AQBuffer alloc] init];
bufferObj.buffer = buffer;
memcpy(bufferObj.buffer->mAudioData, [data bytes], [data length]);
bufferObj.buffer->mAudioDataByteSize = [data length];
AudioQueueEnqueueBuffer(queue, bufferObj.buffer, 0, NULL);
}
}
@end