Resampler set_rate improvements
Wim Taymans <[email protected]> Thu, 4 Feb 2016 13:17:18 +0100
| Newsgroups | gmane.comp.audio.compression.speex.devel |
|---|---|
| Message-ID | <CAEza8_4q4Ak_nr5JyEPNddt1vPD3FJp-WnfHt5eSTKPaeQCfjg@mail.gmail.com> |
--001a1147127c403b4a052af0b76d Content-Type: multipart/alternative; boundary=001a1147127c403b46052af0b76b --001a1147127c403b46052af0b76b Content-Type: text/plain; charset=UTF-8 Hi, These patches improve the resampler set_rate function. The first 2 patches do some cleanups in the GCD calculation and avoid an overflow when calculating the new phase. This patch could probably be simplified if we allowed 64bits operations in speexdsp. The 3rd patch avoid rounding errors in the phase calculation. The problem is that the new rate is calculated with the reduced rate, which can cause large rounding errors and audible artifacts. Patch 4 demonstrates the effect of patch 3. Compare the resampler output before and after patch 3. Patch 5 attempts to strike a balance between accuracy and memory usage by allowing a small rounding error in the phase. Let me know what you think, Wim --001a1147127c403b46052af0b76b Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div>Hi,</div><div><br></div><div>These patches improve th= e resampler set_rate function.</div><div><br></div><div>The first 2 patches= do some cleanups in the GCD calculation and avoid an</div><div>overflow wh= en calculating the new phase. This patch could probably be simplified</div>= <div>if we allowed 64bits operations in speexdsp.</div><div><br></div><div>= The 3rd patch avoid rounding errors in the phase calculation. The problem</= div><div>is that the new rate is calculated with the reduced rate, which ca= n cause</div><div>large rounding errors and audible artifacts.</div><div><b= r></div><div>Patch 4 demonstrates the effect of patch 3. Compare the resamp= ler output</div><div>before and after patch 3.</div><div><br></div><div>Pat= ch 5 attempts to strike a balance between accuracy and memory usage by</div= ><div>allowing a small rounding error in the phase.</div><div><br></div><di= v>Let me know what you think,</div><div>Wim</div><div><br></div></div> --001a1147127c403b46052af0b76b-- --001a1147127c403b4a052af0b76d Content-Type: text/x-patch; charset=US-ASCII; name="0001-resample-Improve-GCD-calculation.patch" Content-Disposition: attachment; filename="0001-resample-Improve-GCD-calculation.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ik887utb0 RnJvbSAwNzJhMzlmZmFkNGJlYTA1YTc0MGQ4NzM0NzgwYzAxZmZlYjk1NTg5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBXaW0gVGF5bWFucyA8d3RheW1hbnNAcmVkaGF0LmNvbT4KRGF0 ZTogV2VkLCAzIEZlYiAyMDE2IDE1OjAxOjM1ICswMTAwClN1YmplY3Q6IFtQQVRDSCAxLzVdIHJl c2FtcGxlOiBJbXByb3ZlIEdDRCBjYWxjdWxhdGlvbgoKVXNlIEV1Y2xpZHMgYWxnb3JpdGhtIHRv IGNhbGN1bGF0ZSB0aGUgZ3JlYXRlc3QgY29tbW9uIGRpdmlzb3IgdG8Kc2ltcGxpZnkgdGhlIHJl c2FtcGxlIHJhdGlvIGZyYWN0aW9uIGluc3RlYWQgb2YgdGhlIHNsb3cgaXRlcmF0aXZlCm1ldGhv ZC4KLS0tCiBsaWJzcGVleGRzcC9yZXNhbXBsZS5jIHwgMjYgKysrKysrKysrKysrKysrKystLS0t LS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2xpYnNwZWV4ZHNwL3Jlc2FtcGxlLmMgYi9saWJzcGVleGRzcC9yZXNhbXBs ZS5jCmluZGV4IDRlNDdkNjcuLmU2OWIzMDkgMTAwNjQ0Ci0tLSBhL2xpYnNwZWV4ZHNwL3Jlc2Ft cGxlLmMKKysrIGIvbGlic3BlZXhkc3AvcmVzYW1wbGUuYwpAQCAtMTA2OCw2ICsxMDY4LDE4IEBA IEVYUE9SVCB2b2lkIHNwZWV4X3Jlc2FtcGxlcl9nZXRfcmF0ZShTcGVleFJlc2FtcGxlclN0YXRl ICpzdCwgc3B4X3VpbnQzMl90ICppbl9yCiAgICAqb3V0X3JhdGUgPSBzdC0+b3V0X3JhdGU7CiB9 CiAKK3N0YXRpYyBpbmxpbmUgc3B4X3VpbnQzMl90IF9nY2Qoc3B4X3VpbnQzMl90IGEsIHNweF91 aW50MzJfdCBiKQoreworICAgd2hpbGUgKGIgIT0gMCkKKyAgIHsKKyAgICAgIHNweF91aW50MzJf dCB0ZW1wID0gYTsKKworICAgICAgYSA9IGI7CisgICAgICBiID0gdGVtcCAlIGI7CisgICB9Cisg ICByZXR1cm4gYTsKK30KKwogRVhQT1JUIGludCBzcGVleF9yZXNhbXBsZXJfc2V0X3JhdGVfZnJh YyhTcGVleFJlc2FtcGxlclN0YXRlICpzdCwgc3B4X3VpbnQzMl90IHJhdGlvX251bSwgc3B4X3Vp bnQzMl90IHJhdGlvX2Rlbiwgc3B4X3VpbnQzMl90IGluX3JhdGUsIHNweF91aW50MzJfdCBvdXRf cmF0ZSkKIHsKICAgIHNweF91aW50MzJfdCBmYWN0OwpAQCAtMTA4MSwxNSArMTA5MywxMSBAQCBF WFBPUlQgaW50IHNwZWV4X3Jlc2FtcGxlcl9zZXRfcmF0ZV9mcmFjKFNwZWV4UmVzYW1wbGVyU3Rh dGUgKnN0LCBzcHhfdWludDMyX3QgcgogICAgc3QtPm91dF9yYXRlID0gb3V0X3JhdGU7CiAgICBz dC0+bnVtX3JhdGUgPSByYXRpb19udW07CiAgICBzdC0+ZGVuX3JhdGUgPSByYXRpb19kZW47Ci0g ICAvKiBGSVhNRTogVGhpcyBpcyB0ZXJyaWJseSBpbmVmZmljaWVudCwgYnV0IHdobyBjYXJlcyAo YXQgbGVhc3QgZm9yIG5vdyk/ICovCi0gICBmb3IgKGZhY3Q9MjtmYWN0PD1JTUlOKHN0LT5udW1f cmF0ZSwgc3QtPmRlbl9yYXRlKTtmYWN0KyspCi0gICB7Ci0gICAgICB3aGlsZSAoKHN0LT5udW1f cmF0ZSAlIGZhY3QgPT0gMCkgJiYgKHN0LT5kZW5fcmF0ZSAlIGZhY3QgPT0gMCkpCi0gICAgICB7 Ci0gICAgICAgICBzdC0+bnVtX3JhdGUgLz0gZmFjdDsKLSAgICAgICAgIHN0LT5kZW5fcmF0ZSAv PSBmYWN0OwotICAgICAgfQotICAgfQorCisgICBmYWN0ID0gX2djZCAoc3QtPm51bV9yYXRlLCBz dC0+ZGVuX3JhdGUpOworCisgICBzdC0+bnVtX3JhdGUgLz0gZmFjdDsKKyAgIHN0LT5kZW5fcmF0 ZSAvPSBmYWN0OwogCiAgICBpZiAob2xkX2RlbiA+IDApCiAgICB7Ci0tIAoyLjUuMAoK --001a1147127c403b4a052af0b76d Content-Type: text/x-patch; charset=US-ASCII; name="0002-resample-avoid-overflow-in-phase-calculation.patch" Content-Disposition: attachment; filename="0002-resample-avoid-overflow-in-phase-calculation.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ik887utm1 RnJvbSBjMzUwYTNiZGNhNzRmNmViYWFlOGVhNTMwZDlkMDFjOTE4NGI2NDlkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBXaW0gVGF5bWFucyA8d3RheW1hbnNAcmVkaGF0LmNvbT4KRGF0 ZTogVGh1LCA0IEZlYiAyMDE2IDEwOjQ5OjQ5ICswMTAwClN1YmplY3Q6IFtQQVRDSCAyLzVdIHJl c2FtcGxlOiBhdm9pZCBvdmVyZmxvdyBpbiBwaGFzZSBjYWxjdWxhdGlvbgoKTWFrZSBzdXJlIHdl IGRvbid0IG92ZXJmbG93IHdoZW4gY2FsY3VsYXRpbmcgdGhlIHBoYXNlIGZvciB0aGUgbmV3CnNh bXBsZSByYXRlLgotLS0KIGxpYnNwZWV4ZHNwL3Jlc2FtcGxlLmMgfCAzMiArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDMxIGluc2VydGlvbnMoKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9saWJzcGVleGRzcC9yZXNhbXBsZS5jIGIvbGlic3Bl ZXhkc3AvcmVzYW1wbGUuYwppbmRleCBlNjliMzA5Li4zNzNkNzEzIDEwMDY0NAotLS0gYS9saWJz cGVleGRzcC9yZXNhbXBsZS5jCisrKyBiL2xpYnNwZWV4ZHNwL3Jlc2FtcGxlLmMKQEAgLTEwODAs NiArMTA4MCwzNiBAQCBzdGF0aWMgaW5saW5lIHNweF91aW50MzJfdCBfZ2NkKHNweF91aW50MzJf dCBhLCBzcHhfdWludDMyX3QgYikKICAgIHJldHVybiBhOwogfQogCitzdGF0aWMgc3B4X3VpbnQz Ml90IF9tdWxkaXYoc3B4X3VpbnQzMl90IGEsIHNweF91aW50MzJfdCBiLCBzcHhfdWludDMyX3Qg YykKK3sKKyAgIHNweF91aW50MzJfdCBxID0gMCwgciA9IDA7CisgICBzcHhfdWludDMyX3QgcW4g PSBiIC8gYzsKKyAgIHNweF91aW50MzJfdCBybiA9IGIgJSBjOworCisgICB3aGlsZShhKQorICAg eworICAgICAgaWYgKGEgJiAxKQorICAgICAgeworICAgICAgICAgcSArPSBxbjsKKyAgICAgICAg IHIgKz0gcm47CisgICAgICAgICBpZiAociA+PSBjKQorICAgICAgICAgeworICAgICAgICAgICAg IHErKzsKKyAgICAgICAgICAgICByIC09IGM7CisgICAgICAgICB9CisgICAgICB9CisgICAgICBh ICA+Pj0gMTsKKyAgICAgIHFuIDw8PSAxOworICAgICAgcm4gPDw9IDE7CisgICAgICBpZiAocm4g Pj0gYykKKyAgICAgIHsKKyAgICAgICAgIHFuKys7CisgICAgICAgICBybiAtPSBjOworICAgICAg fQorICAgfQorICAgcmV0dXJuIHE7Cit9CisKIEVYUE9SVCBpbnQgc3BlZXhfcmVzYW1wbGVyX3Nl dF9yYXRlX2ZyYWMoU3BlZXhSZXNhbXBsZXJTdGF0ZSAqc3QsIHNweF91aW50MzJfdCByYXRpb19u dW0sIHNweF91aW50MzJfdCByYXRpb19kZW4sIHNweF91aW50MzJfdCBpbl9yYXRlLCBzcHhfdWlu dDMyX3Qgb3V0X3JhdGUpCiB7CiAgICBzcHhfdWludDMyX3QgZmFjdDsKQEAgLTExMDMsNyArMTEz Myw3IEBAIEVYUE9SVCBpbnQgc3BlZXhfcmVzYW1wbGVyX3NldF9yYXRlX2ZyYWMoU3BlZXhSZXNh bXBsZXJTdGF0ZSAqc3QsIHNweF91aW50MzJfdCByCiAgICB7CiAgICAgICBmb3IgKGk9MDtpPHN0 LT5uYl9jaGFubmVscztpKyspCiAgICAgICB7Ci0gICAgICAgICBzdC0+c2FtcF9mcmFjX251bVtp XT1zdC0+c2FtcF9mcmFjX251bVtpXSpzdC0+ZGVuX3JhdGUvb2xkX2RlbjsKKyAgICAgICAgIHN0 LT5zYW1wX2ZyYWNfbnVtW2ldPSBfbXVsZGl2KHN0LT5zYW1wX2ZyYWNfbnVtW2ldLHN0LT5kZW5f cmF0ZSxvbGRfZGVuKTsKICAgICAgICAgIC8qIFNhZmV0eSBuZXQgKi8KICAgICAgICAgIGlmIChz dC0+c2FtcF9mcmFjX251bVtpXSA+PSBzdC0+ZGVuX3JhdGUpCiAgICAgICAgICAgICBzdC0+c2Ft cF9mcmFjX251bVtpXSA9IHN0LT5kZW5fcmF0ZS0xOwotLSAKMi41LjAKCg== --001a1147127c403b4a052af0b76d Content-Type: text/x-patch; charset=US-ASCII; name="0003-resample-avoid-creating-rounding-errors-in-the-phase.patch" Content-Disposition: attachment; filename="0003-resample-avoid-creating-rounding-errors-in-the-phase.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ik887utp2 RnJvbSAxZDI0NjgwOGQ1YTE2NzViMjNiM2ZlYTc5MGQ0NGQ1ZThkM2E3NDkwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBXaW0gVGF5bWFucyA8d3RheW1hbnNAcmVkaGF0LmNvbT4KRGF0 ZTogVGh1LCA0IEZlYiAyMDE2IDA5OjEyOjI3ICswMTAwClN1YmplY3Q6IFtQQVRDSCAzLzVdIHJl c2FtcGxlOiBhdm9pZCBjcmVhdGluZyByb3VuZGluZyBlcnJvcnMgaW4gdGhlIHBoYXNlCgpBbHNv IHRha2UgdGhlIEdDRCB3aXRoIGFsbCBwaGFzZXMgc28gdGhhdCB3ZSBkb24ndCBpbnRyb2R1Y2Ug cm91bmRpbmcKZXJyb3JzIGluIHRoZSBwaGFzZS4KLS0tCiBsaWJzcGVleGRzcC9yZXNhbXBsZS5j IHwgMiArKwogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2xp YnNwZWV4ZHNwL3Jlc2FtcGxlLmMgYi9saWJzcGVleGRzcC9yZXNhbXBsZS5jCmluZGV4IDM3M2Q3 MTMuLjdjZTQzMDggMTAwNjQ0Ci0tLSBhL2xpYnNwZWV4ZHNwL3Jlc2FtcGxlLmMKKysrIGIvbGli c3BlZXhkc3AvcmVzYW1wbGUuYwpAQCAtMTEyNSw2ICsxMTI1LDggQEAgRVhQT1JUIGludCBzcGVl eF9yZXNhbXBsZXJfc2V0X3JhdGVfZnJhYyhTcGVleFJlc2FtcGxlclN0YXRlICpzdCwgc3B4X3Vp bnQzMl90IHIKICAgIHN0LT5kZW5fcmF0ZSA9IHJhdGlvX2RlbjsKIAogICAgZmFjdCA9IF9nY2Qg KHN0LT5udW1fcmF0ZSwgc3QtPmRlbl9yYXRlKTsKKyAgIGZvciAoaT0wO2k8c3QtPm5iX2NoYW5u ZWxzO2krKykKKyAgICAgZmFjdCA9IF9nY2QgKGZhY3QsIHN0LT5zYW1wX2ZyYWNfbnVtW2ldKTsK IAogICAgc3QtPm51bV9yYXRlIC89IGZhY3Q7CiAgICBzdC0+ZGVuX3JhdGUgLz0gZmFjdDsKLS0g CjIuNS4wCgo= --001a1147127c403b4a052af0b76d Content-Type: text/x-patch; charset=US-ASCII; name="0004-test-add-test-for-dynamic-sample-rate-changes.patch" Content-Disposition: attachment; filename="0004-test-add-test-for-dynamic-sample-rate-changes.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ik887utv3 RnJvbSAyZmUxNTkzNDZjMDdhYmZkMDZhYWY0MGFjMjUxMTEyZDhjMmEzN2I2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBXaW0gVGF5bWFucyA8d3RheW1hbnNAcmVkaGF0LmNvbT4KRGF0 ZTogVGh1LCA0IEZlYiAyMDE2IDA5OjEzOjUzICswMTAwClN1YmplY3Q6IFtQQVRDSCA0LzVdIHRl c3Q6IGFkZCB0ZXN0IGZvciBkeW5hbWljIHNhbXBsZSByYXRlIGNoYW5nZXMKCkFkZCBhIHRlc3Qg dGhhdCByZXNhbXBsZXMgYSBzaW5lIHdhdmUgd2l0aCB2YXJ5aW5nIHNhbXBsZXJhdGVzIHRvIGNy ZWF0ZQphIHN3ZWVwLgotLS0KIGxpYnNwZWV4ZHNwL01ha2VmaWxlLmFtICAgICB8ICA0ICstCiBs aWJzcGVleGRzcC90ZXN0cmVzYW1wbGUyLmMgfCA5MyArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgOTYgaW5zZXJ0aW9ucygrKSwg MSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYnNwZWV4ZHNwL3Rlc3RyZXNhbXBs ZTIuYwoKZGlmZiAtLWdpdCBhL2xpYnNwZWV4ZHNwL01ha2VmaWxlLmFtIGIvbGlic3BlZXhkc3Av TWFrZWZpbGUuYW0KaW5kZXggZDA0OTliOS4uYmVkMWNjOCAxMDA2NDQKLS0tIGEvbGlic3BlZXhk c3AvTWFrZWZpbGUuYW0KKysrIGIvbGlic3BlZXhkc3AvTWFrZWZpbGUuYW0KQEAgLTMyLDcgKzMy LDcgQEAgbGlic3BlZXhkc3BfbGFfTERGTEFHUyA9IC1uby11bmRlZmluZWQgLXZlcnNpb24taW5m byBAU1BFRVhEU1BfTFRfQ1VSUkVOVEA6QFNQRUUKIGxpYnNwZWV4ZHNwX2xhX0xJQkFERCA9ICQo TElCTSkKIAogaWYgQlVJTERfRVhBTVBMRVMKLW5vaW5zdF9QUk9HUkFNUyA9IHRlc3RkZW5vaXNl IHRlc3RlY2hvIHRlc3RqaXR0ZXIgdGVzdHJlc2FtcGxlCitub2luc3RfUFJPR1JBTVMgPSB0ZXN0 ZGVub2lzZSB0ZXN0ZWNobyB0ZXN0aml0dGVyIHRlc3RyZXNhbXBsZSB0ZXN0cmVzYW1wbGUyCiB0 ZXN0ZGVub2lzZV9TT1VSQ0VTID0gdGVzdGRlbm9pc2UuYwogdGVzdGRlbm9pc2VfTERBREQgPSBs aWJzcGVleGRzcC5sYSBARkZUX0xJQlNACiB0ZXN0ZWNob19TT1VSQ0VTID0gdGVzdGVjaG8uYwpA QCAtNDEsNCArNDEsNiBAQCB0ZXN0aml0dGVyX1NPVVJDRVMgPSB0ZXN0aml0dGVyLmMKIHRlc3Rq aXR0ZXJfTERBREQgPSBsaWJzcGVleGRzcC5sYSBARkZUX0xJQlNACiB0ZXN0cmVzYW1wbGVfU09V UkNFUyA9IHRlc3RyZXNhbXBsZS5jCiB0ZXN0cmVzYW1wbGVfTERBREQgPSBsaWJzcGVleGRzcC5s YSBARkZUX0xJQlNAIEBMSUJNQAordGVzdHJlc2FtcGxlMl9TT1VSQ0VTID0gdGVzdHJlc2FtcGxl Mi5jCit0ZXN0cmVzYW1wbGUyX0xEQUREID0gbGlic3BlZXhkc3AubGEgQEZGVF9MSUJTQCBATElC TUAKIGVuZGlmCmRpZmYgLS1naXQgYS9saWJzcGVleGRzcC90ZXN0cmVzYW1wbGUyLmMgYi9saWJz cGVleGRzcC90ZXN0cmVzYW1wbGUyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uOTlhODMwZAotLS0gL2Rldi9udWxsCisrKyBiL2xpYnNwZWV4ZHNwL3Rlc3RyZXNhbXBsZTIu YwpAQCAtMCwwICsxLDkzIEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMDcgSmVhbi1NYXJjIFZhbGlu CisKKyAgIEZpbGU6IHRlc3RyZXNhbXBsZTIuYworICAgVGVzdGluZyB0aGUgcmVzYW1wbGluZyBj b2RlCisKKyAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y bXMsIHdpdGggb3Igd2l0aG91dAorICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICAgbWV0OgorCisgICAxLiBS ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly aWdodCBub3RpY2UsCisgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu ZyBkaXNjbGFpbWVyLgorCisgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICAgZG9jdW1l bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1 dGlvbi4KKworICAgMy4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8g ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCisgICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2Fy ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworICAgVEhJUyBT T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJF U1MgT1IKKyAgIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKKyAgIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgICBESVNDTEFJTUVELiBJTiBOTyBF VkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwKKyAgIElORElS RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN QUdFUworICAgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT VUJTVElUVVRFIEdPT0RTIE9SCisgICBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAgIEhPV0VWRVIgQ0FVU0VEIEFORCBP TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKKyAgIFNUUklD VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg QVJJU0lORyBJTgorICAgQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF VkVOIElGIEFEVklTRUQgT0YgVEhFCisgICBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyov CisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKwor I2luY2x1ZGUgInNwZWV4L3NwZWV4X3Jlc2FtcGxlci5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+Cisj aW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjZGVmaW5lIFBFUklPRCAz MgorI2RlZmluZSBJTkJMT0NLIDEwMjQKKyNkZWZpbmUgUkFURSA0ODAwMAorCitpbnQgbWFpbigp Cit7CisgICBzcHhfdWludDMyX3QgaTsKKyAgIGZsb2F0ICpmaW4sICpmb3V0OworICAgaW50IHJh dGUgPSAxMDAwLCBvZmYgPSAwLCBhdmFpbCA9IElOQkxPQ0s7CisgICBTcGVleFJlc2FtcGxlclN0 YXRlICpzdCA9IHNwZWV4X3Jlc2FtcGxlcl9pbml0KDEsIFJBVEUsIFJBVEUsIDQsIE5VTEwpOwor ICAgc3BlZXhfcmVzYW1wbGVyX3NldF9yYXRlKHN0LCBSQVRFLCByYXRlKTsKKyAgIHNwZWV4X3Jl c2FtcGxlcl9za2lwX3plcm9zKHN0KTsKKworICAgZmluID0gbWFsbG9jKElOQkxPQ0sqMipzaXpl b2YoZmxvYXQpKTsKKyAgIGZvciAoaT0wOyBpPElOQkxPQ0sqMjtpKyspCisgICAgIGZpbltpXSA9 IHNpbmYgKChmbG9hdClpL1BFUklPRCAqIDIgKiBNX1BJKSAqIDAuOTsKKworICAgZm91dCA9IG1h bGxvYyhJTkJMT0NLKjQqc2l6ZW9mKGZsb2F0KSk7CisKKyAgIHdoaWxlICgxKQorICAgeworICAg ICAgc3B4X3VpbnQzMl90IGluX2xlbjsKKyAgICAgIHNweF91aW50MzJfdCBvdXRfbGVuOworCisg ICAgICBpbl9sZW4gPSBhdmFpbDsKKyAgICAgIG91dF9sZW4gPSAoaW5fbGVuICogcmF0ZSArIFJB VEUtMSkgLyBSQVRFOworCisgICAgICBmcHJpbnRmIChzdGRlcnIsICIlZCAlZCAlZCAlZCAtPiAi LCByYXRlLCBvZmYsIGluX2xlbiwgb3V0X2xlbik7CisKKyAgICAgIHNwZWV4X3Jlc2FtcGxlcl9w cm9jZXNzX2Zsb2F0KHN0LCAwLCBmaW4gKyBvZmYsICZpbl9sZW4sIGZvdXQsICZvdXRfbGVuKTsK KworICAgICAgZnByaW50ZiAoc3RkZXJyLCAiJWQgJWRcbiIsIGluX2xlbiwgb3V0X2xlbik7Cisg ICAgICBvZmYgKz0gaW5fbGVuOworICAgICAgYXZhaWwgPSBhdmFpbCAtIGluX2xlbiArIElOQkxP Q0s7CisKKyAgICAgIGlmIChvZmYgPj0gSU5CTE9DSykKKyAgICAgICAgb2ZmIC09IElOQkxPQ0s7 CisKKyAgICAgIGZ3cml0ZShmb3V0LCBzaXplb2YoZmxvYXQpLCBvdXRfbGVuLCBzdGRvdXQpOwor CisgICAgICByYXRlICs9IDEwMDsKKyAgICAgIGlmIChyYXRlID4gMTI4MDAwKQorICAgICAgICBi cmVhazsKKworICAgICAgc3BlZXhfcmVzYW1wbGVyX3NldF9yYXRlKHN0LCBSQVRFLCByYXRlKTsK KyAgIH0KKyAgIHNwZWV4X3Jlc2FtcGxlcl9kZXN0cm95KHN0KTsKKyAgIGZyZWUoZmluKTsKKyAg IGZyZWUoZm91dCk7CisgICByZXR1cm4gMDsKK30KKwotLSAKMi41LjAKCg== --001a1147127c403b4a052af0b76d Content-Type: text/x-patch; charset=US-ASCII; name="0005-resample-allow-small-errors-in-the-phase.patch" Content-Disposition: attachment; filename="0005-resample-allow-small-errors-in-the-phase.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ik887uu04 RnJvbSA5NzU1ZGI5ZjljNGU1Y2U5YzljNWY1MjExYTA3NmFkM2Y1MzllYmI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBXaW0gVGF5bWFucyA8d3RheW1hbnNAcmVkaGF0LmNvbT4KRGF0 ZTogVGh1LCA0IEZlYiAyMDE2IDExOjE4OjE1ICswMTAwClN1YmplY3Q6IFtQQVRDSCA1LzVdIHJl c2FtcGxlOiBhbGxvdyBzbWFsbCBlcnJvcnMgaW4gdGhlIHBoYXNlCgpBbGxvdyB1cCB0byAyJSBv ZiBlcnJvciBpbiB0aGUgcGhhc2UuIFRoaXMgaXMgYSB0cmFkZWZvZmYgYmV0d2VlbgphY2N1cmFj eSBhbmQgdGhlIGFtb3VudCBvZiBwaGFzZXMgd2UgbmVlZC4KLS0tCiBsaWJzcGVleGRzcC9yZXNh bXBsZS5jIHwgMzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQogMSBmaWxl IGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv bGlic3BlZXhkc3AvcmVzYW1wbGUuYyBiL2xpYnNwZWV4ZHNwL3Jlc2FtcGxlLmMKaW5kZXggN2Nl NDMwOC4uNGQ0YTIyZCAxMDA2NDQKLS0tIGEvbGlic3BlZXhkc3AvcmVzYW1wbGUuYworKysgYi9s aWJzcGVleGRzcC9yZXNhbXBsZS5jCkBAIC0xMTI0LDEzICsxMTI0LDcgQEAgRVhQT1JUIGludCBz cGVleF9yZXNhbXBsZXJfc2V0X3JhdGVfZnJhYyhTcGVleFJlc2FtcGxlclN0YXRlICpzdCwgc3B4 X3VpbnQzMl90IHIKICAgIHN0LT5udW1fcmF0ZSA9IHJhdGlvX251bTsKICAgIHN0LT5kZW5fcmF0 ZSA9IHJhdGlvX2RlbjsKIAotICAgZmFjdCA9IF9nY2QgKHN0LT5udW1fcmF0ZSwgc3QtPmRlbl9y YXRlKTsKLSAgIGZvciAoaT0wO2k8c3QtPm5iX2NoYW5uZWxzO2krKykKLSAgICAgZmFjdCA9IF9n Y2QgKGZhY3QsIHN0LT5zYW1wX2ZyYWNfbnVtW2ldKTsKLQotICAgc3QtPm51bV9yYXRlIC89IGZh Y3Q7Ci0gICBzdC0+ZGVuX3JhdGUgLz0gZmFjdDsKLQorICAgLyogY2FsY3VsYXRlIGV4YWN0IG5l dyBwaGFzZSAqLwogICAgaWYgKG9sZF9kZW4gPiAwKQogICAgewogICAgICAgZm9yIChpPTA7aTxz dC0+bmJfY2hhbm5lbHM7aSsrKQpAQCAtMTE0Miw2ICsxMTM2LDM1IEBAIEVYUE9SVCBpbnQgc3Bl ZXhfcmVzYW1wbGVyX3NldF9yYXRlX2ZyYWMoU3BlZXhSZXNhbXBsZXJTdGF0ZSAqc3QsIHNweF91 aW50MzJfdCByCiAgICAgICB9CiAgICB9CiAKKyAgIGZhY3QgPSBfZ2NkIChzdC0+bnVtX3JhdGUs IHN0LT5kZW5fcmF0ZSk7CisKKyAgIHdoaWxlIChmYWN0ID4gMSkKKyAgIHsKKyAgICAgIC8qIHJl ZHVjZSB0aGUgZmFjdG9yIHVudGlsIHdlIGhhdmUgYSBwaGFzZSBlcnJvciBvZiBsZXNzIHRoYW4g MiUgKi8KKyAgICAgIHNweF91aW50MzJfdCBmID0gMjsKKyAgICAgIGludCBtb3JlID0gMDsKKwor ICAgICAgZm9yIChpPTA7aTxzdC0+bmJfY2hhbm5lbHMmJiFtb3JlO2krKykKKyAgICAgIHsKKyAg ICAgICAgIGRvdWJsZSBwaDEgPSAoZG91YmxlKSBzdC0+c2FtcF9mcmFjX251bVtpXSAvIHN0LT5k ZW5fcmF0ZTsKKyAgICAgICAgIGRvdWJsZSBwaDIgPSAoZG91YmxlKSAoc3QtPnNhbXBfZnJhY19u dW1baV0gLyBmYWN0KSAvIChzdC0+ZGVuX3JhdGUgLyBmYWN0KTsKKworICAgICAgICAgaWYgKGZh YnMgKHBoMSAtIHBoMikgPj0gMC4wMikKKyAgICAgICAgICAgIG1vcmUgPSAxOworICAgICAgfQor ICAgICAgaWYgKCFtb3JlKQorICAgICAgICAgYnJlYWs7CisKKyAgICAgIHdoaWxlIChmYWN0ICUg ZiAhPSAwKQorICAgICAgICAgZisrOworICAgICAgZmFjdCAvPSBmOworICAgfQorCisgICBmb3Ig KGk9MDtpPHN0LT5uYl9jaGFubmVscztpKyspCisgICAgIHN0LT5zYW1wX2ZyYWNfbnVtW2ldIC89 IGZhY3Q7CisgICBzdC0+bnVtX3JhdGUgLz0gZmFjdDsKKyAgIHN0LT5kZW5fcmF0ZSAvPSBmYWN0 OworCiAgICBpZiAoc3QtPmluaXRpYWxpc2VkKQogICAgICAgcmV0dXJuIHVwZGF0ZV9maWx0ZXIo c3QpOwogICAgcmV0dXJuIFJFU0FNUExFUl9FUlJfU1VDQ0VTUzsKLS0gCjIuNS4wCgo= --001a1147127c403b4a052af0b76d Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Speex-dev mailing list [email protected] http://lists.xiph.org/mailman/listinfo/speex-dev --001a1147127c403b4a052af0b76d--