Recherche avancée

Médias (1)

Mot : - Tags -/ogg

Autres articles (74)

  • Le profil des utilisateurs

    12 avril 2011, par

    Chaque utilisateur dispose d’une page de profil lui permettant de modifier ses informations personnelle. Dans le menu de haut de page par défaut, un élément de menu est automatiquement créé à l’initialisation de MediaSPIP, visible uniquement si le visiteur est identifié sur le site.
    L’utilisateur a accès à la modification de profil depuis sa page auteur, un lien dans la navigation "Modifier votre profil" est (...)

  • Configurer la prise en compte des langues

    15 novembre 2010, par

    Accéder à la configuration et ajouter des langues prises en compte
    Afin de configurer la prise en compte de nouvelles langues, il est nécessaire de se rendre dans la partie "Administrer" du site.
    De là, dans le menu de navigation, vous pouvez accéder à une partie "Gestion des langues" permettant d’activer la prise en compte de nouvelles langues.
    Chaque nouvelle langue ajoutée reste désactivable tant qu’aucun objet n’est créé dans cette langue. Dans ce cas, elle devient grisée dans la configuration et (...)

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

  • Why do I get a EXC_BAD_ACCESS error while running a simple sws_scale function ? [closed]

    3 décembre 2022, par Vish

    All I'm trying to do is decode a video using ffmpeg, and change format from YUV to RGBA using sws_scale. The code is as follows :

    


    `

    


    #include "video_reader.hpp"&#xA;#include &#xA;#include <iostream>&#xA;&#xA;using namespace std;&#xA;&#xA;// av_err2str returns a temporary array. This doesn&#x27;t work in gcc.&#xA;// This function can be used as a replacement for av_err2str.&#xA;static const char* av_make_error(int errnum) {&#xA;    static char str[AV_ERROR_MAX_STRING_SIZE];&#xA;    memset(str, 0, sizeof(str));&#xA;    return av_make_error_string(str, AV_ERROR_MAX_STRING_SIZE, errnum);&#xA;}&#xA;&#xA;static AVPixelFormat correct_for_deprecated_pixel_format(AVPixelFormat pix_fmt) {&#xA;    // Fix swscaler deprecated pixel format warning&#xA;    // (YUVJ has been deprecated, change pixel format to regular YUV)&#xA;    switch (pix_fmt) {&#xA;        case AV_PIX_FMT_YUVJ420P: return AV_PIX_FMT_YUV420P;&#xA;        case AV_PIX_FMT_YUVJ422P: return AV_PIX_FMT_YUV422P;&#xA;        case AV_PIX_FMT_YUVJ444P: return AV_PIX_FMT_YUV444P;&#xA;        case AV_PIX_FMT_YUVJ440P: return AV_PIX_FMT_YUV440P;&#xA;        default:                  return pix_fmt;&#xA;    }&#xA;}&#xA;&#xA;bool video_reader_open(VideoReaderState* state, const char* filename) {&#xA;&#xA;    // Unpack members of state&#xA;    auto&amp; width = state->width;&#xA;    auto&amp; height = state->height;&#xA;    auto&amp; time_base = state->time_base;&#xA;    auto&amp; av_format_ctx = state->av_format_ctx;&#xA;    auto&amp; av_codec_ctx = state->av_codec_ctx;&#xA;    auto&amp; video_stream_index = state->video_stream_index;&#xA;    auto&amp; av_frame = state->av_frame;&#xA;    auto&amp; av_packet = state->av_packet;&#xA;&#xA;    // Open the file using libavformat&#xA;    av_format_ctx = avformat_alloc_context();&#xA;    if (!av_format_ctx) {&#xA;        printf("Couldn&#x27;t created AVFormatContext\n");&#xA;        return false;&#xA;    }&#xA;&#xA;    if (avformat_open_input(&amp;av_format_ctx, filename, NULL, NULL) != 0) {&#xA;        printf("Couldn&#x27;t open video file\n");&#xA;        return false;&#xA;    }&#xA;&#xA;    // Find the first valid video stream inside the file&#xA;    video_stream_index = -1;&#xA;    AVCodecParameters* av_codec_params;&#xA;    AVCodec* av_codec;&#xA;    for (int i = 0; i &lt; av_format_ctx->nb_streams; &#x2B;&#x2B;i) {&#xA;        av_codec_params = av_format_ctx->streams[i]->codecpar;&#xA;        if (!avcodec_find_decoder(av_codec_params->codec_id)) {&#xA;            continue;&#xA;        }&#xA;        if (av_codec_params->codec_type == AVMEDIA_TYPE_VIDEO) {&#xA;            video_stream_index = i;&#xA;            width = av_codec_params->width;&#xA;            height = av_codec_params->height;&#xA;            time_base = av_format_ctx->streams[i]->time_base;&#xA;            break;&#xA;        }&#xA;    }&#xA;    if (video_stream_index == -1) {&#xA;        printf("Couldn&#x27;t find valid video stream inside file\n");&#xA;        return false;&#xA;    }&#xA;&#xA;    // Set up a codec context for the decoder&#xA;    av_codec_ctx = avcodec_alloc_context3(avcodec_find_decoder(av_codec_params->codec_id));&#xA;    if (!av_codec_ctx) {&#xA;        printf("Couldn&#x27;t create AVCodecContext\n");&#xA;        return false;&#xA;    }&#xA;    if (avcodec_parameters_to_context(av_codec_ctx, av_codec_params) &lt; 0) {&#xA;        printf("Couldn&#x27;t initialize AVCodecContext\n");&#xA;        return false;&#xA;    }&#xA;    if (avcodec_open2(av_codec_ctx, avcodec_find_decoder(av_codec_params->codec_id), NULL) &lt; 0) {&#xA;        printf("Couldn&#x27;t open codec\n");&#xA;        return false;&#xA;    }&#xA;&#xA;    av_frame = av_frame_alloc();&#xA;    if (!av_frame) {&#xA;        printf("Couldn&#x27;t allocate AVFrame\n");&#xA;        return false;&#xA;    }&#xA;    av_packet = av_packet_alloc();&#xA;    if (!av_packet) {&#xA;        printf("Couldn&#x27;t allocate AVPacket\n");&#xA;        return false;&#xA;    }&#xA;&#xA;    return true;&#xA;}&#xA;&#xA;bool video_reader_read_frame(VideoReaderState* state, uint8_t* frame_buffer, int64_t* pts) {&#xA;&#xA;    // Unpack members of state&#xA;    auto&amp; width = state->width;&#xA;    auto&amp; height = state->height;&#xA;    auto&amp; av_format_ctx = state->av_format_ctx;&#xA;    auto&amp; av_codec_ctx = state->av_codec_ctx;&#xA;    auto&amp; video_stream_index = state->video_stream_index;&#xA;    auto&amp; av_frame = state->av_frame;&#xA;    auto&amp; av_packet = state->av_packet;&#xA;    auto&amp; sws_scaler_ctx = state->sws_scaler_ctx;&#xA;&#xA;    // Decode one frame&#xA;    int response;&#xA;    while (av_read_frame(av_format_ctx, av_packet) >= 0) {&#xA;        if (av_packet->stream_index != video_stream_index) {&#xA;            av_packet_unref(av_packet);&#xA;            continue;&#xA;        }&#xA;&#xA;        response = avcodec_send_packet(av_codec_ctx, av_packet);&#xA;        if (response &lt; 0) {&#xA;            printf("Failed to decode packet: %s\n", av_make_error(response));&#xA;            return false;&#xA;        }&#xA;&#xA;        response = avcodec_receive_frame(av_codec_ctx, av_frame);&#xA;        if (response == AVERROR(EAGAIN) || response == AVERROR_EOF) {&#xA;            av_packet_unref(av_packet);&#xA;            continue;&#xA;        } else if (response &lt; 0) {&#xA;            printf("Failed to decode packet: %s\n", av_make_error(response));&#xA;            return false;&#xA;        }&#xA;&#xA;        av_packet_unref(av_packet);&#xA;        break;&#xA;    }&#xA;&#xA;    *pts = av_frame->pts;&#xA;    &#xA;&#xA;    // Set up sws scaler&#xA;    if (!sws_scaler_ctx) {&#xA;        auto source_pix_fmt = correct_for_deprecated_pixel_format(av_codec_ctx->pix_fmt);&#xA;        sws_scaler_ctx = sws_getContext(width, height, AV_PIX_FMT_YUV420P,&#xA;                                        width, height, AV_PIX_FMT_RGB0,&#xA;                                        SWS_FAST_BILINEAR, NULL, NULL, NULL);&#xA;    }&#xA;    if (!sws_scaler_ctx) {&#xA;        printf("Couldn&#x27;t initialize sw scaler\n");&#xA;        return false;&#xA;    }&#xA;&#xA;    cout &lt;&lt; av_codec_ctx->pix_fmt &lt;&lt; endl;&#xA;    uint8_t* dest[4] = { frame_buffer, NULL, NULL, NULL };&#xA;    int dest_linesize[4] = { width * 4, 0, 0, 0 };&#xA;    sws_scale(sws_scaler_ctx, av_frame->data, av_frame->linesize, 0, av_frame->height, dest, dest_linesize);&#xA;&#xA;    return true;&#xA;}&#xA;&#xA;bool video_reader_seek_frame(VideoReaderState* state, int64_t ts) {&#xA;    &#xA;    // Unpack members of state&#xA;    auto&amp; av_format_ctx = state->av_format_ctx;&#xA;    auto&amp; av_codec_ctx = state->av_codec_ctx;&#xA;    auto&amp; video_stream_index = state->video_stream_index;&#xA;    auto&amp; av_packet = state->av_packet;&#xA;    auto&amp; av_frame = state->av_frame;&#xA;    &#xA;    av_seek_frame(av_format_ctx, video_stream_index, ts, AVSEEK_FLAG_BACKWARD);&#xA;&#xA;    // av_seek_frame takes effect after one frame, so I&#x27;m decoding one here&#xA;    // so that the next call to video_reader_read_frame() will give the correct&#xA;    // frame&#xA;    int response;&#xA;    while (av_read_frame(av_format_ctx, av_packet) >= 0) {&#xA;        if (av_packet->stream_index != video_stream_index) {&#xA;            av_packet_unref(av_packet);&#xA;            continue;&#xA;        }&#xA;&#xA;        response = avcodec_send_packet(av_codec_ctx, av_packet);&#xA;        if (response &lt; 0) {&#xA;            printf("Failed to decode packet: %s\n", av_make_error(response));&#xA;            return false;&#xA;        }&#xA;&#xA;        response = avcodec_receive_frame(av_codec_ctx, av_frame);&#xA;        if (response == AVERROR(EAGAIN) || response == AVERROR_EOF) {&#xA;            av_packet_unref(av_packet);&#xA;            continue;&#xA;        } else if (response &lt; 0) {&#xA;            printf("Failed to decode packet: %s\n", av_make_error(response));&#xA;            return false;&#xA;        }&#xA;&#xA;        av_packet_unref(av_packet);&#xA;        break;&#xA;    }&#xA;&#xA;    return true;&#xA;}&#xA;&#xA;void video_reader_close(VideoReaderState* state) {&#xA;    sws_freeContext(state->sws_scaler_ctx);&#xA;    avformat_close_input(&amp;state->av_format_ctx);&#xA;    avformat_free_context(state->av_format_ctx);&#xA;    av_frame_free(&amp;state->av_frame);&#xA;    av_packet_free(&amp;state->av_packet);&#xA;    avcodec_free_context(&amp;state->av_codec_ctx);&#xA;}&#xA;&#xA;</iostream>

    &#xA;

    `&#xA;This gives me the following error at the sws_scale step, during debugging. Could you please let me know what it is I could be doing wrong ?

    &#xA;

    EXC_BAD_ACCESS (code=1, address=0x910043e491224463)

    &#xA;

    I was expecting to get the RGBA array as shown in various tutorials.

    &#xA;

  • avcodec/avcodec : Deprecate AV_INPUT_BUFFER_MIN_SIZE

    17 février 2024, par Andreas Rheinhardt
    avcodec/avcodec : Deprecate AV_INPUT_BUFFER_MIN_SIZE
    

    It used to be used with preallocated packet buffers with
    the old encode API, but said API is no more and therefore
    there is no reason for this to be public any more.
    So deprecate it and use an internal replacement
    for the encoders using it as an upper bound for the
    size of their headers.

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

    • [DH] doc/APIchanges
    • [DH] libavcodec/asvenc.c
    • [DH] libavcodec/avcodec.h
    • [DH] libavcodec/encode.h
    • [DH] libavcodec/ffv1enc.c
    • [DH] libavcodec/flashsv2enc.c
    • [DH] libavcodec/gif.c
    • [DH] libavcodec/huffyuvenc.c
    • [DH] libavcodec/j2kenc.c
    • [DH] libavcodec/jpeglsenc.c
    • [DH] libavcodec/libxvid.c
    • [DH] libavcodec/ljpegenc.c
    • [DH] libavcodec/msrleenc.c
    • [DH] libavcodec/msvideo1enc.c
    • [DH] libavcodec/pngenc.c
    • [DH] libavcodec/proresenc_anatoliy.c
    • [DH] libavcodec/proresenc_kostya.c
    • [DH] libavcodec/snowenc.c
    • [DH] libavcodec/svq1enc.c
    • [DH] libavcodec/tiffenc.c
    • [DH] libavcodec/version.h
    • [DH] libavcodec/version_major.h
  • Anomalie #3517 (Nouveau) : Supporter _AUTO_BR dans les listes à puces

    28 juillet 2015, par kent1 -

    Je ressors une discussion d’il y a quelques temps sur IRC au sujet des sauts de lignes dans les puces qui ne sont pas interprétés actuellement.

    Pour ce faire, il suffit dans plugins-dist/textwheel/spip/spip-listes.php de remplacer la ligne 97 $t = $ajout . str_replace("\n", _AUTOBR."\n",$t[3]); par $t = $ajout . $t[3];

    En gros cela permettrait de traiter les sauts de lignes dans un item de liste comme <br />

    La discussion sur IRC :

    18:56:59 kent1: vous voyez un inconvénient d'ajouter le support de _AUTO_BR dans les listes à puces?
    19:01:49 _fil_: tu penses à uqoi ?
    19:03:35 denisb_mbp: ne pas avoir à utiliser le _  dans le raccourci _fil_
    19:03:44 denisb_mbp: pour "aller à la ligne"
    19:04:24 denisb_mbp: sauf que faudra quand même l'utiliser pour un double saut de ligne
    19:04:29 denisb_mbp: ...
    19:04:44 denisb_mbp: sinon y'aura confusion avec la fin de la liste
    19:04:50 denisb_mbp: hum...
    19:07:40 _fil_: et ça marche pas déjà ?
    19:17:48 kent1: ligne 98 de wheels/spip/spip-listes.php
    19:17:54 kent1: changer par $t = $ajout . str_replace("\n", _AUTOBR."\n",$t[3]);
    19:18:24 kent1: $t[3] étant le texte du contenu après la puce
    19:30:16 kent1: comme c'est fait dans paragrapher
    19:30:18 kent1: en fait
    19:33:53 kent1: "sauf que faudra quand même l'utiliser pour un double saut de ligne" denisb…
    19:34:05 kent1: pour fermer une liste on saute une ligne non?
    19:34:12 denisb_mbp: ouaip
    19:34:24 kent1: donc c'est bon ça devrait pas casser le truc
    19:34:32 kent1: puisque la découpe est faite en amont
    19:34:55 kent1: la découpe des -* texte etc etc...
    19:35:16 kent1: là on ne touche que à "texte etc etc avec des \n dedans"
    19:35:31 kent1: *vient de tester et ça marche pas mal*
    19:36:29 denisb_mbp: voui...
    19:36:48 denisb_mbp: mais \n\n sera traduit par fin de liste et pas par <p>
    19:37:23 denisb_mbp: donc pour avoir un </p><p> dans une liste faudra jongler entre \n (autobr) et _  (non marque de fin de fin de liste)
    19:37:35 denisb_mbp: mais bon...
    19:38:29 kent1: _ ne fera pas de p comme "-* blahbla….\n\n" non plus" à ce que je pense là… \n\n coupe une liste avec un </p><p> entre deux </p><ul> non?
    19:38:33 kent1: actuellement
    19:55:08 denisb_mbp: ce que je veux dire kent1 c'est que actuellement pour "passer une ligne" dans une liste il me semble bien qu'il faut utiliser un _ non ?
    19:55:20 denisb_mbp: pour forcer un retour ligne
    19:56:13 denisb_mbp: et pour forcer une ligne blanche il faut donc un double _
    19:56:19 kent1: oui c'est ça
    19:56:23 kent1: ah ok
    19:56:28 kent1: oui effectivement
    19:56:34 denisb_mbp: avec autobr, il va y avoir mélange
    19:56:45 kent1: oui possible
    19:57:00 kent1: en tout cas
    19:57:03 kent1: ça marche bien
    19:57:04 denisb_mbp: un simple clic sur enter pour aller à la ligne (un \n) mais toujours la nécessité d'un double _ pour sauter une ligne
    19:57:13 kent1: yop
    19:57:29 denisb_mbp: bref c'est pas ce qu'il y a de plus grave non plus hein !
    19:58:02 kent1: le truc c'est que maintenant les users ont l'habitude du \n => <br />
    19:58:15 kent1: enfin bref
    19:58:20 denisb_mbp: oué
    </ul>