Recherche avancée

Médias (91)

Autres articles (100)

  • MediaSPIP 0.1 Beta version

    25 avril 2011, par

    MediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
    The zip file provided here only contains the sources of MediaSPIP in its standalone version.
    To get a working installation, you must manually install all-software dependencies on the server.
    If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...)

  • Multilang : améliorer l’interface pour les blocs multilingues

    18 février 2011, par

    Multilang est un plugin supplémentaire qui n’est pas activé par défaut lors de l’initialisation de MediaSPIP.
    Après son activation, une préconfiguration est mise en place automatiquement par MediaSPIP init permettant à la nouvelle fonctionnalité d’être automatiquement opérationnelle. Il n’est donc pas obligatoire de passer par une étape de configuration pour cela.

  • MediaSPIP v0.2

    21 juin 2013, par

    MediaSPIP 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 (8091)

  • avformat/allformats : Fix data race when accessing devices lists

    1er octobre 2021, par Andreas Rheinhardt
    avformat/allformats : Fix data race when accessing devices lists
    

    Up until now setting the input and output devices lists is guarded
    by a mutex. This prevents data races emanating from multiple concurrent
    calls to avpriv_register_devices() (triggered by multiple concurrent
    calls to avdevice_register_all()). Yet reading the lists pointers was
    done without any lock and with nonatomic variables. This means that
    there are data races in case of concurrent calls to
    av_(de)muxer_iterate() and avdevice_register_all() (but only if the
    iteration in av_(de)muxer_iterate exhausts the non-device (de)muxers).

    This commit fixes this by putting said pointers into atomic objects.
    Due to the unavailability of _Atomic the object is an atomic_uintptr,
    leading to ugly casts. Switching to atomics also allowed to remove
    the mutex currently used in avpriv_register_devices().

    Signed-off-by : Andreas Rheinhardt <andreas.rheinhardt@outlook.com>

    • [DH] libavformat/allformats.c
  • avcodec/mpeg4videodec : Fix data race when initializing VLCs

    4 janvier 2022, par Andreas Rheinhardt
    avcodec/mpeg4videodec : Fix data race when initializing VLCs
    

    Both the MPEG-4 parser as well as the decoder initialized
    several VLCs. There is a "static int done = 0 ;" in order to
    guard against initializing these multiple times, but this does
    not work when several threads try to initialize these VLCs
    concurrently, which can happen when initializing several parsers
    at the same time (they don't use the global lock that is used
    for codecs without the FF_CODEC_CAP_INIT_THREADSAFE cap ; actually,
    they don't use any lock at all).

    Since ff_mpeg4_decode_picture_header() now aborts early when called
    from the parser, it no longer needs to have these VLCs initialized
    at all. This commit therefore does exactly this.

    Signed-off-by : Andreas Rheinhardt <andreas.rheinhardt@outlook.com>

    • [DH] libavcodec/mpeg4video.h
    • [DH] libavcodec/mpeg4video_parser.c
    • [DH] libavcodec/mpeg4videodec.c
  • avcodec/mpegpicture : Don't copy unnecessarily, fix race

    8 août 2022, par Andreas Rheinhardt
    avcodec/mpegpicture : Don't copy unnecessarily, fix race
    

    mpegvideo uses an array of Pictures and when it is done with using
    them, it only unreferences them incompletely : Some buffers are kept
    so that they can be reused lateron if the same slot in the Picture
    array is reused, making this a sort of a bufferpool.
    (Basically, a Picture is considered used if the AVFrame's buf is set.)
    Yet given that other pieces of the decoder may have a reference to
    these buffers, they need not be writable and are made writable using
    av_buffer_make_writable() when preparing a new Picture. This involves
    reading the buffer's data, although the old content of the buffer
    need not be retained.

    Worse, this read can be racy, because the buffer can be used by another
    thread at the same time. This happens for Real Video 3 and 4.

    This commit fixes this race by no longer copying the data ;
    instead the old buffer is replaced by a new, zero-allocated buffer.

    (Here are the details of what happens with three or more decoding threads
    when decoding rv30.rm from the FATE-suite as happens in the rv30 test :
    The first decoding thread uses the first slot of its picture array
    to store its current pic ; update_thread_context copies this for the
    second thread that decodes a P-frame. It uses the second slot in its
    Picture array to store its P-frame. This arrangement is then copied
    to the third decode thread, which decodes a B-frame. It uses the third
    slot in its Picture array for its current frame.
    update_thread_context copies this to the next thread. It unreferences
    the third slot containing the other B-frame and then it reuses this
    slot for its current frame. Because the pic array slots are only
    incompletely unreferenced, the buffers of the previous B-frame are
    still in there and they are not writable ; in fact the previous
    thread is concurrently writing to them, causing races when making
    the buffer writable.)

    Signed-off-by : Andreas Rheinhardt <andreas.rheinhardt@outlook.com>

    • [DH] libavcodec/mpegpicture.c