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 1256348C40 for ; Tue, 23 Jan 2024 17:44:16 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1EB4B68D014; Tue, 23 Jan 2024 19:44:13 +0200 (EET) Received: from glom.nmugroup.com (glom.nmugroup.com [193.183.80.6]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DA51368BDAC for ; Tue, 23 Jan 2024 19:44:06 +0200 (EET) Received: from localhost (localhost [127.0.0.1]) by glom.nmugroup.com (Postfix) with ESMTP id 50DE35428EDE for ; Tue, 23 Jan 2024 18:44:05 +0100 (CET) Received: from debian.lan (unknown [IPv6:2a00:66c0:a::72c]) (Authenticated sender: git01) by glom.nmugroup.com (Postfix) with ESMTPSA id 0D79B5428EB8 for ; Tue, 23 Jan 2024 18:44:04 +0100 (CET) Message-ID: <0e7aec235bb0481be4abb314a615210484914ad9.camel@haerdin.se> From: Tomas =?ISO-8859-1?Q?H=E4rdin?= To: FFmpeg development discussions and patches Date: Tue, 23 Jan 2024 18:44:03 +0100 In-Reply-To: References: Content-Type: multipart/mixed; boundary="=-jEFO5G41+H6zQci6Go5Q" User-Agent: Evolution 3.46.4-2 MIME-Version: 1.0 Subject: Re: [FFmpeg-devel] [PATCH] libavcodec: add bit-rate support to RoQ video encoder 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: --=-jEFO5G41+H6zQci6Go5Q Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable tis 2024-01-23 klockan 11:33 +0300 skrev Victor Luchitz: > Re-posting the patch as an attachment. Sorry for the inconvenience! Yep, this one applies and also passes FATE. I notice ffplay_buffer whines a lot when playing RoQ files: > [swscaler @ 0x7fcb44043240] deprecated pixel format used, make sure you d= id set range correctly > [ffplay_buffer @ 0x7fcb44032fc0] filter context - w: 256 h: 256 fmt: 14 c= sp: unknown range: unknown, incoming frame - w: 256 h: 256 fmt: 14 csp: unk= nown range: pc pts_time: 0 > [ffplay_buffer @ 0x7fcb44032fc0] Changing video frame properties on the f= ly is not supported by all filters. I don't think this problem relates to this patch however. Anyway, using -b:v 100k causes the encoder to effectively become stuck on the first frame, being unable to go below 621 kbps and increasing qscale very slowly.=C2=A0But you mentioned this already of course. Perhaps there should be a faster "startup" phase? Subsequent frames being P- frames may lead to the average hitting the target bitrate. Even when using 1 Mbps the encoding is very slow: ./ffmpeg -r:v 30 -t 1 -f lavfi -i testsrc2 -s 256x256 -b:v 1000k -y foo-1000k.roq > [roqvideo @ 0x3112980]=20 > Generated a frame too big for desired bit rate (1489 kbps), now switching= to a bigger qscale value (257). > [roqvideo @ 0x3112980]=20 > Generated a frame too big for desired bit rate (1489 kbps), now switching= to a bigger qscale value (259). > [...] > Generated a frame too big for desired bit rate (1100 kbps), now switching= to a bigger qscale value (196863). > [roqvideo @ 0x3112980] .0 size=3D 0kB time=3DN/A bitrate=3DN/A spee= d=3DN/A =20 > Generated a frame too big for desired bit rate (1069 kbps), now switching= to a bigger qscale value (262399). > [roqvideo @ 0x3112980]=20 > Generated a frame too small for desired bit rate (601 kbps), reverting la= mbda and using smaller inc on qscale (196863). > [roqvideo @ 0x3112980] 0.0 size=3D 17kB time=3D00:00:00.16 bitrate= =3D 812.7kbits/s speed=3D0.0476x =20 > Generated a frame too small for desired bit rate (915 kbps), qscale value= cannot be lowered any further (1). > [...] > [roqvideo @ 0x3112980]=20 > Generated a frame too big for desired bit rate (1084 kbps), now switching= to a bigger qscale value (327680). > [roqvideo @ 0x3112980]=20 > Generated a frame too big for desired bit rate (1068 kbps), now switching= to a bigger qscale value (393216). > [roqvideo @ 0x3112980] 0.0 size=3D 42kB time=3D00:00:00.40 bitrate= =3D 866.5kbits/s speed=3D0.0667x =20 > Generated a frame too small for desired bit rate (514 kbps), reverting la= mbda and using smaller inc on qscale (327680). > [roqvideo @ 0x3112980] 0.0 size=3D 62kB time=3D00:00:00.56 bitrate= =3D 896.2kbits/s speed=3D0.0708x =20 > Generated a frame too small for desired bit rate (901 kbps), qscale value= cannot be lowered any further (1). This suggests an unstable regulation loop. It also makes the encoder slower than the Cinepak encoder, amazingly. 59.6 vs 21.57 seconds for encoding 90 frames of dimension 256x256. -bt should have a default of 0, and similar default logic as -b. The default of bitrate/20 also seems excessively small? If I change the default to be the same as the bitrate then the encoding time above shrinks to 11.7 seconds. There is an excessive newline visible here: > + "\nGenerated a frame too big for desired bit rate > (%d kbps), " And elsewhere. Using non-integer framerates causes the encoder to go bananas. For example 24000/1001 fps makes the ratecontrol think it's running at 24000 fps. An easy fix is to reject avctx->time_base.num !=3D 1 on init. roq_write_header() rejects non-integer framerates. I'm also curious about this hunk: > - if (enc->lambda > 100000) { > + if (enc->lambda > 100000000) { > av_log(roq->logctx, AV_LOG_ERROR, "Cannot encode video in Qu= ake compatible form\n"); > return AVERROR(EINVAL); > } Where in the Quake (3?) source code is this limitation? Seems rather that there should be a retry limit. There's probably no harm in keeping going so long as the packet doesn't end up above the limit. A quick logarithmic regression on bitrate vs qscale suggests it scales with somewhere between qscale^-0.2833 and qscale^-0.2842. Conversely, to hit a specific bitrate, try scaling qscale with the bitrate ratio raised to around 3.5. A more conservative exponent like 2 is probably also fine. See patch attached. A more systematic approach might be to do a binary search for qscale, with an initial guess per the formula above. /Tomas --=-jEFO5G41+H6zQci6Go5Q Content-Disposition: attachment; filename="0001-Fast-ratecontrol-could-be-better.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="0001-Fast-ratecontrol-could-be-better.patch"; charset="UTF-8" RnJvbSA1OTk1MTE5ODQzZjU3YmE2OGRjOGQ2NmNiNmM1M2NkOGVjMzg2YWI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/VG9tYXM9MjBIPUMzPUE0cmRpbj89IDxnaXRA aGFlcmRpbi5zZT4KRGF0ZTogVHVlLCAyMyBKYW4gMjAyNCAxODo0MDo1NSArMDEwMApTdWJqZWN0 OiBbUEFUQ0hdIEZhc3QgcmF0ZWNvbnRyb2wsIGNvdWxkIGJlIGJldHRlcgoKLS0tCiBsaWJhdmNv ZGVjL3JvcXZpZGVvZW5jLmMgfCA0OCArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9yb3F2aWRlb2VuYy5jIGIvbGliYXZjb2RlYy9yb3F2 aWRlb2VuYy5jCmluZGV4IDk3NjAxNWQ5MTguLjBmZDcwZTg1YzQgMTAwNjQ0Ci0tLSBhL2xpYmF2 Y29kZWMvcm9xdmlkZW9lbmMuYworKysgYi9saWJhdmNvZGVjL3JvcXZpZGVvZW5jLmMKQEAgLTg5 NCw3ICs4OTQsNyBAQCBzdGF0aWMgaW50IHJvcV9lbmNvZGVfdmlkZW8oQVZDb2RlY0NvbnRleHQg KmF2Y3R4KQogICAgIFJvcUVuY0NvbnRleHQgKmNvbnN0IGVuYyA9IGF2Y3R4LT5wcml2X2RhdGE7 CiAgICAgUm9xVGVtcERhdGEgKmNvbnN0IHRlbXBEYXRhID0gJmVuYy0+dG1wX2RhdGE7CiAgICAg Um9xQ29udGV4dCAqY29uc3Qgcm9xID0gJmVuYy0+Y29tbW9uOwotICAgIGludCByZXQ7CisgICAg aW50IHJldCwgbnVtX2Zhc3RfcXNjYWxlX2RlbHRhcyA9IDAsIG51bV90cmllcyA9IDA7CiAKICAg ICBtZW1zZXQodGVtcERhdGEsIDAsIHNpemVvZigqdGVtcERhdGEpKTsKIApAQCAtOTA4LDEyICs5 MDgsMTYgQEAgc3RhdGljIGludCByb3FfZW5jb2RlX3ZpZGVvKEFWQ29kZWNDb250ZXh0ICphdmN0 eCkKICAgICB9CiAKICByZXRyeV9lbmNvZGU6CisgICAgbnVtX3RyaWVzKys7CiAgICAgZm9yIChp bnQgaSA9IDA7IGkgPCByb3EtPndpZHRoICogcm9xLT5oZWlnaHQgLyA2NDsgaSsrKQogICAgICAg ICBnYXRoZXJfZGF0YV9mb3JfY2VsKGVuYy0+Y2VsX2V2YWxzICsgaSwgZW5jKTsKIAogICAgIC8q IFF1YWtlIDMgY2FuJ3QgaGFuZGxlIGNodW5rcyBiaWdnZXIgdGhhbiA2NTUzNSBieXRlcyAqLwor I2RlZmluZSBNQVhfTEFNQkRBX0RFTFRBIDMwMDAwMDAKKyNkZWZpbmUgTUFYX1RSSUVTIDMwCisj ZGVmaW5lIE1BWF9GQVNUX1RSSUVTIDUKICAgICBpZiAodGVtcERhdGEtPm1haW5DaHVua1NpemUv OCA+IDY1NTM1ICYmIGVuYy0+cXVha2UzX2NvbXBhdCkgewotICAgICAgICBpZiAoZW5jLT5sYW1i ZGEgPiAxMDAwMDAwMDApIHsKKyAgICAgICAgaWYgKG51bV90cmllcyA+IE1BWF9UUklFUykgewog ICAgICAgICAgICAgYXZfbG9nKHJvcS0+bG9nY3R4LCBBVl9MT0dfRVJST1IsICJDYW5ub3QgZW5j b2RlIHZpZGVvIGluIFF1YWtlIGNvbXBhdGlibGUgZm9ybVxuIik7CiAgICAgICAgICAgICByZXR1 cm4gQVZFUlJPUihFSU5WQUwpOwogICAgICAgICB9CkBAIC05NDEsMjggKzk0NSw0MCBAQCBzdGF0 aWMgaW50IHJvcV9lbmNvZGVfdmlkZW8oQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQogICAgICAgICBp bnQ2NF90IHRvbCA9IGF2Y3R4LT5iaXRfcmF0ZV90b2xlcmFuY2U7CiAKICAgICAgICAgLyogdG9s ZXJhbmNlID4gYml0IHJhdGUsIHNldCB0byA1JSBvZiB0aGUgYml0IHJhdGUgKi8KLSAgICAgICAg aWYgKHRvbCA+IGF2Y3R4LT5iaXRfcmF0ZSkKKyAgICAgICAgaWYgKCF0b2wpCiAgICAgICAgICAg ICB0b2wgPSBhdmN0eC0+Yml0X3JhdGUgLyAyMDsKIAogICAgICAgICBhdl9sb2cocm9xLT5sb2dj dHgsIEFWX0xPR19WRVJCT1NFLAotICAgICAgICAgICAgICAgIlxuRGVzaXJlZCBiaXQgcmF0ZSAo JWQga2JwcyksICIKKyAgICAgICAgICAgICAgICJEZXNpcmVkIGJpdCByYXRlICglZCBrYnBzKSwg IgorICAgICAgICAgICAgICAgIkN1cnJlbnQgYml0IHJhdGUgKCVkIGticHMpLCAiCiAgICAgICAg ICAgICAgICAiQml0IHJhdGUgdG9sZXJhbmNlICglZCksICIKICAgICAgICAgICAgICAgICJGcmFt ZSByYXRlICglZClcbiIsCi0gICAgICAgICAgICAgICAoaW50KWF2Y3R4LT5iaXRfcmF0ZSwgKGlu dCl0b2wsIGF2Y3R4LT50aW1lX2Jhc2UuZGVuKTsKKyAgICAgICAgICAgICAgIChpbnQpYXZjdHgt PmJpdF9yYXRlIC8gMTAwMCwgZnRvdGFsIC8gMTAwMCwgKGludCl0b2wsIGF2Y3R4LT50aW1lX2Jh c2UuZGVuKTsKIAogICAgICAgICBpZiAoZnRvdGFsID4gKGF2Y3R4LT5iaXRfcmF0ZSArIHRvbCkp IHsKICAgICAgICAgICAgIC8qIGZyYW1lIGlzIHRvbyBiaWcgLSBpbmNyZWFzZSBxc2NhbGUgKi8K LSAgICAgICAgICAgIGlmIChlbmMtPmxhbWJkYSA+IDEwMDAwMDAwMCkgewotICAgICAgICAgICAg ICAgIGF2X2xvZyhyb3EtPmxvZ2N0eCwgQVZfTE9HX0VSUk9SLCAiXG5DYW5ub3QgZW5jb2RlIHZp ZGVvIGF0IGRlc2lyZWQgYml0cmF0ZVxuIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJS T1IoRUlOVkFMKTsKKyAgICAgICAgICAgIGlmIChudW1fdHJpZXMgPiBNQVhfVFJJRVMpIHsKKyAg ICAgICAgICAgICAgICBhdl9sb2cocm9xLT5sb2djdHgsIEFWX0xPR19XQVJOSU5HLCAiQ2Fubm90 IGVuY29kZSB2aWRlbyBhdCBkZXNpcmVkIGJpdHJhdGUgKGdvdCAlZCBrYnBzKVxuIiwgZnRvdGFs IC8gMTAwMCk7CisgICAgICAgICAgICAgICAgLy8gZG9uJ3QgZmFpbCBoYXJkCisgICAgICAgICAg ICAgICAgZ290byBrZWVwZ29pbmc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbmMtPmxh bWJkYV9kZWx0YSA9IGVuYy0+bGFtYmRhX2RlbHRhIDw9IDAgPyAxIDogZW5jLT5sYW1iZGFfZGVs dGEgPCBNQVhfTEFNQkRBX0RFTFRBLzIgPyBlbmMtPmxhbWJkYV9kZWx0YSoyIDogTUFYX0xBTUJE QV9ERUxUQTsKKyAgICAgICAgICAgIGlmIChudW1fZmFzdF9xc2NhbGVfZGVsdGFzIDwgTUFYX0ZB U1RfVFJJRVMpIHsKKyAgICAgICAgICAgICAgICBmbG9hdCByYXRpbzsKKyAgICAgICAgICAgICAg ICBpbnQgZmFzdF9sYW1iZGFfZGVsdGE7CisgICAgICAgICAgICAgICAgcmF0aW8gPSBwb3dmKChm bG9hdClmdG90YWwgLyBhdmN0eC0+Yml0X3JhdGUsIDIpIC0gMTsgLy8gLTEgYmVjYXVzZSBpdCdz IGEgZGVsdGEKKyAgICAgICAgICAgICAgICBhdl9sb2cocm9xLT5sb2djdHgsIEFWX0xPR19WRVJC T1NFLCAicmF0aW8gPSAlZlxuIiwgcmF0aW8pOworICAgICAgICAgICAgICAgIGZhc3RfbGFtYmRh X2RlbHRhID0gRkZNQVgoMSwgRkZNSU4oZW5jLT5sYW1iZGEgKiByYXRpbywgTUFYX0xBTUJEQV9E RUxUQSkpOworICAgICAgICAgICAgICAgIC8vIHNvbWV0aW1lcyByYXRpbyBlbmRzIHVwIHF1aXRl IHNtYWxsLCBpbiB3aGljaCBjYXNlIHdlIGZhbGwgYmFjayB0byB0aGUgc2ltcGxlIGRvdWJsaW5n IGxvZ2ljCisgICAgICAgICAgICAgICAgZW5jLT5sYW1iZGFfZGVsdGEgPSBGRk1BWChlbmMtPmxh bWJkYV9kZWx0YSwgZmFzdF9sYW1iZGFfZGVsdGEpOworICAgICAgICAgICAgICAgIG51bV9mYXN0 X3FzY2FsZV9kZWx0YXMrKzsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVuYy0+bGFtYmRh X2RlbHRhID0gZW5jLT5sYW1iZGFfZGVsdGEgPD0gMCA/IDEgOiBlbmMtPmxhbWJkYV9kZWx0YSA8 IDY1NTM2ID8gZW5jLT5sYW1iZGFfZGVsdGEqMiA6IDY1NTM2OwogICAgICAgICAgICAgZW5jLT5s YXN0X2xhbWJkYSA9IGVuYy0+bGFtYmRhOwogICAgICAgICAgICAgZW5jLT5sYW1iZGEgKz0gZW5j LT5sYW1iZGFfZGVsdGE7CiAgICAgICAgICAgICBhdl9sb2cocm9xLT5sb2djdHgsIEFWX0xPR19J TkZPLAotICAgICAgICAgICAgICAgICAgICJcbkdlbmVyYXRlZCBhIGZyYW1lIHRvbyBiaWcgZm9y IGRlc2lyZWQgYml0IHJhdGUgKCVkIGticHMpLCAiCi0gICAgICAgICAgICAgICAgICAgIm5vdyBz d2l0Y2hpbmcgdG8gYSBiaWdnZXIgcXNjYWxlIHZhbHVlICglZCkuXG4iLAotICAgICAgICAgICAg ICAgICAgIGZ0b3RhbCAvIDEwMDAsIChpbnQpZW5jLT5sYW1iZGEpOworICAgICAgICAgICAgICAg ICAgICJHZW5lcmF0ZWQgYSBmcmFtZSB0b28gYmlnIGZvciBkZXNpcmVkIGJpdCByYXRlICglZCBr YnBzKSwgIgorICAgICAgICAgICAgICAgICAgICJub3cgc3dpdGNoaW5nIHRvIGEgYmlnZ2VyIHFz Y2FsZSB2YWx1ZSAoJWQgLT4gJWQpLlxuIiwKKyAgICAgICAgICAgICAgICAgICBmdG90YWwgLyAx MDAwLCAoaW50KWVuYy0+bGFzdF9sYW1iZGEsIChpbnQpZW5jLT5sYW1iZGEpOwogICAgICAgICAg ICAgdGVtcERhdGEtPm1haW5DaHVua1NpemUgPSAwOwogICAgICAgICAgICAgbWVtc2V0KHRlbXBE YXRhLT51c2VkX29wdGlvbiwgMCwgc2l6ZW9mKHRlbXBEYXRhLT51c2VkX29wdGlvbikpOwogICAg ICAgICAgICAgbWVtc2V0KHRlbXBEYXRhLT5jb2RlYm9va3MudXNlZENCNCwgMCwKQEAgLTk3NSwx MiArOTkxLDEyIEBAIHN0YXRpYyBpbnQgcm9xX2VuY29kZV92aWRlbyhBVkNvZGVjQ29udGV4dCAq YXZjdHgpCiAgICAgICAgICAgICAvKiBmcmFtZSBpcyB0b28gc21hbGwgLSBkZWNyZWFzZSBxc2Nh bGUgKi8KICAgICAgICAgICAgIGlmIChlbmMtPmxhbWJkYSA8PSAxKSB7CiAgICAgICAgICAgICAg ICAgYXZfbG9nKHJvcS0+bG9nY3R4LCBBVl9MT0dfV0FSTklORywKLSAgICAgICAgICAgICAgICAg ICAgICAgIlxuR2VuZXJhdGVkIGEgZnJhbWUgdG9vIHNtYWxsIGZvciBkZXNpcmVkIGJpdCByYXRl ICglZCBrYnBzKSwgIgorICAgICAgICAgICAgICAgICAgICAgICAiR2VuZXJhdGVkIGEgZnJhbWUg dG9vIHNtYWxsIGZvciBkZXNpcmVkIGJpdCByYXRlICglZCBrYnBzKSwgIgogICAgICAgICAgICAg ICAgICAgICAgICAicXNjYWxlIHZhbHVlIGNhbm5vdCBiZSBsb3dlcmVkIGFueSBmdXJ0aGVyICgl ZCkuXG4iLAogICAgICAgICAgICAgICAgICAgICAgICBmdG90YWwgLyAxMDAwLCAoaW50KWVuYy0+ bGFtYmRhKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoKGVuYy0+bGFtYmRhIC0gZW5jLT5sYXN0 X2xhbWJkYSkgPT0gMSkgewogICAgICAgICAgICAgICAgIGF2X2xvZyhyb3EtPmxvZ2N0eCwgQVZf TE9HX1dBUk5JTkcsCi0gICAgICAgICAgICAgICAgICAgICAgICJcbkNhbm5vdCBmaW5kIHFzY2Fs ZSB0aGF0IGdpdmVzIGRlc2lyZWQgYml0IHJhdGUgd2l0aGluIGRlc2lyZWQgdG9sZXJhbmNlLCAi CisgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgZmluZCBxc2NhbGUgdGhhdCBnaXZlcyBk ZXNpcmVkIGJpdCByYXRlIHdpdGhpbiBkZXNpcmVkIHRvbGVyYW5jZSwgIgogICAgICAgICAgICAg ICAgICAgICAgICAidXNpbmcgbG93ZXIgYml0cmF0ZSAoJWQga2Jwcykgd2l0aCBoaWdoZXIgcXNj YWxlIHZhbHVlICglZCkuXG4iLAogICAgICAgICAgICAgICAgICAgICAgICBmdG90YWwgLyAxMDAw LCAoaW50KWVuYy0+bGFtYmRhKTsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC05OTIsNyArMTAw OCw3IEBAIHN0YXRpYyBpbnQgcm9xX2VuY29kZV92aWRlbyhBVkNvZGVjQ29udGV4dCAqYXZjdHgp CiAgICAgICAgICAgICAgICAgICAgIGVuYy0+bGFtYmRhID0gZW5jLT5sYXN0X2xhbWJkYTsKICAg ICAgICAgICAgICAgICAgICAgLy9lbmMtPmxhbWJkYSAqPSAoZmxvYXQpKHRlbXBEYXRhLT5tYWlu Q2h1bmtTaXplICogYXZjdHgtPnRpbWVfYmFzZS5kZW4pIC8gYXZjdHgtPmJpdF9yYXRlOwogICAg ICAgICAgICAgICAgICAgICBhdl9sb2cocm9xLT5sb2djdHgsIEFWX0xPR19JTkZPLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgIlxuR2VuZXJhdGVkIGEgZnJhbWUgdG9vIHNtYWxsIGZvciBk ZXNpcmVkIGJpdCByYXRlICglZCBrYnBzKSwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg IkdlbmVyYXRlZCBhIGZyYW1lIHRvbyBzbWFsbCBmb3IgZGVzaXJlZCBiaXQgcmF0ZSAoJWQga2Jw cyksICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXZlcnRpbmcgbGFtYmRhIGFuZCB1 c2luZyBzbWFsbGVyIGluYyBvbiBxc2NhbGUgKCVkKS5cbiIsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmdG90YWwgLyAxMDAwLCAoaW50KWVuYy0+bGFtYmRhKTsKICAgICAgICAgICAgICAg ICB9CkBAIC0xMDA3LDYgKzEwMjMsNyBAQCBzdGF0aWMgaW50IHJvcV9lbmNvZGVfdmlkZW8oQVZD b2RlY0NvbnRleHQgKmF2Y3R4KQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQora2Vl cGdvaW5nOgogCiAgICAgd3JpdGVfY29kZWJvb2tzKGVuYyk7CiAKQEAgLTEyMDAsNiArMTIxNyw3 IEBAIHN0YXRpYyBjb25zdCBBVkNsYXNzIHJvcV9jbGFzcyA9IHsKIAogc3RhdGljIGNvbnN0IEZG Q29kZWNEZWZhdWx0IHJvcV9kZWZhdWx0c1tdID0gewogICAgIHsgImIiLCAgICAgICAgICAgICAg ICAiMCIgfSwKKyAgICB7ICJidCIsICAgICAgICAgICAgICAgIjAiIH0sCiAgICAgeyBOVUxMIH0s CiB9OwogCi0tIAoyLjM5LjIKCg== --=-jEFO5G41+H6zQci6Go5Q 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". --=-jEFO5G41+H6zQci6Go5Q--