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 DEFFB4C9A2 for ; Sun, 11 Aug 2024 14:01:39 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BF4B068D9B3; Sun, 11 Aug 2024 17:01:37 +0300 (EEST) Received: from mail-vk1-f180.google.com (mail-vk1-f180.google.com [209.85.221.180]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C29EF68D6CC for ; Sun, 11 Aug 2024 17:01:30 +0300 (EEST) Received: by mail-vk1-f180.google.com with SMTP id 71dfb90a1353d-4f524fa193aso2677216e0c.0 for ; Sun, 11 Aug 2024 07:01:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1723384889; x=1723989689; darn=ffmpeg.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=zd32qK3HFfv/V3RhUzMHd4D3lmlrYpZSHs/m1+X436k=; b=kl15S4YE4NBAtr7pUu0a2KrYf7QQeCslgzbC4rjB58UInUv17JMeWAX27ln8ZplMe/ hqJ5TuxfbYZKu+c/JSaeNnwi3B7Ow5fzdKtstP9jOh7kGsFWd+SWLmJ7HtUXVeYxoCsz J9GViUWgge1SZIvTUVRZ2Eq0bK+iaG9TNsRHlKBac11GFzD6Mf+caA69WW/k59MhXPMi aIZjik1jtmwEaX29aFYDTRgNu1VTKFqlYureMi5CLnf6e45dp+uxWvmMoy2sL9EL7tvb X0nJE9PEQVFXspE/lMUuiixwQy12le0SbGImLlsPvTqv0iHlV7AIBge2AkKXMR6kuQqs Xv8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723384889; x=1723989689; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=zd32qK3HFfv/V3RhUzMHd4D3lmlrYpZSHs/m1+X436k=; b=OEHukGd0sF+5LuunkNECkRUzmCYVHFDHe9UTtboXbm4ajuqUZ0kZ6S+nF0gFHID/QZ qwmMIqKl749y0lSePaox+xb0rEoduzfpjn5HiKdVlzi9vYL6NbzZV4AGf+boUwhTbnU/ yg8LFu9MgjEcHuf3YpJPl715fm09e1Gagn7cKwZeyjO0KcJM0LsdMim8lIl9FOSQ917W 1rd69fvFTh5mVG1lVDHXum/uooq7vvFd6Gg7/W9XikSTSJT8AYKjREwomqiNNblkJEpf O28TpG8LH4vc9L4a2PZ/HnjDKt3WzeKzgdmhv/yO0Q7oQRXeTT7g+VVH4P+tV7hK32tq jgnQ== X-Gm-Message-State: AOJu0YzabcnlcPgve+x3tHQBkNJLf0NszXi6LsKwS0iLHB1f6MKmeLcX lBxf0AXyaduE0b1/vANLghtBH6g+2Z8KyvlN8mV3J6dQc6Nkc3L9SUrO6czHAIr6knMnMFGntPC elVxhB0a7OoZ+mxftlaeX5sWLTIh5LT3e X-Google-Smtp-Source: AGHT+IEn5UPS1j+s4jwlH+clKKSO6ji4IZQNeEyfu6Ehe2I11P1hrkezeOmmSipoHWI1WLAvTAH8xttCJ19y1ZEuItI= X-Received: by 2002:a05:6122:3b0a:b0:4f5:2849:598d with SMTP id 71dfb90a1353d-4f9042c93eemr6960050e0c.4.1723384888871; Sun, 11 Aug 2024 07:01:28 -0700 (PDT) MIME-Version: 1.0 References: <20240728031807.462810-1-nuomi2021@gmail.com> In-Reply-To: From: Nuo Mi Date: Sun, 11 Aug 2024 22:01:17 +0800 Message-ID: To: ffmpeg-devel@ffmpeg.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH 11/11] avcodec/vvcdec: move frame tab memset from the main thread to worker threads 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 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: T24gU3VuLCBKdWwgMjgsIDIwMjQgYXQgMTE6MTnigK9BTSBOdW8gTWkgPG51b21pMjAyMUBnbWFp bC5jb20+IHdyb3RlOgoKPiBtZW1zZXQgdGFibGVzIGluIHRoZSBtYWluIHRocmVhZCBjYW4gYmVj b21lIGEgYm90dGxlbmVjayBmb3IgdGhlIGRlY29kZXIuCj4gRm9yIGV4YW1wbGUsIGlmIGl0IHRh a2VzIDElIG9mIHRoZSBwcm9jZXNzaW5nIHRpbWUgZm9yIG9uZSBjb3JlLCB0aGUKPiBtYXhpbXVt IGFjaGlldmFibGUgRlBTIHdpbGwgYmUgMTAwLgo+IE1vdmUgdGhlIG1lbWVzZXQgdG8gd29ya2Vy IHRocmVhZHMgd2lsbCBmaXggdGhlIGlzc3VlLgo+CndpbGwgYXBwbHkgbmV4dCB3ZWVrIGlmIHRo ZXJlIGFyZSBubyBvYmplY3Rpb25zCgo+IC0tLQo+ICBsaWJhdmNvZGVjL3Z2Yy9kZWMuYyAgICB8 ICAxMyArKysrLQo+ICBsaWJhdmNvZGVjL3Z2Yy90aHJlYWQuYyB8IDEyMiArKysrKysrKysrKysr KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCj4gIGxpYmF2Y29kZWMvdnZjL3RocmVhZC5oIHwg ICAxICsKPiAgMyBmaWxlcyBjaGFuZ2VkLCA4NSBpbnNlcnRpb25zKCspLCA1MSBkZWxldGlvbnMo LSkKPgo+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3Z2Yy9kZWMuYyBiL2xpYmF2Y29kZWMvdnZj L2RlYy5jCj4gaW5kZXggNTc1YmNmYTMzZC4uZDM0NzEzMjk2ZCAxMDA2NDQKPiAtLS0gYS9saWJh dmNvZGVjL3Z2Yy9kZWMuYwo+ICsrKyBiL2xpYmF2Y29kZWMvdnZjL2RlYy5jCj4gQEAgLTgyLDcg KzgyLDEzIEBAIHN0YXRpYyBpbnQgdGxfY3JlYXRlKFRhYkxpc3QgKmwpCj4gICAgICAgICAgICAg IGlmICghKnQtPnRhYikKPiAgICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7 Cj4gICAgICAgICAgfQo+IC0gICAgfSBlbHNlIGlmIChsLT56ZXJvKSB7Cj4gKyAgICB9Cj4gKyAg ICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCB0bF96ZXJvKFRhYkxpc3QgKmwpCj4g K3sKPiArICAgIGlmIChsLT56ZXJvKSB7Cj4gICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBs LT5uYl90YWJzOyBpKyspIHsKPiAgICAgICAgICAgICAgVGFiICp0ID0gbC0+dGFicyArIGk7Cj4g ICAgICAgICAgICAgIG1lbXNldCgqdC0+dGFiLCAwLCB0LT5zaXplKTsKPiBAQCAtNDA0LDYgKzQx MCwxMSBAQCBzdGF0aWMgaW50IHBpY19hcnJheXNfaW5pdChWVkNDb250ZXh0ICpzLAo+IFZWQ0Zy YW1lQ29udGV4dCAqZmMpCj4gICAgICByZXR1cm4gMDsKPiAgfQo+Cj4gK2ludCBmZl92dmNfcGVy X2ZyYW1lX2luaXQoVlZDRnJhbWVDb250ZXh0ICpmYykKPiArewo+ICsgICAgcmV0dXJuIGZyYW1l X2NvbnRleHRfZm9yX2VhY2hfdGwoZmMsIHRsX3plcm8pOwo+ICt9Cj4gKwo+ICBzdGF0aWMgaW50 IG1pbl9wb3NpdGl2ZShjb25zdCBpbnQgaWR4LCBjb25zdCBpbnQgZGlmZiwgY29uc3QgaW50IG1p bl9kaWZmKQo+ICB7Cj4gICAgICByZXR1cm4gZGlmZiA+IDAgJiYgKGlkeCA8IDAgfHwgZGlmZiA8 IG1pbl9kaWZmKTsKPiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92dmMvdGhyZWFkLmMgYi9saWJh dmNvZGVjL3Z2Yy90aHJlYWQuYwo+IGluZGV4IDI4MDY1ZDcyNmYuLjc0ZjhlNGU5ZDAgMTAwNjQ0 Cj4gLS0tIGEvbGliYXZjb2RlYy92dmMvdGhyZWFkLmMKPiArKysgYi9saWJhdmNvZGVjL3Z2Yy90 aHJlYWQuYwo+IEBAIC00MCw2ICs0MCw3IEBAIHR5cGVkZWYgc3RydWN0IFByb2dyZXNzTGlzdGVu ZXIgewo+ICB9IFByb2dyZXNzTGlzdGVuZXI7Cj4KPiAgdHlwZWRlZiBlbnVtIFZWQ1Rhc2tTdGFn ZSB7Cj4gKyAgICBWVkNfVEFTS19TVEFHRV9JTklULCAgICAgICAgICAgICAgICAgICAgLy8gZm9y IENUVSgwLCAwKSBvbmx5Cj4gICAgICBWVkNfVEFTS19TVEFHRV9QQVJTRSwKPiAgICAgIFZWQ19U QVNLX1NUQUdFX0lOVEVSLAo+ICAgICAgVlZDX1RBU0tfU1RBR0VfUkVDT04sCj4gQEAgLTE3NSwx MCArMTc2LDE0IEBAIHN0YXRpYyBpbnQgdGFza19oYXNfdGFyZ2V0X3Njb3JlKFZWQ1Rhc2sgKnQs IGNvbnN0Cj4gVlZDVGFza1N0YWdlIHN0YWdlLCBjb25zdCB1aW4KPiAgICAgIHVpbnQ4X3QgdGFy Z2V0ID0gMDsKPiAgICAgIFZWQ0ZyYW1lQ29udGV4dCAqZmMgPSB0LT5mYzsKPgo+ICsgICAgaWYg KHN0YWdlID09IFZWQ19UQVNLX1NUQUdFX0lOSVQpCj4gKyAgICAgICAgcmV0dXJuIDE7Cj4gKwo+ ICAgICAgaWYgKHN0YWdlID09IFZWQ19UQVNLX1NUQUdFX1BBUlNFKSB7Cj4gLSAgICAgICAgY29u c3QgSDI2NlJhd1NQUyAqcnNwcyA9IGZjLT5wcy5zcHMtPnI7Cj4gLSAgICAgICAgY29uc3QgaW50 IHdwcCA9IHJzcHMtPnNwc19lbnRyb3B5X2NvZGluZ19zeW5jX2VuYWJsZWRfZmxhZyAmJgo+ICFp c19maXJzdF9yb3coZmMsIHQtPnJ4LCB0LT5yeSk7Cj4gLSAgICAgICAgdGFyZ2V0ID0gMiArIHdw cCAtIDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9sZWZ0IHBhcnNlICsKPiBjb2xvY2F0 aW9uICsgd3BwIC0gbm8gcHJldmlvdXMgc3RhZ2UKPiArICAgICAgICBjb25zdCBIMjY2UmF3U1BT ICpyc3BzICAgPSBmYy0+cHMuc3BzLT5yOwo+ICsgICAgICAgIGNvbnN0IGludCB3cHAgICAgICAg ICAgICA9Cj4gcnNwcy0+c3BzX2VudHJvcHlfY29kaW5nX3N5bmNfZW5hYmxlZF9mbGFnICYmICFp c19maXJzdF9yb3coZmMsIHQtPnJ4LAo+IHQtPnJ5KTsKPiArICAgICAgICBjb25zdCBpbnQgbm9f cHJldl9zdGFnZSAgPSB0LT5ycyA+IDA7Cj4gKyAgICAgICAgdGFyZ2V0ID0gMiArIHdwcCAtIG5v X3ByZXZfc3RhZ2U7Cj4gIC8vbGVmdCBwYXJzZSArIGNvbG9jYXRpb24gKyB3cHAgLSBub19wcmV2 X3N0YWdlCj4gICAgICB9IGVsc2UgaWYgKHN0YWdlID09IFZWQ19UQVNLX1NUQUdFX0lOVEVSKSB7 Cj4gICAgICAgICAgdGFyZ2V0ID0gYXRvbWljX2xvYWQoJnQtPnRhcmdldF9pbnRlcl9zY29yZSk7 Cj4gICAgICB9IGVsc2Ugewo+IEBAIC0zOTksNiArNDA0LDU1IEBAIHN0YXRpYyBpbnQgdGFza19w cmlvcml0eV9oaWdoZXIoY29uc3QgQVZUYXNrICpfYSwKPiBjb25zdCBBVlRhc2sgKl9iKQo+ICAg ICAgcmV0dXJuIGEtPnJ5IDwgYi0+cnk7Cj4gIH0KPgo+ICtzdGF0aWMgdm9pZCBjaGVja19jb2xv Y2F0aW9uKFZWQ0NvbnRleHQgKnMsIFZWQ1Rhc2sgKnQpCj4gK3sKPiArICAgIGNvbnN0IFZWQ0Zy YW1lQ29udGV4dCAqZmMgPSB0LT5mYzsKPiArCj4gKyAgICBpZiAoZmMtPnBzLnBoLnItPnBoX3Rl bXBvcmFsX212cF9lbmFibGVkX2ZsYWcgfHwKPiBmYy0+cHMuc3BzLT5yLT5zcHNfc2J0bXZwX2Vu YWJsZWRfZmxhZykgewo+ICsgICAgICAgIFZWQ0ZyYW1lICpjb2wgICAgICAgPSBmYy0+cmVmLT5j b2xsb2NhdGVkX3JlZjsKPiArICAgICAgICBjb25zdCBpbnQgZmlyc3RfY29sID0gdC0+cnggPT0g ZmMtPnBzLnBwcy0+Y3RiX3RvX2NvbF9iZFt0LT5yeF07Cj4gKyAgICAgICAgaWYgKGNvbCAmJiBm aXJzdF9jb2wpIHsKPiArICAgICAgICAgICAgLy93ZSBkZXBlbmQgb24gYm90dG9tIGFuZCByaWdo dCBib3VuZGFyeSwgZG8gbm90IC0gMSBmb3IgeQo+ICsgICAgICAgICAgICBjb25zdCBpbnQgeSA9 ICh0LT5yeSA8PCBmYy0+cHMuc3BzLT5jdGJfbG9nMl9zaXplX3kpOwo+ICsgICAgICAgICAgICBh ZGRfcHJvZ3Jlc3NfbGlzdGVuZXIoY29sLCAmdC0+Y29sX2xpc3RlbmVyLCB0LCBzLAo+IFZWQ19Q Uk9HUkVTU19NViwgeSk7Cj4gKyAgICAgICAgICAgIHJldHVybjsKPiArICAgICAgICB9Cj4gKyAg ICB9Cj4gKyAgICBmcmFtZV90aHJlYWRfYWRkX3Njb3JlKHMsIGZjLT5mdCwgdC0+cngsIHQtPnJ5 LCBWVkNfVEFTS19TVEFHRV9QQVJTRSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHN1Ym1pdF9l bnRyeV9wb2ludChWVkNDb250ZXh0ICpzLCBWVkNGcmFtZVRocmVhZCAqZnQsCj4gU2xpY2VDb250 ZXh0ICpzYywgRW50cnlQb2ludCAqZXApCj4gK3sKPiArICAgIGNvbnN0IGludCBycyA9IHNjLT5z aC5jdGJfYWRkcl9pbl9jdXJyX3NsaWNlW2VwLT5jdHVfc3RhcnRdOwo+ICsgICAgVlZDVGFzayAq dCAgID0gZnQtPnRhc2tzICsgcnM7Cj4gKwo+ICsgICAgZnJhbWVfdGhyZWFkX2FkZF9zY29yZShz LCBmdCwgdC0+cngsIHQtPnJ5LCBWVkNfVEFTS19TVEFHRV9QQVJTRSk7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgcnVuX2luaXQoVlZDQ29udGV4dCAqcywgVlZDTG9jYWxDb250ZXh0ICpsYywgVlZD VGFzayAqdCkKPiArewo+ICsgICAgVlZDRnJhbWVDb250ZXh0ICpmYyA9IGxjLT5mYzsKPiArICAg IFZWQ0ZyYW1lVGhyZWFkICpmdCAgPSBmYy0+ZnQ7Cj4gKyAgICBjb25zdCBpbnQgcmV0ICAgICAg ID0gZmZfdnZjX3Blcl9mcmFtZV9pbml0KGZjKTsKPiArCj4gKyAgICBpZiAocmV0IDwgMCkKPiAr ICAgICAgICByZXR1cm4gcmV0Owo+ICsKPiArICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZmMtPm5i X3NsaWNlczsgaSsrKSB7Cj4gKyAgICAgICAgU2xpY2VDb250ZXh0ICpzYyA9IGZjLT5zbGljZXNb aV07Cj4gKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBzYy0+bmJfZXBzOyBqKyspIHsKPiAr ICAgICAgICAgICAgRW50cnlQb2ludCAqZXAgPSBzYy0+ZXBzICsgajsKPiArICAgICAgICAgICAg Zm9yIChpbnQgayA9IGVwLT5jdHVfc3RhcnQ7IGsgPCBlcC0+Y3R1X2VuZDsgaysrKSB7Cj4gKyAg ICAgICAgICAgICAgICBjb25zdCBpbnQgcnMgPSBzYy0+c2guY3RiX2FkZHJfaW5fY3Vycl9zbGlj ZVtrXTsKPiArICAgICAgICAgICAgICAgIFZWQ1Rhc2sgKnQgICA9IGZ0LT50YXNrcyArIHJzOwo+ ICsgICAgICAgICAgICAgICAgY2hlY2tfY29sb2NhdGlvbihzLCB0KTsKPiArICAgICAgICAgICAg fQo+ICsgICAgICAgICAgICBzdWJtaXRfZW50cnlfcG9pbnQocywgZnQsIHNjLCBlcCk7Cj4gKyAg ICAgICAgfQo+ICsgICAgfQo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gIHN0YXRpYyB2b2lk IHJlcG9ydF9mcmFtZV9wcm9ncmVzcyhWVkNGcmFtZUNvbnRleHQgKmZjLAo+ICAgICBjb25zdCBp bnQgcnksIGNvbnN0IFZWQ1Byb2dyZXNzIGlkeCkKPiAgewo+IEBAIC01NDcsNiArNjAxLDcgQEAg c3RhdGljIGludCBydW5fYWxmKFZWQ0NvbnRleHQgKnMsIFZWQ0xvY2FsQ29udGV4dCAqbGMsCj4g VlZDVGFzayAqdCkKPiAgI2RlZmluZSBWVkNfVEhSRUFEX0RFQlVHCj4gICNpZmRlZiBWVkNfVEhS RUFEX0RFQlVHCj4gIGNvbnN0IHN0YXRpYyBjaGFyKiB0YXNrX25hbWVbXSA9IHsKPiArICAgICJJ TklUIiwKPiAgICAgICJQIiwKPiAgICAgICJJIiwKPiAgICAgICJSIiwKPiBAQCAtNTY3LDYgKzYy Miw3IEBAIHN0YXRpYyB2b2lkIHRhc2tfcnVuX3N0YWdlKFZWQ1Rhc2sgKnQsIFZWQ0NvbnRleHQg KnMsCj4gVlZDTG9jYWxDb250ZXh0ICpsYykKPiAgICAgIFZWQ0ZyYW1lVGhyZWFkICpmdCAgICAg ICA9IGZjLT5mdDsKPiAgICAgIGNvbnN0IFZWQ1Rhc2tTdGFnZSBzdGFnZSA9IHQtPnN0YWdlOwo+ ICAgICAgc3RhdGljIGNvbnN0IHJ1bl9mdW5jIHJ1bltdID0gewo+ICsgICAgICAgIHJ1bl9pbml0 LAo+ICAgICAgICAgIHJ1bl9wYXJzZSwKPiAgICAgICAgICBydW5faW50ZXIsCj4gICAgICAgICAg cnVuX3JlY29uLAo+IEBAIC03MjYsNyArNzgyLDcgQEAgaW50IGZmX3Z2Y19mcmFtZV90aHJlYWRf aW5pdChWVkNGcmFtZUNvbnRleHQgKmZjKQo+Cj4gICAgICBmb3IgKGludCBycyA9IDA7IHJzIDwg ZnQtPmN0dV9jb3VudDsgcnMrKykgewo+ICAgICAgICAgIFZWQ1Rhc2sgKnQgPSBmdC0+dGFza3Mg KyByczsKPiAtICAgICAgICB0YXNrX2luaXQodCwgVlZDX1RBU0tfU1RBR0VfUEFSU0UsIGZjLCBy cyAlIGZ0LT5jdHVfd2lkdGgsIHJzIC8KPiBmdC0+Y3R1X3dpZHRoKTsKPiArICAgICAgICB0YXNr X2luaXQodCwgcnMgPyBWVkNfVEFTS19TVEFHRV9QQVJTRSA6IFZWQ19UQVNLX1NUQUdFX0lOSVQs IGZjLAo+IHJzICUgZnQtPmN0dV93aWR0aCwgcnMgLyBmdC0+Y3R1X3dpZHRoKTsKPiAgICAgIH0K Pgo+ICAgICAgbWVtc2V0KCZmdC0+cm93X3Byb2dyZXNzWzBdLCAwLCBzaXplb2YoZnQtPnJvd19w cm9ncmVzcykpOwo+IEBAIC03NDUsNTkgKzgwMSwyNSBAQCBmYWlsOgo+ICAgICAgcmV0dXJuIEFW RVJST1IoRU5PTUVNKTsKPiAgfQo+Cj4gLXN0YXRpYyB2b2lkIGNoZWNrX2NvbG9jYXRpb24oVlZD Q29udGV4dCAqcywgVlZDVGFzayAqdCkKPiAtewo+IC0gICAgY29uc3QgVlZDRnJhbWVDb250ZXh0 ICpmYyA9IHQtPmZjOwo+IC0KPiAtICAgIGlmIChmYy0+cHMucGguci0+cGhfdGVtcG9yYWxfbXZw X2VuYWJsZWRfZmxhZyB8fAo+IGZjLT5wcy5zcHMtPnItPnNwc19zYnRtdnBfZW5hYmxlZF9mbGFn KSB7Cj4gLSAgICAgICAgVlZDRnJhbWUgKmNvbCAgICAgICA9IGZjLT5yZWYtPmNvbGxvY2F0ZWRf cmVmOwo+IC0gICAgICAgIGNvbnN0IGludCBmaXJzdF9jb2wgPSB0LT5yeCA9PSBmYy0+cHMucHBz LT5jdGJfdG9fY29sX2JkW3QtPnJ4XTsKPiAtICAgICAgICBpZiAoY29sICYmIGZpcnN0X2NvbCkg ewo+IC0gICAgICAgICAgICAvL3dlIGRlcGVuZCBvbiBib3R0b20gYW5kIHJpZ2h0IGJvdW5kYXJ5 LCBkbyBub3QgLSAxIGZvciB5Cj4gLSAgICAgICAgICAgIGNvbnN0IGludCB5ID0gKHQtPnJ5IDw8 IGZjLT5wcy5zcHMtPmN0Yl9sb2cyX3NpemVfeSk7Cj4gLSAgICAgICAgICAgIGFkZF9wcm9ncmVz c19saXN0ZW5lcihjb2wsICZ0LT5jb2xfbGlzdGVuZXIsIHQsIHMsCj4gVlZDX1BST0dSRVNTX01W LCB5KTsKPiAtICAgICAgICAgICAgcmV0dXJuOwo+IC0gICAgICAgIH0KPiAtICAgIH0KPiAtICAg IGZyYW1lX3RocmVhZF9hZGRfc2NvcmUocywgZmMtPmZ0LCB0LT5yeCwgdC0+cnksIFZWQ19UQVNL X1NUQUdFX1BBUlNFKTsKPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQgc3VibWl0X2VudHJ5X3BvaW50 KFZWQ0NvbnRleHQgKnMsIFZWQ0ZyYW1lVGhyZWFkICpmdCwKPiBTbGljZUNvbnRleHQgKnNjLCBF bnRyeVBvaW50ICplcCkKPiAtewo+IC0gICAgY29uc3QgaW50IHJzID0gc2MtPnNoLmN0Yl9hZGRy X2luX2N1cnJfc2xpY2VbZXAtPmN0dV9zdGFydF07Cj4gLSAgICBWVkNUYXNrICp0ICAgPSBmdC0+ dGFza3MgKyByczsKPiAtCj4gLSAgICBmcmFtZV90aHJlYWRfYWRkX3Njb3JlKHMsIGZ0LCB0LT5y eCwgdC0+cnksIFZWQ19UQVNLX1NUQUdFX1BBUlNFKTsKPiAtfQo+IC0KPiAgaW50IGZmX3Z2Y19m cmFtZV9zdWJtaXQoVlZDQ29udGV4dCAqcywgVlZDRnJhbWVDb250ZXh0ICpmYykKPiAgewo+ICAg ICAgVlZDRnJhbWVUaHJlYWQgKmZ0ID0gZmMtPmZ0Owo+Cj4gLSAgICAvLyBXZSdsbCBoYW5kbGUg dGhpcyBpbiB0d28gcGFzc2VzOgo+IC0gICAgLy8gUGFzcyAwIHRvIGluaXRpYWxpemUgdGFza3Mg d2l0aCBwYXJzZXIsIHRoaXMgd2lsbCBoZWxwIGRldGVjdCBiaXQKPiBzdHJlYW0gZXJyb3IKPiAt ICAgIC8vIFBhc3MgMSB0byBzaGVkdWxlIGxvY2F0aW9uIGNoZWNrIGFuZCBzdWJtaXQgdGhlIGVu dHJ5IHBvaW50Cj4gLSAgICBmb3IgKGludCBwYXNzID0gMDsgcGFzcyA8IDI7IHBhc3MrKykgewo+ IC0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZmMtPm5iX3NsaWNlczsgaSsrKSB7Cj4gLSAg ICAgICAgICAgIFNsaWNlQ29udGV4dCAqc2MgPSBmYy0+c2xpY2VzW2ldOwo+IC0gICAgICAgICAg ICBmb3IgKGludCBqID0gMDsgaiA8IHNjLT5uYl9lcHM7IGorKykgewo+IC0gICAgICAgICAgICAg ICAgRW50cnlQb2ludCAqZXAgPSBzYy0+ZXBzICsgajsKPiAtICAgICAgICAgICAgICAgIGZvciAo aW50IGsgPSBlcC0+Y3R1X3N0YXJ0OyBrIDwgZXAtPmN0dV9lbmQ7IGsrKykgewo+IC0gICAgICAg ICAgICAgICAgICAgIGNvbnN0IGludCBycyA9IHNjLT5zaC5jdGJfYWRkcl9pbl9jdXJyX3NsaWNl W2tdOwo+IC0gICAgICAgICAgICAgICAgICAgIFZWQ1Rhc2sgKnQgICA9IGZ0LT50YXNrcyArIHJz Owo+IC0gICAgICAgICAgICAgICAgICAgIGlmIChwYXNzKSB7Cj4gLSAgICAgICAgICAgICAgICAg ICAgICAgIGNoZWNrX2NvbG9jYXRpb24ocywgdCk7Cj4gLSAgICAgICAgICAgICAgICAgICAgfSBl bHNlIHsKPiAtICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IHJldCA9IHRhc2tfaW5p dF9wYXJzZSh0LCBzYywgZXAsIGspOwo+IC0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmV0 IDwgMCkKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gLSAgICAg ICAgICAgICAgICAgICAgfQo+IC0gICAgICAgICAgICAgICAgfQo+IC0gICAgICAgICAgICAgICAg aWYgKHBhc3MpCj4gLSAgICAgICAgICAgICAgICAgICAgc3VibWl0X2VudHJ5X3BvaW50KHMsIGZ0 LCBzYywgZXApOwo+ICsgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmYy0+bmJfc2xpY2VzOyBpKysp IHsKPiArICAgICAgICBTbGljZUNvbnRleHQgKnNjID0gZmMtPnNsaWNlc1tpXTsKPiArICAgICAg ICBmb3IgKGludCBqID0gMDsgaiA8IHNjLT5uYl9lcHM7IGorKykgewo+ICsgICAgICAgICAgICBF bnRyeVBvaW50ICplcCA9IHNjLT5lcHMgKyBqOwo+ICsgICAgICAgICAgICBmb3IgKGludCBrID0g ZXAtPmN0dV9zdGFydDsgayA8IGVwLT5jdHVfZW5kOyBrKyspIHsKPiArICAgICAgICAgICAgICAg IGNvbnN0IGludCBycyA9IHNjLT5zaC5jdGJfYWRkcl9pbl9jdXJyX3NsaWNlW2tdOwo+ICsgICAg ICAgICAgICAgICAgVlZDVGFzayAqdCAgID0gZnQtPnRhc2tzICsgcnM7Cj4gKyAgICAgICAgICAg ICAgICBjb25zdCBpbnQgcmV0ID0gdGFza19pbml0X3BhcnNlKHQsIHNjLCBlcCwgayk7Cj4gKyAg ICAgICAgICAgICAgICBpZiAocmV0IDwgMCkKPiArICAgICAgICAgICAgICAgICAgICByZXR1cm4g cmV0Owo+ICAgICAgICAgICAgICB9Cj4gICAgICAgICAgfQo+ICAgICAgfQo+ICsgICAgZnJhbWVf dGhyZWFkX2FkZF9zY29yZShzLCBmdCwgMCwgMCwgVlZDX1RBU0tfU1RBR0VfSU5JVCk7Cj4gKwo+ ICAgICAgcmV0dXJuIDA7Cj4gIH0KPgo+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3Z2Yy90aHJl YWQuaCBiL2xpYmF2Y29kZWMvdnZjL3RocmVhZC5oCj4gaW5kZXggOGFjNTliMmVjZi4uN2IxNWRi ZWU1OSAxMDA2NDQKPiAtLS0gYS9saWJhdmNvZGVjL3Z2Yy90aHJlYWQuaAo+ICsrKyBiL2xpYmF2 Y29kZWMvdnZjL3RocmVhZC5oCj4gQEAgLTMyLDUgKzMyLDYgQEAgaW50IGZmX3Z2Y19mcmFtZV90 aHJlYWRfaW5pdChWVkNGcmFtZUNvbnRleHQgKmZjKTsKPiAgdm9pZCBmZl92dmNfZnJhbWVfdGhy ZWFkX2ZyZWUoVlZDRnJhbWVDb250ZXh0ICpmYyk7Cj4gIGludCBmZl92dmNfZnJhbWVfc3VibWl0 KFZWQ0NvbnRleHQgKnMsIFZWQ0ZyYW1lQ29udGV4dCAqZmMpOwo+ICBpbnQgZmZfdnZjX2ZyYW1l X3dhaXQoVlZDQ29udGV4dCAqcywgVlZDRnJhbWVDb250ZXh0ICpmYyk7Cj4gK2ludCBmZl92dmNf cGVyX2ZyYW1lX2luaXQoVlZDRnJhbWVDb250ZXh0ICpmYyk7Cj4KPiAgI2VuZGlmIC8vIEFWQ09E RUNfVlZDX1RIUkVBRF9ICj4gLS0KPiAyLjM0LjEKPgo+Cl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVn LWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZt cGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZt cGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K