
Recherche avancée
Médias (2)
-
Valkaama DVD Label
4 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Image
-
Podcasting Legal guide
16 mai 2011, par
Mis à jour : Mai 2011
Langue : English
Type : Texte
Autres articles (62)
-
L’agrémenter visuellement
10 avril 2011MediaSPIP est basé sur un système de thèmes et de squelettes. Les squelettes définissent le placement des informations dans la page, définissant un usage spécifique de la plateforme, et les thèmes l’habillage graphique général.
Chacun peut proposer un nouveau thème graphique ou un squelette et le mettre à disposition de la communauté. -
Les autorisations surchargées par les plugins
27 avril 2010, parMediaspip core
autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs -
Personnaliser les catégories
21 juin 2013, parFormulaire de création d’une catégorie
Pour ceux qui connaissent bien SPIP, une catégorie peut être assimilée à une rubrique.
Dans le cas d’un document de type catégorie, les champs proposés par défaut sont : Texte
On peut modifier ce formulaire dans la partie :
Administration > Configuration des masques de formulaire.
Dans le cas d’un document de type média, les champs non affichés par défaut sont : Descriptif rapide
Par ailleurs, c’est dans cette partie configuration qu’on peut indiquer le (...)
Sur d’autres sites (12224)
-
ffmpeg h264_amf error : CreateComponent(AMFVideoEncoderVCE_AVC) failed with error 10
18 septembre 2023, par PoiterTrying 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 oo92I 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 thefilename.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 SelaI 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)