Recherche avancée

Médias (0)

Mot : - Tags -/signalement

Aucun média correspondant à vos critères n’est disponible sur le site.

Autres articles (53)

  • Participer à sa traduction

    10 avril 2011

    Vous 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 (...)

  • Supporting all media types

    13 avril 2011, par

    Unlike most software and media-sharing platforms, MediaSPIP aims to manage as many different media types as possible. The following are just a few examples from an ever-expanding list of supported formats : images : png, gif, jpg, bmp and more audio : MP3, Ogg, Wav and more video : AVI, MP4, OGV, mpg, mov, wmv and more text, code and other data : OpenOffice, Microsoft Office (Word, PowerPoint, Excel), web (html, CSS), LaTeX, Google Earth and (...)

  • Les formats acceptés

    28 janvier 2010, par

    Les commandes suivantes permettent d’avoir des informations sur les formats et codecs gérés par l’installation local de ffmpeg :
    ffmpeg -codecs ffmpeg -formats
    Les format videos acceptés en entrée
    Cette liste est non exhaustive, elle met en exergue les principaux formats utilisés : h264 : H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 m4v : raw MPEG-4 video format flv : Flash Video (FLV) / Sorenson Spark / Sorenson H.263 Theora wmv :
    Les formats vidéos de sortie possibles
    Dans un premier temps on (...)

Sur d’autres sites (8225)

  • Evolution #3801 (Nouveau) : Filtrage des boucles DATA selon des contenus divers, et extension des ...

    2 juillet 2016, par marcimat ☺☮☯♫

    Je suis tombé sur un cas de boucle DATA qui m’a ennuyé car le filtrage que je souhaitais n’était pas directement possible actuellement avec les critères dont on dispose.

    Soit le tableau, disons #TAB suivant :

    $tab = [
        [ ’id’ => 1, ’mots’ => [ 11, 120, 53 ]],
        [ ’id’ => 2, ’mots’ => [ 32, 11, 20 ]],
        [ ’id’ => 3, ’mots’ => [ 11, 78, 34 ]],
        [ ’id’ => 4, ’mots’ => [ 120, 26, 91 ]],
    ] ;
    


    Je souhaitais boucler sur les éléments ayant le mot 11 par exemple, dans la clé ’mots’.
    De base la boucle serait :

    #ID

    Il faudrait ajouter un critère pour restreindre aux seuls éléments contenant le mot 11, mais {mots = 11} ne va pas, ni {mots IN 11} vu que c’est le champ "mots" qui est un tableau.
    On pourrait imaginer pouvoir écrire {11 IN mots} qui serait probablement plus clair, mais ce n’est pas permis.

    Il n’y a actuellement pas moyen de réaliser ce filtre, ni d’étendre simplement les filtres à appliquer.

    On propose ici de réfléchir à éventuellement permettre l’extension de ces tests de validation en fonction des contenus, ce qui s’apparente à ajouter quelque chose dans le WHERE en SQL, mais pour les itérateurs, c’est plutôt ajouter une contrainte sur la méthode valid(). Les critères tel que {id=3} ajoutent déjà des contraintes, même {chemin/du/tableau > 5} fonctionne.

    Une idée serait d’ajouter un critère {filtre NN} ou {valider NN} et de définir une fonction NN() dans son code (mes_fonctions.php par exemple) qui recevrait la clé et la valeur en cours de validation et retournerait true ou false pour indiquer si cette entrée est acceptée ou pas. La fonction à créer serait au minimum donc NN($cle, $valeur) { return true; }

    On pourrait transmettre des paramètres supplémentaires, tel que {filtre nom, p1, p2} qui arriveraient dans un tableau d’arguments en 3è paramètre : NN($cle, $valeur, $args).

    Voici un diff qui permet :
    1) de prendre en compte `$command[’filtres’]` dans les itérateurs. Chaque entrée de ce tableau est un tableau décrivant 1 filtre, avec comme premier élément le nom de la fonction à appeler, et les suivants les éventuels arguments.
    2) de déclarer un critère `filtre` sur les boucles DATA qui remplissent ce tableau de filtres
    3) de montrer un exemple d’un filtre (mal nommé) ’contient’ avec 2 arguments

    Index : public/iterateur.php
    ===================================================================
    
    — - public/iterateur.php (revision 23091) +++ public/iterateur.php (working copy) @@ -300,6 +300,18 @@ $this->limit = $limit[1] ;

    + // filtres explicites filtre nom_fonction, param, param
    + if (!empty($this->command[’filtres’]))
    + foreach ($this->command[’filtres’] as $args)
    + $nom = array_shift($args) ;
    + if (function_exists($nom))
    + $this->filtre[] = $nom . ’( $me->key(), $me->current(), ’ . var_export($args, true) . ’)’ ;
    +
    else
    + spip_log("Filtre d’itérateur non connu : " . (string)$filtre) ; // [todo] mettre une erreur de squelette
    +

    +

    +

    +

    /**
    * Compile le critère `filtre` d’une boucle DATA
    *
    * @syntaxe `filtre nom, [arg1, [arg2, [...]]]`
    * @example `filtre contient, mots, 3`
    *
    * @param string $idb Identifiant de la boucle
    * @param array $boucles AST du squelette
    * @param Critere $crit Paramètres du critère dans cette boucle
    */
    function critere_DATA_filtre_dist($idb, &$boucles, $crit)
    $boucle = &$boucles[$idb] ;
    // créer le tableau de tous filtres de la boucle
    $boucle->hash .= "\n\tif (!isset(\$filtres_init)) \$command[’filtres’] = array() ; \$filtres_init = true ; \n" ;
    // créer le tableau de ce filtre
    $boucle->hash .= "\t\$i = count(\$command[’filtres’]) ; \$command[’filtres’][\$i] = array() ;\n" ;
    // ajouter les arguments du filtre
    foreach ($crit->param as $param)
    $boucle->hash .= "\t" . ’$command[\’filtres\’][$i][] = ’ . calculer_liste($param, array(), $boucles, $boucles[$idb]->id_parent) . " ;\n" ;

    /**
    * Conserve les éléments de la boucle dont le chemin indiqué contient une certaine valeur
    * sous entendu que ce chemin pointe sur une liste de valeurs possibles
    *
    * @syntaxe `filtre contient, chemin, val`
    * @example `filtre contient, mots, 3`
    *
    * - chemin : est un parcours qui sera fait dans le tableau $valeurs,
    * chaque / entrant dans un sous élément @see table_valeur()
    * - val : est une valeur à trouver dans le tableau retrouvé du chemin indiqué
    * dans l’exemple le chemin ’mots’ retourne pour une entrée une liste tel que `array(12, 31, 21)`
    *
    * @param int|string $cle Clé analysée
    * @param mixed $valeur Valeur analysée
    * @param array $args Arguments passés au filtre
    * @return bool True pour accepter cette entrée, false sinon.
    **/
    function contient($cle, $valeur, $args)
    if (count($args) != 2)
    return false ;

    list($chemin, $val) = $args ;
    if ($valeurs = table_valeur($valeur, $chemin))
    return in_array($val, $valeurs) ;

    return false ;

    Et un exemple d’utilisation en squelettes

    Test

    #SETobjets,#LISTE
    #SETobjets,#GETobjets|push#ARRAYid,1,mots,#LISTE10,11,12

    #SETobjets,#GETobjets|push#ARRAYid,2,mots,#LISTE30,31,32

    #SETobjets,#GETobjets|push#ARRAYid,3,mots,#LISTE50,51,52

    #SETobjets,#GETobjets|push#ARRAYid,4,mots,#LISTE32,11

    #SETobjets,#GETobjets|push#ARRAYid,5,mots,#LISTE52,10

    #SETid,32

    #ID

    À réfléchir…

  • Revision d638056952 : Inconsistent reference to MacroblockD data structure. Cleaned up some inconsist

    29 octobre 2012, par Paul Wilkins

    Changed Paths : Modify /vp8/encoder/rdopt.c Inconsistent reference to MacroblockD data structure. Cleaned up some inconsistent references using both xd-> and x->e_mbd. to access the same data structure in the same function. Change-Id : (...)

  • Sdd watermark to YUV video data (SDL_Overlay) programmatically

    2 septembre 2012, par user325320

    My application plays video via SDL + ffmpeg library(not the exe tool).

    and I want to add the text onto the video

    The ffmpeg's VHOOK source code shows it converts the data to RGB32.
    Can't it be done in YUV directly ?

    Here my current code, can you please give me some suggestion ?

    SDL_Overlay * pOverlay = SDL_CreateYUVOverlay( pDecodedFrame->width
               , pDecodedFrame->height
               , SDL_YV12_OVERLAY
               , pThis->m_pSurface
               );
    if( pOverlay != NULL )
    {
       SDL_LockYUVOverlay(pOverlay);

       pSwsContext = sws_getCachedContext( pSwsContext
           , pDecodedFrame->width
           , pDecodedFrame->height
           , pThis->m_pMediaFile->GetVideoPixcelFormat()
           , pDecodedFrame->width
           , pDecodedFrame->height
           , PIX_FMT_YUV420P
           , SWS_SPLINE
           , NULL
           , NULL
           , NULL
           );

       AVPicture tPicture;
       tPicture.data[0] = pOverlay->pixels[0];
       tPicture.data[1] = pOverlay->pixels[2];
       tPicture.data[2] = pOverlay->pixels[1];

       tPicture.linesize[0] = pOverlay->pitches[0];
       tPicture.linesize[1] = pOverlay->pitches[2];
       tPicture.linesize[2] = pOverlay->pitches[1];

       int nSliceHeight = sws_scale( pSwsContext
           , pDecodedFrame->data
           , pDecodedFrame->linesize
           , 0
           , pDecodedFrame->height
           , tPicture.data
           , tPicture.linesize
           );


       SDL_UnlockYUVOverlay(pOverlay);
       VideoPicture tVideoPicture = {0};
       tVideoPicture.pOverlay = pOverlay;
       tVideoPicture.nWidth = pDecodedFrame->width;
       tVideoPicture.nHeight = pDecodedFrame->height;
       tVideoPicture.dbPTS = dbPTS;

       pThis->m_pVideoPictureQueue.Append(tVideoPicture);
    }