Recherche avancée

Médias (1)

Mot : - Tags -/ipad

Autres articles (61)

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

  • Menus personnalisés

    14 novembre 2010, par

    MediaSPIP utilise le plugin Menus pour gérer plusieurs menus configurables pour la navigation.
    Cela permet de laisser aux administrateurs de canaux la possibilité de configurer finement ces menus.
    Menus créés à l’initialisation du site
    Par défaut trois menus sont créés automatiquement à l’initialisation du site : Le menu principal ; Identifiant : barrenav ; Ce menu s’insère en général en haut de la page après le bloc d’entête, son identifiant le rend compatible avec les squelettes basés sur Zpip ; (...)

  • Les autorisations surchargées par les plugins

    27 avril 2010, par

    Mediaspip core
    autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs

Sur d’autres sites (10895)

  • arm : Consistently use proper interworking function returns

    3 octobre 2024, par Martin Storsjö
    arm : Consistently use proper interworking function returns
    

    Use "bx lr", or "pop lr", which do proper mode switching
    between thumb and arm modes. A plain "mov pc, lr" does not switch
    from thumb mode to arm mode (while in arm mode, it does switch
    mode for a thumb caller).

    This is normally not an issue, as CONFIG_THUMB only is enabled if
    the C compiler defaults to thumb ; but stick to patterns that can
    do mode switching if needed, for consistency.

    Signed-off-by : Martin Storsjö <martin@martin.st>

    • [DH] libswresample/arm/resample.S
    • [DH] libswscale/arm/hscale.S
    • [DH] libswscale/arm/output.S
    • [DH] libswscale/arm/yuv2rgb_neon.S
  • avfilter/af_afftdn : use av_assert0 for unreachable assert

    9 septembre 2024, par Marvin Scholz
    avfilter/af_afftdn : use av_assert0 for unreachable assert
    

    This is unreachable anyway so performance is not an issue here. Allows
    guiding the compiler in all build modes to not emit a spurious warning
    here :

    warning : variable 'mag' is used uninitialized whenever switch default is taken

    • [DH] libavfilter/af_afftdn.c
  • Duplicated PTS value when using rtsp transport UDP (H264 FU-A)

    25 janvier, par Christoph

    I’m implementing a packet loss counter based on the PTS from the av_packet, and it works fine when using RTSP/TCP as the transport mode. However, when I switched to RTSP/UDP, two packets consistently share the same PTS. This puzzled me because I assumed that av_read_frame would parse the stream and provide "valid" packets.

    &#xA;

    In both cases, the stream is FU-A H.264, and I expected FFmpeg to handle reassembly in both transport modes identically. My understanding was that if UDP packets were splitted, FFmpeg would reassemble them into a single av_packet, similar to how it handles reassembly for TCP packets split due to MTU and FU-A.

    &#xA;

    I could adapt my packet loss calculation by simply ignoring packets with the same PTS as the previous one, but I want to understand what’s happening here.

    &#xA;

    TCP

    &#xA;

    packet pts: -9223372036854775808, dts: -9223372036854775808, size: 52672, key-frame: true, discard: false, corrupt: false&#xA;packet pts: 3598, dts: 3598, size: 6034, key-frame: false, discard: false, corrupt: false&#xA;packet pts: 7196, dts: 7196, size: 5730, key-frame: false, discard: false, corrupt: false&#xA;packet pts: 10794, dts: 10794, size: 6153, key-frame: false, discard: false, corrupt: false&#xA;packet pts: 14392, dts: 14392, size: 2269, key-frame: false, discard: false, corrupt: false&#xA;packet pts: 17989, dts: 17989, size: 2656, key-frame: false, discard: false, corrupt: false&#xA;packet pts: 21587, dts: 21587, size: 2659, key-frame: false, discard: false, corrupt: false&#xA;

    &#xA;

    UDP

    &#xA;

    packet pts: -9223372036854775808, dts: -9223372036854775808, size: 1391, key-frame: true, discard: false, corrupt: false&#xA;packet pts: 0, dts: 0, size: 109265, key-frame: true, discard: false, corrupt: false&#xA;packet pts: 3598, dts: 3598, size: 878, key-frame: false, discard: false, corrupt: false&#xA;packet pts: -> 3598, dts: 3598, size: 7728, key-frame: false, discard: false, corrupt: false&#xA;packet pts: 7195, dts: 7195, size: 887, key-frame: false, discard: false, corrupt: false&#xA;packet pts: -> 7195, dts: 7195, size: 7149, key-frame: false, discard: false, corrupt: false&#xA;packet pts: 10793, dts: 10793, size: 795, key-frame: false, discard: false, corrupt: false&#xA;packet pts: -> 10793, dts: 10793, size: 7777, key-frame: false, discard: false, corrupt: false&#xA;packet pts: 14391, dts: 14391, size: 119, key-frame: false, discard: false, corrupt: false&#xA;packet pts: -> 14391, dts: 14391, size: 2075, key-frame: false, discard: false, corrupt: false&#xA;

    &#xA;

    For reference here my code

    &#xA;

    // PackageLossDetection detects possible packet loss based on PTS (Presentation Time Stamp) values.&#xA;// It compares the PTS of the packet with the expected PTS, calculated using the stream&#x27;s time base and average frame rate.&#xA;// If the deviation between the expected and actual PTS exceeds a defined tolerance.&#xA;//&#xA;// Parameters:&#xA;//   - pkt: incoming packet whose PTS is to be checked.&#xA;//   - stream: the stream containing time base and average frame rate information.&#xA;func (s *AvSource) PackageLossDetection(pkt *astiav.Packet, stream *astiav.Stream) {&#xA;&#xA;    // When using UDP as RTSP Transport packages in tuple has same PTS&#xA;    // TODO: Maybe we should invest more time to find a better solution&#xA;    if s.lastPts == pkt.Pts() {&#xA;        return&#xA;    }&#xA;&#xA;    if pkt.Pts() > 0 {&#xA;&#xA;        const tolerance = 4 // Allowable deviation in PTS steps&#xA;        if stream.AvgFrameRate().Num() == 0 {&#xA;            s.log.Warn().Str("stream", s.stream.Name).Msg("PackageLossDetection, no frame rate information available")&#xA;            return&#xA;        }&#xA;&#xA;        var ptsBetween = stream.TimeBase().Den() * stream.TimeBase().Num() / stream.AvgFrameRate().Num()&#xA;        if math.Abs(float64(pkt.Pts()-(s.lastPts&#x2B;int64(ptsBetween)))) > tolerance {&#xA;            s.log.Warn().Str("stream", s.stream.Name).Msgf("PackageLossDetection, PTS steps: %d, expected: %d, got: %d", int(ptsBetween), s.lastPts&#x2B;int64(ptsBetween), pkt.Pts())&#xA;            utils.SafeIncrementInt64(&amp;s.metrics.LossCount)&#xA;        }&#xA;&#xA;        s.lastPts = pkt.Pts()&#xA;    }&#xA;}&#xA;

    &#xA;