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 EF45048B09 for ; Thu, 1 Feb 2024 16:40:45 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9C80868CEE5; Thu, 1 Feb 2024 18:40:42 +0200 (EET) Received: from orel.garga.net (orel.garga.net [51.15.4.221]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 32FB368B466 for ; Thu, 1 Feb 2024 18:40:36 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=momtchev.com; s=rsa; h=Subject:From:To:MIME-Version:Date:Message-ID: Content-Type:Sender:Reply-To:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=Y9WKF2M8IeUbku9PVXMvjY5gB8ma1RARtMhrScy8IkA=; b=M9ffTCniYcN3srma5TSMM79ZkQ Aitathw6SCJ9d/i0glkMVc8oTJhP5BOg7ZsHs+MPZXjTbl4V5as/S03ToRBNjDPQAsMA7SjV8p7m9 50pL9evNq96BdO+uKhivzMOblZh52G3TpqP1QWNMPBydF+uW36jTPCRlz2H2x2irB4JdSTGCYMs6+ tHKzjttC5GrogZsLaxDWVFvklQha5TWEoPOdssAg0XJBjDjB0Opv0ohVMjQbMOwcBqYaY5cWb794F ugmFGqM+PpWYPojHvaGdavL7tIFERZ3AaROyWx4pzt0Z19b1ZHAzuMopYzMaooLprW/XCd0vAK+up aJjGLltg==; Received: from [78.203.245.37] (helo=[192.168.0.133]) by orel.garga.net with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1rVa77-00Ewb8-2E for ffmpeg-devel@ffmpeg.org; Thu, 01 Feb 2024 17:40:35 +0100 Content-Type: multipart/mixed; boundary="------------t3nSFKHUPZ003NbO0kPe4XhN" Message-ID: <46c3739b-3edd-45d3-8c5a-262ce6cc03e4@momtchev.com> Date: Thu, 1 Feb 2024 17:40:33 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: ffmpeg-devel@ffmpeg.org From: Momtchil Momtchev X-Spam-score: -2.9 X-Spam-bar: -- Subject: [FFmpeg-devel] Implement RTMP flow control and proper (or least better) closing 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: This is a multi-part message in MIME format. --------------t3nSFKHUPZ003NbO0kPe4XhN Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit https://trac.ffmpeg.org/ticket/10838 Hello, This small PR implements:     * RTMP flow control on the server side - now the server will stop sending data if it has filled the window and the client hasn't ACKed     * Improves the tear-down by not returning an error when the server closes the connection (which seems to be the usual method of signalling the end of the connection)     * Fixes the client ignoring the last frames -- Momtchil Momtchev --------------t3nSFKHUPZ003NbO0kPe4XhN Content-Type: text/plain; charset=UTF-8; name="patch" Content-Disposition: attachment; filename="patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2RvYy9wcm90b2NvbHMudGV4aSBiL2RvYy9wcm90b2NvbHMudGV4aQpp bmRleCBmNTQ2MDBiODQ2Li42NDJjZGU5NjJhIDEwMDY0NAotLS0gYS9kb2MvcHJvdG9jb2xz LnRleGkKKysrIGIvZG9jL3Byb3RvY29scy50ZXhpCkBAIC05NDgsNiArOTQ4LDkgQEAgVVJM IHRvIHBsYXllciBzd2YgZmlsZSwgY29tcHV0ZSBoYXNoL3NpemUgYXV0b21hdGljYWxseS4K IEBpdGVtIHJ0bXBfdGN1cmwKIFVSTCBvZiB0aGUgdGFyZ2V0IHN0cmVhbS4gRGVmYXVsdHMg dG8gcHJvdG86Ly9ob3N0Wzpwb3J0XS9hcHAuCiAKK0BpdGVtIHJ0bXBfd2luZG93CitTaXpl IG9mIHRoZSBSVE1QIHdpbmRvdy4gRGVmYXVsdHMgdG8gMjUwMDAwMC4KKwogQGl0ZW0gdGNw X25vZGVsYXk9QHZhcnsxfDB9CiBTZXQgVENQX05PREVMQVkgdG8gZGlzYWJsZSBOYWdsZSdz IGFsZ29yaXRobS4gRGVmYXVsdCB2YWx1ZSBpcyAwLgogCmRpZmYgLS1naXQgYS9saWJhdmZv cm1hdC9ydG1wcGt0LmMgYi9saWJhdmZvcm1hdC9ydG1wcGt0LmMKaW5kZXggYTYwMmJmNmE5 Ni4uM2ZjYjRlOGYxNCAxMDA2NDQKLS0tIGEvbGliYXZmb3JtYXQvcnRtcHBrdC5jCisrKyBi L2xpYmF2Zm9ybWF0L3J0bXBwa3QuYwpAQCAtMTU5LDcgKzE1OSwxMCBAQCBpbnQgZmZfcnRt cF9wYWNrZXRfcmVhZChVUkxDb250ZXh0ICpoLCBSVE1QUGFja2V0ICpwLAogewogICAgIHVp bnQ4X3QgaGRyOwogCi0gICAgaWYgKGZmdXJsX3JlYWQoaCwgJmhkciwgMSkgIT0gMSkKKyAg ICBpbnQgcmV0ID0gZmZ1cmxfcmVhZChoLCAmaGRyLCAxKTsKKyAgICBpZiAocmV0ID09IEFW RVJST1JfRU9GKQorICAgICAgICByZXR1cm4gQVZFUlJPUl9FT0Y7CisgICAgaWYgKHJldCAh PSAxKQogICAgICAgICByZXR1cm4gQVZFUlJPUihFSU8pOwogCiAgICAgcmV0dXJuIGZmX3J0 bXBfcGFja2V0X3JlYWRfaW50ZXJuYWwoaCwgcCwgY2h1bmtfc2l6ZSwgcHJldl9wa3QsCmRp ZmYgLS1naXQgYS9saWJhdmZvcm1hdC9ydG1wcHJvdG8uYyBiL2xpYmF2Zm9ybWF0L3J0bXBw cm90by5jCmluZGV4IDk4NzE4YmM2ZGEuLjZhZWQ5ZGIzYjAgMTAwNjQ0Ci0tLSBhL2xpYmF2 Zm9ybWF0L3J0bXBwcm90by5jCisrKyBiL2xpYmF2Zm9ybWF0L3J0bXBwcm90by5jCkBAIC05 Nyw2ICs5Nyw4IEBAIHR5cGVkZWYgc3RydWN0IFJUTVBDb250ZXh0IHsKICAgICB1aW50MzJf dCAgICAgIHJlY2VpdmVfcmVwb3J0X3NpemU7ICAgICAgICAvLy88IG51bWJlciBvZiBieXRl cyBhZnRlciB3aGljaCB3ZSBzaG91bGQgcmVwb3J0IHRoZSBudW1iZXIgb2YgcmVjZWl2ZWQg Ynl0ZXMgdG8gdGhlIHBlZXIKICAgICB1aW50NjRfdCAgICAgIGJ5dGVzX3JlYWQ7ICAgICAg ICAgICAgICAgICAvLy88IG51bWJlciBvZiBieXRlcyByZWFkIGZyb20gc2VydmVyCiAgICAg dWludDY0X3QgICAgICBsYXN0X2J5dGVzX3JlYWQ7ICAgICAgICAgICAgLy8vPCBudW1iZXIg b2YgYnl0ZXMgcmVhZCBsYXN0IHJlcG9ydGVkIHRvIHNlcnZlcgorICAgIHVpbnQ2NF90ICAg ICAgYnl0ZXNfc2VudDsgICAgICAgICAgICAgICAgIC8vLzwgbnVtYmVyIG9mIGJ5dGVzIHNl bnQgdG8gdGhlIGNsaWVudAorICAgIHVpbnQ2NF90ICAgICAgbGFzdF9ieXRlc19zZW50OyAg ICAgICAgICAgIC8vLzwgbnVtYmVyIG9mIGJ5dGVzIGxhc3QgYWNrbm93bGVkZ2VkIGJ5IHRo ZSBjbGllbnQKICAgICB1aW50MzJfdCAgICAgIGxhc3RfdGltZXN0YW1wOyAgICAgICAgICAg ICAvLy88IGxhc3QgdGltZXN0YW1wIHJlY2VpdmVkIGluIGEgcGFja2V0CiAgICAgaW50ICAg ICAgICAgICBza2lwX2J5dGVzOyAgICAgICAgICAgICAgICAgLy8vPCBudW1iZXIgb2YgYnl0 ZXMgdG8gc2tpcCBmcm9tIHRoZSBpbnB1dCBGTFYgc3RyZWFtIGluIHRoZSBuZXh0IHdyaXRl IGNhbGwKICAgICBpbnQgICAgICAgICAgIGhhc19hdWRpbzsgICAgICAgICAgICAgICAgICAv Ly88IHByZXNlbmNlIG9mIGF1ZGlvIGRhdGEKQEAgLTI1MSw2ICsyNTMsNyBAQCBzdGF0aWMg aW50IHJ0bXBfc2VuZF9wYWNrZXQoUlRNUENvbnRleHQgKnJ0LCBSVE1QUGFja2V0ICpwa3Qs IGludCB0cmFjaykKIAogICAgIHJldCA9IGZmX3J0bXBfcGFja2V0X3dyaXRlKHJ0LT5zdHJl YW0sIHBrdCwgcnQtPm91dF9jaHVua19zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZydC0+cHJldl9wa3RbMV0sICZydC0+bmJfcHJldl9wa3RbMV0pOworICAgIHJ0 LT5ieXRlc19zZW50ICs9IHBrdC0+c2l6ZTsKIGZhaWw6CiAgICAgZmZfcnRtcF9wYWNrZXRf ZGVzdHJveShwa3QpOwogICAgIHJldHVybiByZXQ7CkBAIC00NzIsNyArNDc1LDggQEAgc3Rh dGljIGludCByZWFkX2Nvbm5lY3QoVVJMQ29udGV4dCAqcywgUlRNUENvbnRleHQgKnJ0KQog ICAgICAgICAgICAgZmZfcnRtcF9wYWNrZXRfZGVzdHJveSgmcGt0KTsKICAgICAgICAgICAg IHJldHVybiBBVkVSUk9SX1VOS05PV047CiAgICAgICAgIH0gZWxzZSBpZiAocGt0LnR5cGUg PT0gUlRNUF9QVF9CWVRFU19SRUFEKSB7Ci0gICAgICAgICAgICBhdl9sb2cocywgQVZfTE9H X1RSQUNFLCAicmVjZWl2ZWQgYWNrbm93bGVkZ2VtZW50XG4iKTsKKyAgICAgICAgICAgIHJ0 LT5sYXN0X2J5dGVzX3JlYWQgPSBBVl9SQjMyKHBrdC5kYXRhKTsKKyAgICAgICAgICAgIGF2 X2xvZyhzLCBBVl9MT0dfVFJBQ0UsICJyZWNlaXZlZCBhY2tub3dsZWRnZW1lbnQgKCVsdSlc biIsIHJ0LT5sYXN0X2J5dGVzX3JlYWQpOwogICAgICAgICB9IGVsc2UgaWYgKHBrdC50eXBl ID09IFJUTVBfUFRfV0lORE9XX0FDS19TSVpFKSB7CiAgICAgICAgICAgICBpZiAoKHJldCA9 IGhhbmRsZV93aW5kb3dfYWNrX3NpemUocywgJnBrdCkpIDwgMCkgewogICAgICAgICAgICAg ICAgIGZmX3J0bXBfcGFja2V0X2Rlc3Ryb3koJnBrdCk7CkBAIC0yMzQ0LDcgKzIzNDgsOCBA QCBzdGF0aWMgaW50IHJ0bXBfcGFyc2VfcmVzdWx0KFVSTENvbnRleHQgKnMsIFJUTVBDb250 ZXh0ICpydCwgUlRNUFBhY2tldCAqcGt0KQogCiAgICAgc3dpdGNoIChwa3QtPnR5cGUpIHsK ICAgICBjYXNlIFJUTVBfUFRfQllURVNfUkVBRDoKLSAgICAgICAgYXZfbG9nKHMsIEFWX0xP R19UUkFDRSwgInJlY2VpdmVkIGJ5dGVzIHJlYWQgcmVwb3J0XG4iKTsKKyAgICAgICAgcnQt Pmxhc3RfYnl0ZXNfc2VudCA9IEFWX1JCMzIocGt0LT5kYXRhKTsKKyAgICAgICAgYXZfbG9n KHMsIEFWX0xPR19UUkFDRSwgInJlY2VpdmVkIGJ5dGVzIHJlYWQgcmVwb3J0ICglbHUpXG4i LCBydC0+bGFzdF9ieXRlc19zZW50KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSVE1Q X1BUX0NIVU5LX1NJWkU6CiAgICAgICAgIGlmICgocmV0ID0gaGFuZGxlX2NodW5rX3NpemUo cywgcGt0KSkgPCAwKQpAQCAtMjQ1NSw2ICsyNDYwLDggQEAgc3RhdGljIGludCBnZXRfcGFj a2V0KFVSTENvbnRleHQgKnMsIGludCBmb3JfaGVhZGVyKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJnJ0LT5uYl9wcmV2X3BrdFswXSkpIDw9IDApIHsKICAg ICAgICAgICAgIGlmIChyZXQgPT0gMCkgewogICAgICAgICAgICAgICAgIHJldHVybiBBVkVS Uk9SKEVBR0FJTik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHJldCA9PSBBVkVSUk9SX0VP RikgeworICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0VPRjsKICAgICAgICAgICAg IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlPKTsKICAgICAg ICAgICAgIH0KQEAgLTI0NjgsNyArMjQ3NSw3IEBAIHN0YXRpYyBpbnQgZ2V0X3BhY2tldChV UkxDb250ZXh0ICpzLCBpbnQgZm9yX2hlYWRlcikKICAgICAgICAgICAgIGF2X2xvZyhzLCBB Vl9MT0dfREVCVUcsICJTZW5kaW5nIGJ5dGVzIHJlYWQgcmVwb3J0XG4iKTsKICAgICAgICAg ICAgIGlmICgocmV0ID0gZ2VuX2J5dGVzX3JlYWQocywgcnQsIHJwa3QudGltZXN0YW1wICsg MSkpIDwgMCkgewogICAgICAgICAgICAgICAgIGZmX3J0bXBfcGFja2V0X2Rlc3Ryb3koJnJw a3QpOwotICAgICAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAgICAgICAgICAgYXZf bG9nKHMsIEFWX0xPR19ERUJVRywgIkZhaWxlZCBBQ0tpbmcgdG8gdGhlIHNlcnZlciwgY29u bmVjdGlvbiBmaW5pc2hlZD9cbiIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcnQt Pmxhc3RfYnl0ZXNfcmVhZCA9IHJ0LT5ieXRlc19yZWFkOwogICAgICAgICB9CkBAIC0yODM1 LDExICsyODQyLDEyIEBAIHJlY29ubmVjdDoKIAogICAgIHJ0LT5yZWNlaXZlX3JlcG9ydF9z aXplID0gMTA0ODU3NjsKICAgICBydC0+Ynl0ZXNfcmVhZCA9IDA7CisgICAgcnQtPmJ5dGVz X3NlbnQgPSAwOwogICAgIHJ0LT5oYXNfYXVkaW8gPSAwOwogICAgIHJ0LT5oYXNfdmlkZW8g PSAwOwogICAgIHJ0LT5yZWNlaXZlZF9tZXRhZGF0YSA9IDA7CiAgICAgcnQtPmxhc3RfYnl0 ZXNfcmVhZCA9IDA7Ci0gICAgcnQtPm1heF9zZW50X3VuYWNrZWQgPSAyNTAwMDAwOworICAg IHJ0LT5sYXN0X2J5dGVzX3NlbnQgPSAwOwogICAgIHJ0LT5kdXJhdGlvbiA9IDA7CiAKICAg ICBhdl9sb2cocywgQVZfTE9HX0RFQlVHLCAiUHJvdG8gPSAlcywgcGF0aCA9ICVzLCBhcHAg PSAlcywgZm5hbWUgPSAlc1xuIiwKQEAgLTMwOTUsOCArMzEwMywxNCBAQCBzdGF0aWMgaW50 IHJ0bXBfd3JpdGUoVVJMQ29udGV4dCAqcywgY29uc3QgdWludDhfdCAqYnVmLCBpbnQgc2l6 ZSkKICAgICAgICAgcmV0dXJuIHNpemU7CiAgICAgcnQtPmZsdl9uYl9wYWNrZXRzID0gMDsK IAotICAgIC8qIHNldCBzdHJlYW0gaW50byBub25ibG9ja2luZyBtb2RlICovCi0gICAgcnQt PnN0cmVhbS0+ZmxhZ3MgfD0gQVZJT19GTEFHX05PTkJMT0NLOworICAgIC8qIGl0IGlzIHRp bWUgdG8gc3RhcnQgdGhyb3R0bGluZz8gKi8KKyAgICBpZiAocnQtPmJ5dGVzX3NlbnQgPCBy dC0+bGFzdF9ieXRlc19zZW50ICsgcnQtPm1heF9zZW50X3VuYWNrZWQpIHsKKyAgICAgICAg Lyogc2V0IHN0cmVhbSBpbnRvIG5vbmJsb2NraW5nIG1vZGUgKi8KKyAgICAgICAgcnQtPnN0 cmVhbS0+ZmxhZ3MgfD0gQVZJT19GTEFHX05PTkJMT0NLOworICAgIH0gZWxzZSB7CisgICAg ICAgIGF2X2xvZyhzLCBBVl9MT0dfREVCVUcsICJUaHJvdHRsaW5nLCBzZW50ICVsdSBieXRl cywgY2xpZW50IGhhcyBhY2tub3dsZWRnZWQgJWx1IGJ5dGVzXG4iLCBydC0+Ynl0ZXNfc2Vu dCwKKyAgICAgICAgICAgICBydC0+bGFzdF9ieXRlc19zZW50KTsKKyAgICB9CiAKICAgICAv KiB0cnkgdG8gcmVhZCBvbmUgYnl0ZSBmcm9tIHRoZSBzdHJlYW0gKi8KICAgICByZXQgPSBm ZnVybF9yZWFkKHJ0LT5zdHJlYW0sICZjLCAxKTsKQEAgLTMxMzksNiArMzE1Myw3IEBAIHN0 YXRpYyBjb25zdCBBVk9wdGlvbiBydG1wX29wdGlvbnNbXSA9IHsKICAgICB7InJ0bXBfZmx1 c2hfaW50ZXJ2YWwiLCAiTnVtYmVyIG9mIHBhY2tldHMgZmx1c2hlZCBpbiB0aGUgc2FtZSBy ZXF1ZXN0IChSVE1QVCBvbmx5KS4iLCBPRkZTRVQoZmx1c2hfaW50ZXJ2YWwpLCBBVl9PUFRf VFlQRV9JTlQsIHsuaTY0ID0gMTB9LCAwLCBJTlRfTUFYLCBFTkN9LAogICAgIHsicnRtcF9l bmhhbmNlZF9jb2RlY3MiLCAiU3BlY2lmeSB0aGUgY29kZWMocykgdG8gdXNlIGluIGFuIGVu aGFuY2VkIHJ0bXAgbGl2ZSBzdHJlYW0iLCBPRkZTRVQoZW5oYW5jZWRfY29kZWNzKSwgQVZf T1BUX1RZUEVfU1RSSU5HLCB7LnN0ciA9IE5VTEwgfSwgMCwgMCwgRU5DfSwKICAgICB7InJ0 bXBfbGl2ZSIsICJTcGVjaWZ5IHRoYXQgdGhlIG1lZGlhIGlzIGEgbGl2ZSBzdHJlYW0uIiwg T0ZGU0VUKGxpdmUpLCBBVl9PUFRfVFlQRV9JTlQsIHsuaTY0ID0gLTJ9LCBJTlRfTUlOLCBJ TlRfTUFYLCBERUMsICJydG1wX2xpdmUifSwKKyAgICB7InJ0bXBfd2luZG93IiwgIlJUTVAg d2luZG93IHNpemUgKHNlcnZlciBvbmx5KS4iLCBPRkZTRVQobWF4X3NlbnRfdW5hY2tlZCks IEFWX09QVF9UWVBFX0lOVCwgey5pNjQgPSAyNTAwMDAwfSwgSU5UX01JTiwgSU5UX01BWCwg REVDLCAicnRtcF93aW5kb3cifSwKICAgICB7ImFueSIsICJib3RoIiwgMCwgQVZfT1BUX1RZ UEVfQ09OU1QsIHsuaTY0ID0gLTJ9LCAwLCAwLCBERUMsICJydG1wX2xpdmUifSwKICAgICB7 ImxpdmUiLCAibGl2ZSBzdHJlYW0iLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwgey5pNjQgPSAt MX0sIDAsIDAsIERFQywgInJ0bXBfbGl2ZSJ9LAogICAgIHsicmVjb3JkZWQiLCAicmVjb3Jk ZWQgc3RyZWFtIiwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0gMH0sIDAsIDAsIERF QywgInJ0bXBfbGl2ZSJ9LAo= --------------t3nSFKHUPZ003NbO0kPe4XhN 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". --------------t3nSFKHUPZ003NbO0kPe4XhN--