Recherche avancée

Médias (91)

Autres articles (18)

  • Keeping control of your media in your hands

    13 avril 2011, par

    The vocabulary used on this site and around MediaSPIP in general, aims to avoid reference to Web 2.0 and the companies that profit from media-sharing.
    While using MediaSPIP, you are invited to avoid using words like "Brand", "Cloud" and "Market".
    MediaSPIP is designed to facilitate the sharing of creative media online, while allowing authors to retain complete control of their work.
    MediaSPIP aims to be accessible to as many people as possible and development is based on expanding the (...)

  • Publier sur MédiaSpip

    13 juin 2013

    Puis-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

  • Submit bugs and patches

    13 avril 2011

    Unfortunately a software is never perfect.
    If you think you have found a bug, report it using our ticket system. Please to help us to fix it by providing the following information : the browser you are using, including the exact version as precise an explanation as possible of the problem if possible, the steps taken resulting in the problem a link to the site / page in question
    If you think you have solved the bug, fill in a ticket and attach to it a corrective patch.
    You may also (...)

Sur d’autres sites (3564)

  • How to fill/calculate motion_val in FFMPEG ?

    10 février 2015, par MenuItem42

    I’m trying to get motion vectors of a mpeg video via ffmpeg (in c++).
    The problem that I have is, that motion_val along with motion_subsample_log2 and mb_type of the AVFrame class remain empty and/or aren’t initialized (debugger says 0x0) and it seems that they are only available because of compatibility reasons
    I’ve read in the ffmpeg wiki, that you can debug the motion vectors of the video via command line with

    ffmpeg -vismv pf -i input.mp4 output.mp4

    The result is that the output.mp4 has motion vector arrows. So I searched for the –vismv parameter in the code and found in libavcodec\options.c a long list of options :

    {"vismv", "visualize motion vectors (MVs)", OFFSET(debug_mv), FF_OPT_TYPE_INT, DEFAULT, 0, INT_MAX, V|D, "debug_mv"},  

    I suppose that this line affects somehow debug_mv of AVCodecContext. With this assumption I searched for further information and I found some code snippets which I thought might help.

    pAVCodecContext->debug_mv =  FF_DEBUG_VIS_MV_P_FOR | FF_DEBUG_VIS_MV_B_FOR | FF_DEBUG_MB_TYPE | FF_DEBUG_MV;

    and

    pAVCodecContext->debug |= FF_DEBUG_MV;    

    But both didn’t trigger the calculation or filling of the motion_val array.
    By the way my code is based on the code by Victor Hsieh and Jiasi Chen and this code is basically the ffmpeg sourcecode (libavcodec\mpegvideo.c). I also tried to find (also with help of the documentation) the piece of code that triggers the calculation, but because of the complexity of the code I didn’t get any results.
    The question is now, if is there any possibility to fill this variables or start the calculation of the motion vector table or is there any other alternative way to get the motion vectors of every block of the mpeg-frames.

    Edit :

    I forgot to mention my ffmpeg version

    Zeranoe’s FFmpeg version : 2014-07-08 git-14e2406

    • libavutil 52. 91.100 / 52. 91.100
    • libavcodec 55. 68.102 / 55. 68.102
    • libavformat 55. 45.100 / 55. 45.100
    • libavdevice 55. 13.101 / 55. 13.101
    • libavfilter 4. 10.100 / 4. 10.100
    • libswscale 2. 6.100 / 2. 6.100
    • libswresample 0. 19.100 / 0. 19.100
    • libpostproc 52. 3.100 / 52. 3.100

    Changed to a newer version (2.5), but it didn’t change/solve the problem.

  • Correctly Allocate And Fill Frame In FFmpeg

    14 avril 2022, par Michel Feinstein

    I am filling a Frame with a BGR image for encoding, and I am getting a memory leak. I think I got to the source of the problem but it appears to be a library issue instead. Since FFmpeg is such a mature library, I think I am misusing it and I would like to be instructed on how to do it correctly.

    



    I am allocating a Frame using :

    



    AVFrame *bgrFrame = av_frame_alloc();


    



    And later I allocate the image in the Frame using :

    



    av_image_alloc(bgrFrame->data, bgrFrame->linesize, bgrFrame->width, bgrFrame->height, AV_PIX_FMT_BGR24, 32);


    



    Then I fill the image allocated using :

    



    av_image_fill_pointers(bgrFrame->data, AV_PIX_FMT_BGR24, bgrFrame->height, originalBGRImage.data, bgrFrame->linesize);


    



    Where originalBGRImage is an OpenCV Mat.

    



    And this has a memory leak, apparently, av_image_alloc() allocates memory, and av_image_fill_pointers() also allocates memory, on the same pointers (I can see bgrFrame->data[0] changing between calls).

    



    If I call

    



    av_freep(&bgrFrame->data[0]);


    



    After av_image_alloc(), it's fine, but if I call it after av_image_fill_pointers(), the program crashes, even though bgrFrame->data[0] is not NULL, which I find very curious.

    



    Looking FFmpeg's av_image_alloc() source code, I see it calls av_image_fill_pointers() twice inside it, once allocating a buffer buff....and later in av_image_fill_pointers() source code, data[0] is substituted by the image pointer, which is (I think) the source of the memory leak, since data[0] was holding buf from the previous av_image_alloc() call.

    



    So this brings the final question : What's the correct way of filling a frame with an image ?.

    


  • Correctly Allocate And Fill Frame In FFmpeg

    24 février 2016, par mFeinstein

    I am filling a Frame with a BGR image for encoding, and I am getting a memory leak. I think I got to the source of the problem but it appears to be a library issue instead. Since FFmpeg is such a mature library, I think I am misusing it and I would like to be instructed on how to do it correctly.

    I am allocating a Frame using :

    AVFrame *bgrFrame = av_frame_alloc();

    And later I allocate the image in the Frame using :

    av_image_alloc(bgrFrame->data, bgrFrame->linesize, bgrFrame->width, bgrFrame->height, AV_PIX_FMT_BGR24, 32);

    Then I fill the image allocated using :

    av_image_fill_pointers(bgrFrame->data, AV_PIX_FMT_BGR24, bgrFrame->height, originalBGRImage.data, bgrFrame->linesize);

    Where originalBGRImage is an OpenCV Mat.

    And this has a memory leak, apparently, av_image_alloc() allocates memory, and av_image_fill_pointers() also allocates memory, on the same pointers (I can see bgrFrame->data[0] changing between calls).

    If I call

    av_freep(&bgrFrame->data[0]);

    After av_image_alloc(), it’s fine, but if I call it after av_image_fill_pointers(), the program crashes, even though bgrFrame->data[0] is not NULL, which I find very curious.

    Looking FFmpeg’s av_image_alloc() source code, I see it calls av_image_fill_pointers() twice inside it, once allocating a buffer buff....and later in av_image_fill_pointers() source code, data[0] is substituted by the image pointer, which is (I think) the source of the memory leak, since data[0] was holding buf from the previous av_image_alloc() call.

    So this brings the final question : What’s the correct way of filling a frame with an image ?.