Recherche avancée

Médias (1)

Mot : - Tags -/illustrator

Autres articles (62)

  • Les vidéos

    21 avril 2011, par

    Comme les documents de type "audio", Mediaspip affiche dans la mesure du possible les vidéos grâce à la balise html5 .
    Un des inconvénients de cette balise est qu’elle n’est pas reconnue correctement par certains navigateurs (Internet Explorer pour ne pas le nommer) et que chaque navigateur ne gère en natif que certains formats de vidéos.
    Son avantage principal quant à lui est de bénéficier de la prise en charge native de vidéos dans les navigateur et donc de se passer de l’utilisation de Flash et (...)

  • Gestion des droits de création et d’édition des objets

    8 février 2011, par

    Par défaut, beaucoup de fonctionnalités sont limitées aux administrateurs mais restent configurables indépendamment pour modifier leur statut minimal d’utilisation notamment : la rédaction de contenus sur le site modifiables dans la gestion des templates de formulaires ; l’ajout de notes aux articles ; l’ajout de légendes et d’annotations sur les images ;

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

Sur d’autres sites (7785)

  • ffmpeg h264_amf error : CreateComponent(AMFVideoEncoderVCE_AVC) failed with error 10

    18 septembre 2023, par Poiter

    Trying to transcode a video on a Azure VM with Windows 2019 and with a AMD Radeon instinct MI25 GPU gives this error :

    


    


    CreateComponent(AMFVideoEncoderVCE_AVC) failed with error 10

    


    


    Command used : ffmpeg -i input.mp4 -c:v h264_amf output.mp4

    


    (ffmpeg is compiled with h264_amf support)

    


    I could not find any info on this specific error. Any ideas ?

    


  • ffmpeg takes screenshots all at once

    19 décembre 2020, par oo92

    I am trying to use ffmpeg to grab screenshots of twitch streams. This is my command :

    


    ffmpeg -i https://stream-link.m3u8 
-ss 30 
-frames:v 10 
-r 1
-f 
image2 
/home/me/Desktop/images/image-dataset/my-dataset/World-of-Warcraft/filename.jpg&


    


    My goal is to take 1 screenshot per second for a total of 10 screenshots. I've added the & at the end of the filename.jpg to take these screenshots concurrently. However, the screenshots I get are all the same thing. No difference. The exact spitting moment in all 10 images. My take is that ffmpeg is not listening to -frames:v 10 and instead takes 10 screenshots all at once.

    


    I tried to run it sequentially and the same problem happened. So the issue isn't concurrency..

    


    Is there a way I can fix this ?

    


    Output :

    


    ffmpeg version 4.1.3-0ppa1~18.04 Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 7 (Ubuntu 7.3.0-27ubuntu1~18.04)
  configuration: --prefix=/usr --extra-version='0ppa1~18.04' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-nonfree --enable-libfdk-aac --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
  libavutil      56. 22.100 / 56. 22.100
  libavcodec     58. 35.100 / 58. 35.100
  libavformat    58. 20.100 / 58. 20.100
  libavdevice    58.  5.100 / 58.  5.100
  libavfilter     7. 40.101 /  7. 40.101
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  3.100 /  5.  3.100
  libswresample   3.  3.100 /  3.  3.100
  libpostproc    55.  3.100 / 55.  3.100
[https @ 0x560f4b435740] Opening 'https://video-edge-c2b56c.yto01.abs.hls.ttvnw.net/v1/segment/CvEEnTLMdXdKmicT1KsEeYg1j5_ppzV6USTh15nprTzVGZJwL0MnMggHmPmKVCVuec2AugqeIOO45aJMEiH7dUQH1yME6GtL5yH3YDONOR-lj-un-kd99iQtu_DePSfgU47MbqXvI3iw1JKfhgAZVMPQYv_OrwIvXlYdFBTpRQZpFUPVa8dlISmsaT_ypAGJwZYEfcmhN9Ar-yLcPyhTEt4NsP5wzshGwq3IgwY6givcSiKeHRAQ6RzyyYO2ZmnnWXavHM1McEmCbpMk55UU9-NXmtfMPE7Q0jOrkHfPqD8qr4t3-tzRUbNhO7PXa6DgsQRAYICiRxZ0aq5vGIHZD75mOVcl2t9AVNS6R2z5KpvjT24rryxb5mEvebzlq_QMHw83GJtbXv4eCmUnxVObI3idGbYbYkInccc07Yv6oOlUYg804gA6abt_jLFP9jC0tiBjEJIwwb0NJAeuX1YE-b-nL2-qlDWeHY_ZtOvZFCcaeiL-3j2FXIW-mn90bccZMHy1vb1V2tFJEOs5C7YjJ57jh4exm01PGp9ErfFDz--oGc5ZZgvLas3nWz6Imox6yYt0NQ7rZtXyA_6PWtuJBXcqGF7Q5OT4-Eg_m20lc2XuK-hzEZIWU_Pofm33-mXvtjNtXg_e-fkJzIUr4VDNx59cJpbEhS8DhWkqKZgAvQ39rahnpXEkRwt6Se8LH8X4zUU_Fx0k4ApDSGoJGPOJIWlnd8jp_c_8ELQB3lsqx58ppCkiqWtEIZqnkERMNdVJMOPfiJO-wFcStxw214rGr1UgPn-23LlBDOTU7dUnPgN2AYHnL7eggyTliBxGxizGcTjtjRIQpNzpVE-1SqRZ9wgremNhGhoMwxLy-8hlWMju1_Jt.ts' for reading
[https @ 0x55a8b4055d80] Opening 'https://video-weaver.yto01.hls.ttvnw.net/v1/playlist/CvoDrRxumiLM_XBX6zGlLKqZTlxcWMGRJwMy5c0gn038EHoSxU9uBxeTnSk7l8iZ3NDmmtNp2hexUJYQbXh06ClRvm8Vz41PPd2N-k-5GKNIse6MrFrNloxt7p9nEXdXx-8Dw2TofURJX0PloMSiGci_hCnrDJ38BdWg_78f8WFYjZrm5TYnVSDgZw37cFG8FeBJJV2PxF7gEGltrKs7MQ5kbDApHrRFSrYVkbvACCuxbSKZyRB7I6NmKrGVwBZfGLqh9vMXw0_jJAU21qPB9ku459OibJS4JDBTVt4l2MlASp8dhcbTICmLnEBBOIDe7RciSSpqYhq4Hil8TMunMRFc2UdDJS3GjXtw0BApLZMxOf-EXhHJf5f6-ALKEW7FRPsO6JCYQGpspLq2snUKuWqj9UBcLHnGjjY5cUHjvui81aalyz5fcDZK-pxUFhCZucpOxCDDYhfSLABqmM3eIentP8hlcwZg0ydy419Tj2lqI08ug9PUFBlMJWWcuwck5uIGIOshQVNEDIXJt_PJKao5dSgMGZzsIEUPi6Rlf2yUk7z-adjtADJjOzBzNV6QKtS00BiFTvbbYjiLydJffAEgeerVOG0_tkHZopfYmpJsp43Sr-hXTAk2cYSMIN__NqO7qAJzTF1rWXkeAo3wuWPz2mICJOSdq6SfSL0SEKb7mHVzjUerNSPqt7ZHWBYaDAeIk7sXJ_-6ZP1wyQ.m3u8' for reading
[hls,applehttp @ 0x5559d4ab0940] Opening 'https://video-edge-c2ab34.yto01.abs.hls.ttvnw.net/v1/segment/CtwE4wYV6Jd9ji9SF4DQupaPzeu0nawqExYayXT0VS3D-AgoiiuciSxoAUXEKj1TsevSSJHWs3AdkMaTZs_rYrXkKhvA8xgq_Ojp7MmrYrgDZi_vZSfoIWBLdpNN8RN8ISUtPOXWpRM8hZvgQOI00EKSlvcZoJ44OoZfvVQaN16IkjiP1K7TdrbiG_W43yYo8W3wrprTrI-gSK0yQdDYK58ROKuXwsWra6zJp1DTJLTV8L4u3ClJoDlBaoYSMEwnEVs_p7gBpNw9rn66mqtsGn_vCMBfoqrsUfCEem7cFvC3ph1iqfubbIc5LSkRdHekoYHDualvn-ScmkCBLMXn6U4SeFdSRrElMz2mgJM0t7DA6PEzz_SEh1harsM19_Z9REoIwWr1tzHWFU4WgTWrDbylsV2i11rBqAHWlk5_V8fP4CIFhiWyfxp8G_j1nmy1z-tC8Ttln6KkMFcGlvWR6tsPr4hUtPvrY6m05FMYfsmvDJVJhW8fFAppcVfPyGFMqQ6GRPo0CMrENqkIENTvMjQJt2GEyw8GOECucYWIbuhCOLLW0dyz-iJlVNYvObeGue18U79sneEAkjoxJuxDI61r5hOMwf3HXpSIUpk2sOzfjcded4KbvMjgIQxK9M-2qnmTkyfV756rGaT_9SrugKiZUdh_vOy9lDwFPN2GYq6P6Vcy4HKpM0ZCR2AMTe3PFXreDraCzfrmzwRULBG9AiNxs-JhYJ3_w-OSBhzbINJng-PwFnL9Dsm87NIYvc_CRUWT5jkJHws8BpzSJtZCXcZ3XgYGDe49balTzhB8VBIQIFWcbgO26YM0po0CxgZLiBoMoN25nK5P9U3FecXL.ts' for reading
[https @ 0x5602e5468a40] Opening 'https://video-weaver.yto01.hls.ttvnw.net/v1/playlist/Cv0DvhMhaY8nQyvgCVb8Knpnq4LS_QdntEu9nstdrurt6Vtc57dIoii04-Kau7quO62wCXKso-x4719ws7inztepZcc7sWrfbDuDCqL_D41hxTa1fJnZp8bdtEPU7dKIk7coJvUw7foVkVkoA6KkZF5BTSpzOL-9BAWdsIFAZ82dC9LziZCno-7j4_77jbCfSOdZdliNsHjwJkbeal9sp-JJB7sesAvRhT8Jdb6-6m_I1kOawK_NxzS4NBP7SlXD5wSNnSD_Y9TvInwhqC1Q09EqcpYP3JmDZwVTX0ld7vzcW2jsiLA48EOv62ji2Q99PdosWX23ZTH335v1AdQ0iX2nX4G0rNMdGJ5dYzAUezfiH0gFaIiQJmBo1WlFh45BrOqlB4VMQuhDZ47hJTHDOv2qcn9PmvO6N6ENj5A5FJuRbvjVfe7mUrNjaKfb5za7qmQ1usdRhxxl7srRF_Y1fnMLfIMuQw1gMRQAkISYP1Ism4pv4blEu-5td3C2JteGadUaczx8ZLSnWTJQwTJ_o8PzzYaVW900EU0kZuiQ6RgdpJmc3UYrLQ-OUxoudkt4GgjuoSHl8qCiP8nIwSvXnbGg1CH_mCBv_kiuWygbLrY9YVGz3wS67Dn7D6hNJ1tKmK4FP2I5UKasBX4qvqdGAnMhKKqbsITunYuSqgeGNxoSEEuS_9Sp0pxjnKpSOikkMZQaDL8_ZLSngkCEdWFBsg.m3u8' for reading
[https @ 0x561509d623c0] Opening 'https://video-edge-c2b644.yto01.abs.hls.ttvnw.net/v1/segment/Cu8ENRC9AI5iVzpgoEk2vmbOSFnED42oE5UOg4w4bYv_9bGEfbiubVy80d6REOQe0pV8xCdDMNxUGEpzMh_utuxCuvoCDIA5GwCPBI-wNINQ0yaERpzyMLzLzI8X5Qw6ps2MO_G5FeX08aPup3-ngBd-yGSZDzuQgBvMoxGI3ANZ-VEy-EmHZx5P7MbpYQUZ7jXO5ZzMZH5dcc2fCtU8Fhn3rudz2Z17a7PISmdN7IqGpWIgk2XZ7k0RG4Xq71wNZzfiKu78MAs-DkdBa0L3fBvIqFNS47tEU7YJ257Dk4K4tHnoMmVprTpleM5HdkBs9b6KA9n8YOfMSi3SLLaA49fixyoYlAGPu5lXSDflXKc4ffChFnPOUHz0Pcb-hHwiYy7KJtMG_ItInI_LZt3Q-qiKOnO_PFTkBjKUjYoZyRvvD8yb2gd8BbwaF7xpOG206QO_nNASoWyqDk7B4fyyARVUD84pPuo3E06FjYDeioH2FhGU0Yyd8MXhWTawa5KKgA0TqoP9Dt_TRz9xHuPFMJWBo39GuDGqofa0yCriDsPZQJg4evm49d-1yAd4NePMmHuC3mY76ojx9Tc4zW3tSo1c-8FdGoy20X4DK911JgMZZcAjj3fbudnk1Gpg52qixw2PTo_81xj6dO6r0EOddK9o-BDDQ9u-MoRVtodGOmdtjNlurC4nXYjyJxomkqgBSh3RrYcc0ZotEYPbBN6oW2HjOLCMtkajuvov_Z78wnO_0-VTn6Z4QIJHhzhFdwpRv7sBrwCQoZJf12lg9mTyDvn-zvmYpEqlpSx2zUAZJf1RY1nHVpSjsWgKb47sVZHPnpMSEHa5MFbY5k0uJLxysEuJjCQaDEvCUfXIcwtNL3l9JA.ts' for reading
    Last message repeated 1 times
[https @ 0x55ce2ebdf1c0] Opening 'https://video-edge-c2a4ec.yto01.abs.hls.ttvnw.net/v1/segment/CtUEspzXywhKD--is2mZ6lL0j5XqcvMtesaiCc06h1S2IcnmlUxRP1Rg9qT-wcqbftcpAr5DqtE0o-qFAr-bxrl8TRjAbNT-2qzZ7BJLAXQ-Q6Pl5Otv1haFvbdYN7H7Dok0SFJoE7rKXIwXyTy_KIIp7AsBdvlLN2vxG-mc-v1SynWjaXQ-ehgiG_5Tde_dVQo9wWBA44SuM7yGh-eQwl4KoM7R6XrwdZ2-xnsw-9cVsZvZNpcBAIJecAUqHcSkNsjTy3UGtN2lJHM-Ryfy9oT4Q-fOnuWj98DqkWIVVGvM3pHdN6RXWpc7GG-zCbuE-4EohTGfgCwvWeWPps4HDpOuJjwOYTRuBe6SnN6TT-nT-c5-QaZHhnKulixMLjzDQQD-MJGYKjFhv7DwfWL183RYOh20PirZnmMxxfbDmZC8PFHGOKqZ5K-1Fnsm6PyHtNOutlB6-kENTuXIEpYMrD30AV2LKFctHb3a_HY3lkAPqCbeYCtP2GZn6sV9cnPNZqN1YReu0BPvcVvMxM2tLo-iYl2dVksTho1QfIHZY7HYhYfUXk5Z_lw6M3XSgCFwC853tfbEIdPF2grF9FsJJzxhiIwl83rxsRAKRSNa2ikYYKzwOyQ0O4i-gcCXhAe-OrO9ZM8kd5OcVAe8XMWwRdEwYg0qTrerebQzoSm2Xy88cL0unGDZhZWRWxLjxNWAfLOYPT5Kp2QKK44YkwdKJxWgXTAXiNe2u89StyfyeFxHHdVrh77W-jLHKtOJs_TqtYVavu8-i_ltjstw_Q64kckKMFXCKBlSEhCCynQIIIrDLZki-ratekOHGgwhQO0qQG1pCWiaesQ.ts' for reading
[https @ 0x5602e4b9e1c0] Opening 'https://video-edge-c2b1f4.yto01.abs.hls.ttvnw.net/v1/segment/CsMEmSWiHUi9qiWeeVziTCwieY_8ABpoaUI2uCB_Y48jHDMEB9OH_mmlfnR9-gHHPyF6dZCdtj4xqgCrgu3Rx4GtZ5UWEPd1VPv-WBUPL-YxskwN7ZpwwiJ-OT_8A5ty6K3s57s0piPK97044lYfE_sKJtelKHix26WOr6qcbkt2voyPWRH_jok7eQuG-y2xfJOmIu5-1TqIaG0IepiqVvfDAaAReHOu_jId0roBGse2q6vcWMrB4MX6TCH3foLxm_1XcQnD4G4mwRN1BdSbhdOKkOv93kf8u-KYS1wCTb_vz05EBmINqZbtOYgkWd0NRuRyMwVg8pnI7qMQZzO-NZuxmAIRR1aEZvaciughFgcGgJzczkqQ8lo_5m8MMzojjuUbPvwUAOynjmpKBPTpry2Fp1O4R-vPQJUqrPvIRMwTFevQVg_mcqAVSoH2uKprkatLWJs_Km9WBR3pDkcGK8J_foVe0Sk-2N4X-IUzBRpKt6RZltl_SF5hzX2ciZoMQdlZN0srlcZg8oiW5B8ou0liBPD_fLoVxj0PG9cj5j9cEWxkDdwx54u0hE0fW-HKk5CXcIuXpD93iruqdLyG6tcPyp247S1rJ0XSq0GwEmAqZSY5s-YIGu5o2HZuQmL214HgnCN1plLZqZ4zdFJHSW9t61C3_tM_-IiFrQ1_BIltiqYsPTW_EFmaNvty9FvHQFx0XdGbBq1bv9pp6Bj_EtT0qukTSkEH8EBDhJGYFYWDfvG7Tn2-zW2HXIIarIgR7xRscE4fEhCVgyfim5444ACROhoPPx_rGgwlXw1up2iUzAYgbaw.ts' for reading
[https @ 0x5602e4b3b9c0] Opening 'https://video-edge-c2b1f4.yto01.abs.hls.ttvnw.net/v1/segment/CvIEWgSaqH8uzWG7t10EwAuefWhmLnNnXtN7Pw6-8eiisUARX4pH-v1I3oLUhOukV3svmhCp1XxQN-UkZx8_m6sjxa3ntRmA6ImIDlbBEVuxZ4lGSMlw4G-cuC44L9xlgCjMSTZcEZa6WYCBRToWx6g2AaA2u3Gf8rZ0JpFmWAee8X0K2s9OH1CcQvfR1RofszXRu4aQSd-v6cniMyIpPpjAZixHLQf_Adyf9Iuvws8ybtiV2llhT6x8dRvvh6S5n2XzlsxC9sihjOnNc_dhav4jlSeHHUJPqh36n0Ea-asPjzNBOCJrnNxLcNgItgeI6qVs9iD8shU50RlLoBNtgNycRy_ZgQ6vBR0k9hApi02qb1BKFOhIsWGvCi7NSknqnr3vhObWvl-fIGWKRNAsU7uc9aZet2btaUb900j2Vaau-77AlbvnyAqpL0Di2KR9ybHDNpUZsVzZh-reW3uKu-pAkIEKkzI5rDP7-H9QaK73nnB3XuSK_H-x_WF7qrcgAd_0XTqcrnEtPLDzD_2H4aZxdglqDQyxanhq3cFXf-qa0ux3ZilLQMBkzjZlFsNOT8ms9kfpC7HG7B_h7AIiDnu8EoIDKBQlxfzYG6ruQACGZoVFE3MiYEqgnpFzKsAWx1jujCV_h5Jogv4kxnrvzDtzwxWXsyrwo3gUTeTrEu62Mge6T9GRGE8Ny7q7L8Ng5d0FDAM1mSDFsuwaleGQDndIMa3J6TODcfI4gL1Tu1aEUSen1gWSRcUy1uQyQQ9zJSmc7Uaw8uMLyP3BzadJm51c3MoNTzLBsvktjhd3B2KHbWY1lXEh2AHA16VGWXpq7CD0ELMSEN1fF4x7RWpFxubjbxVNVv4aDCwwPCpEeEggW8Rfpw.ts' for reading
[hls,applehttp @ 0x5559d4ab0940] Opening 'https://video-edge-c2ab34.yto01.abs.hls.ttvnw.net/v1/segment/Ct4EMOLp6yFfEv2tgPtzLuzFmDFWtPkvqlBMyma5AlNsAFNWM3-m0d5Wm_DmdvMETEeVjPcGk1XEOcnfkHTFnGKsPn9rmqNNyWmXQp8jH1k5LGjiHTYVO8pa-6CuCMb16fGy9Fp1Xm0nXqLe4ZL0Fs6EV1-U2UfVyOqNFjcvwoAiE9cQyBUxmj9h1Tlo5kHsVd1TxtYRrHZs3sQepHkwLIDVSThuy-RKU-9oARCTfOP6USEgDpxkbWjtB-DGTUorX8x95mlCLwDMkmkM2-m9pUYdeP-PslZV1-IJPOVv4-G97PsV-TqQy1szQh_k9jiQzp_Bu8wB5RrVqdpMqli5YRMoqOmGCQo0i41g8y1Y-JZVF3JmK7G2SJ7MgdLEFaEaUBNz4XW6aGV1kL16E3PMRKqaYKoS21vwQP0E808fYr_0KrUhpQzzxPHKMKNmhX63S3O80FcH3GVmzlm0dXdVSEXV1TepsZG5NHqR7xgQt_WsjV21EuWCzGTpbrqMfCIH0nrlyowYpZm1ew3qREq1SfKPt4TophGYJRHjMD7B5loycfp2XjCyDmOX6cTc8RK7lQg1F6uukU_aW_Z8hbBuVbY8sqroms8ajmZETP3uo9VG6JFoJaNxDfMtplI10JMFHbBp0VZdRtaxxaPCQ3BBmWgl8vLckHjcY44JE_PDALwIHkQqecZo2GQoz2NhymilntSt_VFMm3Ib6yF_fujjwtafU7Xh5Cf9MBnk-IYHg2WZYLESPVB2Ia8jhkqFiHgYR0YLLLl_mflwBh6mFzSozfT4mw4_FK_esvspE1Zq80CEEhDxl0J0i39gKAbxRh87tVrkGgy0aNClJH41Wuni7yE.ts' for reading
[https @ 0x560f4b3d29c0] Opening 'https://video-edge-c2b56c.yto01.abs.hls.ttvnw.net/v1/segment/CsUEh-QaugK4bHVvi-wL8bzgE5-MsFiYcWoTXcwI-gzFEPycSDGrrqCPSAyov1gQsy2KYKm6Odcenh_UHBDJgG0dfHGOB9izlOatI3dONn14Z5BzKoZ84JntuWvM6ZfbaCRHZQFvHDJLwUAB_RZweqDHLnCwZr52Ma--xNhWaPoHfBBz_fGb23iSRFigxMjPEe-48lpQaF-XD9UPwjNx9Jkn6d0xNto7yCkLnPHVAMc08rI6ciMMFvU3Ul2p64VBhCzQhmweVuMmymRsw92BCEk3gAUYL7i_cYbJk1ws9kI6OHJlrZJmSgELoM7Zr6HKTxyWRsS0CfPqEUz0ZNgkxULIj9pjcPmuTZOWPtRhRGl1T0xZzo-OMcTOaVLV88rpiSVugoBVD8gBLCOxfAp0vBrS4_4daWeS_9RpmkKnwwfJk2yr6vvty2lEMKRE7oTDqy_ldgPequXbA89hX29SX8rxqUQr8OTtS89J5nhgPVQ3U6kcXsAMY1wGfZWMK2x2OO7drkKby3W2enhmMTcSzki7h2gJGVVSsfhs0OH2brSM0GCsYyJXMog_6bdP_CnusgyE2_aDW6sWCp-EZuKxSsLnTJohcNzlSqAxmR-xEMZwESiH_kUs1G-4rWZYgn2-fDAcRx8sSUkcmXKHlf-cU4WRa6KMi6XWi14ag_u4QeovJH5CB5kLnLmW0SyERfvwYlNOrsx5pD4AV_Rs3ENQU0S3pLkF0yhP8yZRwwhaAgcmfZQd2r0q_idRWFNl91pV_mJjp9tXgoYSEIWei-BAQVPqD4MP5qlkY4IaDGIUgwHWb2hkYmELMw.ts' for reading
http://twitch.tv/fleeceking
Input #0, hls,applehttp, from 'https://video-weaver.yto01.hls.ttvnw.net/v1/playlist/CuwDB7kg-rOx72I_T4TigQrbopLHvPc81zIoRat4x_gQcFkNXwclpj4t85zVFcLvU1InuO74I__WzB0KJjTt-5Zz0-tYb4sjEKTP_KvAbYVJQlEdWoYLqI8qiQatuZ1xR452s0-SNKWZNElN-lQmsf6v0woji7tmMrTcNCbD5lkeUGbZGHREtJyY5POK7fjEQ7sBTXxdU3zZSOTXemXHa0OMMzkOJ4NDnebAbpS9VIwG5Rmp8YFwGgwnA3qzF3dOulpeMHcdfUzuaiv96ySbnCoC3tdDWx3J7f862vMQ1O6yUbMiIa6n3id0xUr6oU63zM2QvxHYJAGZPvaXHEjwV4W8QX3db5RHHfPDVUOyQm8MKVsPlpt9nGhZ_4fPggOfBtJhuFS1apLRduVVu2w3jcoKbtubgwCUKBMQ5TS4cjQs52Ii83tPtZRVrmThN6MPlLlmwh_1CUS0qxZBlrpxLjGJjTfJJGTXLlR3DeO4J-5jNQq4yH3gzbKpmG1GwlQA9ulbBm2oexGUw03UCLjsroh32vyZbM7yDux9_w0v0FoXp8oo-beCssfLdS4OPkMe1lb40k42bDjB-FhwuI5ssd9GmXu1cjNen9GzbQI0HegaxOpZy54FZa3K1HB0TZbWsKIZ06F9rUlDbEF5Dt5xEhC2FzGsH16e1iZMLqrjwH3KGgy31QJgMBmysrogh4A.m3u8':
  Duration: N/A, start: 60.000000, bitrate: N/A
  Program 0 
    Metadata:
      variant_bitrate : 0
    Stream #0:0: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, stereo, fltp
    Metadata:
      variant_bitrate : 0
    Stream #0:1: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p(tv, unknown/bt709/unknown), 1920x1080, 29.97 tbr, 90k tbn, 2k tbc
    Metadata:
      variant_bitrate : 0
    Stream #0:2: Data: timed_id3 (ID3  / 0x20334449)
    Metadata:
      variant_bitrate : 0
Stream mapping:
  Stream #0:1 -> #0:0 (h264 (native) -> mjpeg (native))
Press [q] to stop, [?] for help
ffmpeg version 4.1.3-0ppa1~18.04 Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 7 (Ubuntu 7.3.0-27ubuntu1~18.04)
  configuration: --prefix=/usr --extra-version='0ppa1~18.04' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-nonfree --enable-libfdk-aac --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
  libavutil      56. 22.100 / 56. 22.100
  libavcodec     58. 35.100 / 58. 35.100
  libavformat    58. 20.100 / 58. 20.100
  libavdevice    58.  5.100 / 58.  5.100
  libavfilter     7. 40.101 /  7. 40.101
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  3.100 /  5.  3.100
  libswresample   3.  3.100 /  3.  3.100
  libpostproc    55.  3.100 / 55.  3.100
[swscaler @ 0x55ce30ae93c0] deprecated pixel format used, make sure you did set range correctly
[swscaler @ 0x5559d60827c0] deprecated pixel format used, make sure you did set range correctly
Output #0, image2, to '/home/onur/Desktop/stream-hatchet/streamhatchet-logorec/logorec-dataset/Hearthstone/39909606413_1608336776_%03d.jpg':
  Metadata:
    encoder         : Lavf58.20.100
    Stream #0:0: Video: mjpeg, yuvj420p(pc), 1920x1080, q=2-31, 200 kb/s, 0.50 fps, 0.50 tbn, 0.50 tbc
    Metadata:
      variant_bitrate : 0
      encoder         : Lavc58.35.100 mjpeg
    Side data:
      cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1
frame=   10 fps=0.7 q=15.9 Lsize=N/A time=00:00:20.00 bitrate=N/A dup=10 drop=1 speed=1.36x    
video:1108kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
[hls,applehttp @ 0x55cf64902940] Opening 'https://video-edge-c2b1ac.yto01.abs.hls.ttvnw.net/v1/segment/CuwEUt6AwX7y0HJIK0gOgU5pOMXzfQyF3Pc26fGLIUKOngj0g1IFk_XeZucFgCMpYYYDlwf7lEN_XzEnaUN5-9qXva6W4DHtPAlRgWK73aytjJWh82d4qhfMVdqwiwdtHkNBU1WhEeVbWtaAkTcMbXMeghf8WFdcGmHXs2ZGgexZxMS7VVxS39WETlXWLDd7MFxXIu-9upX2NRiu4CXW-XKK4OIMJ86lFy1VARNMG9JUPMGFCZsoNOh5dNe8uFNAnBub1KPP30z3va-IrmhDBi49Ab7pcYhhnXkLUoSwETFq_ZdTHbPLLxR21kXxR6KrWEPrHFPH4xW-zfiNGDmzNS9s91mSDj4UiqhwU00jThtmSBjOlfJzXeKuE80GfnfBneYpsMpSmPQj8mN_xQ771-aQBPlnL3XUdMFk-pVvjaiFUPOnqRiLsU6wuKldwSPhEntkmufP8VgtFYZOWDDlD4-s0tgHC8tu5eKf9zaQLIe_lmKv6lOgwaO2XJsqERijJQ1wOwq9otQYF4kBRp_I-yaJS3azB0JDqFrEZvRAQqP9xtiEzkeJWBvFrwsneuKdMNMX8IXqSA1pM0zyJ_kd4IfZMdl5-4Hs7bzLgyqPlbphh2bkOQ7OnIXt1Hx7P4MkucOvFcWVA0jf89BGMGzrGKqjmIRuLtyM1wRVxWFXj3EakEIIx3yQoqCrd_WBAN-V5Xn4gvRn1MKyn_xQCFrpw4kO7eIYRFzO63askrPWo3GqyMPR5CYq0x8KuydUVlI19BzUCGiWoAlQhqLWAjG34EtIwlWhTaDRWVzUnmsG2S5XYFGCDWyCnAIZaRih3iwSEF7dzzIbAkAaukPxE1UWqNIaDFdi5FCo6z74AhwmPQ.ts' for reading
[https @ 0x5602e545fac0] Opening 'https://video-weaver.yto01.hls.ttvnw.net/v1/playlist/Cv0DvhMhaY8nQyvgCVb8Knpnq4LS_QdntEu9nstdrurt6Vtc57dIoii04-Kau7quO62wCXKso-x4719ws7inztepZcc7sWrfbDuDCqL_D41hxTa1fJnZp8bdtEPU7dKIk7coJvUw7foVkVkoA6KkZF5BTSpzOL-9BAWdsIFAZ82dC9LziZCno-7j4_77jbCfSOdZdliNsHjwJkbeal9sp-JJB7sesAvRhT8Jdb6-6m_I1kOawK_NxzS4NBP7SlXD5wSNnSD_Y9TvInwhqC1Q09EqcpYP3JmDZwVTX0ld7vzcW2jsiLA48EOv62ji2Q99PdosWX23ZTH335v1AdQ0iX2nX4G0rNMdGJ5dYzAUezfiH0gFaIiQJmBo1WlFh45BrOqlB4VMQuhDZ47hJTHDOv2qcn9PmvO6N6ENj5A5FJuRbvjVfe7mUrNjaKfb5za7qmQ1usdRhxxl7srRF_Y1fnMLfIMuQw1gMRQAkISYP1Ism4pv4blEu-5td3C2JteGadUaczx8ZLSnWTJQwTJ_o8PzzYaVW900EU0kZuiQ6RgdpJmc3UYrLQ-OUxoudkt4GgjuoSHl8qCiP8nIwSvXnbGg1CH_mCBv_kiuWygbLrY9YVGz3wS67Dn7D6hNJ1tKmK4FP2I5UKasBX4qvqdGAnMhKKqbsITunYuSqgeGNxoSEEuS_9Sp0pxjnKpSOikkMZQaDL8_ZLSngkCEdWFBsg.m3u8' for reading
frame=    0 fps=0.0 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x  


    


  • FFMPEG build on Windows using MSVC - make fails

    28 août 2024, par Maya Sela

    I am trying to build FFMPEG on Windows with MSVC. I am following this guide.
    
I have managed to setup the environment in order to configure successfully, but make doesn't work.
    
From VS2013 x64 Native Tools Command Prompt I run

    


    msys2_shell.cmd -use-full-path


    


    and from msys2_shell.cmd I go to the ffmpeg folder and run

    


    mingw32-make


    


    which outputs :

    


    awk: cmd. line:1:                                                                                                        ^ syntax error
awk: cmd. line:1: /including/ { sub(/^.*file: */, ""); gsub(/\/, "/"); if (!match($0, / /)) print "libavdevice/alldevices.o:", $0 }
awk: cmd. line:1:                                                                                                           ^ unterminated string
ffbuild/common.mak:67: recipe for target 'libavdevice/alldevices.o' failed
mingw32-make: *** [libavdevice/alldevices.o] Error 1


    


    Some more info :

    


    $ mingw32-make --version
GNU Make 3.82.90
Built for i686-pc-mingw32
Copyright (C) 1988-2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later /gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.


    


    FFMPEG snapshot version N-100459-ga7f9b3b
    
The Makefile :

    


    MAIN_MAKEFILE=1
include ffbuild/config.mak

vpath %.c    $(SRC_PATH)
vpath %.cpp  $(SRC_PATH)
vpath %.h    $(SRC_PATH)
vpath %.inc  $(SRC_PATH)
vpath %.m    $(SRC_PATH)
vpath %.S    $(SRC_PATH)
vpath %.asm  $(SRC_PATH)
vpath %.rc   $(SRC_PATH)
vpath %.v    $(SRC_PATH)
vpath %.texi $(SRC_PATH)
vpath %.cu   $(SRC_PATH)
vpath %.ptx  $(SRC_PATH)
vpath %/fate_config.sh.template $(SRC_PATH)

TESTTOOLS   = audiogen videogen rotozoom tiny_psnr tiny_ssim base64 audiomatch
HOSTPROGS  := $(TESTTOOLS:%=tests/%) doc/print_options

# $(FFLIBS-yes) needs to be in linking order
FFLIBS-$(CONFIG_AVDEVICE)   += avdevice
FFLIBS-$(CONFIG_AVFILTER)   += avfilter
FFLIBS-$(CONFIG_AVFORMAT)   += avformat
FFLIBS-$(CONFIG_AVCODEC)    += avcodec
FFLIBS-$(CONFIG_AVRESAMPLE) += avresample
FFLIBS-$(CONFIG_POSTPROC)   += postproc
FFLIBS-$(CONFIG_SWRESAMPLE) += swresample
FFLIBS-$(CONFIG_SWSCALE)    += swscale

FFLIBS := avutil

DATA_FILES := $(wildcard $(SRC_PATH)/presets/*.ffpreset) $(SRC_PATH)/doc/ffprobe.xsd

SKIPHEADERS = compat/w32pthreads.h

# first so "all" becomes default target
all: all-yes

include $(SRC_PATH)/tools/Makefile
include $(SRC_PATH)/ffbuild/common.mak

FF_EXTRALIBS := $(FFEXTRALIBS)
FF_DEP_LIBS  := $(DEP_LIBS)
FF_STATIC_DEP_LIBS := $(STATIC_DEP_LIBS)

$(TOOLS): %$(EXESUF): %.o
    $(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(EXTRALIBS-$(*F)) $(EXTRALIBS) $(ELIBS)

target_dec_%_fuzzer$(EXESUF): target_dec_%_fuzzer.o $(FF_DEP_LIBS)
    $(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH)

tools/target_bsf_%_fuzzer$(EXESUF): tools/target_bsf_%_fuzzer.o $(FF_DEP_LIBS)
    $(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH)

target_dem_%_fuzzer$(EXESUF): target_dem_%_fuzzer.o $(FF_DEP_LIBS)
    $(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH)

tools/target_dem_fuzzer$(EXESUF): tools/target_dem_fuzzer.o $(FF_DEP_LIBS)
    $(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH)

tools/target_io_dem_fuzzer$(EXESUF): tools/target_io_dem_fuzzer.o $(FF_DEP_LIBS)
    $(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH)


tools/enum_options$(EXESUF): ELIBS = $(FF_EXTRALIBS)
tools/enum_options$(EXESUF): $(FF_DEP_LIBS)
tools/sofa2wavs$(EXESUF): ELIBS = $(FF_EXTRALIBS)
tools/uncoded_frame$(EXESUF): $(FF_DEP_LIBS)
tools/uncoded_frame$(EXESUF): ELIBS = $(FF_EXTRALIBS)
tools/target_dec_%_fuzzer$(EXESUF): $(FF_DEP_LIBS)
tools/target_dem_%_fuzzer$(EXESUF): $(FF_DEP_LIBS)

CONFIGURABLE_COMPONENTS =                                           \
    $(wildcard $(FFLIBS:%=$(SRC_PATH)/lib%/all*.c))                 \
    $(SRC_PATH)/libavcodec/bitstream_filters.c                      \
    $(SRC_PATH)/libavcodec/parsers.c                                \
    $(SRC_PATH)/libavformat/protocols.c                             \

config.h: ffbuild/.config
ffbuild/.config: $(CONFIGURABLE_COMPONENTS)
    @-tput bold 2>/dev/null
    @-printf '\nWARNING: $(?) newer than config.h, rerun configure\n\n'
    @-tput sgr0 2>/dev/null

SUBDIR_VARS := CLEANFILES FFLIBS HOSTPROGS TESTPROGS TOOLS               \
               HEADERS ARCH_HEADERS BUILT_HEADERS SKIPHEADERS            \
               ARMV5TE-OBJS ARMV6-OBJS ARMV8-OBJS VFP-OBJS NEON-OBJS     \
               ALTIVEC-OBJS VSX-OBJS MMX-OBJS X86ASM-OBJS                \
               MIPSFPU-OBJS MIPSDSPR2-OBJS MIPSDSP-OBJS MSA-OBJS         \
               MMI-OBJS OBJS SLIBOBJS HOSTOBJS TESTOBJS

define RESET
$(1) :=
$(1)-yes :=
endef

define DOSUBDIR
$(foreach V,$(SUBDIR_VARS),$(eval $(call RESET,$(V))))
SUBDIR := $(1)/
include $(SRC_PATH)/$(1)/Makefile
-include $(SRC_PATH)/$(1)/$(ARCH)/Makefile
-include $(SRC_PATH)/$(1)/$(INTRINSICS)/Makefile
include $(SRC_PATH)/ffbuild/library.mak
endef

$(foreach D,$(FFLIBS),$(eval $(call DOSUBDIR,lib$(D))))

include $(SRC_PATH)/fftools/Makefile
include $(SRC_PATH)/doc/Makefile
include $(SRC_PATH)/doc/examples/Makefile

libavcodec/utils.o libavformat/utils.o libavdevice/avdevice.o libavfilter/avfilter.o libavutil/utils.o libpostproc/postprocess.o libswresample/swresample.o libswscale/utils.o : libavutil/ffversion.h

$(PROGS): %$(PROGSSUF)$(EXESUF): %$(PROGSSUF)_g$(EXESUF)
ifeq ($(STRIPTYPE),direct)
    $(STRIP) -o $@ $<
else
    $(CP) $< $@
    $(STRIP) $@
endif

%$(PROGSSUF)_g$(EXESUF): $(FF_DEP_LIBS)
    $(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $(OBJS-$*) $(FF_EXTRALIBS)

VERSION_SH  = $(SRC_PATH)/ffbuild/version.sh
GIT_LOG     = $(SRC_PATH)/.git/logs/HEAD

.version: $(wildcard $(GIT_LOG)) $(VERSION_SH) ffbuild/config.mak
.version: M=@

libavutil/ffversion.h .version:
    $(M)$(VERSION_SH) $(SRC_PATH) libavutil/ffversion.h $(EXTRA_VERSION)
    $(Q)touch .version

# force version.sh to run whenever version might have changed
-include .version

install: install-libs install-headers

install-libs: install-libs-yes

install-data: $(DATA_FILES)
    $(Q)mkdir -p "$(DATADIR)"
    $(INSTALL) -m 644 $(DATA_FILES) "$(DATADIR)"

uninstall: uninstall-data uninstall-headers uninstall-libs uninstall-pkgconfig

uninstall-data:
    $(RM) -r "$(DATADIR)"

clean::
    $(RM) $(CLEANSUFFIXES)
    $(RM) $(addprefix compat/,$(CLEANSUFFIXES)) $(addprefix compat/*/,$(CLEANSUFFIXES)) $(addprefix compat/*/*/,$(CLEANSUFFIXES))
    $(RM) -r coverage-html
    $(RM) -rf coverage.info coverage.info.in lcov

distclean:: clean
    $(RM) .version avversion.h config.asm config.h mapfile  \
        ffbuild/.config ffbuild/config.* libavutil/avconfig.h \
        version.h libavutil/ffversion.h libavcodec/codec_names.h \
        libavcodec/bsf_list.c libavformat/protocol_list.c \
        libavcodec/codec_list.c libavcodec/parser_list.c \
        libavfilter/filter_list.c libavdevice/indev_list.c libavdevice/outdev_list.c \
        libavformat/muxer_list.c libavformat/demuxer_list.c
ifeq ($(SRC_LINK),src)
    $(RM) src
endif
    $(RM) -rf doc/examples/pc-uninstalled

config:
    $(SRC_PATH)/configure $(value FFMPEG_CONFIGURATION)

build: all alltools examples testprogs
check: all alltools examples testprogs fate

include $(SRC_PATH)/tests/Makefile

$(sort $(OUTDIRS)):
    $(Q)mkdir -p $@

# Dummy rule to stop make trying to rebuild removed or renamed headers
%.h:
    @:

# Disable suffix rules.  Most of the builtin rules are suffix rules,
# so this saves some time on slow systems.
.SUFFIXES:

.PHONY: all all-yes alltools build check config testprogs
.PHONY: *clean install* uninstall*


    


    Any suggestions ?
    
Thanks !

    


    EDIT
    
Tried starting with x64 Native Tools Command Prompt for VS 2019 and got the same result.

    


    EDIT #2 (because this is too long for a comment)

    


    $ mingw32-make Q=
mkdir -p libavutil/
mkdir -p libswscale/
mkdir -p libswresample/
mkdir -p libavcodec/
mkdir -p libavformat/
mkdir -p libavfilter/
mkdir -p libavdevice/
awk: cmd. line:1: /including/ { sub(/^.*file: */, ""); gsub(/\/, "/"); if (!match($0, / /)) print "libavdevice/alldevices.o:", $0 }
awk: cmd. line:1:                                                                                                        ^ syntax error
awk: cmd. line:1: /including/ { sub(/^.*file: */, ""); gsub(/\/, "/"); if (!match($0, / /)) print "libavdevice/alldevices.o:", $0 }
awk: cmd. line:1:                                                                                                           ^ unterminated string
ffbuild/common.mak:67: recipe for target 'libavdevice/alldevices.o' failed
mingw32-make: *** [libavdevice/alldevices.o] Error 1


    


    ffbuild/common.mak is :

    


    #
# common bits used by all libraries
#

DEFAULT_X86ASMD=.dbg

ifeq ($(DBG),1)
X86ASMD=$(DEFAULT_X86ASMD)
else
X86ASMD=
endif

ifndef SUBDIR

ifndef V
Q      = @
ECHO   = printf "$(1)\t%s\n" $(2)
BRIEF  = CC CXX OBJCC HOSTCC HOSTLD AS X86ASM AR LD STRIP CP WINDRES NVCC
SILENT = DEPCC DEPHOSTCC DEPAS DEPX86ASM RANLIB RM

MSG    = $@
M      = @$(call ECHO,$(TAG),$@);
$(foreach VAR,$(BRIEF), \
    $(eval override $(VAR) = @$$(call ECHO,$(VAR),$$(MSG)); $($(VAR))))
$(foreach VAR,$(SILENT),$(eval override $(VAR) = @$($(VAR))))
$(eval INSTALL = @$(call ECHO,INSTALL,$$(^:$(SRC_DIR)/%=%)); $(INSTALL))
endif

ALLFFLIBS = avcodec avdevice avfilter avformat avresample avutil postproc swscale swresample

# NASM requires -I path terminated with /
IFLAGS     := -I. -I$(SRC_LINK)/
CPPFLAGS   := $(IFLAGS) $(CPPFLAGS)
CFLAGS     += $(ECFLAGS)
CCFLAGS     = $(CPPFLAGS) $(CFLAGS)
OBJCFLAGS  += $(EOBJCFLAGS)
OBJCCFLAGS  = $(CPPFLAGS) $(CFLAGS) $(OBJCFLAGS)
ASFLAGS    := $(CPPFLAGS) $(ASFLAGS)
CXXFLAGS   := $(CPPFLAGS) $(CFLAGS) $(CXXFLAGS)
X86ASMFLAGS += $(IFLAGS:%=%/) -I$( -Pconfig.asm

HOSTCCFLAGS = $(IFLAGS) $(HOSTCPPFLAGS) $(HOSTCFLAGS)
LDFLAGS    := $(ALLFFLIBS:%=$(LD_PATH)lib%) $(LDFLAGS)

define COMPILE
       $(call $(1)DEP,$(1))
       $($(1)) $($(1)FLAGS) $($(2)) $($(1)_DEPFLAGS) $($(1)_C) $($(1)_O) $(patsubst $(SRC_PATH)/%,$(SRC_LINK)/%,$<)
endef

COMPILE_C = $(call COMPILE,CC)
COMPILE_CXX = $(call COMPILE,CXX)
COMPILE_S = $(call COMPILE,AS)
COMPILE_M = $(call COMPILE,OBJCC)
COMPILE_X86ASM = $(call COMPILE,X86ASM)
COMPILE_HOSTC = $(call COMPILE,HOSTCC)
COMPILE_NVCC = $(call COMPILE,NVCC)
COMPILE_MMI = $(call COMPILE,CC,MMIFLAGS)
COMPILE_MSA = $(call COMPILE,CC,MSAFLAGS)

%_mmi.o: %_mmi.c
    $(COMPILE_MMI)

%_msa.o: %_msa.c
    $(COMPILE_MSA)

%.o: %.c
    $(COMPILE_C)

%.o: %.cpp
    $(COMPILE_CXX)

%.o: %.m
    $(COMPILE_M)

%.s: %.c
    $(CC) $(CCFLAGS) -S -o $@ $<

%.o: %.S
    $(COMPILE_S)

%_host.o: %.c
    $(COMPILE_HOSTC)

%$(DEFAULT_X86ASMD).asm: %.asm
    $(DEPX86ASM) $(X86ASMFLAGS) -M -o $@ $< > $(@:.asm=.d)
    $(X86ASM) $(X86ASMFLAGS) -e $< | sed '/^%/d;/^$$/d;' > $@

%.o: %.asm
    $(COMPILE_X86ASM)
    -$(if $(ASMSTRIPFLAGS), $(STRIP) $(ASMSTRIPFLAGS) $@)

%.o: %.rc
    $(WINDRES) $(IFLAGS) --preprocessor "$(DEPWINDRES) -E -xc-header -DRC_INVOKED $(CC_DEPFLAGS)" -o $@ $<

%.i: %.c
    $(CC) $(CCFLAGS) $(CC_E) $<

%.h.c:
    $(Q)echo '#include "$*.h"' >$@

%.ptx: %.cu $(SRC_PATH)/compat/cuda/cuda_runtime.h
    $(COMPILE_NVCC)

%.ptx.c: %.ptx
    $(Q)sh $(SRC_PATH)/compat/cuda/ptx2c.sh $@ $(patsubst $(SRC_PATH)/%,$(SRC_LINK)/%,$<)

%.c %.h %.pc %.ver %.version: TAG = GEN

# Dummy rule to stop make trying to rebuild removed or renamed headers
%.h:
    @:

# Disable suffix rules.  Most of the builtin rules are suffix rules,
# so this saves some time on slow systems.
.SUFFIXES:

# Do not delete intermediate files from chains of implicit rules
$(OBJS):
endif

include $(SRC_PATH)/ffbuild/arch.mak

OBJS      += $(OBJS-yes)
SLIBOBJS  += $(SLIBOBJS-yes)
FFLIBS    := $($(NAME)_FFLIBS) $(FFLIBS-yes) $(FFLIBS)
TESTPROGS += $(TESTPROGS-yes)

LDLIBS       = $(FFLIBS:%=%$(BUILDSUF))
FFEXTRALIBS := $(LDLIBS:%=$(LD_LIB)) $(foreach lib,EXTRALIBS-$(NAME) $(FFLIBS:%=EXTRALIBS-%),$($(lib))) $(EXTRALIBS)

OBJS      := $(sort $(OBJS:%=$(SUBDIR)%))
SLIBOBJS  := $(sort $(SLIBOBJS:%=$(SUBDIR)%))
TESTOBJS  := $(TESTOBJS:%=$(SUBDIR)tests/%) $(TESTPROGS:%=$(SUBDIR)tests/%.o)
TESTPROGS := $(TESTPROGS:%=$(SUBDIR)tests/%$(EXESUF))
HOSTOBJS  := $(HOSTPROGS:%=$(SUBDIR)%.o)
HOSTPROGS := $(HOSTPROGS:%=$(SUBDIR)%$(HOSTEXESUF))
TOOLS     += $(TOOLS-yes)
TOOLOBJS  := $(TOOLS:%=tools/%.o)
TOOLS     := $(TOOLS:%=tools/%$(EXESUF))
HEADERS   += $(HEADERS-yes)

PATH_LIBNAME = $(foreach NAME,$(1),lib$(NAME)/$($(2)LIBNAME))
DEP_LIBS := $(foreach lib,$(FFLIBS),$(call PATH_LIBNAME,$(lib),$(CONFIG_SHARED:yes=S)))
STATIC_DEP_LIBS := $(foreach lib,$(FFLIBS),$(call PATH_LIBNAME,$(lib)))

SRC_DIR    := $(SRC_PATH)/lib$(NAME)
ALLHEADERS := $(subst $(SRC_DIR)/,$(SUBDIR),$(wildcard $(SRC_DIR)/*.h $(SRC_DIR)/$(ARCH)/*.h))
SKIPHEADERS += $(ARCH_HEADERS:%=$(ARCH)/%) $(SKIPHEADERS-)
SKIPHEADERS := $(SKIPHEADERS:%=$(SUBDIR)%)
HOBJS        = $(filter-out $(SKIPHEADERS:.h=.h.o),$(ALLHEADERS:.h=.h.o))
PTXOBJS      = $(filter %.ptx.o,$(OBJS))
$(HOBJS):     CCFLAGS += $(CFLAGS_HEADERS)
checkheaders: $(HOBJS)
.SECONDARY:   $(HOBJS:.o=.c) $(PTXOBJS:.o=.c) $(PTXOBJS:.o=)

alltools: $(TOOLS)

$(HOSTOBJS): %.o: %.c
    $(COMPILE_HOSTC)

$(HOSTPROGS): %$(HOSTEXESUF): %.o
    $(HOSTLD) $(HOSTLDFLAGS) $(HOSTLD_O) $^ $(HOSTEXTRALIBS)

$(OBJS):     | $(sort $(dir $(OBJS)))
$(HOBJS):    | $(sort $(dir $(HOBJS)))
$(HOSTOBJS): | $(sort $(dir $(HOSTOBJS)))
$(SLIBOBJS): | $(sort $(dir $(SLIBOBJS)))
$(TESTOBJS): | $(sort $(dir $(TESTOBJS)))
$(TOOLOBJS): | tools

OUTDIRS := $(OUTDIRS) $(dir $(OBJS) $(HOBJS) $(HOSTOBJS) $(SLIBOBJS) $(TESTOBJS))

CLEANSUFFIXES     = *.d *.gcda *.gcno *.h.c *.ho *.map *.o *.pc *.ptx *.ptx.c *.ver *.version *$(DEFAULT_X86ASMD).asm *~ *.ilk *.pdb
LIBSUFFIXES       = *.a *.lib *.so *.so.* *.dylib *.dll *.def *.dll.a

define RULES
clean::
    $(RM) $(HOSTPROGS) $(TESTPROGS) $(TOOLS)
endef

$(eval $(RULES))

-include $(wildcard $(OBJS:.o=.d) $(HOSTOBJS:.o=.d) $(TESTOBJS:.o=.d) $(HOBJS:.o=.d) $(SLIBOBJS:.o=.d)) $(OBJS:.o=$(DEFAULT_X86ASMD).d)