From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id E724F40B6B for ; Mon, 6 Jun 2022 17:36:13 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A888668B55E; Mon, 6 Jun 2022 20:36:10 +0300 (EEST) Received: from sonic309-25.consmr.mail.ir2.yahoo.com (sonic309-25.consmr.mail.ir2.yahoo.com [77.238.179.83]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 63EAD68B3A1 for ; Mon, 6 Jun 2022 20:36:03 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.it; s=s2048; t=1654536962; bh=qW0sWxN2oD8OpTwK8PwGxL0KJT4XGqzg8Zs8r2CXxzc=; h=Date:From:To:Subject:References:From:Subject:Reply-To; b=R17z6dDUgyF27VCuor98lfrJJI+7Dzmv2IHB1VH4fgGMCO1yOBdJttfOsnKw2fwN6sji/nB44sn+NkO2JuL7wA98kg+A4SSZPT9+J8F5p2rwbp5TSZYx0JXgXaPbuKcrC0HNSMvJZ7sVdgFASuOH+/xa5fB1IBjX+DlMYdud0c/0Ic3bFZ+ZRSrXoYL8+AGSSXDv0e60ppTvc/ouahtD713D7Jnjfjo3ukZcb8r8zK0QMvnRVA3ZDZA3cL0g7OFNZN4IqYGqKYsbGiRErjn0xzbuCqn9UW/IXDzjrLRTrmKpKt54cEWZgZ1Mp9bPLLTF5k8RCrO1TJXlYCiKSsD5YQ== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1654536962; bh=BTYrFthSpxXB5wC09pyIyyDUlxQ84upQybjAHx86aPx=; h=X-Sonic-MF:Date:From:To:Subject:From:Subject; b=oHQ5W4xDy7wastuORh94hFkWOhrwAVm/ePeJIEi/gSJUyAZOalP/XKcTYYZc7S4NnFGrjrn5dGl5aQ1DZ5Fml1OsxzaGZOrxV63Jdm974aqsEPctGLYMvUrrsA4mGvrYarsYvv/8pHIxfXOFw/noK7kadxQfQ/Ama20CZqtxxnWlbco47B9Kv4cvKwhsSJVk54IrWVFgKWHFDN4S3/jP7mHjLnpa1YJWsDyAqApOUZPd9+7lx0WuXCtME2VXosO9dDby9OHNR22KsHQW/3JZJ9fISdPh7SsoU7MGQ7f5pQnGWMYLtwjXLlTGIlx6OP7i0S6CtbspA24bwt4Vtrmofg== X-YMail-OSG: JAjTavsVM1n.b5ghywOwzESUQc0z6LVuOhl_UnV7SP6UNwCpeh.52Pr_0HU0I9f 3iAl2HJQ19GbB4zuQL8.gKY6Tz1fCSRZhIgVnASIA7VIXgUhrUDlrqZk.xJEhvYMF0vkhjneKUbx KeY.QA.2wTCh56.5xxs.AkyuWq8tcu0x_Z62DmfxeQhTbBam9xKvFnAIKYxUNbVeeXRW4F5NuEBI bwsIo7tfORGGZzZ5jSL5TO3rp8ew6TE1_OiGQDZSqC_ihDPZT1bBYOLrgRrzmWS8vuG31RZMSMf8 Ip6RErRczYdQXh_ZcPqyWIb76kArHSAt_sHgqPT1JSCSGlCj_J8FDRKURUnLP6mHQFvBq.oOFpT. .SsDC1vvn3AXg9AaKMZ53A.9spQNBthzFrZMUdq.i0G.rSkIdisw05QsYYNBAjMGwXCyBDnroUeN 6cDrGolAToVqH8L9jLX9vREnb2Jh_529LcZ3v4nOh5V8nFiBk1I7XXTqfWQafCbZJy0smNQAHRdZ RXbAHRGTkLb.Kdl9NDP8rH47zQqJAmvwf2jwBF85xyOELvcwXn65H0GSqtQrPyaZUcBe8QK_MS7j tVhgbQfqWUsZliQwSUqC3A3oHY4vs3PMKcYDTpTZNjxbV3O6YvHucdx1.yKFmBrh1bpxqcZgbA3Y WU.blBim7Zl9VzICibmnvAnJzDevO04yUP4T8Y8CBn6Y1u_a9G5.sNCBE_GrmeOrdz1xFCj1bEax RCNSGRJR5siBIyFwXWlP8fji2iFpuNqjM9aD9U8DBaVdsSoq1UHnp98lSpYVO8sjNm9O0.FSyUlD w97bX7p7loloh_4SgtVoOfaD8IyU9_NpUv.WKnNykFFKKiEufbqHKqetvU8oYzZFhMD1kIO9BOqX fUMLy50VgOSi3LrwXxzRCHAgLFXIimiqxyHi2_4gUW9W_VLG6ndLPAxnUc9I4b3eL2LHBcZTPzBZ nniWiC.IlpTVlpixBDqGtsHHc.58GM0PmxB7IWq9mELgx4ecS2mYJF8A_gePpJdO7fynf2g4JfJ7 e2Ok73drhbyFR_iGosqpXqRVfInbrAhCKtpxd8ibaubt2Xcud3IAFs0GjEkEfgdEsXpSlMxC5HnL jiLSUutYWVwkEFcOn9G2YXrlUpsQ26hIMJ_9St9fTF4lfwXJ6o16cuSlVVX5SkiGYOMd5NiO5w9R HGg13KzxBk4EujbQLyvpO0ilyj5sgG.8isCZVkYoSWjDe7Bdhg2za24kwPAVZ7EK3qf9GvRCXYQT 5b_.w70WxaaleNsEYitEyK1j6o.Ae38745E5D.8NsHk0rDxt.CwGgSzHy2fXVuqmwv3fMjMJ8gEx GDzq5_mpCYtfeg7EvzaYFwNOqDKdMIPOefgfMv5mjXnRHxv8grhWvlTV43ZP7U3KEsFCExf6ksSD ZMvX.QTYDM0x4mGDqgHMB36jiMKboMBpMG01SsNWdZaX9lDIDuwrvz2xuFGGoxXgtH_WJnL6WDJC HJkwhEztzOVOQ3kkBfqv65IymFVj8e5tqCEAaY3GyxFlQzpLcuGgS.7YtEfOixIXKIG8yYF_pr72 NfgbF4l8h_NhqDfIadDjiAE4Tiv1lirQCx_1ydVN7iEE9vDqtoLVuVUkD5b7h.yS1aaj70g2nxWL lhu3a6RCtXd5kjX1jFMCGUNNj.FXzQm5FbCU_maKtI.2o9v4ogiEhGIpcC9dOI8g.Ke9mwREYyi9 yYda84tFS2JY0s4FmgsNOMf.aAOc8NB53.opFF_4NrYcgvlIeXAVoVDQq9XeRWiuLfjQ2qf8FIHx 4azly3ntQMvxOprrXeSvMpVam9l_zJm6xfyO9nzflpmtNiqdQddc4qxtj1Pp0x1rW6gFd04X_HR9 IR2VrvWiQpsmlbrhCeQ9JXHDJQ8eN8pHhJi8x2K5UCV6Z3PmIv25Jk80h49lVJizyY63_8Eamj.R cTFrf8Y9KSzzUfNiEL0qa82MNss_aWxdDQ8LkxavHur7d0MloatQEJ_JCGCxRb.qf8HGuW8Qf64i oMx0Yfvacm3uKtCdNKp.r__8mjRrOUAj29ybA_qNhqE7BgozqHbeLueQfnrocWRYALQZHd8jiK4_ gkczFzm01ONbmoVAwAWVAyyz0UjcojeHDl.00LZ1ArFLTI85mfIdeobYD5zg8Ry817PVg3aYCKfe Cu2C5dMT_xu48F9hSEH3MD6lQcxYEHk_GIt3E.8RjODNJ0LKGbqTftUpcgDYZ3KQIETPAZzDFFmh G0MT4OG0mB2MgSA-- X-Sonic-MF: Received: from sonic.gate.mail.ne1.yahoo.com by sonic309.consmr.mail.ir2.yahoo.com with HTTP; Mon, 6 Jun 2022 17:36:02 +0000 Date: Mon, 6 Jun 2022 17:40:42 +0000 (UTC) From: Paolo Prete To: FFmpeg Development Discussions and Patches Message-ID: <580594123.12475702.1654537242853@mail.yahoo.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_12475701_1925304795.1654537242853" References: <580594123.12475702.1654537242853.ref@mail.yahoo.com> X-Mailer: WebService/1.1.20225 YMailNorrin X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [FFmpeg-devel] [PATCH] New API usage example (reading, converting, encoding and muxing an audio file) X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: ------=_Part_12475701_1925304795.1654537242853 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hello, >From what I see, the doc/examples files can be still improved. More precise= ly, their main() is often split into functions with short names that hide i= mportant (sometime essential) details of what they're doing and they worsen= the readability, by forcing the user to jump from chunks to chunks of the = code. See for example: muxing.c (and the open_audio/video(), write_audio/vi= deo_frame()...). In addition: they are hard to adapt to practical cases wit= hout doing big modifications. Please consider to review/push the attached example: =C2=A0convert_encode_m= ux_audio.c . It is deliberately written in a more "procedural" way, it should be much ea= sier to read and it covers all the basic steps (reading from file, converti= ng, encoding, muxing) of a common and practical pipeline made with ffMPEG. Hope it helps. P ------=_Part_12475701_1925304795.1654537242853 Content-Type: text/x-patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Added-a-complete-example-with-clear-well-readable-an.patch" Content-ID: <4af44932-9c41-845c-812d-b42409f65f95@yahoo.com> RnJvbSA4NmRiMWM2ZGNkNmY2OTAyOGM5YzI1ZDAzZTZlMTllZjlmYzJiMzMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBwYW9sbyA8cGFvbG9wcjk3NkBnbWFpbC5jb20+CkRhdGU6IE1v biwgNiBKdW4gMjAyMiAxNTozNDowNSArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZGVkIGEgY29t cGxldGUgZXhhbXBsZSAtIHdpdGggY2xlYXIsIHdlbGwgcmVhZGFibGUgYW5kCiBzZXF1ZW50aWFs IGNvZGUgLSBmb3IgZG9pbmcgYmFzaWMgb3BlcmF0aW9ucyBvbiBhIHJhdyBhdWRpbyBmaWxlLiBJ dCBpbXByb3ZlcwogdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGV4YW1wbGVzIGRpcmVjdG9yeQoK LS0tCiBjb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwogZG9j L2V4YW1wbGVzL01ha2VmaWxlICAgICAgICAgICAgICAgICAgIHwgIDQ3ICsrLS0KIGRvYy9leGFt cGxlcy9NYWtlZmlsZS5leGFtcGxlICAgICAgICAgICB8ICAgMSArCiBkb2MvZXhhbXBsZXMvY29u dmVydF9lbmNvZGVfbXV4X2F1ZGlvLmMgfCAzNTEgKysrKysrKysrKysrKysrKysrKysrKysrCiA0 IGZpbGVzIGNoYW5nZWQsIDM3OCBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkb2MvZXhhbXBsZXMvY29udmVydF9lbmNvZGVfbXV4X2F1ZGlvLmMKCmRp ZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKaW5kZXggNWExNjc2MTNhNC4uNzc1NzUw YWZmMCAxMDA3NTUKLS0tIGEvY29uZmlndXJlCisrKyBiL2NvbmZpZ3VyZQpAQCAtMTcyNSw2ICsx NzI1LDcgQEAgQ09NUE9ORU5UX0xJU1Q9IgogRVhBTVBMRV9MSVNUPSIKICAgICBhdmlvX2xpc3Rf ZGlyX2V4YW1wbGUKICAgICBhdmlvX3JlYWRpbmdfZXhhbXBsZQorICAgIGNvbnZlcnRfZW5jb2Rl X211eF9hdWRpb19leGFtcGxlCiAgICAgZGVjb2RlX2F1ZGlvX2V4YW1wbGUKICAgICBkZWNvZGVf dmlkZW9fZXhhbXBsZQogICAgIGRlbXV4aW5nX2RlY29kaW5nX2V4YW1wbGUKQEAgLTM3NjAsNiAr Mzc2MSw3IEBAIHlhZGlmX3ZpZGVvdG9vbGJveF9maWx0ZXJfZGVwcz0ibWV0YWwgY29yZXZpZGVv IHZpZGVvdG9vbGJveCIKICMgZXhhbXBsZXMKIGF2aW9fbGlzdF9kaXJfZGVwcz0iYXZmb3JtYXQg YXZ1dGlsIgogYXZpb19yZWFkaW5nX2RlcHM9ImF2Zm9ybWF0IGF2Y29kZWMgYXZ1dGlsIgorY29u dmVydF9lbmNvZGVfbXV4X2F1ZGlvX2V4YW1wbGVfZGVwcz0iYXZjb2RlYyBhdmZvcm1hdCBhdnV0 aWwgc3dyZXNhbXBsZSIKIGRlY29kZV9hdWRpb19leGFtcGxlX2RlcHM9ImF2Y29kZWMgYXZ1dGls IgogZGVjb2RlX3ZpZGVvX2V4YW1wbGVfZGVwcz0iYXZjb2RlYyBhdnV0aWwiCiBkZW11eGluZ19k ZWNvZGluZ19leGFtcGxlX2RlcHM9ImF2Y29kZWMgYXZmb3JtYXQgYXZ1dGlsIgpkaWZmIC0tZ2l0 IGEvZG9jL2V4YW1wbGVzL01ha2VmaWxlIGIvZG9jL2V4YW1wbGVzL01ha2VmaWxlCmluZGV4IDgx YmZkMzRkNWQuLmFlZDczZTgxMWMgMTAwNjQ0Ci0tLSBhL2RvYy9leGFtcGxlcy9NYWtlZmlsZQor KysgYi9kb2MvZXhhbXBsZXMvTWFrZWZpbGUKQEAgLTEsMjYgKzEsMjcgQEAKLUVYQU1QTEVTLSQo Q09ORklHX0FWSU9fTElTVF9ESVJfRVhBTVBMRSkgICAgICs9IGF2aW9fbGlzdF9kaXIKLUVYQU1Q TEVTLSQoQ09ORklHX0FWSU9fUkVBRElOR19FWEFNUExFKSAgICAgICs9IGF2aW9fcmVhZGluZwot RVhBTVBMRVMtJChDT05GSUdfREVDT0RFX0FVRElPX0VYQU1QTEUpICAgICAgKz0gZGVjb2RlX2F1 ZGlvCi1FWEFNUExFUy0kKENPTkZJR19ERUNPREVfVklERU9fRVhBTVBMRSkgICAgICArPSBkZWNv ZGVfdmlkZW8KLUVYQU1QTEVTLSQoQ09ORklHX0RFTVVYSU5HX0RFQ09ESU5HX0VYQU1QTEUpICs9 IGRlbXV4aW5nX2RlY29kaW5nCi1FWEFNUExFUy0kKENPTkZJR19FTkNPREVfQVVESU9fRVhBTVBM RSkgICAgICArPSBlbmNvZGVfYXVkaW8KLUVYQU1QTEVTLSQoQ09ORklHX0VOQ09ERV9WSURFT19F WEFNUExFKSAgICAgICs9IGVuY29kZV92aWRlbwotRVhBTVBMRVMtJChDT05GSUdfRVhUUkFDVF9N VlNfRVhBTVBMRSkgICAgICAgKz0gZXh0cmFjdF9tdnMKLUVYQU1QTEVTLSQoQ09ORklHX0ZJTFRF Ul9BVURJT19FWEFNUExFKSAgICAgICs9IGZpbHRlcl9hdWRpbwotRVhBTVBMRVMtJChDT05GSUdf RklMVEVSSU5HX0FVRElPX0VYQU1QTEUpICAgKz0gZmlsdGVyaW5nX2F1ZGlvCi1FWEFNUExFUy0k KENPTkZJR19GSUxURVJJTkdfVklERU9fRVhBTVBMRSkgICArPSBmaWx0ZXJpbmdfdmlkZW8KLUVY QU1QTEVTLSQoQ09ORklHX0hUVFBfTVVMVElDTElFTlRfRVhBTVBMRSkgICs9IGh0dHBfbXVsdGlj bGllbnQKLUVYQU1QTEVTLSQoQ09ORklHX0hXX0RFQ09ERV9FWEFNUExFKSAgICAgICAgICs9IGh3 X2RlY29kZQotRVhBTVBMRVMtJChDT05GSUdfTUVUQURBVEFfRVhBTVBMRSkgICAgICAgICAgKz0g bWV0YWRhdGEKLUVYQU1QTEVTLSQoQ09ORklHX01VWElOR19FWEFNUExFKSAgICAgICAgICAgICs9 IG11eGluZwotRVhBTVBMRVMtJChDT05GSUdfUVNWREVDX0VYQU1QTEUpICAgICAgICAgICAgKz0g cXN2ZGVjCi1FWEFNUExFUy0kKENPTkZJR19SRU1VWElOR19FWEFNUExFKSAgICAgICAgICArPSBy ZW11eGluZwotRVhBTVBMRVMtJChDT05GSUdfUkVTQU1QTElOR19BVURJT19FWEFNUExFKSAgKz0g cmVzYW1wbGluZ19hdWRpbwotRVhBTVBMRVMtJChDT05GSUdfU0NBTElOR19WSURFT19FWEFNUExF KSAgICAgKz0gc2NhbGluZ192aWRlbwotRVhBTVBMRVMtJChDT05GSUdfVFJBTlNDT0RFX0FBQ19F WEFNUExFKSAgICAgKz0gdHJhbnNjb2RlX2FhYwotRVhBTVBMRVMtJChDT05GSUdfVFJBTlNDT0RJ TkdfRVhBTVBMRSkgICAgICAgKz0gdHJhbnNjb2RpbmcKLUVYQU1QTEVTLSQoQ09ORklHX1ZBQVBJ X0VOQ09ERV9FWEFNUExFKSAgICAgICs9IHZhYXBpX2VuY29kZQotRVhBTVBMRVMtJChDT05GSUdf VkFBUElfVFJBTlNDT0RFX0VYQU1QTEUpICAgKz0gdmFhcGlfdHJhbnNjb2RlCitFWEFNUExFUy0k KENPTkZJR19BVklPX0xJU1RfRElSX0VYQU1QTEUpICAgICAgICAgICAgKz0gYXZpb19saXN0X2Rp cgorRVhBTVBMRVMtJChDT05GSUdfQVZJT19SRUFESU5HX0VYQU1QTEUpICAgICAgICAgICAgICs9 IGF2aW9fcmVhZGluZworRVhBTVBMRVMtJChDT05GSUdfQ09OVkVSVF9FTkNPREVfTVVYX0FVRElP X0VYQU1QTEUpICs9IGNvbnZlcnRfZW5jb2RlX211eF9hdWRpbworRVhBTVBMRVMtJChDT05GSUdf REVDT0RFX0FVRElPX0VYQU1QTEUpICAgICAgICAgICAgICs9IGRlY29kZV9hdWRpbworRVhBTVBM RVMtJChDT05GSUdfREVDT0RFX1ZJREVPX0VYQU1QTEUpICAgICAgICAgICAgICs9IGRlY29kZV92 aWRlbworRVhBTVBMRVMtJChDT05GSUdfREVNVVhJTkdfREVDT0RJTkdfRVhBTVBMRSkgICAgICAg ICs9IGRlbXV4aW5nX2RlY29kaW5nCitFWEFNUExFUy0kKENPTkZJR19FTkNPREVfQVVESU9fRVhB TVBMRSkgICAgICAgICAgICAgKz0gZW5jb2RlX2F1ZGlvCitFWEFNUExFUy0kKENPTkZJR19FTkNP REVfVklERU9fRVhBTVBMRSkgICAgICAgICAgICAgKz0gZW5jb2RlX3ZpZGVvCitFWEFNUExFUy0k KENPTkZJR19FWFRSQUNUX01WU19FWEFNUExFKSAgICAgICAgICAgICAgKz0gZXh0cmFjdF9tdnMK K0VYQU1QTEVTLSQoQ09ORklHX0ZJTFRFUl9BVURJT19FWEFNUExFKSAgICAgICAgICAgICArPSBm aWx0ZXJfYXVkaW8KK0VYQU1QTEVTLSQoQ09ORklHX0ZJTFRFUklOR19BVURJT19FWEFNUExFKSAg ICAgICAgICArPSBmaWx0ZXJpbmdfYXVkaW8KK0VYQU1QTEVTLSQoQ09ORklHX0ZJTFRFUklOR19W SURFT19FWEFNUExFKSAgICAgICAgICArPSBmaWx0ZXJpbmdfdmlkZW8KK0VYQU1QTEVTLSQoQ09O RklHX0hUVFBfTVVMVElDTElFTlRfRVhBTVBMRSkgICAgICAgICArPSBodHRwX211bHRpY2xpZW50 CitFWEFNUExFUy0kKENPTkZJR19IV19ERUNPREVfRVhBTVBMRSkgICAgICAgICAgICAgICAgKz0g aHdfZGVjb2RlCitFWEFNUExFUy0kKENPTkZJR19NRVRBREFUQV9FWEFNUExFKSAgICAgICAgICAg ICAgICAgKz0gbWV0YWRhdGEKK0VYQU1QTEVTLSQoQ09ORklHX01VWElOR19FWEFNUExFKSAgICAg ICAgICAgICAgICAgICArPSBtdXhpbmcKK0VYQU1QTEVTLSQoQ09ORklHX1FTVkRFQ19FWEFNUExF KSAgICAgICAgICAgICAgICAgICArPSBxc3ZkZWMKK0VYQU1QTEVTLSQoQ09ORklHX1JFTVVYSU5H X0VYQU1QTEUpICAgICAgICAgICAgICAgICArPSByZW11eGluZworRVhBTVBMRVMtJChDT05GSUdf UkVTQU1QTElOR19BVURJT19FWEFNUExFKSAgICAgICAgICs9IHJlc2FtcGxpbmdfYXVkaW8KK0VY QU1QTEVTLSQoQ09ORklHX1NDQUxJTkdfVklERU9fRVhBTVBMRSkgICAgICAgICAgICArPSBzY2Fs aW5nX3ZpZGVvCitFWEFNUExFUy0kKENPTkZJR19UUkFOU0NPREVfQUFDX0VYQU1QTEUpICAgICAg ICAgICAgKz0gdHJhbnNjb2RlX2FhYworRVhBTVBMRVMtJChDT05GSUdfVFJBTlNDT0RJTkdfRVhB TVBMRSkgICAgICAgICAgICAgICs9IHRyYW5zY29kaW5nCitFWEFNUExFUy0kKENPTkZJR19WQUFQ SV9FTkNPREVfRVhBTVBMRSkgICAgICAgICAgICAgKz0gdmFhcGlfZW5jb2RlCitFWEFNUExFUy0k KENPTkZJR19WQUFQSV9UUkFOU0NPREVfRVhBTVBMRSkgICAgICAgICAgKz0gdmFhcGlfdHJhbnNj b2RlCiAKIEVYQU1QTEVTICAgICAgIDo9ICQoRVhBTVBMRVMteWVzOiU9ZG9jL2V4YW1wbGVzLyUk KFBST0dTU1VGKSQoRVhFU1VGKSkKIEVYQU1QTEVTX0cgICAgIDo9ICQoRVhBTVBMRVMteWVzOiU9 ZG9jL2V4YW1wbGVzLyUkKFBST0dTU1VGKV9nJChFWEVTVUYpKQpkaWZmIC0tZ2l0IGEvZG9jL2V4 YW1wbGVzL01ha2VmaWxlLmV4YW1wbGUgYi9kb2MvZXhhbXBsZXMvTWFrZWZpbGUuZXhhbXBsZQpp bmRleCBhMjMyZDk3Zjk4Li5mMjQzOGNhZWI4IDEwMDY0NAotLS0gYS9kb2MvZXhhbXBsZXMvTWFr ZWZpbGUuZXhhbXBsZQorKysgYi9kb2MvZXhhbXBsZXMvTWFrZWZpbGUuZXhhbXBsZQpAQCAtMTMs NiArMTMsNyBAQCBMRExJQlMgOj0gJChzaGVsbCBwa2ctY29uZmlnIC0tbGlicyAkKEZGTVBFR19M SUJTKSkgJChMRExJQlMpCiAKIEVYQU1QTEVTPSAgICAgICBhdmlvX2xpc3RfZGlyICAgICAgICAg ICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICBhdmlvX3JlYWRpbmcgICAgICAgICAgICAg ICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBjb252ZXJ0X2VuY29kZV9tdXhfYXVkaW8gICAg ICAgICAgIFwKICAgICAgICAgICAgICAgICBkZWNvZGVfYXVkaW8gICAgICAgICAgICAgICAgICAg ICAgIFwKICAgICAgICAgICAgICAgICBkZWNvZGVfdmlkZW8gICAgICAgICAgICAgICAgICAgICAg IFwKICAgICAgICAgICAgICAgICBkZW11eGluZ19kZWNvZGluZyAgICAgICAgICAgICAgICAgIFwK ZGlmZiAtLWdpdCBhL2RvYy9leGFtcGxlcy9jb252ZXJ0X2VuY29kZV9tdXhfYXVkaW8uYyBiL2Rv Yy9leGFtcGxlcy9jb252ZXJ0X2VuY29kZV9tdXhfYXVkaW8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwLi5hYmRlNjExYmY2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2V4 YW1wbGVzL2NvbnZlcnRfZW5jb2RlX211eF9hdWRpby5jCkBAIC0wLDAgKzEsMzUxIEBACisvKgor ICogQ29weXJpZ2h0IChjKSAyMDE5IFBhb2xvIFByZXRlIChwYW9sb3ByOTc2IGF0IGdtYWlsLmNv bSkKKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwg dG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAor ICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0 IGxpbWl0YXRpb24gdGhlIHJpZ2h0cworICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw dWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorICogY29waWVzIG9m IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJl IGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k aXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p c3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0 YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMg UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBP UgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF UyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMg T1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1Ig T1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP UlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElP TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCisgKiBU SEUgU09GVFdBUkUuCisgKi8KKworLyoqCisgKiBAZmlsZQorICogQVBJIGV4YW1wbGUgZm9yIGNv bnZlcnRpbmcsIGVuY29kaW5nIGFuZCBtdXhpbmcgcmF3IGF1ZGlvIGZpbGVzLgorICogVGhpcyBl eGFtcGxlIHJlYWRzIGEgcmF3IGF1ZGlvIGlucHV0IGZpbGUsIGNvbnZlcnRzIGl0IHRvIGEgc2Ft cGxlIGZvcm1hdCBhY2NlcHRlZCBieQorICogYSBnaXZlbiBlbmNvZGVyLCBwZXJmb3JtcyBlbmNv ZGluZyBhbmQgcHV0cyB0aGUgZW5jb2RlZCBmcmFtZXMgaW50byBhIG11eGluZyBjb250YWluZXIu CisgKiBUaGUgZW5jb2RlZCBzdHJlYW0gaXMgd3JpdHRlbiB0byBhIGZpbGUgbmFtZWQgIm91dGZp bGUiLgorICogSXQgY2FuIGJlIGFkYXB0ZWQsIHdpdGggZmV3IGNoYW5nZXMsIHRvIGEgY3VzdG9t IHJhdyBhdWRpbyBzb3VyY2UgKGkuZTogYSBsaXZlIG9uZSkuCisgKiBJdCB1c2VzIGEgY3VzdG9t IEkvTyB3cml0ZSBjYWxsYmFjayAod3JpdGVfbXV4ZWRfZGF0YSgpKSBpbiBvcmRlciB0byBzaG93 IGhvdyB0byBhY2Nlc3MKKyAqIG11eGVkIHBhY2tldHMgd3JpdHRlbiBpbiBtZW1vcnksIGJlZm9y ZSB0aGV5IGFyZSB3cml0dGVuIHRvIHRoZSBvdXRwdXQgZmlsZS4KKyAqCisgKiBUaGUgcmF3IGlu cHV0IGF1ZGlvIGZpbGUgY2FuIGJlIGNyZWF0ZWQgd2l0aDoKKyAqCisgKiBmZm1wZWcgLWkgc29t ZV9hdWRpb19maWxlIC1mIGYzMmxlIC1hY29kZWMgcGNtX2YzMmxlIC1hYyAyIC1hciA0ODAwMCBy YXdfYXVkaW9fZmlsZS5yYXcKKyAqCisgKiBAZXhhbXBsZSBjb252ZXJ0X2VuY29kZV9tdXhfYXVk aW8uYworICovCisKKyNpbmNsdWRlIDxsaWJhdmNvZGVjL2F2Y29kZWMuaD4KKyNpbmNsdWRlIDxs aWJhdmZvcm1hdC9hdmZvcm1hdC5oPgorI2luY2x1ZGUgPGxpYmF2dXRpbC90aW1lc3RhbXAuaD4K KyNpbmNsdWRlIDxsaWJzd3Jlc2FtcGxlL3N3cmVzYW1wbGUuaD4KKworLy8gQ3VzdG9taXphYmxl IHBhcmFtZXRlcnMKKyNkZWZpbmUgU0FNUExFX1JBVEUgNDgwMDAKKyNkZWZpbmUgRU5DT0RFUl9J RCBBVl9DT0RFQ19JRF9BQUMKKyNkZWZpbmUgRU5DT0RFUl9CSVRSQVRFIDY0MDAwCisjZGVmaW5l IElOUFVUX1NBTVBMRV9GTVQgQVZfU0FNUExFX0ZNVF9GTFQKKyNkZWZpbmUgT1VUUFVUX1NBTVBM RV9GTVQgQVZfU0FNUExFX0ZNVF9GTFRQCisjZGVmaW5lIElOUFVUX0NIQU5ORUxTIDIKKyNkZWZp bmUgT1VUUFVUX0NIQU5ORUxTIDIKKworc3RhdGljIGludCBlbmNvZGVkX3BrdF9jb3VudGVyID0g MTsKKworc3RhdGljIGludCB3cml0ZV9tdXhlZF9kYXRhKHZvaWQgKm9wYXF1ZSwgdWludDhfdCAq ZGF0YSwgaW50IHNpemUpCit7CisgICAgRklMRSAqZW5jb2RlZF9hdWRpb19maWxlID0gKEZJTEUg KilvcGFxdWU7CisgICAgZndyaXRlKGRhdGEsIDEsIHNpemUsIGVuY29kZWRfYXVkaW9fZmlsZSk7 IC8vKGgpCisgICAgcmV0dXJuIHNpemU7Cit9CisKK3N0YXRpYyBpbnQgbXV4X2VuY29kZWRfcGFj a2V0KEFWUGFja2V0ICplbmNvZGVkX2F1ZGlvX3BhY2tldCwgQVZGb3JtYXRDb250ZXh0ICpvdXRf Y29udGFpbmVyX2N0eCkKK3sKKyAgICBpbnQgcmV0X3ZhbDsKKyAgICBpZiAoKHJldF92YWwgPSBh dl93cml0ZV9mcmFtZShvdXRfY29udGFpbmVyX2N0eCwgZW5jb2RlZF9hdWRpb19wYWNrZXQpKSA8 IDApIHsKKyAgICAgICAgYXZfbG9nKE5VTEwsIEFWX0xPR19FUlJPUiwgIkVycm9yIGNhbGxpbmcg YXZfd3JpdGVfZnJhbWUoKSAoZXJyb3IgJyVzJylcbiIsIGF2X2VycjJzdHIocmV0X3ZhbCkpOwor ICAgIH0gZWxzZSB7CisgICAgICAgIGF2X2xvZyhOVUxMLCBBVl9MT0dfSU5GTywgIkVuY29kZWQg cGFja2V0ICVkLCBzaXplPSVkLCBwdHNfdGltZT0lc1xuIiwKKyAgICAgICAgICAgICAgIGVuY29k ZWRfcGt0X2NvdW50ZXIsIGVuY29kZWRfYXVkaW9fcGFja2V0LT5zaXplLAorICAgICAgICAgICAg ICAgYXZfdHMydGltZXN0cihlbmNvZGVkX2F1ZGlvX3BhY2tldC0+cHRzLCAmb3V0X2NvbnRhaW5l cl9jdHgtPnN0cmVhbXNbMF0tPnRpbWVfYmFzZSkpOworICAgIH0KKyAgICByZXR1cm4gcmV0X3Zh bDsKK30KKworc3RhdGljIGludCBjaGVja19pZl9zYW1wbGVyYXRlX2lzX3N1cHBvcnRlZChjb25z dCBBVkNvZGVjICphdWRpb19jb2RlYywgaW50IHNhbXBsZXJhdGUpCit7CisgICAgY29uc3QgaW50 ICpzYW1wbGVyYXRlc19saXN0ID0gYXVkaW9fY29kZWMtPnN1cHBvcnRlZF9zYW1wbGVyYXRlczsK KyAgICB3aGlsZSAoKnNhbXBsZXJhdGVzX2xpc3QpIHsKKyAgICAgICAgaWYgKCpzYW1wbGVyYXRl c19saXN0ID09IHNhbXBsZXJhdGUpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgc2Ft cGxlcmF0ZXNfbGlzdCsrOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworaW50IG1haW4oaW50 IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgIEZJTEUgKmlucHV0X2F1ZGlvX2ZpbGUgPSBOVUxM LCAqZW5jb2RlZF9hdWRpb19maWxlID0gTlVMTDsKKyAgICBBVkNoYW5uZWxMYXlvdXQgaW5fY2hf bGF5b3V0OworICAgIEFWQ2hhbm5lbExheW91dCBvdXRfY2hfbGF5b3V0OworICAgIGNvbnN0IEFW Q29kZWMgKmF1ZGlvX2NvZGVjID0gTlVMTDsKKyAgICBBVkNvZGVjQ29udGV4dCAqYXVkaW9fZW5j b2Rlcl9jdHggPSBOVUxMOworICAgIEFWRnJhbWUgKmlucHV0X2F1ZGlvX2ZyYW1lID0gTlVMTCwg KmNvbnZlcnRlZF9hdWRpb19mcmFtZSA9IE5VTEw7CisgICAgU3dyQ29udGV4dCAqYXVkaW9fY29u dmVydF9jb250ZXh0ID0gTlVMTDsKKyAgICBjb25zdCBBVk91dHB1dEZvcm1hdCAqb3V0X2NvbnRh aW5lciA9IE5VTEw7CisgICAgQVZGb3JtYXRDb250ZXh0ICpvdXRfY29udGFpbmVyX2N0eCA9IE5V TEw7CisgICAgdWludDhfdCAqb3V0X2NvbnRhaW5lcl9idWZmZXIgPSBOVUxMOworICAgIHNpemVf dCBvdXRfY29udGFpbmVyX2J1ZmZlcl9zaXplID0gNDA5NjsKKyAgICBBVklPQ29udGV4dCAqYXZp b19jdHggPSBOVUxMOworICAgIEFWU3RyZWFtICpvdXRfc3RyZWFtID0gTlVMTDsKKyAgICBBVlBh Y2tldCAqZW5jb2RlZF9hdWRpb19wYWNrZXQgPSBOVUxMOworICAgIGludCByZXRfdmFsID0gMDsK KyAgICBpbnQgYXVkaW9fYnl0ZXNfdG9fZW5jb2RlOworCisgICAgaWYgKGFyZ2MgIT0gMykgewor ICAgICAgICBwcmludGYoIlVzYWdlOiAlcyA8cmF3IGF1ZGlvIGlucHV0IGZpbGUgKElOUFVUX0NI QU5ORUxTLCBJTlBVVF9TQU1QTEVfRk1ULCBTQU1QTEVfUkFURSk+LCA8Y29udGFpbmVyIGZvcm1h dD5cbiIsIGFyZ3ZbMF0pOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBpbnB1dF9h dWRpb19maWxlID0gZm9wZW4oYXJndlsxXSwgInJiIik7CisgICAgaWYgKCFpbnB1dF9hdWRpb19m aWxlKSB7CisgICAgICAgIGF2X2xvZyhOVUxMLCBBVl9MT0dfRVJST1IsICJDb3VsZCBub3Qgb3Bl biBpbnB1dCBhdWRpbyBmaWxlXG4iKTsKKyAgICAgICAgcmV0dXJuIEFWRVJST1JfRVhJVDsKKyAg ICB9CisKKyAgICBlbmNvZGVkX2F1ZGlvX2ZpbGUgPSBmb3Blbigib3V0ZmlsZSIsICJ3YiIpOwor ICAgIGlmICghZW5jb2RlZF9hdWRpb19maWxlKSB7CisgICAgICAgIGF2X2xvZyhOVUxMLCBBVl9M T0dfRVJST1IsICJDb3VsZCBub3Qgb3BlbiBvdXRwdXQgYXVkaW8gZmlsZVxuIik7CisgICAgICAg IGZjbG9zZShpbnB1dF9hdWRpb19maWxlKTsKKyAgICAgICAgcmV0dXJuIEFWRVJST1JfRVhJVDsK KyAgICB9CisKKyAgICAvKioKKyAgICAqIEFsbG9jYXRlIHRoZSBlbmNvZGVyJ3MgY29udGV4dCBh bmQgb3BlbiB0aGUgZW5jb2RlcgorICAgICovCisgICAgYXVkaW9fY29kZWMgPSBhdmNvZGVjX2Zp bmRfZW5jb2RlcihFTkNPREVSX0lEKTsKKyAgICBpZiAoIWF1ZGlvX2NvZGVjKSB7CisgICAgICAg IGF2X2xvZyhOVUxMLCBBVl9MT0dfRVJST1IsICJDb3VsZCBub3QgZmluZCBlbmNvZGVyJ3MgY29k ZWNcbiIpOworICAgICAgICByZXRfdmFsID0gQVZFUlJPUl9FWElUOworICAgICAgICBnb3RvIGVu ZDsKKyAgICB9CisgICAgaWYgKChyZXRfdmFsID0gY2hlY2tfaWZfc2FtcGxlcmF0ZV9pc19zdXBw b3J0ZWQoYXVkaW9fY29kZWMsIFNBTVBMRV9SQVRFKSkgIT0gMCkgeworICAgICAgICBhdl9sb2co TlVMTCwgQVZfTE9HX0VSUk9SLCAiQXVkaW8gY29kZWMgZG9lc24ndCBzdXBwb3J0IGlucHV0IHNh bXBsZXJhdGUgJWRcbiIsIFNBTVBMRV9SQVRFKTsKKyAgICAgICAgZ290byBlbmQ7CisgICAgfQor ICAgIGF1ZGlvX2VuY29kZXJfY3R4ID0gYXZjb2RlY19hbGxvY19jb250ZXh0MyhhdWRpb19jb2Rl Yyk7CisgICAgaWYgKCFhdWRpb19jb2RlYykgeworICAgICAgICBhdl9sb2coTlVMTCwgQVZfTE9H X0VSUk9SLCAiQ291bGQgbm90IGFsbG9jYXRlIHRoZSBlbmNvZGluZyBjb250ZXh0XG4iKTsKKyAg ICAgICAgcmV0X3ZhbCA9IEFWRVJST1JfRVhJVDsKKyAgICAgICAgZ290byBlbmQ7CisgICAgfQor ICAgIGF2X2NoYW5uZWxfbGF5b3V0X2RlZmF1bHQoJm91dF9jaF9sYXlvdXQsIE9VVFBVVF9DSEFO TkVMUyk7CisgICAgYXVkaW9fZW5jb2Rlcl9jdHgtPnNhbXBsZV9mbXQgPSBPVVRQVVRfU0FNUExF X0ZNVDsKKyAgICBhdWRpb19lbmNvZGVyX2N0eC0+Yml0X3JhdGUgPSBFTkNPREVSX0JJVFJBVEU7 CisgICAgYXVkaW9fZW5jb2Rlcl9jdHgtPnNhbXBsZV9yYXRlID0gU0FNUExFX1JBVEU7CisgICAg YXVkaW9fZW5jb2Rlcl9jdHgtPmNoX2xheW91dCA9IG91dF9jaF9sYXlvdXQ7CisgICAgYXVkaW9f ZW5jb2Rlcl9jdHgtPnRpbWVfYmFzZSA9IChBVlJhdGlvbmFsKXsxLCBTQU1QTEVfUkFURX07Cisg ICAgYXVkaW9fZW5jb2Rlcl9jdHgtPmNvZGVjX3R5cGUgPSBBVk1FRElBX1RZUEVfQVVESU8gOwor ICAgIGlmICgocmV0X3ZhbCA9IGF2Y29kZWNfb3BlbjIoYXVkaW9fZW5jb2Rlcl9jdHgsIGF1ZGlv X2NvZGVjLCBOVUxMKSkgPCAwKSB7CisgICAgICAgIGF2X2xvZyhOVUxMLCBBVl9MT0dfRVJST1Is ICJDb3VsZCBub3Qgb3BlbiBpbnB1dCBjb2RlYyAoZXJyb3IgJyVzJylcbiIsIGF2X2VycjJzdHIo cmV0X3ZhbCkpOworICAgICAgICBnb3RvIGVuZDsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIEFs bG9jYXRlIGFuIEFWRnJhbWUgd2hpY2ggd2lsbCBiZSBmaWxsZWQgd2l0aCB0aGUgaW5wdXQgZmls ZSdzIGRhdGEuCisgICAgKi8KKyAgICBpZiAoIShpbnB1dF9hdWRpb19mcmFtZSA9IGF2X2ZyYW1l X2FsbG9jKCkpKSB7CisgICAgICAgIGF2X2xvZyhOVUxMLCBBVl9MT0dfRVJST1IsICJDb3VsZCBu b3QgYWxsb2NhdGUgaW5wdXQgZnJhbWVcbiIpOworICAgICAgICByZXRfdmFsID0gQVZFUlJPUihF Tk9NRU0pOworICAgICAgICBnb3RvIGVuZDsKKyAgICB9CisgICAgYXZfY2hhbm5lbF9sYXlvdXRf ZGVmYXVsdCgmaW5fY2hfbGF5b3V0LCBJTlBVVF9DSEFOTkVMUyk7CisgICAgaW5wdXRfYXVkaW9f ZnJhbWUtPm5iX3NhbXBsZXMgICAgID0gYXVkaW9fZW5jb2Rlcl9jdHgtPmZyYW1lX3NpemU7Cisg ICAgaW5wdXRfYXVkaW9fZnJhbWUtPmZvcm1hdCAgICAgICAgID0gSU5QVVRfU0FNUExFX0ZNVDsK KyAgICBpbnB1dF9hdWRpb19mcmFtZS0+c2FtcGxlX3JhdGUgICAgPSBTQU1QTEVfUkFURTsKKyAg ICBpbnB1dF9hdWRpb19mcmFtZS0+Y2hfbGF5b3V0ICAgICAgPSBpbl9jaF9sYXlvdXQ7CisgICAg Ly8gQWxsb2NhdGUgdGhlIGZyYW1lJ3MgZGF0YSBidWZmZXIKKyAgICBpZiAoKHJldF92YWwgPSBh dl9mcmFtZV9nZXRfYnVmZmVyKGlucHV0X2F1ZGlvX2ZyYW1lLCAwKSkgPCAwKSB7CisgICAgICAg IGF2X2xvZyhOVUxMLCBBVl9MT0dfRVJST1IsCisgICAgICAgICAgICAgICAiQ291bGQgbm90IGFs bG9jYXRlIGNvbnRhaW5lciBmb3IgaW5wdXQgZnJhbWUgc2FtcGxlcyAoZXJyb3IgJyVzJylcbiIs IGF2X2VycjJzdHIocmV0X3ZhbCkpOworICAgICAgICByZXRfdmFsID0gQVZFUlJPUihFTk9NRU0p OworICAgICAgICBnb3RvIGVuZDsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIElucHV0IGRhdGEg bXVzdCBiZSBjb252ZXJ0ZWQgaW4gdGhlIHJpZ2h0IGZvcm1hdCByZXF1aXJlZCBieSB0aGUgZW5j b2Rlci4KKyAgICAqIFdlIGFsbG9jYXRlIGEgU3dyQ29udGV4dCBhbmQgYW4gQVZGcmFtZSAod2hp Y2ggd2lsbCBjb250YWluIHRoZSBjb252ZXJ0ZWQgc2FtcGxlcykgZm9yIHRoaXMgdGFzay4KKyAg ICAqIFRoZSBBVkZyYW1lIHdpbGwgZmVlZCB0aGUgZW5jb2RpbmcgZnVuY3Rpb24gKGF2Y29kZWNf c2VuZF9mcmFtZSgpKQorICAgICovCisgICAgc3dyX2FsbG9jX3NldF9vcHRzMigmYXVkaW9fY29u dmVydF9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJm91dF9jaF9sYXlvdXQsCisg ICAgICAgICAgICAgICAgICAgICAgICBPVVRQVVRfU0FNUExFX0ZNVCwKKyAgICAgICAgICAgICAg ICAgICAgICAgIFNBTVBMRV9SQVRFLAorICAgICAgICAgICAgICAgICAgICAgICAgJmluX2NoX2xh eW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIElOUFVUX1NBTVBMRV9GTVQsCisgICAgICAg ICAgICAgICAgICAgICAgICBTQU1QTEVfUkFURSwKKyAgICAgICAgICAgICAgICAgICAgICAgIDAs CisgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICBpZiAoIWF1ZGlvX2NvbnZlcnRf Y29udGV4dCkgeworICAgICAgICBhdl9sb2coTlVMTCwgQVZfTE9HX0VSUk9SLCAiQ291bGQgbm90 IGFsbG9jYXRlIHJlc2FtcGxlIGNvbnRleHRcbiIpOworICAgICAgICByZXRfdmFsID0gQVZFUlJP UihFTk9NRU0pOworICAgICAgICBnb3RvIGVuZDsKKyAgICB9CisgICAgaWYgKCEoY29udmVydGVk X2F1ZGlvX2ZyYW1lID0gYXZfZnJhbWVfYWxsb2MoKSkpIHsKKyAgICAgICAgYXZfbG9nKE5VTEws IEFWX0xPR19FUlJPUiwgIkNvdWxkIG5vdCBhbGxvY2F0ZSByZXNhbXBsZWQgZnJhbWVcbiIpOwor ICAgICAgICByZXRfdmFsID0gQVZFUlJPUihFTk9NRU0pOworICAgICAgICBnb3RvIGVuZDsKKyAg ICB9CisgICAgY29udmVydGVkX2F1ZGlvX2ZyYW1lLT5uYl9zYW1wbGVzICAgICA9IGF1ZGlvX2Vu Y29kZXJfY3R4LT5mcmFtZV9zaXplOworICAgIGNvbnZlcnRlZF9hdWRpb19mcmFtZS0+Zm9ybWF0 ICAgICAgICAgPSBhdWRpb19lbmNvZGVyX2N0eC0+c2FtcGxlX2ZtdDsKKyAgICBjb252ZXJ0ZWRf YXVkaW9fZnJhbWUtPmNoX2xheW91dCAgICAgID0gYXVkaW9fZW5jb2Rlcl9jdHgtPmNoX2xheW91 dDsKKyAgICBjb252ZXJ0ZWRfYXVkaW9fZnJhbWUtPnNhbXBsZV9yYXRlICAgID0gU0FNUExFX1JB VEU7CisgICAgaWYgKChyZXRfdmFsID0gYXZfZnJhbWVfZ2V0X2J1ZmZlcihjb252ZXJ0ZWRfYXVk aW9fZnJhbWUsIDApKSA8IDApIHsKKyAgICAgICAgYXZfbG9nKE5VTEwsIEFWX0xPR19FUlJPUiwK KyAgICAgICAgICAgICAgICJDb3VsZCBub3QgYWxsb2NhdGUgYSBidWZmZXIgZm9yIHJlc2FtcGxl ZCBmcmFtZSBzYW1wbGVzIChlcnJvciAnJXMnKVxuIiwgYXZfZXJyMnN0cihyZXRfdmFsKSk7Cisg ICAgICAgIGdvdG8gZW5kOworICAgIH0KKworICAgIC8qKgorICAgICogQ3JlYXRlIHRoZSBvdXRw dXQgY29udGFpbmVyIGZvciB0aGUgZW5jb2RlZCBmcmFtZXMKKyAgICAqLworICAgIG91dF9jb250 YWluZXIgPSBhdl9ndWVzc19mb3JtYXQoYXJndlsyXSwgTlVMTCwgTlVMTCk7CisgICAgaWYgKCFv dXRfY29udGFpbmVyKSB7CisgICAgICAgIGF2X2xvZyhOVUxMLCBBVl9MT0dfRVJST1IsICJDb3Vs ZCBub3QgZmluZCBvdXRwdXQgZm9ybWF0XG4iKTsKKyAgICAgICAgcmV0X3ZhbCA9IEFWRVJST1Jf RVhJVDsKKyAgICAgICAgZ290byBlbmQ7CisgICAgfQorICAgIGlmICgocmV0X3ZhbCA9IGF2Zm9y bWF0X2FsbG9jX291dHB1dF9jb250ZXh0Migmb3V0X2NvbnRhaW5lcl9jdHgsIG91dF9jb250YWlu ZXIsICIiLCBOVUxMKSkgPCAwKSB7CisgICAgICAgIGF2X2xvZyhOVUxMLCBBVl9MT0dfRVJST1Is ICJDb3VsZCBub3QgY3JlYXRlIG91dHB1dCBjb250ZXh0IChlcnJvciAnJXMnKVxuIiwgYXZfZXJy MnN0cihyZXRfdmFsKSk7CisgICAgICAgIGdvdG8gZW5kOworICAgIH0KKyAgICBpZiAoIShvdXRf Y29udGFpbmVyX2J1ZmZlciA9IGF2X21hbGxvYyhvdXRfY29udGFpbmVyX2J1ZmZlcl9zaXplKSkp IHsKKyAgICAgICAgYXZfbG9nKE5VTEwsIEFWX0xPR19FUlJPUiwgIkNvdWxkIG5vdCBhbGxvY2F0 ZSBhIGJ1ZmZlciBmb3IgdGhlIEkvTyBvdXRwdXQgY29udGV4dFxuIik7CisgICAgICAgIHJldF92 YWwgPSBBVkVSUk9SKEVOT01FTSk7CisgICAgICAgIGdvdG8gZW5kOworICAgIH0KKworICAgIC8q KgorICAgICogQ3JlYXRlIGFuIEkvTyBjb250ZXh0IGZvciB0aGUgbXV4ZXIncyBjb250YWluZXIg d2l0aCBhIHdyaXRlIGNhbGxiYWNrICh3cml0ZV9tdXhlZF9kYXRhKCkpLAorICAgICogc28gdGhh dCBtdXhlZCBkYXRhIHdpbGwgYmUgYWNjZXNzZWQgdGhyb3VnaCB0aGlzIGZ1bmN0aW9uIGFuZCBj YW4gYmUgbWFuYWdlZCBieSB0aGUgdXNlci4KKyAgICAqLworICAgIGlmICghKGF2aW9fY3R4ID0g YXZpb19hbGxvY19jb250ZXh0KG91dF9jb250YWluZXJfYnVmZmVyLCBvdXRfY29udGFpbmVyX2J1 ZmZlcl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIGVu Y29kZWRfYXVkaW9fZmlsZSwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmd3JpdGVfbXV4ZWRfZGF0YSwgTlVMTCkpKSB7CisgICAgICAgIGF2X2xvZyhOVUxM LCBBVl9MT0dfRVJST1IsICJDb3VsZCBub3QgY3JlYXRlIEkvTyBvdXRwdXQgY29udGV4dFxuIik7 CisgICAgICAgIHJldF92YWwgPSBBVkVSUk9SX0VYSVQ7CisgICAgICAgIGdvdG8gZW5kOworICAg IH0KKworICAgIC8qKgorICAgICogTGluayB0aGUgY29udGFpbmVyJ3MgY29udGV4dCB0byB0aGUg cHJldmlvdXMgSS9PIGNvbnRleHQKKyAgICAqLworICAgIG91dF9jb250YWluZXJfY3R4LT5wYiA9 IGF2aW9fY3R4OworICAgIGlmICghKG91dF9zdHJlYW0gPSBhdmZvcm1hdF9uZXdfc3RyZWFtKG91 dF9jb250YWluZXJfY3R4LCBOVUxMKSkpIHsKKyAgICAgICAgYXZfbG9nKE5VTEwsIEFWX0xPR19F UlJPUiwgIkNvdWxkIG5vdCBjcmVhdGUgbmV3IHN0cmVhbVxuIik7CisgICAgICAgIHJldF92YWwg PSBBVkVSUk9SKEVOT01FTSk7CisgICAgICAgIGdvdG8gZW5kOworICAgIH0KKyAgICBvdXRfc3Ry ZWFtLT5pZCA9IG91dF9jb250YWluZXJfY3R4LT5uYl9zdHJlYW1zLTE7CisKKyAgICAvLyBDb3B5 IHRoZSBlbmNvZGVyJ3MgcGFyYW1ldGVycworICAgIGF2Y29kZWNfcGFyYW1ldGVyc19mcm9tX2Nv bnRleHQob3V0X3N0cmVhbS0+Y29kZWNwYXIsIGF1ZGlvX2VuY29kZXJfY3R4KTsKKyAgICAvLyBB bGxvY2F0ZSB0aGUgc3RyZWFtIHByaXZhdGUgZGF0YSBhbmQgd3JpdGUgdGhlIHN0cmVhbSBoZWFk ZXIKKyAgICBpZiAoYXZmb3JtYXRfd3JpdGVfaGVhZGVyKG91dF9jb250YWluZXJfY3R4LCBOVUxM KSA8IDApIHsKKyAgICAgICAgYXZfbG9nKE5VTEwsIEFWX0xPR19FUlJPUiwgImF2Zm9ybWF0X3dy aXRlX2hlYWRlcigpIGVycm9yXG4iKTsKKyAgICAgICAgcmV0X3ZhbCA9IEFWRVJST1JfRVhJVDsK KyAgICAgICAgZ290byBlbmQ7CisgICAgfQorCisgICAgLyoqCisgICAgKiAoYSkgRmlsbCB0aGUg aW5wdXQgZnJhbWUncyBkYXRhIGJ1ZmZlciB3aXRoIGlucHV0IGZpbGUgZGF0YQorICAgICogKGIp IENvbnZlcnQgdGhlIGlucHV0IGZyYW1lIHRvIG91dHB1dCBzYW1wbGUgZm9ybWF0CisgICAgKiAo YykgQXNzaWduIGEgcHRzIHRvIHRoZSBjb252ZXJ0ZWQgZnJhbWUgYmFzZWQgb24gdGhlIG51bWJl ciBvdCB0b3RhbCBzYW1wbGVzIHJlYWQKKyAgICAqIChkKSBTZW5kIHRoZSBjb252ZXJ0ZWQgZnJh bWUgdG8gdGhlIGVuY29kZXIKKyAgICAqIChlKSBHZXQgdGhlIGVuY29kZWQgcGFja2V0CisgICAg KiAoZikgUmVzY2FsZSB0aGUgdGltZXN0YW1wcyBvZiB0aGUgZW5jb2RlZCBwYWNrZXQgdG8gdGhl IG11eGVyJ3MgdGltZWJhc2UKKyAgICAqIChnKSBTZW5kIHRoZSBlbmNvZGVkIHBhY2tldCwgd2l0 aCByZXNjYWxlZCB0aW1lc3RhbXBzLCB0byB0aGUgbXV4ZXIKKyAgICAqIChoKSBNdXhlZCBkYXRh IGlzIGNhdWdodCBpbiB3cml0ZV9tdXhlZF9kYXRhKCkgY2FsbGJhY2sgKHNlZSBhYm92ZSkgYW5k IGl0IGlzCisgICAgKiAgICAgd3JpdHRlbiB0byB0aGUgb3V0cHV0IGF1ZGlvIGZpbGUKKyAgICAq LworICAgIGVuY29kZWRfYXVkaW9fcGFja2V0ID0gYXZfcGFja2V0X2FsbG9jKCk7CisgICAgd2hp bGUgKDEpIHsKKworICAgICAgICBhdWRpb19ieXRlc190b19lbmNvZGUgPSBmcmVhZChpbnB1dF9h dWRpb19mcmFtZS0+ZGF0YVswXSwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW5wdXRfYXVkaW9fZnJhbWUtPmxpbmVzaXplWzBdLCBpbnB1dF9hdWRpb19maWxlKTsg Ly8oYSkKKyAgICAgICAgaWYgKGF1ZGlvX2J5dGVzX3RvX2VuY29kZSAhPSBpbnB1dF9hdWRpb19m cmFtZS0+bGluZXNpemVbMF0pIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgaWYgKGF2X2ZyYW1lX21ha2Vfd3JpdGFibGUoY29udmVydGVkX2F1ZGlv X2ZyYW1lKSA8IDApIHsKKyAgICAgICAgICAgICAgICBhdl9sb2coTlVMTCwgQVZfTE9HX0VSUk9S LCAiYXZfZnJhbWVfbWFrZV93cml0YWJsZSgpIGVycm9yXG4iKTsKKyAgICAgICAgICAgICAgICBy ZXRfdmFsID0gQVZFUlJPUl9FWElUOworICAgICAgICAgICAgICAgIGdvdG8gZW5kOworICAgICAg ICAgICAgfQorCisgICAgICAgICAgICBpZiAoKHJldF92YWwgPSBzd3JfY29udmVydF9mcmFtZShh dWRpb19jb252ZXJ0X2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb252ZXJ0ZWRfYXVkaW9fZnJhbWUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgQVZGcmFtZSAqKWlucHV0X2F1ZGlvX2ZyYW1l KSkgIT0gMCkgeyAvLyhiKQorICAgICAgICAgICAgICAgIGF2X2xvZyhOVUxMLCBBVl9MT0dfRVJS T1IsCisgICAgICAgICAgICAgICAgICAgICAgICJFcnJvciByZXNhbXBsaW5nIGlucHV0IGF1ZGlv IGZyYW1lIChlcnJvciAnJXMnKVxuIiwgYXZfZXJyMnN0cihyZXRfdmFsKSk7CisgICAgICAgICAg ICAgICAgZ290byBlbmQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbnZlcnRlZF9h dWRpb19mcmFtZS0+cHRzID0gY29udmVydGVkX2F1ZGlvX2ZyYW1lLT5uYl9zYW1wbGVzKihlbmNv ZGVkX3BrdF9jb3VudGVyLTEpOyAvLyhjKQorCisgICAgICAgICAgICBpZiAoKHJldF92YWwgPSBh dmNvZGVjX3NlbmRfZnJhbWUoYXVkaW9fZW5jb2Rlcl9jdHgsIGNvbnZlcnRlZF9hdWRpb19mcmFt ZSkpID09IDApIC8vKGQpCisgICAgICAgICAgICAgICAgcmV0X3ZhbCA9IGF2Y29kZWNfcmVjZWl2 ZV9wYWNrZXQoYXVkaW9fZW5jb2Rlcl9jdHgsIGVuY29kZWRfYXVkaW9fcGFja2V0KTsgLy8oZSkK KyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGF2X2xvZyhOVUxMLCBBVl9MT0df RVJST1IsCisgICAgICAgICAgICAgICAgICAgICAgICJFcnJvciBlbmNvZGluZyBmcmFtZSAoZXJy b3IgJyVzJylcbiIsIGF2X2VycjJzdHIocmV0X3ZhbCkpOworICAgICAgICAgICAgICAgIGdvdG8g ZW5kOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocmV0X3ZhbCA9PSAwKSB7Cisg ICAgICAgICAgICAgICAgZW5jb2RlZF9hdWRpb19wYWNrZXQtPmR0cyA9IGVuY29kZWRfYXVkaW9f cGFja2V0LT5wdHMgPSBjb252ZXJ0ZWRfYXVkaW9fZnJhbWUtPnB0czsKKyAgICAgICAgICAgICAg ICBhdl9wYWNrZXRfcmVzY2FsZV90cyhlbmNvZGVkX2F1ZGlvX3BhY2tldCwgYXVkaW9fZW5jb2Rl cl9jdHgtPnRpbWVfYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv dXRfc3RyZWFtLT50aW1lX2Jhc2UpOyAvLyhmKQorICAgICAgICAgICAgICAgIGlmICgocmV0X3Zh bCA9IG11eF9lbmNvZGVkX3BhY2tldChlbmNvZGVkX2F1ZGlvX3BhY2tldCwgb3V0X2NvbnRhaW5l cl9jdHgpKSA8IDApIC8vKGcpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZW5kOworICAgICAg ICAgICAgICAgIGVuY29kZWRfcGt0X2NvdW50ZXIrKzsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAo cmV0X3ZhbCAhPSBBVkVSUk9SKEVBR0FJTikpIHsKKyAgICAgICAgICAgICAgICBhdl9sb2coTlVM TCwgQVZfTE9HX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICAiRXJyb3IgcmVjZWl2aW5n IGVuY29kZWQgcGFja2V0IChlcnJvciAnJXMnKVxuIiwgYXZfZXJyMnN0cihyZXRfdmFsKSk7Cisg ICAgICAgICAgICAgICAgZ290byBlbmQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9 CisKKyAgICAvLyBGbHVzaCBjYWNoZWQgcGFja2V0cworICAgIGlmICgocmV0X3ZhbCA9IGF2Y29k ZWNfc2VuZF9mcmFtZShhdWRpb19lbmNvZGVyX2N0eCwgTlVMTCkpID09IDApCisgICAgICAgIGRv IHsKKyAgICAgICAgICAgIHJldF92YWwgPSBhdmNvZGVjX3JlY2VpdmVfcGFja2V0KGF1ZGlvX2Vu Y29kZXJfY3R4LCBlbmNvZGVkX2F1ZGlvX3BhY2tldCk7CisgICAgICAgICAgICBpZiAocmV0X3Zh bCA9PSAwKSB7CisgICAgICAgICAgICAgICAgZW5jb2RlZF9hdWRpb19wYWNrZXQtPmR0cyA9IGNv bnZlcnRlZF9hdWRpb19mcmFtZS0+bmJfc2FtcGxlcyooZW5jb2RlZF9wa3RfY291bnRlci0xKTsK KyAgICAgICAgICAgICAgICBlbmNvZGVkX2F1ZGlvX3BhY2tldC0+cHRzID0gZW5jb2RlZF9hdWRp b19wYWNrZXQtPmR0czsKKyAgICAgICAgICAgICAgICBhdl9wYWNrZXRfcmVzY2FsZV90cyhlbmNv ZGVkX2F1ZGlvX3BhY2tldCwgYXVkaW9fZW5jb2Rlcl9jdHgtPnRpbWVfYmFzZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRfc3RyZWFtLT50aW1lX2Jhc2UpOworICAg ICAgICAgICAgICAgIGlmICgocmV0X3ZhbCA9IG11eF9lbmNvZGVkX3BhY2tldChlbmNvZGVkX2F1 ZGlvX3BhY2tldCwgb3V0X2NvbnRhaW5lcl9jdHgpKSA8IDApCisgICAgICAgICAgICAgICAgICAg IGdvdG8gZW5kOworICAgICAgICAgICAgICAgIGVuY29kZWRfcGt0X2NvdW50ZXIrKzsKKyAgICAg ICAgICAgIH0KKyAgICAgICAgfSB3aGlsZSAocmV0X3ZhbCA9PSAwKTsKKworICAgIGF2X3dyaXRl X3RyYWlsZXIob3V0X2NvbnRhaW5lcl9jdHgpOworCitlbmQ6CisKKyAgICBmY2xvc2UoaW5wdXRf YXVkaW9fZmlsZSk7CisgICAgZmNsb3NlKGVuY29kZWRfYXVkaW9fZmlsZSk7CisgICAgYXZjb2Rl Y19mcmVlX2NvbnRleHQoJmF1ZGlvX2VuY29kZXJfY3R4KTsKKyAgICBhdl9mcmFtZV9mcmVlKCZp bnB1dF9hdWRpb19mcmFtZSk7CisgICAgc3dyX2ZyZWUoJmF1ZGlvX2NvbnZlcnRfY29udGV4dCk7 CisgICAgYXZfZnJhbWVfZnJlZSgmY29udmVydGVkX2F1ZGlvX2ZyYW1lKTsKKyAgICBhdmZvcm1h dF9mcmVlX2NvbnRleHQob3V0X2NvbnRhaW5lcl9jdHgpOworICAgIGF2X2ZyZWVwKCZhdmlvX2N0 eCk7CisgICAgYXZfZnJlZXAoJm91dF9jb250YWluZXJfYnVmZmVyKTsKKyAgICBhdl9wYWNrZXRf ZnJlZSgmZW5jb2RlZF9hdWRpb19wYWNrZXQpOworCisgICAgcmV0dXJuIHJldF92YWw7CisKK30K LS0gCjIuMzIuMAoK ------=_Part_12475701_1925304795.1654537242853 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ------=_Part_12475701_1925304795.1654537242853--