From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 5C2824ADB0 for ; Fri, 18 Jul 2025 18:00:12 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id E45C868DE3B; Fri, 18 Jul 2025 21:00:09 +0300 (EEST) Received: from mail-pl1-f181.google.com (mail-pl1-f181.google.com [209.85.214.181]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 3701368DD7F for ; Fri, 18 Jul 2025 21:00:07 +0300 (EEST) Received: by mail-pl1-f181.google.com with SMTP id d9443c01a7336-235d6de331fso27117235ad.3 for ; Fri, 18 Jul 2025 11:00:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=erj.cc; s=google; t=1752861605; x=1753466405; darn=ffmpeg.org; h=content-transfer-encoding:in-reply-to:autocrypt:from :content-language:references:to:subject:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=vwf5zG/BzblOvPIeqT5od9qwoIS2VfnKqm9qhKEkgY0=; b=j2a/XRQ9n/f5O0MRtnbS0puZRdluL7AD0Repm1JHfaDJ6UzttE5LBAXjtIUijjdXYY LQSMFxChVswSfLWlRjlHZj4V9Vgfc8CYrqIthoyk58FtT/2lZnswJwKktf0CNCWHw/YE k19CdTW+tyXbRPjNU/Dh45F9nZd7/gxOiq+OiucAgUEqS/uQxaNtWDVdAZQL42YKS3xn F5t0q+QtZtQDAVNTBUrhkbyuu3t7PlElhsKkKa8Oo4msXELUPMI0PoG1TidXIhcAGt3Z pNgvsDlpOwKqCXA4Q2UPl1lpiiXJwPOWFlx/U61wurUIO4Tr3b/EWboAsPZtCvrvs/Pk Nd1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752861605; x=1753466405; h=content-transfer-encoding:in-reply-to:autocrypt:from :content-language:references:to:subject:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=vwf5zG/BzblOvPIeqT5od9qwoIS2VfnKqm9qhKEkgY0=; b=uBMZ9pUDAWARpiR8xoV2QUDPuczuN83HltlAfHt1SuSQxfdXLKTERZLpkX3/Ovd5/e kCBKoDsoCi3rakHTbXp8J+uoWfO5VKcAHnx9+QuiuMDSoXSNxNuVJnyBSzIHWLppO6k4 h9ezN+KsHYUe9b6MAyoc9lWeUIPqZvAuPM+K7Adrxa/n9Er2aLLj3tKVgvpagc4EU8Cj jTvSHRA12PFHA7ojHYoMk+vWxLd/PBYnfgzlPnVXrBHGzWzLPd93kkFqPAP3xK8++ZGd QI8k6AtGbDeoaVsk6s4uxfHzyU2ECj0gHoW1xFUlsjWDKRhP9l/P1nV2Xeg55qdVZfRa DFdg== X-Gm-Message-State: AOJu0Yx7qeZ/4uVZ/xFSbwJ6FF/Zj3PkmninXkGfuQb8LwIFdKxriOup KxYvZ6Q3tkLlp1bhIC3fSKATbEWDEkyxWlUj0WSoNlZvf5jiD1ReSXB4ZsFYsi7kwmfxgp/BJpZ K5XkVxHg= X-Gm-Gg: ASbGncszIRc9x4GzeGQW/lRUtHVNEf/F2+W9lOv552lujG0vAVOa1TAZYYxOu3SfzEw R7Xp7SxAvsPiQiqpd3brNyPpq+sjlM1OGqBCJnFIamnLK8I18RLENEdZO3ZCg7sakBlgycfEhPp 3PzKIeA3MMp9WESLTZLg+kP5419rmPcviMWl4rSwevKeHE3SLbA3ebUqBzNhrzefKAl9ha+fIXA 19TcUaF+TEm4oO8O6HV9pM0IicZHdOKiOzb4d6bA6/TtQeRIfyfizyTs2i5eyyvvH0x48La6ZiI vEfZGrzbvPeEzTmOavFvkNdxHCAz/57NWyRYAstV4IP6tNHUVdhCNi8AgQ8H2WSITjTTBoLxEuh HEuYO6+8AC8AWRr+1DrSxNcI= X-Google-Smtp-Source: AGHT+IEVhz/B7SYGn6bvmVScrFFpMLStiXZvCWiAOqxQeWzkmSfPHKAx3smJQ9K2pbHiaLas7s898w== X-Received: by 2002:a17:902:d488:b0:234:b743:c7a4 with SMTP id d9443c01a7336-23e257647c6mr191658425ad.38.1752861604879; Fri, 18 Jul 2025 11:00:04 -0700 (PDT) Received: from [192.168.3.2] ([50.53.68.99]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-23e3b5e22e5sm16462485ad.38.2025.07.18.11.00.04 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 18 Jul 2025 11:00:04 -0700 (PDT) Message-ID: <02e99572-5d52-468e-a874-f5d8f709ad95@erj.cc> Date: Fri, 18 Jul 2025 11:00:03 -0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: ffmpeg-devel@ffmpeg.org References: <20250718005518.1462-1-jamrial@gmail.com> <705b6cc1-6ea5-4550-a1e7-366e69a6ab84@lynne.ee> Content-Language: en-US From: Eric Joyner Autocrypt: addr=erj@erj.cc; keydata= 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 In-Reply-To: <705b6cc1-6ea5-4550-a1e7-366e69a6ab84@lynne.ee> Subject: Re: [FFmpeg-devel] [PATCH] avformat/mov: don't assume iloc and iinf entries for each item_id will be in the same order 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: T24gNy8xOC8yMDI1IDEwOjQ4IEFNLCBMeW5uZSB3cm90ZToKPiBPbiAxOC8wNy8yMDI1IDA5OjU1 LCBKYW1lcyBBbG1lciB3cm90ZToKPj4gTm90aGluZyBmb3JiaWRzIHRoZW0gdG8gYmUgaW4gYW55 IG9yZGVyIHRoZSBtdXhlciBkZXNpcmVzLgo+Pgo+PiBGaXhlcyBkZW11eGluZyBoZWlmIHNhbXBs ZXMgZ2VuZXJhdGVkIGJ5IFMxSUkuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IEphbWVzIEFsbWVyIDxq YW1yaWFsQGdtYWlsLmNvbT4KPj4gLS0tCj4+IMKgIGxpYmF2Zm9ybWF0L21vdi5jIHwgNDEgKysr KysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KPj4gwqAgMSBmaWxlIGNoYW5n ZWQsIDI2IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEv bGliYXZmb3JtYXQvbW92LmMgYi9saWJhdmZvcm1hdC9tb3YuYwo+PiBpbmRleCA4MzZiZGZiNGUx Li5jY2FhOTg4ZTRiIDEwMDY0NAo+PiAtLS0gYS9saWJhdmZvcm1hdC9tb3YuYwo+PiArKysgYi9s aWJhdmZvcm1hdC9tb3YuYwo+PiBAQCAtODczOSw3ICs4NzM5LDcgQEAgc3RhdGljIGludCBtb3Zf cmVhZF9pbG9jKE1PVkNvbnRleHQgKmMsIAo+PiBBVklPQ29udGV4dCAqcGIsIE1PVkF0b20gYXRv bSkKPj4gwqAgwqDCoMKgwqDCoCBhdl9sb2coYy0+ZmMsIEFWX0xPR19UUkFDRSwgImlsb2M6IGl0 ZW1fY291bnQgJWRcbiIsIAo+PiBpdGVtX2NvdW50KTsKPj4gwqDCoMKgwqDCoCBmb3IgKGludCBp ID0gMDsgaSA8IGl0ZW1fY291bnQ7IGkrKykgewo+PiAtwqDCoMKgwqDCoMKgwqAgSEVJRkl0ZW0g Kml0ZW0gPSBjLT5oZWlmX2l0ZW1baV07Cj4+ICvCoMKgwqDCoMKgwqDCoCBIRUlGSXRlbSAqaXRl bSA9IE5VTEw7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgaXRlbV9pZCA9ICh2ZXJzaW9uIDwg MikgPyBhdmlvX3JiMTYocGIpIDogYXZpb19yYjMyKHBiKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKg IGludCBvZmZzZXRfdHlwZSA9ICh2ZXJzaW9uID4gMCkgPyBhdmlvX3JiMTYocGIpICYgMHhmIDog MDsKPj4gwqAgQEAgLTg3NjUsOCArODc2NSwxNCBAQCBzdGF0aWMgaW50IG1vdl9yZWFkX2lsb2Mo TU9WQ29udGV4dCAqYywgCj4+IEFWSU9Db250ZXh0ICpwYiwgTU9WQXRvbSBhdG9tKQo+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBiYXNlX29mZnNldCA+IElOVDY0X01BWCAtIGV4dGVudF9v ZmZzZXQpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBBVkVSUk9SX0lOVkFM SUREQVRBOwo+PiDCoCAtwqDCoMKgwqDCoMKgwqAgaWYgKCFpdGVtKQo+PiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBpdGVtID0gYy0+aGVpZl9pdGVtW2ldID0gYXZfbWFsbG9jeihzaXplb2YoKml0 ZW0pKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGZvciAoaW50IGogPSAwOyBqIDwgYy0+bmJfaGVpZl9p dGVtOyBqKyspIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaXRlbSA9IGMtPmhlaWZfaXRl bVtqXTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCFpdGVtKQo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGl0ZW0gPSBjLT5oZWlmX2l0ZW1bal0gPSBhdl9tYWxsb2N6 KHNpemVvZigqaXRlbSkpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbHNlIGlmIChpdGVt LT5pdGVtX2lkICE9IGl0ZW1faWQpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Y29udGludWU7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiArwqDCoMKgwqDC oMKgwqAgfQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCFpdGVtKQo+PiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwo+PiDCoCBAQCAtODc3NiwxOCAr ODc4MiwxOCBAQCBzdGF0aWMgaW50IG1vdl9yZWFkX2lsb2MoTU9WQ29udGV4dCAqYywgCj4+IEFW SU9Db250ZXh0ICpwYiwgTU9WQXRvbSBhdG9tKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBpdGVtLT5pc19pZGF0X3JlbGF0aXZlID0gMTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGl0ZW0t PmV4dGVudF9sZW5ndGggPSBleHRlbnRfbGVuZ3RoOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaXRl bS0+ZXh0ZW50X29mZnNldCA9IGJhc2Vfb2Zmc2V0ICsgZXh0ZW50X29mZnNldDsKPj4gLcKgwqDC oMKgwqDCoMKgIGF2X2xvZyhjLT5mYywgQVZfTE9HX1RSQUNFLCAiaWxvYzogaXRlbV9pZHggJWQs IG9mZnNldF90eXBlIAo+PiAlZCwgIgo+PiArwqDCoMKgwqDCoMKgwqAgYXZfbG9nKGMtPmZjLCBB Vl9MT0dfVFJBQ0UsICJpbG9jOiBpdGVtX2lkeCAlZCwgCj4+IGl0ZW0tPml0ZW1faWQgJWQsIG9m ZnNldF90eXBlICVkLCAiCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJleHRlbnRfb2Zmc2V0ICUiUFJJ ZDY0IiwgCj4+IGV4dGVudF9sZW5ndGggJSJQUklkNjQiXG4iLAo+PiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBpLCBvZmZzZXRfdHlwZSwgaXRlbS0+ZXh0ZW50X29mZnNldCwgCj4+IGl0 ZW0tPmV4dGVudF9sZW5ndGgpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpLCBp dGVtLT5pdGVtX2lkLCBvZmZzZXRfdHlwZSwgaXRlbS0+ZXh0ZW50X29mZnNldCwgCj4+IGl0ZW0t PmV4dGVudF9sZW5ndGgpOwo+PiDCoMKgwqDCoMKgIH0KPj4gwqAgwqDCoMKgwqDCoCBjLT5mb3Vu ZF9pbG9jID0gMTsKPj4gwqDCoMKgwqDCoCByZXR1cm4gYXRvbS5zaXplOwo+PiDCoCB9Cj4+IMKg IC1zdGF0aWMgaW50IG1vdl9yZWFkX2luZmUoTU9WQ29udGV4dCAqYywgQVZJT0NvbnRleHQgKnBi LCBNT1ZBdG9tIAo+PiBhdG9tLCBpbnQgaWR4KQo+PiArc3RhdGljIGludCBtb3ZfcmVhZF9pbmZl KE1PVkNvbnRleHQgKmMsIEFWSU9Db250ZXh0ICpwYiwgTU9WQXRvbSBhdG9tKQo+PiDCoCB7Cj4+ IC3CoMKgwqAgSEVJRkl0ZW0gKml0ZW07Cj4+ICvCoMKgwqAgSEVJRkl0ZW0gKml0ZW0gPSBOVUxM Owo+PiDCoMKgwqDCoMKgIEFWQlByaW50IGl0ZW1fbmFtZTsKPj4gwqDCoMKgwqDCoCBpbnQ2NF90 IHNpemUgPSBhdG9tLnNpemU7Cj4+IMKgwqDCoMKgwqAgdWludDMyX3QgaXRlbV90eXBlOwo+PiBA QCAtODgyNywyMiArODgzMywyNyBAQCBzdGF0aWMgaW50IG1vdl9yZWFkX2luZmUoTU9WQ29udGV4 dCAqYywgCj4+IEFWSU9Db250ZXh0ICpwYiwgTU9WQXRvbSBhdG9tLCBpbnQgaWR4KQo+PiDCoMKg wqDCoMKgIGlmIChzaXplID4gMCkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGF2aW9fc2tpcChwYiwg c2l6ZSk7Cj4+IMKgIC3CoMKgwqAgaXRlbSA9IGMtPmhlaWZfaXRlbVtpZHhdOwo+PiAtwqDCoMKg IGlmICghaXRlbSkKPj4gLcKgwqDCoMKgwqDCoMKgIGl0ZW0gPSBjLT5oZWlmX2l0ZW1baWR4XSA9 IGF2X21hbGxvY3ooc2l6ZW9mKCppdGVtKSk7Cj4+ICvCoMKgwqAgZm9yIChpbnQgaSA9IDA7IGkg PCBjLT5uYl9oZWlmX2l0ZW07IGkrKykgewo+PiArwqDCoMKgwqDCoMKgwqAgaXRlbSA9IGMtPmhl aWZfaXRlbVtpXTsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmICghaXRlbSkKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgaXRlbSA9IGMtPmhlaWZfaXRlbVtpXSA9IGF2X21hbGxvY3ooc2l6ZW9mKCpp dGVtKSk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBlbHNlIGlmIChpdGVtLT5pdGVtX2lkICE9IGl0ZW1f aWQpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOwo+PiArwqDCoMKgwqDCoMKg wqAgYnJlYWs7Cj4+ICvCoMKgwqAgfQo+PiDCoMKgwqDCoMKgIGlmICghaXRlbSkKPj4gwqDCoMKg wqDCoMKgwqDCoMKgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7Cj4+IMKgIMKgwqDCoMKgwqAgaWYg KHJldCkKPj4gLcKgwqDCoMKgwqDCoMKgIGF2X2JwcmludF9maW5hbGl6ZSgmaXRlbV9uYW1lLCAm Yy0+aGVpZl9pdGVtW2lkeF0tPm5hbWUpOwo+PiAtwqDCoMKgIGMtPmhlaWZfaXRlbVtpZHhdLT5p dGVtX2lkID0gaXRlbV9pZDsKPj4gLcKgwqDCoCBjLT5oZWlmX2l0ZW1baWR4XS0+dHlwZcKgwqDC oCA9IGl0ZW1fdHlwZTsKPj4gK8KgwqDCoMKgwqDCoMKgIGF2X2JwcmludF9maW5hbGl6ZSgmaXRl bV9uYW1lLCAmaXRlbS0+bmFtZSk7Cj4+ICvCoMKgwqAgaXRlbS0+aXRlbV9pZCA9IGl0ZW1faWQ7 Cj4+ICvCoMKgwqAgaXRlbS0+dHlwZcKgwqDCoCA9IGl0ZW1fdHlwZTsKPj4gwqAgwqDCoMKgwqDC oCBzd2l0Y2ggKGl0ZW1fdHlwZSkgewo+PiDCoMKgwqDCoMKgIGNhc2UgTUtUQUcoJ2EnLCd2Jywn MCcsJzEnKToKPj4gwqDCoMKgwqDCoCBjYXNlIE1LVEFHKCdqJywncCcsJ2UnLCdnJyk6Cj4+IMKg wqDCoMKgwqAgY2FzZSBNS1RBRygnaCcsJ3YnLCdjJywnMScpOgo+PiAtwqDCoMKgwqDCoMKgwqAg cmV0ID0gaGVpZl9hZGRfc3RyZWFtKGMsIGMtPmhlaWZfaXRlbVtpZHhdKTsKPj4gK8KgwqDCoMKg wqDCoMKgIHJldCA9IGhlaWZfYWRkX3N0cmVhbShjLCBpdGVtKTsKPj4gwqDCoMKgwqDCoMKgwqDC oMKgIGlmIChyZXQgPCAwKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0 Owo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+IEBAIC04ODg0LDcgKzg4OTUsNyBAQCBz dGF0aWMgaW50IG1vdl9yZWFkX2lpbmYoTU9WQ29udGV4dCAqYywgCj4+IEFWSU9Db250ZXh0ICpw YiwgTU9WQXRvbSBhdG9tKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSBBVkVS Uk9SX0lOVkFMSUREQVRBOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGZhaWw7 Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+IC3CoMKgwqDCoMKgwqDCoCByZXQgPSBtb3ZfcmVh ZF9pbmZlKGMsIHBiLCBpbmZlLCBpKTsKPj4gK8KgwqDCoMKgwqDCoMKgIHJldCA9IG1vdl9yZWFk X2luZmUoYywgcGIsIGluZmUpOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHJldCA8IDApCj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZmFpbDsKPj4gwqDCoMKgwqDCoMKgwqDC oMKgIGlmICghcmV0KQo+Cj4gVGhhbmtzLCB3b3JrcyBwZXJmZWN0bHkgd2hlbiBjb21iaW5lZCB3 aXRoIHRoZSBvdGhlciAyIHBhdGNoZXMsIGFsbCAKPiB0aHVtYm5haWxzIGFuZCBzdHJlYW1zIGFy ZSBkZW11eGVkIHByb3Blcmx5LiAKCkNvb2wsIEknbSBnbGFkIHRoYXQgZ290IGZpeGVkIQoKLSBF cmljCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1w ZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZt cGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZp c2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcg d2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==