
Recherche avancée
Autres articles (111)
-
Personnaliser les catégories
21 juin 2013, parFormulaire de création d’une catégorie
Pour ceux qui connaissent bien SPIP, une catégorie peut être assimilée à une rubrique.
Dans le cas d’un document de type catégorie, les champs proposés par défaut sont : Texte
On peut modifier ce formulaire dans la partie :
Administration > Configuration des masques de formulaire.
Dans le cas d’un document de type média, les champs non affichés par défaut sont : Descriptif rapide
Par ailleurs, c’est dans cette partie configuration qu’on peut indiquer le (...) -
Publier sur MédiaSpip
13 juin 2013Puis-je poster des contenus à partir d’une tablette Ipad ?
Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir -
HTML5 audio and video support
13 avril 2011, parMediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
For older browsers the Flowplayer flash fallback is used.
MediaSPIP allows for media playback on major mobile platforms with the above (...)
Sur d’autres sites (11158)
-
avcodec/mediacodecdec : refactor to take advantage of new decoding api
16 février 2018, par Aman Guptaavcodec/mediacodecdec : refactor to take advantage of new decoding api
This refactor splits up the main mediacodec decode loop into two
send/receive helpers, which are then used to rewrite the receive_frame
callback and take full advantage of the new decoding api. Since we
can now request packets on demand with ff_decode_get_packet(), the
fifo buffer is no longer necessary and has been removed.This change was motivated by behavior observed on certain Android TV
devices, featuring hardware mpeg2/h264 decoders which also deinterlace
content (to produce multiple frames per field). Previously, this code
caused buffering issues because queueInputBuffer() was always invoked
before each dequeueOutputBuffer(), even though twice as many output
buffers were being generated.With this patch, the decoder will always attempt to drain new frames
first before sending more data into the underlying codec.Signed-off-by : Matthieu Bouron <matthieu.bouron@gmail.com>
-
Does this code contain a potential memory leak ?
26 juillet 2017, par JohnnylinHere is the code :
cv::Mat YV12ToBRG24_FFmpeg(unsigned char* pYUV, int width,int height)
{
if (width < 1 || height < 1 || pYUV == nullptr){
return cv::Mat();
}
cv::Mat result(height,width,CV_8UC3, cv::Scalar::all(0));
uchar* pBGR24 = result.data;
AVFrame* pFrameYUV = av_frame_alloc();
pFrameYUV->width = width;
pFrameYUV->height = height;
pFrameYUV->format = AV_PIX_FMT_YUV420P;
av_image_fill_arrays(pFrameYUV->data, pFrameYUV->linesize, pYUV, AV_PIX_FMT_YUV420P, width, height, 1);
//U,V exchange
uint8_t * ptmp=pFrameYUV->data[1];
pFrameYUV->data[1]=pFrameYUV->data[2];
pFrameYUV->data[2]=ptmp;
AVFrame* pFrameBGR = av_frame_alloc();
pFrameBGR->width = width;
pFrameBGR->height = height;
pFrameBGR->format = AV_PIX_FMT_BGR24;
av_image_fill_arrays(pFrameBGR->data, pFrameBGR->linesize, pBGR24, AV_PIX_FMT_BGR24, width, height, 1);
struct SwsContext* imgCtx = nullptr;
imgCtx = sws_getContext(width,height,AV_PIX_FMT_YUV420P,width,height,AV_PIX_FMT_BGR24,SWS_BILINEAR,0,0,0);
if (imgCtx != nullptr){
sws_scale(imgCtx,pFrameYUV->data,pFrameYUV->linesize,0,height,pFrameBGR->data,pFrameBGR->linesize);
sws_freeContext(imgCtx);
imgCtx = nullptr;
ptmp = nullptr;
pBGR24 = nullptr;
av_frame_free(&pFrameYUV);
av_frame_free(&pFrameBGR);
return result;
}
else{
sws_freeContext(imgCtx);
imgCtx = nullptr;
ptmp = nullptr;
pBGR24 = nullptr;
av_frame_free(&pFrameYUV);
av_frame_free(&pFrameBGR);
return cv::Mat();
}
}This function is called every 40 ms (25 fps) and I saw a significant memory increase after several days(like 12GB). But if I ran this code for hours, the memory leak problem would not be obvious enough to be observed.
Can anyone help ?
Thanks. -
Anomalie #4717 : Erreurs nombre d’argument des filtres
10 avril 2021, par jluc -La PR récupère l’erreur PHP, évite le crash blank et délivre le message d’erreur PHP dans la jolie box d’erreur SPIP. Le pire est évité, et donc il faut intégrer cette PR qui fait du bien.
Mais l’internaute SPIPien se retrouve avec un message d’erreur en anglais et portant sur le code compilé PHP. Ce code compilé, même le commun des devs PHP ne le connait pas, car à part XRay qui le rend accessible et les core-développeurs qui débuguent le code d’une nouvelle structure SPIP, personne ne va scruter et n’a connaissance du code php généré par le compilateur.
Pour faire mieux, il y a la piste de la déclaration des arités des filtres. $arite_des_filtres = [[’implode’, 2, 2], [’affdate’, 1, 2]...]. Cette déclaration peut probablement être utilisée au moment de la compilation d’un appel de filtre lorsque le compilateur convertit la structure SPIP #XXX|filtre... en appel PHP.
Ça permet de détecter une erreur d’argumentcount AVANT l’appel PHP et de fournir un joli message d’erreur SPIP qui fait référence au source SPIP.Dans ce cas, la détection d’erreur peut se faire à la compilation.
Mais il se peut que d’autres erreurs PHP doivent être gérées, avec la strictisation croissante de PHP. Il faudra donc de nouvelles déclarations permettant la détection préventive des erreurs.
Peut être sur d’autres structures de données que les filtres aussi ?
Il faut donc développer la capacité d’introspection de SPIP.
Mais parfois l’erreur n’est pas détectable au moment de la compilation. J’ai évoqué plus haut l’erreur relative au typage des arguments. S’il se confirme que le pb se pose aussi, et vu qu’on peut passer à un filtre un argument calculé dynamiquement, c’est pas lors de la compilation que ça pourra être détecté, mais lors de l’exécution du code compilé.
Il faut alors prendre chaque erreur PHP possible et voir si/comment le compilateur peut la prévenir.
Une alternative serait de "traduire" cette erreur PHP de manière à aiguiller le webmestre SPIP.
Par exemple le message d’erreur de https://www.mail-archive.com/spip@rezo.net/msg81110.html , qui fait référence au source compilé, peut être traduit, par reconnaissance (regexp), analyse du message d’erreur, et calcul du message d’erreur SPIP en « Erreur : dans votre source SPIP, il y un appel au filtre |implode qui n’a pas le bon nombre d’arguments. Ça se passe dans la boucle ’BOUCLE_contenu_article’ : veuillez examiner le code et corriger. » Là en plus, ce serait bien de pouvoir associer le nom du fichier source à la boucle dont on connait le nom. Une capacité d’introspection déjà présente ? ou à développer ?