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 BA12D4934A for ; Sat, 9 Mar 2024 17:21:16 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DA3B368CC91; Sat, 9 Mar 2024 19:21:13 +0200 (EET) Received: from mail-4324.protonmail.ch (mail-4324.protonmail.ch [185.70.43.24]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 394F568CA09 for ; Sat, 9 Mar 2024 19:21:07 +0200 (EET) Date: Sat, 09 Mar 2024 17:20:49 +0000 To: FFmpeg development discussions and patches Message-ID: In-Reply-To: References: Feedback-ID: 33509725:user:proton MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_BMt84gxN7TzurJMwFPGu92Bslgd1wcHfg8iwrob4" Subject: Re: [FFmpeg-devel] [PATCH] avformat/aea: Add aea muxer 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: , From: asivery via ffmpeg-devel Reply-To: FFmpeg development discussions and patches Cc: asivery 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. --b1_BMt84gxN7TzurJMwFPGu92Bslgd1wcHfg8iwrob4 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Thank you both for the suggestions. I've updated the code as requested, and= I apologize for the AV_LOG_WARNING instead of AV_LOG_ERROR - it was an ove= rsight on my part. I have also added the stream codec check, and it did get triggered when I t= ried to feed it audio that was not ATRAC1, so it seems it is required. Regarding titles being truncated - that was my intention. However I've now = added a warning if it was going to happen. As for the block count in the header - none of the modern software which us= es AEA reads that field, but for the older software, it will now be truncat= ed to UINT32_MAX if needed. Is there anything else that needs changes? - asivery On Saturday, March 9th, 2024 at 1:06 PM, Andreas Rheinhardt wrote: > asivery via ffmpeg-devel: >=20 > > +#include "libavutil/intreadwrite.h" > > +#include "libavutil/avstring.h" >=20 >=20 > These two headers seem unused. >=20 > > +#include "avformat.h" > > +#include "avio_internal.h" > > +#include "rawenc.h" > > +#include "mux.h" > > + > > +static int aea_write_header(AVFormatContext *s) > > +{ > > + const AVDictionaryEntry title_entry; > > + int title_length =3D 0; > > + char title_contents; >=20 >=20 > const please. Also we put the * to the variable (because "char* foo, > bar" still only declares one pointer to char). Furthermore, the scope > for this should be the block below. >=20 > > + AVStream st; > > + > > + if (s->nb_streams > 1) { > > + av_log(s, AV_LOG_WARNING, "Got more than one stream to encode. This i= s not supported.\n"); > > + return AVERROR(EINVAL); > > + } > > + > > + st =3D s->streams[0]; > > + if (st->codecpar->ch_layout.nb_channels !=3D 1 && st->codecpar->ch_la= yout.nb_channels !=3D 2) { > > + av_log(s, AV_LOG_ERROR, "Invalid amount of channels to mux (%d).\n", = st->codecpar->ch_layout.nb_channels); > > + return AVERROR(EINVAL); > > + } > > + > > + if (st->codecpar->sample_rate !=3D 44100) { > > + av_log(s, AV_LOG_ERROR, "Invalid sample rate (%d) AEA only supports 4= 4.1kHz.\n", st->codecpar->sample_rate); > > + return AVERROR(EINVAL); > > + } > > + > > + / Write magic / > > + avio_wl32(s->pb, 2048); > > + > > + / Write AEA title */ > > + title_entry =3D av_dict_get(st->metadata, "title", NULL, 0); > > + if (title_entry) { > > + title_contents =3D title_entry->value; > > + title_length =3D strlen(title_contents); >=20 >=20 > Possible truncation here. >=20 > > + title_length =3D FFMIN(256, title_length); > > + avio_write(s->pb, title_contents, title_length); > > + } > > + > > + ffio_fill(s->pb, 0, 256 - title_length); > > + > > + /* Write number of frames (zero at header-writing time, will seek lat= er), number of channels / > > + avio_wl32(s->pb, 0); > > + avio_w8(s->pb, st->codecpar->ch_layout.nb_channels); > > + avio_w8(s->pb, 0); > > + > > + / Pad the header to 2048 bytes */ > > + ffio_fill(s->pb, 0, 1782); > > + > > + return 0; > > +} > > + > > +static int aea_write_trailer(struct AVFormatContext *s) > > +{ > > + AVIOContext *pb =3D s->pb; > > + AVStream st =3D s->streams[0]; > > + if (pb->seekable & AVIO_SEEKABLE_NORMAL) { > > + / Seek to rewrite the block count. */ > > + avio_seek(pb, 260, SEEK_SET); > > + avio_wl32(pb, st->nb_frames * st->codecpar->ch_layout.nb_channels); >=20 >=20 > I don't see anything guaranteeing that the result fits into 32 bits. >=20 > > + } else { > > + av_log(s, AV_LOG_WARNING, "unable to rewrite AEA header.\n"); > > + } > > + > > + return 0; > > +} > > + > > +const FFOutputFormat ff_aea_muxer =3D { > > + .p.name =3D "aea", > > + .p.long_name =3D NULL_IF_CONFIG_SMALL("MD STUDIO audio"), > > + .p.extensions =3D "aea", > > + .p.audio_codec =3D AV_CODEC_ID_ATRAC1, > > + > > + .write_header =3D aea_write_header, > > + .write_packet =3D ff_raw_write_packet, > > + .write_trailer =3D aea_write_trailer, > > +}; >=20 >=20 > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel >=20 > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". --b1_BMt84gxN7TzurJMwFPGu92Bslgd1wcHfg8iwrob4 Content-Type: text/x-patch; name=0001-avformat-aea-Add-aea-muxer.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0001-avformat-aea-Add-aea-muxer.patch RnJvbSBlZTFkNGM5M2M2NmU3MjlkOWQwNDU2YjJlOGU3ODlmM2Y5ODM4OWUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhc2l2ZXJ5IDxhc2l2ZXJ5QHByb3Rvbm1haWwuY29tPgpEYXRl OiBGcmksIDggTWFyIDIwMjQgMTQ6NDU6MDIgKzAxMDAKU3ViamVjdDogW1BBVENIXSBhdmZvcm1h dC9hZWE6IEFkZCBhZWEgbXV4ZXIKClNpZ25lZC1vZmYtYnk6IGFzaXZlcnkgPGFzaXZlcnlAcHJv dG9ubWFpbC5jb20+Ci0tLQogZG9jL211eGVycy50ZXhpICAgICAgICAgICAgICAgICB8ICAxMCAr KysKIGxpYmF2Zm9ybWF0L01ha2VmaWxlICAgICAgICAgICAgfCAgIDMgKy0KIGxpYmF2Zm9ybWF0 L3thZWEuYyA9PiBhZWFkZWMuY30gfCAgIDAKIGxpYmF2Zm9ybWF0L2FlYWVuYy5jICAgICAgICAg ICAgfCAxMTUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGxpYmF2Zm9ybWF0L2Fs bGZvcm1hdHMuYyAgICAgICAgfCAgIDEgKwogNSBmaWxlcyBjaGFuZ2VkLCAxMjggaW5zZXJ0aW9u cygrKSwgMSBkZWxldGlvbigtKQogcmVuYW1lIGxpYmF2Zm9ybWF0L3thZWEuYyA9PiBhZWFkZWMu Y30gKDEwMCUpCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZmb3JtYXQvYWVhZW5jLmMKCmRpZmYg LS1naXQgYS9kb2MvbXV4ZXJzLnRleGkgYi9kb2MvbXV4ZXJzLnRleGkKaW5kZXggMjEwNGNjNGE5 NS4uYTRkZjhmNzM2ZCAxMDA2NDQKLS0tIGEvZG9jL211eGVycy50ZXhpCisrKyBiL2RvYy9tdXhl cnMudGV4aQpAQCAtNjYzLDYgKzY2MywxNiBAQCB3aGVuIGVuYWJsZWQsIHdyaXRlIGEgQ1JDIGNo ZWNrc3VtIGZvciBlYWNoIHBhY2tldCB0byB0aGUgb3V0cHV0LAogZGVmYXVsdCBpcyBAY29kZXtm YWxzZX0KIEBlbmQgdGFibGUKIAorQGFuY2hvcnthZWF9CitAc2VjdGlvbiBhZWEKK01EIFNUVURJ TyBhdWRpbyBtdXhlci4KKworVGhpcyBtdXhlciBhY2NlcHRzIGEgc2luZ2xlIEFUUkFDMSBhdWRp byBzdHJlYW0gd2l0aCBlaXRoZXIgb25lIG9yIHR3byBjaGFubmVscworYW5kIGEgc2FtcGxlIHJh dGUgb2YgNDQxMDBIei4KKworQXMgQUVBIHN1cHBvcnRzIHN0b3JpbmcgdGhlIHRyYWNrIHRpdGxl LCB0aGlzIG11eGVyIHdpbGwgYWxzbyB3cml0ZQordGhlIHRpdGxlIGZyb20gc3RyZWFtJ3MgbWV0 YWRhdGEgdG8gdGhlIGNvbnRhaW5lci4KKwogQGFuY2hvcnthZHRzfQogQHNlY3Rpb24gYWR0cwog QXVkaW8gRGF0YSBUcmFuc3BvcnQgU3RyZWFtIG11eGVyLgpkaWZmIC0tZ2l0IGEvbGliYXZmb3Jt YXQvTWFrZWZpbGUgYi9saWJhdmZvcm1hdC9NYWtlZmlsZQppbmRleCA4ODExYTBmZmM5Li43MGQ1 NmYzOTFmIDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9NYWtlZmlsZQorKysgYi9saWJhdmZvcm1h dC9NYWtlZmlsZQpAQCAtOTEsNyArOTEsOCBAQCBPQkpTLSQoQ09ORklHX0FEVFNfTVVYRVIpICAg ICAgICAgICAgICAgICs9IGFkdHNlbmMubyBhcGV0YWcubyBpbWcyLm8gXAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDN2MmVuYy5vCiBPQkpTLSQoQ09ORklH X0FEWF9ERU1VWEVSKSAgICAgICAgICAgICAgICs9IGFkeGRlYy5vCiBPQkpTLSQoQ09ORklHX0FE WF9NVVhFUikgICAgICAgICAgICAgICAgICs9IHJhd2VuYy5vCi1PQkpTLSQoQ09ORklHX0FFQV9E RU1VWEVSKSAgICAgICAgICAgICAgICs9IGFlYS5vIHBjbS5vCitPQkpTLSQoQ09ORklHX0FFQV9E RU1VWEVSKSAgICAgICAgICAgICAgICs9IGFlYWRlYy5vIHBjbS5vCitPQkpTLSQoQ09ORklHX0FF QV9NVVhFUikgICAgICAgICAgICAgICAgICs9IGFlYWVuYy5vIHJhd2VuYy5vCiBPQkpTLSQoQ09O RklHX0FGQ19ERU1VWEVSKSAgICAgICAgICAgICAgICs9IGFmYy5vCiBPQkpTLSQoQ09ORklHX0FJ RkZfREVNVVhFUikgICAgICAgICAgICAgICs9IGFpZmZkZWMubyBhaWZmLm8gcGNtLm8gXAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZfY2hhbi5vIHJlcGxh eWdhaW4ubwpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvYWVhLmMgYi9saWJhdmZvcm1hdC9hZWFk ZWMuYwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbGliYXZmb3JtYXQvYWVhLmMK cmVuYW1lIHRvIGxpYmF2Zm9ybWF0L2FlYWRlYy5jCmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9h ZWFlbmMuYyBiL2xpYmF2Zm9ybWF0L2FlYWVuYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAuLjEyYWVkNzJhMTMKLS0tIC9kZXYvbnVsbAorKysgYi9saWJhdmZvcm1hdC9h ZWFlbmMuYwpAQCAtMCwwICsxLDExNSBAQAorLyoKKyAqIE1EIFNUVURJTyBhdWRpbyBtdXhlcgor ICoKKyAqIENvcHlyaWdodCAoYykgMjAyNCBhc2l2ZXJ5CisgKgorICogVGhpcyBmaWxlIGlzIHBh cnQgb2YgRkZtcGVnLgorICoKKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhl IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog RkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRo IEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlv biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjEx MC0xMzAxIFVTQQorICovCisKKyNpbmNsdWRlICJhdmZvcm1hdC5oIgorI2luY2x1ZGUgImF2aW9f aW50ZXJuYWwuaCIKKyNpbmNsdWRlICJyYXdlbmMuaCIKKyNpbmNsdWRlICJtdXguaCIKKworc3Rh dGljIGludCBhZWFfd3JpdGVfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCAqcykKK3sKKyAgICBjb25z dCBBVkRpY3Rpb25hcnlFbnRyeSAqdGl0bGVfZW50cnk7CisgICAgaW50IHRpdGxlX2xlbmd0aCA9 IDA7CisgICAgQVZTdHJlYW0gKnN0OworCisgICAgaWYgKHMtPm5iX3N0cmVhbXMgPiAxKSB7Cisg ICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfRVJST1IsICJHb3QgbW9yZSB0aGFuIG9uZSBzdHJlYW0g dG8gZW5jb2RlLiBUaGlzIGlzIG5vdCBzdXBwb3J0ZWQuXG4iKTsKKyAgICAgICAgcmV0dXJuIEFW RVJST1IoRUlOVkFMKTsKKyAgICB9CisgICAgCisgICAgc3QgPSBzLT5zdHJlYW1zWzBdOworICAg IGlmIChzdC0+Y29kZWNwYXItPmNoX2xheW91dC5uYl9jaGFubmVscyAhPSAxICYmIHN0LT5jb2Rl Y3Bhci0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzICE9IDIpIHsKKyAgICAgICAgYXZfbG9nKHMsIEFW X0xPR19FUlJPUiwgIk9ubHkgbWF4aW11bSAyIGNoYW5uZWxzIGFyZSBzdXBwb3J0ZWQgaW4gdGhl IGF1ZGlvIgorICAgICAgICAgICAgICAgIiBzdHJlYW0sICVkIGNoYW5uZWxzIHdlcmUgZm91bmQu XG4iLCBzdC0+Y29kZWNwYXItPmNoX2xheW91dC5uYl9jaGFubmVscyk7CisgICAgICAgIHJldHVy biBBVkVSUk9SKEVJTlZBTCk7CisgICAgfQorCisgICAgaWYgKHN0LT5jb2RlY3Bhci0+Y29kZWNf aWQgIT0gQVZfQ09ERUNfSURfQVRSQUMxKSB7CisgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfRVJS T1IsICJBRUEgY2FuIG9ubHkgc3RvcmUgQVRSQUMxIHN0cmVhbXMsICVzIHdhcyBmb3VuZC5cbiIs IGF2Y29kZWNfZ2V0X25hbWUoc3QtPmNvZGVjcGFyLT5jb2RlY19pZCkpOworICAgICAgICByZXR1 cm4gQVZFUlJPUihFSU5WQUwpOworICAgIH0KKworICAgIGlmIChzdC0+Y29kZWNwYXItPnNhbXBs ZV9yYXRlICE9IDQ0MTAwKSB7CisgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfRVJST1IsICJJbnZh bGlkIHNhbXBsZSByYXRlICglZCkgQUVBIG9ubHkgc3VwcG9ydHMgNDQuMWtIei5cbiIsIHN0LT5j b2RlY3Bhci0+c2FtcGxlX3JhdGUpOworICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwor ICAgIH0KKworICAgIC8qIFdyaXRlIG1hZ2ljICovCisgICAgYXZpb193bDMyKHMtPnBiLCAyMDQ4 KTsKKyAgICAKKyAgICAvKiBXcml0ZSBBRUEgdGl0bGUgKi8KKyAgICB0aXRsZV9lbnRyeSA9IGF2 X2RpY3RfZ2V0KHN0LT5tZXRhZGF0YSwgInRpdGxlIiwgTlVMTCwgMCk7CisgICAgaWYgKHRpdGxl X2VudHJ5KSB7CisgICAgICAgIGNvbnN0IGNoYXIgKnRpdGxlX2NvbnRlbnRzID0gdGl0bGVfZW50 cnktPnZhbHVlOworICAgICAgICB0aXRsZV9sZW5ndGggPSBzdHJsZW4odGl0bGVfY29udGVudHMp OworICAgICAgICBpZiAodGl0bGVfbGVuZ3RoID4gMjU2KSB7CisgICAgICAgICAgICBhdl9sb2co cywgQVZfTE9HX1dBUk5JTkcsICJUaXRsZSB0b28gbG9uZywgdHJ1bmNhdGVkIHRvIDI1NiBieXRl cy5cbiIpOworICAgICAgICAgICAgdGl0bGVfbGVuZ3RoID0gMjU2OworICAgICAgICB9CisgICAg ICAgIGF2aW9fd3JpdGUocy0+cGIsIHRpdGxlX2NvbnRlbnRzLCB0aXRsZV9sZW5ndGgpOworICAg IH0KKworICAgIGZmaW9fZmlsbChzLT5wYiwgMCwgMjU2IC0gdGl0bGVfbGVuZ3RoKTsKKworICAg IC8qIFdyaXRlIG51bWJlciBvZiBmcmFtZXMgKHplcm8gYXQgaGVhZGVyLXdyaXRpbmcgdGltZSwg d2lsbCBzZWVrIGxhdGVyKSwgbnVtYmVyIG9mIGNoYW5uZWxzICovCisgICAgYXZpb193bDMyKHMt PnBiLCAwKTsKKyAgICBhdmlvX3c4KHMtPnBiLCBzdC0+Y29kZWNwYXItPmNoX2xheW91dC5uYl9j aGFubmVscyk7CisgICAgYXZpb193OChzLT5wYiwgMCk7CisKKyAgICAvKiBQYWQgdGhlIGhlYWRl ciB0byAyMDQ4IGJ5dGVzICovCisgICAgZmZpb19maWxsKHMtPnBiLCAwLCAxNzgyKTsKKworICAg IHJldHVybiAwOworfQorCitzdGF0aWMgaW50IGFlYV93cml0ZV90cmFpbGVyKHN0cnVjdCBBVkZv cm1hdENvbnRleHQgKnMpCit7CisgICAgaW50NjRfdCB0b3RhbF9ibG9ja3M7CisgICAgQVZJT0Nv bnRleHQgKnBiID0gcy0+cGI7CisgICAgQVZTdHJlYW0gKnN0ID0gcy0+c3RyZWFtc1swXTsKKyAg ICBpZiAocGItPnNlZWthYmxlICYgQVZJT19TRUVLQUJMRV9OT1JNQUwpIHsKKyAgICAgICAgLyog U2VlayB0byByZXdyaXRlIHRoZSBibG9jayBjb3VudC4gKi8KKyAgICAgICAgYXZpb19zZWVrKHBi LCAyNjAsIFNFRUtfU0VUKTsKKyAgICAgICAgdG90YWxfYmxvY2tzID0gc3QtPm5iX2ZyYW1lcyAq IHN0LT5jb2RlY3Bhci0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzOworICAgICAgICBpZiAodG90YWxf YmxvY2tzID4gVUlOVDMyX01BWCkgeworICAgICAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19XQVJO SU5HLCAiVG9vIG1hbnkgZnJhbWVzIGluIHRoZSBmaWxlIHRvIHByb3Blcmx5IGVuY29kZSB0aGUg aGVhZGVyICglbGQpLiIKKyAgICAgICAgICAgICAgICAgICAiIEJsb2NrIGNvdW50IGluIHRoZSBo ZWFkZXIgd2lsbCBiZSB0cnVuY2F0ZWQuXG4iLCB0b3RhbF9ibG9ja3MpOworICAgICAgICAgICAg dG90YWxfYmxvY2tzID0gVUlOVDMyX01BWDsKKyAgICAgICAgfQorICAgICAgICBhdmlvX3dsMzIo cGIsIHRvdGFsX2Jsb2Nrcyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXZfbG9nKHMsIEFWX0xP R19XQVJOSU5HLCAiVW5hYmxlIHRvIHJld3JpdGUgQUVBIGhlYWRlci5cbiIpOworICAgIH0KKwor ICAgIHJldHVybiAwOworfQorCitjb25zdCBGRk91dHB1dEZvcm1hdCBmZl9hZWFfbXV4ZXIgPSB7 CisgICAgLnAubmFtZSAgICAgICAgICAgPSAiYWVhIiwKKyAgICAucC5sb25nX25hbWUgICAgICA9 IE5VTExfSUZfQ09ORklHX1NNQUxMKCJNRCBTVFVESU8gYXVkaW8iKSwKKyAgICAucC5leHRlbnNp b25zICAgICA9ICJhZWEiLAorICAgIC5wLmF1ZGlvX2NvZGVjICAgID0gQVZfQ09ERUNfSURfQVRS QUMxLAorCisgICAgLndyaXRlX2hlYWRlciAgICAgPSBhZWFfd3JpdGVfaGVhZGVyLAorICAgIC53 cml0ZV9wYWNrZXQgICAgID0gZmZfcmF3X3dyaXRlX3BhY2tldCwKKyAgICAud3JpdGVfdHJhaWxl ciAgICA9IGFlYV93cml0ZV90cmFpbGVyLAorfTsKZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L2Fs bGZvcm1hdHMuYyBiL2xpYmF2Zm9ybWF0L2FsbGZvcm1hdHMuYwppbmRleCAwYTBlNzYxMzhmLi41 NjM5NzE1MTA0IDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9hbGxmb3JtYXRzLmMKKysrIGIvbGli YXZmb3JtYXQvYWxsZm9ybWF0cy5jCkBAIC00Nyw2ICs0Nyw3IEBAIGV4dGVybiBjb25zdCBGRk91 dHB1dEZvcm1hdCBmZl9hZHRzX211eGVyOwogZXh0ZXJuIGNvbnN0IEZGSW5wdXRGb3JtYXQgIGZm X2FkeF9kZW11eGVyOwogZXh0ZXJuIGNvbnN0IEZGT3V0cHV0Rm9ybWF0IGZmX2FkeF9tdXhlcjsK IGV4dGVybiBjb25zdCBGRklucHV0Rm9ybWF0ICBmZl9hZWFfZGVtdXhlcjsKK2V4dGVybiBjb25z dCBGRk91dHB1dEZvcm1hdCBmZl9hZWFfbXV4ZXI7CiBleHRlcm4gY29uc3QgRkZJbnB1dEZvcm1h dCAgZmZfYWZjX2RlbXV4ZXI7CiBleHRlcm4gY29uc3QgRkZJbnB1dEZvcm1hdCAgZmZfYWlmZl9k ZW11eGVyOwogZXh0ZXJuIGNvbnN0IEZGT3V0cHV0Rm9ybWF0IGZmX2FpZmZfbXV4ZXI7Ci0tIAoy LjM0LjEKCg== --b1_BMt84gxN7TzurJMwFPGu92Bslgd1wcHfg8iwrob4 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". --b1_BMt84gxN7TzurJMwFPGu92Bslgd1wcHfg8iwrob4--