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 DF07F41D15 for ; Wed, 15 Dec 2021 21:32:44 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A491268AE51; Wed, 15 Dec 2021 23:32:32 +0200 (EET) Received: from iq.passwd.hu (iq.passwd.hu [217.27.212.140]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B153E68A58D for ; Wed, 15 Dec 2021 23:32:25 +0200 (EET) Received: from localhost (localhost [127.0.0.1]) by iq.passwd.hu (Postfix) with ESMTP id CE56DE64B3 for ; Wed, 15 Dec 2021 22:32:24 +0100 (CET) X-Virus-Scanned: amavisd-new at passwd.hu Received: from iq.passwd.hu ([127.0.0.1]) by localhost (iq.passwd.hu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Q66I8lCCaznW for ; Wed, 15 Dec 2021 22:32:20 +0100 (CET) Received: from iq (iq [217.27.212.140]) by iq.passwd.hu (Postfix) with ESMTPS id 335BBE5041 for ; Wed, 15 Dec 2021 22:32:20 +0100 (CET) Date: Wed, 15 Dec 2021 22:32:20 +0100 (CET) From: Marton Balint To: FFmpeg development discussions and patches In-Reply-To: Message-ID: <12821291-4dae-ba8d-f213-ea6ee44aa52@passwd.hu> References: <20211208010649.381-1-jamrial@gmail.com> <20211208010649.381-2-jamrial@gmail.com> <6929dfc4-5cb0-42d8-d527-c9ecb47c62af@gmail.com> <40e0a84a-5e8b-0290-a765-afa64d474f0e@gmail.com> <1460ede6-5c45-d564-f3d3-afd9d18cc0b7@gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; BOUNDARY="467242196-341631300-1639601374=:14284" Content-ID: <741b111e-6db-c986-1c87-ca43db643a2@passwd.hu> Subject: Re: [FFmpeg-devel] [PATCH 001/279] Add a new channel layout API 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 message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --467242196-341631300-1639601374=:14284 Content-Type: text/plain; CHARSET=UTF-8; format=flowed Content-Transfer-Encoding: 8BIT Content-ID: On Wed, 15 Dec 2021, James Almer wrote: > > > On 12/15/2021 7:24 AM, Marton Balint wrote: >> >> >> On Tue, 14 Dec 2021, James Almer wrote: >> >>> On 12/14/2021 3:54 PM, Nicolas George wrote: >>>>  James Almer (12021-12-14): >>>>>  We add a const uint8_t* field to AVChannelCustom. If the user wants to >>>>>  allocate the strings instead, and not worry about their lifetime, they >>>>>  can >>>>>  provide the layout with a custom free() function that will take care >>>>> of >>>>>  cleaning anything they came up with on uninit(). >>>> >>>>  I understood what you suggested, and it amounts to letting API users >>>>  fend for themselves. We can do that, but I would prefer if we only did >>>>  on last resort, if we do not find a more convenient solution. >>> >>> There's "char name[16]". Bigger than a pointer (Could be 8 bytes instead, >>> but then it's kinda small). The user will not have to worry about the >>> lifetime of anything then. >>> >>> I'm attaching a diff that goes on top of the last patch of this set >>> implementing this. It also adds support for these custom names to >>> av_channel_layout_describe(), av_channel_layout_index_from_string() and >>> av_channel_layout_channel_from_string(), including tests. >> >> I'd rather not mix custom labels with our fixed names for channels. E.g. >> what if a label conflicts with our existing channel names? If the user >> wants to specify a channel based on its label, that should be a separate >> syntax IMHO. >> >> Overall, having a char name[16] is still kind of limiting, e.g. a label >> read from a muxed file will be truncated, I'd rather not have anything. > > Container metadata is typically be exported as stream metadata or side data. That is always a possibility, but if you want some data per-channel, and not per-stream, (e.g. variable size labels) then side data becomes difficult to work with. > >> >> Here is one more idea, kind of a mix of what I read so far: Let's refcount >> only the dynamically allocated part of AVChannelLayout. Something like: >> >> typedef struct AVChannelLayout { >>     enum AVChannelOrder order; >>     int nb_channels; >>     uint64_t mask; >>     AVBufferRef *custom; >> } AVChannelLayout; >> >> And the reference counted data could point to an array of AVChannelCustom >> entries. And AVChannelCustom can have AVDictionary *metadata, because it >> is refcounted. > > AVBufferRef is meant to hold flat arrays, though. Since sizeof(AVChannelCustom) is fixed, I don't really see the difference. > the custom channel names? As a fixed array like in the above, or in the > dictionary? The latter sounds like a nightmare for both the helpers and as an > API user. Personally I think it can be put in the metadata dictionary, because if we work out some syntax to select channel based on their labels, then it also make sense to select channels based on other metadata, and syntax might be extended with it. E.g. FL.label.Oboe. or FL.language.eng. But if for some reason that is frowned upon, we can extend AVChannelCustom with a char *label, and free it as well on free(). > Also, since AVChannelCustom would have a dictionary, the AVBufferRef holding > it needs a custom free() function. This makes creating layouts manually a > pain. You are already initalizing the dynamically allocated part of AVChannelLayout: layout.u.map = av_mallocz_array(nb_channels, sizeof()); If AVBufferRef is used for that, then a helper function can be added: layout.custom = av_channel_layout_custom_new(nb_channels); No difference really. > And what about the buffer being writable or not? You need to consider > both copy and ref scenarios. av_channel_layout_copy() can simply ref. If a deep copy is needed because the user wants to change anything in AVChannelCustom, then helper function can be added. > > It's a lot of added complexity for what should be a simple "this stream with > six channels has the channels arranged like this in your room: This is front > left, this is front right, this is 'under the carpet', etc". See the attached proof-of-concept patch, to be used on top of your channel_layout branch. Is it that bad? Thanks, Marton --467242196-341631300-1639601374=:14284 Content-Type: text/x-patch; name=channellayout-bufferref-poc.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=channellayout-bufferref-poc.patch ZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbGliZmRrLWFhY2RlYy5jIGIvbGli YXZjb2RlYy9saWJmZGstYWFjZGVjLmMNCmluZGV4IDcxZWU3MjdjZTEuLjFh MzhhZWZmZjkgMTAwNjQ0DQotLS0gYS9saWJhdmNvZGVjL2xpYmZkay1hYWNk ZWMuYw0KKysrIGIvbGliYXZjb2RlYy9saWJmZGstYWFjZGVjLmMNCkBAIC01 Miw3ICs1Miw3IEBAIHR5cGVkZWYgc3RydWN0IEZES0FBQ0RlY0NvbnRleHQg ew0KICAgICB1aW50OF90ICphbmNfYnVmZmVyOw0KICAgICBpbnQgY29uY2Vh bF9tZXRob2Q7DQogICAgIGludCBkcmNfbGV2ZWw7DQotICAgIGlNYU1hTWFv W01hTWFNYW50IGRyY19ib29zdDsNCisgICAgaW50IGRyY19ib29zdDsNCiAg ICAgaW50IGRyY19oZWF2eTsNCiAgICAgaW50IGRyY19lZmZlY3Q7DQogICAg IGludCBkcmNfY3V0Ow0KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbGliZmRr LWFhY2VuYy5jIGIvbGliYXZjb2RlYy9saWJmZGstYWFjZW5jLmMNCmluZGV4 IDk1YWNkZDgzYTkuLmQ0M2Y0NWQ5ZWUgMTAwNjQ0DQotLS0gYS9saWJhdmNv ZGVjL2xpYmZkay1hYWNlbmMuYw0KKysrIGIvbGliYXZjb2RlYy9saWJmZGst YWFjZW5jLmMNCkBAIC00OTMsOSArNDkzLDcgQEAgY29uc3QgQVZDb2RlYyBm Zl9saWJmZGtfYWFjX2VuY29kZXIgPSB7DQogICAgIC5zdXBwb3J0ZWRfc2Ft cGxlcmF0ZXMgPSBhYWNfc2FtcGxlX3JhdGVzLA0KICAgICAud3JhcHBlcl9u YW1lICAgICAgICAgID0gImxpYmZkayIsDQogI2lmIEZGX0FQSV9PTERfQ0hB Tk5FTF9MQVlPVVQNCi1GRl9ESVNBQkxFX0RFUFJFQ0FUSU9OX1dBUk5JTkdT DQogICAgIC5jaGFubmVsX2xheW91dHMgICAgICAgPSBhYWNfY2hhbm5lbF9s YXlvdXQsDQotRkZfRU5BQkxFX0RFUFJFQ0FUSU9OX1dBUk5JTkdTDQogI2Vu ZGlmDQogICAgIC5jaF9sYXlvdXRzICAgICAgICAgICAgPSBhYWNfY2hfbGF5 b3V0cywNCiB9Ow0KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvb3B1cy5jIGIv bGliYXZjb2RlYy9vcHVzLmMNCmluZGV4IDRkODkwNjgwMjUuLjRiZTU2MmI4 ZmIgMTAwNjQ0DQotLS0gYS9saWJhdmNvZGVjL29wdXMuYw0KKysrIGIvbGli YXZjb2RlYy9vcHVzLmMNCkBAIC00MDMsMTYgKzQwMywxOCBAQCBhdl9jb2xk IGludCBmZl9vcHVzX3BhcnNlX2V4dHJhZGF0YShBVkNvZGVjQ29udGV4dCAq YXZjdHgsDQogICAgICAgICAgICAgaWYgKGNoYW5uZWxzID09IChhbWJpc29u aWNfb3JkZXIgKyAxKSAqIChhbWJpc29uaWNfb3JkZXIgKyAxKSkgew0KICAg ICAgICAgICAgICAgICBsYXlvdXQub3JkZXIgPSBBVl9DSEFOTkVMX09SREVS X0FNQklTT05JQzsNCiAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAg ICAgICAgICBBVkNoYW5uZWxDdXN0b20gKmN1c3RvbTsNCiAgICAgICAgICAg ICAgICAgbGF5b3V0Lm9yZGVyID0gQVZfQ0hBTk5FTF9PUkRFUl9DVVNUT007 DQotICAgICAgICAgICAgICAgIGxheW91dC51Lm1hcCA9IGF2X21hbGxvY3pf YXJyYXkoY2hhbm5lbHMsIHNpemVvZigqbGF5b3V0LnUubWFwKSk7DQotICAg ICAgICAgICAgICAgIGlmICghbGF5b3V0LnUubWFwKSB7DQorICAgICAgICAg ICAgICAgIGxheW91dC5jdXN0b20gPSBhdl9jaGFubmVsX2xheW91dF9jdXN0 b21fbmV3KGNoYW5uZWxzKTsNCisgICAgICAgICAgICAgICAgaWYgKCFsYXlv dXQuY3VzdG9tKSB7DQogICAgICAgICAgICAgICAgICAgICByZXQgPSBBVkVS Uk9SKEVOT01FTSk7DQogICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7 DQogICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgY3VzdG9t ID0gYXZfY2hhbm5lbF9sYXlvdXRfZ2V0X2N1c3RvbSgmbGF5b3V0KTsNCiAg ICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGNoYW5uZWxzIC0gMjsg aSsrKQ0KLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0LnUubWFwW2ldLmlk ID0gQVZfQ0hBTl9BTUJJU09OSUNfQkFTRSArIGk7DQotICAgICAgICAgICAg ICAgIGxheW91dC51Lm1hcFtjaGFubmVscyAtIDJdLmlkID0gQVZfQ0hBTl9G Uk9OVF9MRUZUOw0KLSAgICAgICAgICAgICAgICBsYXlvdXQudS5tYXBbY2hh bm5lbHMgLSAxXS5pZCA9IEFWX0NIQU5fRlJPTlRfUklHSFQ7DQorICAgICAg ICAgICAgICAgICAgICBjdXN0b21baV0uaWQgPSBBVl9DSEFOX0FNQklTT05J Q19CQVNFICsgaTsNCisgICAgICAgICAgICAgICAgY3VzdG9tW2NoYW5uZWxz IC0gMl0uaWQgPSBBVl9DSEFOX0ZST05UX0xFRlQ7DQorICAgICAgICAgICAg ICAgIGN1c3RvbVtjaGFubmVscyAtIDFdLmlkID0gQVZfQ0hBTl9GUk9OVF9S SUdIVDsNCiAgICAgICAgICAgICB9DQogICAgICAgICB9IGVsc2Ugew0KICAg ICAgICAgICAgIGxheW91dC5vcmRlciAgICAgICA9IEFWX0NIQU5ORUxfT1JE RVJfVU5TUEVDOw0KZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC9jaGFubmVsX2xh eW91dC5jIGIvbGliYXZ1dGlsL2NoYW5uZWxfbGF5b3V0LmMNCmluZGV4IGE1 MWFmOTVmY2YuLmY2NmY4ZDM2MjAgMTAwNjQ0DQotLS0gYS9saWJhdnV0aWwv Y2hhbm5lbF9sYXlvdXQuYw0KKysrIGIvbGliYXZ1dGlsL2NoYW5uZWxfbGF5 b3V0LmMNCkBAIC00NDUsNiArNDQ1LDcgQEAgaW50IGF2X2NoYW5uZWxfbGF5 b3V0X2Zyb21fc3RyaW5nKEFWQ2hhbm5lbExheW91dCAqY2hhbm5lbF9sYXlv dXQsDQogICAgICAgICBjaGFubmVsX2xheW91dC0+bmJfY2hhbm5lbHMgPSAo b3JkZXIgKyAxKSAqIChvcmRlciArIDEpOw0KIA0KICAgICAgICAgaWYgKCpl bmRwdHIpIHsNCisgICAgICAgICAgICBBVkNoYW5uZWxDdXN0b20gKmN1c3Rv bTsNCiAgICAgICAgICAgICBpbnQgcmV0ID0gYXZfY2hhbm5lbF9sYXlvdXRf ZnJvbV9zdHJpbmcoJmV4dHJhLCBlbmRwdHIgKyAxKTsNCiAgICAgICAgICAg ICBpZiAocmV0IDwgMCkNCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsN CkBAIC00NTUsMTkgKzQ1NiwxOCBAQCBpbnQgYXZfY2hhbm5lbF9sYXlvdXRf ZnJvbV9zdHJpbmcoQVZDaGFubmVsTGF5b3V0ICpjaGFubmVsX2xheW91dCwN CiAgICAgICAgICAgICB9DQogDQogICAgICAgICAgICAgY2hhbm5lbF9sYXlv dXQtPm9yZGVyID0gQVZfQ0hBTk5FTF9PUkRFUl9DVVNUT007DQotICAgICAg ICAgICAgY2hhbm5lbF9sYXlvdXQtPnUubWFwID0NCi0gICAgICAgICAgICAg ICAgYXZfbWFsbG9jel9hcnJheShjaGFubmVsX2xheW91dC0+bmJfY2hhbm5l bHMgKyBleHRyYS5uYl9jaGFubmVscywNCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNpemVvZigqY2hhbm5lbF9sYXlvdXQtPnUubWFwKSk7 DQotICAgICAgICAgICAgaWYgKCFjaGFubmVsX2xheW91dC0+dS5tYXApIHsN CisgICAgICAgICAgICBjaGFubmVsX2xheW91dC0+Y3VzdG9tID0gYXZfY2hh bm5lbF9sYXlvdXRfY3VzdG9tX25ldyhjaGFubmVsX2xheW91dC0+bmJfY2hh bm5lbHMgKyBleHRyYS5uYl9jaGFubmVscyk7DQorICAgICAgICAgICAgaWYg KCFjaGFubmVsX2xheW91dC0+Y3VzdG9tKSB7DQogICAgICAgICAgICAgICAg IGF2X2NoYW5uZWxfbGF5b3V0X3VuaW5pdCgmZXh0cmEpOw0KICAgICAgICAg ICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOw0KICAgICAgICAgICAg IH0NCiANCisgICAgICAgICAgICBjdXN0b20gPSBhdl9jaGFubmVsX2xheW91 dF9nZXRfY3VzdG9tKGNoYW5uZWxfbGF5b3V0KTsNCiAgICAgICAgICAgICBm b3IgKGkgPSAwOyBpIDwgY2hhbm5lbF9sYXlvdXQtPm5iX2NoYW5uZWxzOyBp KyspDQotICAgICAgICAgICAgICAgIGNoYW5uZWxfbGF5b3V0LT51Lm1hcFtp XS5pZCA9IEFWX0NIQU5fQU1CSVNPTklDX0JBU0UgKyBpOw0KKyAgICAgICAg ICAgICAgICBjdXN0b21baV0uaWQgPSBBVl9DSEFOX0FNQklTT05JQ19CQVNF ICsgaTsNCiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZXh0cmEubmJf Y2hhbm5lbHM7IGkrKykgew0KICAgICAgICAgICAgICAgICBlbnVtIEFWQ2hh bm5lbCBjaCA9IGF2X2NoYW5uZWxfbGF5b3V0X2NoYW5uZWxfZnJvbV9pbmRl eCgmZXh0cmEsIGkpOw0KLSAgICAgICAgICAgICAgICBjaGFubmVsX2xheW91 dC0+dS5tYXBbY2hhbm5lbF9sYXlvdXQtPm5iX2NoYW5uZWxzICsgaV0uaWQg PSBjaDsNCisgICAgICAgICAgICAgICAgY3VzdG9tW2NoYW5uZWxfbGF5b3V0 LT5uYl9jaGFubmVscyArIGldLmlkID0gY2g7DQogICAgICAgICAgICAgfQ0K ICAgICAgICAgICAgIGNoYW5uZWxfbGF5b3V0LT5uYl9jaGFubmVscyArPSBl eHRyYS5uYl9jaGFubmVsczsNCiAgICAgICAgICAgICBhdl9jaGFubmVsX2xh eW91dF91bmluaXQoJmV4dHJhKTsNCkBAIC00NzksMjIgKzQ3OSw0MyBAQCBp bnQgYXZfY2hhbm5lbF9sYXlvdXRfZnJvbV9zdHJpbmcoQVZDaGFubmVsTGF5 b3V0ICpjaGFubmVsX2xheW91dCwNCiAgICAgcmV0dXJuIEFWRVJST1JfSU5W QUxJRERBVEE7DQogfQ0KIA0KK3N0YXRpYyB2b2lkIGNoYW5uZWxfbGF5b3V0 X2N1c3RvbV9mcmVlKHZvaWQgKm9wYXF1ZSwgdWludDhfdCAqZGF0YSkNCit7 DQorICAgIEFWQ2hhbm5lbEN1c3RvbSAqZGF0YV9lbmQgPSBvcGFxdWU7DQor ICAgIGZvciAoQVZDaGFubmVsQ3VzdG9tICpjdXN0b20gPSAodm9pZCAqKWRh dGE7IGN1c3RvbSA8IGRhdGFfZW5kOyBjdXN0b20rKykNCisgICAgICAgIGF2 X2RpY3RfZnJlZSgmY3VzdG9tLT5tZXRhZGF0YSk7DQorICAgIGF2X2ZyZWUo ZGF0YSk7DQorfQ0KKw0KIHZvaWQgYXZfY2hhbm5lbF9sYXlvdXRfdW5pbml0 KEFWQ2hhbm5lbExheW91dCAqY2hhbm5lbF9sYXlvdXQpDQogew0KLSAgICBp ZiAoY2hhbm5lbF9sYXlvdXQtPm9yZGVyID09IEFWX0NIQU5ORUxfT1JERVJf Q1VTVE9NKQ0KLSAgICAgICAgYXZfZnJlZXAoJmNoYW5uZWxfbGF5b3V0LT51 Lm1hcCk7DQorICAgIGlmIChjaGFubmVsX2xheW91dC0+Y3VzdG9tKQ0KKyAg ICAgICAgYXZfYnVmZmVyX3VucmVmKCZjaGFubmVsX2xheW91dC0+Y3VzdG9t KTsNCiAgICAgbWVtc2V0KGNoYW5uZWxfbGF5b3V0LCAwLCBzaXplb2YoKmNo YW5uZWxfbGF5b3V0KSk7DQogfQ0KIA0KK0FWQnVmZmVyUmVmICphdl9jaGFu bmVsX2xheW91dF9jdXN0b21fbmV3KGludCBuYl9jaGFubmVscykNCit7DQor ICAgIEFWQnVmZmVyUmVmICpyZWY7DQorICAgIHVpbnQ4X3QgKmRhdGEgPSBh dl9jYWxsb2MobmJfY2hhbm5lbHMsIHNpemVvZihBVkNoYW5uZWxDdXN0b20p KTsNCisgICAgaWYgKCFkYXRhKQ0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQor ICAgIHJlZiA9IGF2X2J1ZmZlcl9jcmVhdGUoZGF0YSwgc2l6ZW9mKEFWQ2hh bm5lbEN1c3RvbSkgKiBuYl9jaGFubmVscywgY2hhbm5lbF9sYXlvdXRfY3Vz dG9tX2ZyZWUsIGRhdGEgKyBuYl9jaGFubmVscyAqIHNpemVvZihBVkNoYW5u ZWxDdXN0b20pLCAwKTsNCisgICAgaWYgKCFyZWYpIHsNCisgICAgICAgIGF2 X2ZyZWUoZGF0YSk7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0K KyAgICByZXR1cm4gcmVmOw0KK30NCisNCiBpbnQgYXZfY2hhbm5lbF9sYXlv dXRfY29weShBVkNoYW5uZWxMYXlvdXQgKmRzdCwgY29uc3QgQVZDaGFubmVs TGF5b3V0ICpzcmMpDQogew0KICAgICBhdl9jaGFubmVsX2xheW91dF91bmlu aXQoZHN0KTsNCiAgICAgKmRzdCA9ICpzcmM7DQotICAgIGlmIChzcmMtPm9y ZGVyID09IEFWX0NIQU5ORUxfT1JERVJfQ1VTVE9NKSB7DQotICAgICAgICBk c3QtPnUubWFwID0gYXZfbWFsbG9jKHNyYy0+bmJfY2hhbm5lbHMgKiBzaXpl b2YoKmRzdC0+dS5tYXApKTsNCi0gICAgICAgIGlmICghZHN0LT51Lm1hcCkN CisgICAgaWYgKHNyYy0+Y3VzdG9tKSB7DQorICAgICAgICBkc3QtPmN1c3Rv bSA9IGF2X2J1ZmZlcl9yZWYoc3JjLT5jdXN0b20pOw0KKyAgICAgICAgaWYg KCFkc3QtPmN1c3RvbSkNCiAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihF Tk9NRU0pOw0KLSAgICAgICAgbWVtY3B5KGRzdC0+dS5tYXAsIHNyYy0+dS5t YXAsIHNyYy0+bmJfY2hhbm5lbHMgKiBzaXplb2YoKnNyYy0+dS5tYXApKTsN CiAgICAgfQ0KICAgICByZXR1cm4gMDsNCiB9DQpAQCAtNTA4LDcgKzUyOSw3 IEBAIGludCBhdl9jaGFubmVsX2xheW91dF9jb3B5KEFWQ2hhbm5lbExheW91 dCAqZHN0LCBjb25zdCBBVkNoYW5uZWxMYXlvdXQgKnNyYykNCiAgKi8NCiBz dGF0aWMgaW50IHRyeV9kZXNjcmliZV9hbWJpc29uaWMoQVZCUHJpbnQgKmJw LCBjb25zdCBBVkNoYW5uZWxMYXlvdXQgKmNoYW5uZWxfbGF5b3V0KQ0KIHsN Ci0gICAgY29uc3QgQVZDaGFubmVsQ3VzdG9tICptYXAgPSBjaGFubmVsX2xh eW91dC0+dS5tYXA7DQorICAgIGNvbnN0IEFWQ2hhbm5lbEN1c3RvbSAqbWFw ID0gYXZfY2hhbm5lbF9sYXlvdXRfZ2V0X2N1c3RvbShjaGFubmVsX2xheW91 dCk7DQogICAgIGludCBpLCBoaWdoZXN0X2FtYmksIG9yZGVyOw0KIA0KICAg ICBoaWdoZXN0X2FtYmkgPSAtMTsNCkBAIC01NDAsMTYgKzU2MSwxOCBAQCBz dGF0aWMgaW50IHRyeV9kZXNjcmliZV9hbWJpc29uaWMoQVZCUHJpbnQgKmJw LCBjb25zdCBBVkNoYW5uZWxMYXlvdXQgKmNoYW5uZWxfbA0KICAgICAvKiBl eHRyYSBjaGFubmVscyBwcmVzZW50ICovDQogICAgIGlmIChoaWdoZXN0X2Ft YmkgPCBjaGFubmVsX2xheW91dC0+bmJfY2hhbm5lbHMgLSAxKSB7DQogICAg ICAgICBBVkNoYW5uZWxMYXlvdXQgZXh0cmE7DQorICAgICAgICBBVkNoYW5u ZWxDdXN0b20gKmN1c3RvbTsNCiAgICAgICAgIGNoYXIgYnVmWzEyOF07DQog DQogICAgICAgICBleHRyYS5vcmRlciAgICAgICA9IEFWX0NIQU5ORUxfT1JE RVJfQ1VTVE9NOw0KICAgICAgICAgZXh0cmEubmJfY2hhbm5lbHMgPSBjaGFu bmVsX2xheW91dC0+bmJfY2hhbm5lbHMgLSBoaWdoZXN0X2FtYmkgLSAxOw0K LSAgICAgICAgZXh0cmEudS5tYXAgICAgICAgPSBhdl9tYWxsb2N6X2FycmF5 KGV4dHJhLm5iX2NoYW5uZWxzLCBzaXplb2YoKmV4dHJhLnUubWFwKSk7DQot ICAgICAgICBpZiAoIWV4dHJhLnUubWFwKQ0KKyAgICAgICAgZXh0cmEuY3Vz dG9tICAgICAgPSBhdl9jaGFubmVsX2xheW91dF9jdXN0b21fbmV3KGV4dHJh Lm5iX2NoYW5uZWxzKTsNCisgICAgICAgIGlmICghZXh0cmEuY3VzdG9tKQ0K ICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7DQogDQorICAg ICAgICBjdXN0b20gPSBhdl9jaGFubmVsX2xheW91dF9nZXRfY3VzdG9tKCZl eHRyYSk7DQogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZXh0cmEubmJfY2hh bm5lbHM7IGkrKykNCi0gICAgICAgICAgICBleHRyYS51Lm1hcFtpXS5pZCA9 IG1hcFtoaWdoZXN0X2FtYmkgKyAxICsgaV0uaWQ7DQorICAgICAgICAgICAg Y3VzdG9tW2ldLmlkID0gbWFwW2hpZ2hlc3RfYW1iaSArIDEgKyBpXS5pZDsN CiANCiAgICAgICAgIGF2X2NoYW5uZWxfbGF5b3V0X2Rlc2NyaWJlKCZleHRy YSwgYnVmLCBzaXplb2YoYnVmKSk7DQogICAgICAgICBhdl9jaGFubmVsX2xh eW91dF91bmluaXQoJmV4dHJhKTsNCkBAIC02MTksNyArNjQyLDcgQEAgYXZf Y2hhbm5lbF9sYXlvdXRfY2hhbm5lbF9mcm9tX2luZGV4KGNvbnN0IEFWQ2hh bm5lbExheW91dCAqY2hhbm5lbF9sYXlvdXQsDQogDQogICAgIHN3aXRjaCAo Y2hhbm5lbF9sYXlvdXQtPm9yZGVyKSB7DQogICAgIGNhc2UgQVZfQ0hBTk5F TF9PUkRFUl9DVVNUT006DQotICAgICAgICByZXR1cm4gY2hhbm5lbF9sYXlv dXQtPnUubWFwW2lkeF0uaWQ7DQorICAgICAgICByZXR1cm4gYXZfY2hhbm5l bF9sYXlvdXRfZ2V0X2N1c3RvbShjaGFubmVsX2xheW91dClbaWR4XS5pZDsN CiAgICAgY2FzZSBBVl9DSEFOTkVMX09SREVSX0FNQklTT05JQzoNCiAgICAg ICAgIHJldHVybiBBVl9DSEFOX0FNQklTT05JQ19CQVNFICsgaWR4Ow0KICAg ICBjYXNlIEFWX0NIQU5ORUxfT1JERVJfTkFUSVZFOg0KQEAgLTY1OCwxMSAr NjgxLDEzIEBAIGludCBhdl9jaGFubmVsX2xheW91dF9pbmRleF9mcm9tX2No YW5uZWwoY29uc3QgQVZDaGFubmVsTGF5b3V0ICpjaGFubmVsX2xheW91dCwN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVu dW0gQVZDaGFubmVsIGNoYW5uZWwpDQogew0KICAgICBpbnQgaTsNCisgICAg QVZDaGFubmVsQ3VzdG9tICpjdXN0b207DQogDQogICAgIHN3aXRjaCAoY2hh bm5lbF9sYXlvdXQtPm9yZGVyKSB7DQogICAgIGNhc2UgQVZfQ0hBTk5FTF9P UkRFUl9DVVNUT006DQorICAgICAgICBjdXN0b20gPSBhdl9jaGFubmVsX2xh eW91dF9nZXRfY3VzdG9tKGNoYW5uZWxfbGF5b3V0KTsNCiAgICAgICAgIGZv ciAoaSA9IDA7IGkgPCBjaGFubmVsX2xheW91dC0+bmJfY2hhbm5lbHM7IGkr KykNCi0gICAgICAgICAgICBpZiAoY2hhbm5lbF9sYXlvdXQtPnUubWFwW2ld LmlkID09IGNoYW5uZWwpDQorICAgICAgICAgICAgaWYgKGN1c3RvbVtpXS5p ZCA9PSBjaGFubmVsKQ0KICAgICAgICAgICAgICAgICByZXR1cm4gaTsNCiAg ICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7DQogICAgIGNhc2UgQVZf Q0hBTk5FTF9PUkRFUl9BTUJJU09OSUM6DQpAQCAtNzA1LDcgKzczMCw3IEBA IGludCBhdl9jaGFubmVsX2xheW91dF9jaGVjayhjb25zdCBBVkNoYW5uZWxM YXlvdXQgKmNoYW5uZWxfbGF5b3V0KQ0KICAgICBjYXNlIEFWX0NIQU5ORUxf T1JERVJfTkFUSVZFOg0KICAgICAgICAgcmV0dXJuIGF2X3BvcGNvdW50NjQo Y2hhbm5lbF9sYXlvdXQtPnUubWFzaykgPT0gY2hhbm5lbF9sYXlvdXQtPm5i X2NoYW5uZWxzOw0KICAgICBjYXNlIEFWX0NIQU5ORUxfT1JERVJfQ1VTVE9N Og0KLSAgICAgICAgcmV0dXJuICEhY2hhbm5lbF9sYXlvdXQtPnUubWFwOw0K KyAgICAgICAgcmV0dXJuICEhY2hhbm5lbF9sYXlvdXQtPmN1c3RvbTsNCiAg ICAgY2FzZSBBVl9DSEFOTkVMX09SREVSX1VOU1BFQzoNCiAgICAgICAgIHJl dHVybiAxOw0KICAgICBkZWZhdWx0Og0KZGlmZiAtLWdpdCBhL2xpYmF2dXRp bC9jaGFubmVsX2xheW91dC5oIGIvbGliYXZ1dGlsL2NoYW5uZWxfbGF5b3V0 LmgNCmluZGV4IDdiNzdhNzRiNjEuLmVkNzY4OGExOTcgMTAwNjQ0DQotLS0g YS9saWJhdnV0aWwvY2hhbm5lbF9sYXlvdXQuaA0KKysrIGIvbGliYXZ1dGls L2NoYW5uZWxfbGF5b3V0LmgNCkBAIC0yNyw2ICsyNyw4IEBADQogDQogI2lu Y2x1ZGUgInZlcnNpb24uaCINCiAjaW5jbHVkZSAiYXR0cmlidXRlcy5oIg0K KyNpbmNsdWRlICJidWZmZXIuaCINCisjaW5jbHVkZSAiZGljdC5oIg0KIA0K IC8qKg0KICAqIEBmaWxlDQpAQCAtMjUzLDYgKzI1NSw3IEBAIGVudW0gQVZN YXRyaXhFbmNvZGluZyB7DQogICovDQogdHlwZWRlZiBzdHJ1Y3QgQVZDaGFu bmVsQ3VzdG9tIHsNCiAgICAgZW51bSBBVkNoYW5uZWwgaWQ7DQorICAgIEFW RGljdGlvbmFyeSAqbWV0YWRhdGE7DQogfSBBVkNoYW5uZWxDdXN0b207DQog DQogLyoqDQpAQCAtMzE3LDIyICszMjAsMTQgQEAgdHlwZWRlZiBzdHJ1Y3Qg QVZDaGFubmVsTGF5b3V0IHsNCiAgICAgICAgICAqIGlzIGVxdWFsIHRvIG5i X2NoYW5uZWxzLg0KICAgICAgICAgICovDQogICAgICAgICB1aW50NjRfdCBt YXNrOw0KLSAgICAgICAgLyoqDQotICAgICAgICAgKiBUaGlzIG1lbWJlciBt dXN0IGJlIHVzZWQgd2hlbiB0aGUgY2hhbm5lbCBvcmRlciBpcw0KLSAgICAg ICAgICogQVZfQ0hBTk5FTF9PUkRFUl9DVVNUT00uIEl0IGlzIGEgbmJfY2hh bm5lbHMtc2l6ZWQgYXJyYXksIHdpdGggZWFjaA0KLSAgICAgICAgICogZWxl bWVudCBzaWduYWxsaW5nIHRoZSBwcmVzZW5jZSBvZiB0aGUgQVZDaGFubmVs IHdpdGggdGhlDQotICAgICAgICAgKiBjb3JyZXNwb25kaW5nIHZhbHVlIGlu IG1hcFtpXS5pZC4NCi0gICAgICAgICAqDQotICAgICAgICAgKiBJLmUuIHdo ZW4gbWFwW2ldLmlkIGlzIGVxdWFsIHRvIEFWX0NIQU5fRk9PLCB0aGVuIEFW X0NIX0ZPTyBpcyB0aGUNCi0gICAgICAgICAqIGktdGggY2hhbm5lbCBpbiB0 aGUgYXVkaW8gZGF0YS4NCi0gICAgICAgICAqDQotICAgICAgICAgKiBXaGVu IG1hcFtpXS5pZCBpcyBpbiB0aGUgcmFuZ2UgYmV0d2VlbiBBVl9DSEFOX0FN QklTT05JQ19CQVNFIGFuZA0KLSAgICAgICAgICogQVZfQ0hBTl9BTUJJU09O SUNfRU5EIChpbmNsdXNpdmUpLCB0aGUgY2hhbm5lbCBjb250YWlucyBhbiBh bWJpc29uaWMNCi0gICAgICAgICAqIGNvbXBvbmVudCB3aXRoIEFDTiBpbmRl eCAoYXMgZGVmaW5lZCBhYm92ZSkNCi0gICAgICAgICAqIG4gPSBtYXBbaV0u aWQgLSBBVl9DSEFOX0FNQklTT05JQ19CQVNFLg0KLSAgICAgICAgICovDQot ICAgICAgICBBVkNoYW5uZWxDdXN0b20gKm1hcDsNCiAgICAgfSB1Ow0KKyAg ICAvKioNCisgICAgICogVGhlIEFWQnVmZmVyUmVmIHdoaWNoIHJlZmNvdW50 cyBhbiBhcnJheSBvZiBBVkNoYW5uZWxDdXN0b20gdmFsdWVzLg0KKyAgICAg KiBUaGlzIG1lbWJlciBtdXN0IGJlIHVzZWQgYW4gY2Fubm90IGJlIE5VTEwg d2hlbiBjaGFubmVsIG9yZGVyIGlzDQorICAgICAqIEFWX0NIQU5ORUxfT1JE RVJfQ1VTVE9NLiBPdGhlcndpc2UgaXQgaXMgb3B0aW9uYWwsIGNhbiBiZSB1 c2VkDQorICAgICAqIHRvIHN0b3JlIGFkZGl0aW9uYWwgY2hhbm5lbCBtZXRh ZGF0YS4NCisgICAgICovDQorICAgIEFWQnVmZmVyUmVmICpjdXN0b207DQog fSBBVkNoYW5uZWxMYXlvdXQ7DQogDQogI2RlZmluZSBBVl9DSEFOTkVMX0xB WU9VVF9NT05PIFwNCkBAIC0zOTYsNiArMzkxLDEzIEBAIHR5cGVkZWYgc3Ry dWN0IEFWQ2hhbm5lbExheW91dCB7DQogI2RlZmluZSBBVl9DSEFOTkVMX0xB WU9VVF9BTUJJU09OSUNfRklSU1RfT1JERVIgXA0KICAgICB7IC5vcmRlciA9 IEFWX0NIQU5ORUxfT1JERVJfQU1CSVNPTklDLCAubmJfY2hhbm5lbHMgPSA0 LCAudSA9IHsgLm1hc2sgPSAwIH19DQogDQorQVZCdWZmZXJSZWYgKmF2X2No YW5uZWxfbGF5b3V0X2N1c3RvbV9uZXcoaW50IG5iX2NoYW5uZWxzKTsNCisN CitzdGF0aWMgaW5saW5lIEFWQ2hhbm5lbEN1c3RvbSAqYXZfY2hhbm5lbF9s YXlvdXRfZ2V0X2N1c3RvbShjb25zdCBBVkNoYW5uZWxMYXlvdXQgKmxheW91 dCkNCit7DQorICAgIHJldHVybiAodm9pZCAqKWxheW91dC0+Y3VzdG9tLT5k YXRhOw0KK30NCisNCiAjaWYgRkZfQVBJX09MRF9DSEFOTkVMX0xBWU9VVA0K IC8qKg0KICAqIFJldHVybiBhIGNoYW5uZWwgbGF5b3V0IGlkIHRoYXQgbWF0 Y2hlcyBuYW1lLCBvciAwIGlmIG5vIG1hdGNoIGlzIGZvdW5kLg0KZGlmZiAt LWdpdCBhL2xpYmF2dXRpbC90ZXN0cy9jaGFubmVsX2xheW91dC5jIGIvbGli YXZ1dGlsL3Rlc3RzL2NoYW5uZWxfbGF5b3V0LmMNCmluZGV4IGU0YjQyYjE1 NzQuLmEyNWI0OTYwNjAgMTAwNjQ0DQotLS0gYS9saWJhdnV0aWwvdGVzdHMv Y2hhbm5lbF9sYXlvdXQuYw0KKysrIGIvbGliYXZ1dGlsL3Rlc3RzL2NoYW5u ZWxfbGF5b3V0LmMNCkBAIC0xNzcsMTIgKzE3NywxMiBAQCBpbnQgbWFpbih2 b2lkKQ0KIA0KICAgICBjdXN0b20ub3JkZXIgPSBBVl9DSEFOTkVMX09SREVS X0NVU1RPTTsNCiAgICAgY3VzdG9tLm5iX2NoYW5uZWxzID0gMzsNCi0gICAg Y3VzdG9tLnUubWFwID0gYXZfbWFsbG9jel9hcnJheSgzLCBzaXplb2YoKmN1 c3RvbS51Lm1hcCkpOw0KLSAgICBpZiAoIWN1c3RvbS51Lm1hcCkNCisgICAg Y3VzdG9tLmN1c3RvbSA9IGF2X2NoYW5uZWxfbGF5b3V0X2N1c3RvbV9uZXco Myk7DQorICAgIGlmICghY3VzdG9tLmN1c3RvbSkNCiAgICAgICAgIHJldHVy biAxOw0KLSAgICBjdXN0b20udS5tYXBbMF0uaWQgPSBBVl9DSEFOX0ZST05U X1JJR0hUOw0KLSAgICBjdXN0b20udS5tYXBbMV0uaWQgPSBBVl9DSEFOX0ZS T05UX0xFRlQ7DQotICAgIGN1c3RvbS51Lm1hcFsyXS5pZCA9IDYzOw0KKyAg ICBhdl9jaGFubmVsX2xheW91dF9nZXRfY3VzdG9tKCZjdXN0b20pWzBdLmlk ID0gQVZfQ0hBTl9GUk9OVF9SSUdIVDsNCisgICAgYXZfY2hhbm5lbF9sYXlv dXRfZ2V0X2N1c3RvbSgmY3VzdG9tKVsxXS5pZCA9IEFWX0NIQU5fRlJPTlRf TEVGVDsNCisgICAgYXZfY2hhbm5lbF9sYXlvdXRfZ2V0X2N1c3RvbSgmY3Vz dG9tKVsyXS5pZCA9IDYzOw0KICAgICBidWZbMF0gPSAwOw0KICAgICBwcmlu dGYoIlxuVGVzdGluZyBhdl9jaGFubmVsX2xheW91dF9kZXNjcmliZVxuIik7 DQogICAgIGF2X2NoYW5uZWxfbGF5b3V0X2Rlc2NyaWJlKCZjdXN0b20sIGJ1 Ziwgc2l6ZW9mKGJ1ZikpOw0K --467242196-341631300-1639601374=:14284 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". --467242196-341631300-1639601374=:14284--