From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41757) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1adD5s-0006gP-Jr for qemu-devel@nongnu.org; Tue, 08 Mar 2016 03:34:18 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1adD5n-0001U5-H8 for qemu-devel@nongnu.org; Tue, 08 Mar 2016 03:34:16 -0500 Received: from m12-14.163.com ([220.181.12.14]:38254) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1adD5j-0001Rs-8n for qemu-devel@nongnu.org; Tue, 08 Mar 2016 03:34:11 -0500 Date: Tue, 8 Mar 2016 16:31:17 +0800 From: "weitidong220@163.com" Mime-Version: 1.0 Message-ID: <201603081631154546036@163.com> Content-Type: multipart/alternative; boundary="----=_001_NextPart154264535768_=----" Subject: [Qemu-devel] audio output overflow when play movies List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel Cc: "jan.kiszka" , "dirty.ice.hu" This is a multi-part message in MIME format. ------=_001_NextPart154264535768_=---- Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: base64 SGksDQogICAgSSBydW4gV2luZG93czcsIHdoaWNoIHBsYXlzIEhEIE1vdmllcyBhZ2FpbiBhbmQg YWdhaW4sIG9uIFFFTVUgZW11bGF0b3IgMi4wLjEgZm9yIHNldmVyYWwgZGF5cy4gdGhlbiBJIGZv dW5kIHRoZSBtYWluIHRocmVhZCB3aGljaCBpbnZva2UgYXVkaW9fcGNtX3N3X3JlYWQtPnN0X3Jh dGVfZmxvdyBnZXQgc3R1Y2suDQogICAgSXMgYW55b25lIGV2ZXIgbm90aWNlIGl0Pw0KDQogICAg aGVyZSBpcyB0aGUgYmFja3RyYWNlOg0KICAgICAgICBUaHJlYWQgMSAoVGhyZWFkIDB4N2Y1ZTU2 OWRjOTIwIChMV1AgMjY4MykpOg0KICAgICMwICBzdF9yYXRlX2Zsb3cgKG9wYXF1ZT0weDdmNWU1 YTgzZWZkMCwgaWJ1Zj0weDdmNWU1YTBiODA3MCwgb2J1Zj0weDdmNWU1YWNkMTFjMCwgaXNhbXA9 aXNhbXBAZW50cnk9MHg3ZmZmMzhmN2VmMDAsIG9zYW1wPW9zYW1wQGVudHJ5PTB4N2ZmZjM4Zjdl ZjA0KQ0KICAgICAgICBhdCBhdWRpby9yYXRlX3RlbXBsYXRlLmg6NzENCiAgICAjMSAgMHgwMDAw N2Y1ZTU2Yjk1YTE2IGluIGF1ZGlvX3BjbV9zd19yZWFkIChzdz0weDdmNWU1OWY5Y2ExMCwgYnVm PTB4N2Y1ZTU5ZmEwNmQ4LCBzaXplPTxvcHRpbWl6ZWQgb3V0PikgYXQgYXVkaW8vYXVkaW8uYzo5 NTQNCiAgICAjMiAgMHgwMDAwN2Y1ZTU2YzBkMGVlIGluIGhkYV9hdWRpb19pbnB1dF9jYiAob3Bh cXVlPTB4N2Y1ZTU5ZmEwNjkwLCBhdmFpbD0yNjQwKSBhdCBody9hdWRpby9oZGEtY29kZWMuYzox ODcNCiAgICAjMyAgMHgwMDAwN2Y1ZTU2Yjk3NGVkIGluIGF1ZGlvX3J1bl9pbiAocz08b3B0aW1p emVkIG91dD4pIGF0IGF1ZGlvL2F1ZGlvLmM6MTQ5MA0KICAgICM0ICBhdWRpb19ydW4gKG1zZz1t c2dAZW50cnk9MHg3ZjVlNTZmNWJmN2MgInRpbWVyIikgYXQgYXVkaW8vYXVkaW8uYzoxNTQ5DQog ICAgIzUgIDB4MDAwMDdmNWU1NmI5NzUyNCBpbiBhdWRpb190aW1lciAob3BhcXVlPTB4N2Y1ZTU3 M2NmZDIwKSBhdCBhdWRpby9hdWRpby5jOjExMzcNCiAgICAjNiAgMHgwMDAwN2Y1ZTU2ZDFhZGI5 IGluIHRpbWVybGlzdF9ydW5fdGltZXJzICh0aW1lcl9saXN0PTB4N2Y1ZTU5N2U4M2MwKSBhdCBx ZW11LXRpbWVyLmM6NDkzDQogICAgIzcgIDB4MDAwMDdmNWU1NmQxYWU4YSBpbiBxZW11X2Nsb2Nr X3J1bl90aW1lcnMgKHR5cGU9dHlwZUBlbnRyeT1RRU1VX0NMT0NLX1ZJUlRVQUwpIGF0IHFlbXUt dGltZXIuYzo1MDQNCiAgICAjOCAgMHgwMDAwN2Y1ZTU2ZDFiMmQ4IGluIHFlbXVfY2xvY2tfcnVu X2FsbF90aW1lcnMgKCkgYXQgcWVtdS10aW1lci5jOjYxMA0KICAgICM5ICAweDAwMDA3ZjVlNTZj ZGRhNGMgaW4gbWFpbl9sb29wX3dhaXQgKG5vbmJsb2NraW5nPTxvcHRpbWl6ZWQgb3V0PikgYXQg bWFpbi1sb29wLmM6NTE1DQogICAgIzEwIDB4MDAwMDdmNWU1NmI4ZTIwMyBpbiBtYWluX2xvb3Ag KCkgYXQgdmwuYzoyMzYwDQogICAgIzExIG1haW4gKGFyZ2M9PG9wdGltaXplZCBvdXQ+LCBhcmd2 PTxvcHRpbWl6ZWQgb3V0PiwgZW52cD08b3B0aW1pemVkIG91dD4pIGF0IHZsLmM6NDk3MA0KICAg IA0KICAgIHdpdGggdGhlIGZvbGxvdyBjb2RlOiAgICANCiAgICAvKg0KICAgICAqIFByb2Nlc3Nl ZCBzaWduZWQgbG9uZyBzYW1wbGVzIGZyb20gaWJ1ZiB0byBvYnVmLg0KICAgICAqIFJldHVybiBu dW1iZXIgb2Ygc2FtcGxlcyBwcm9jZXNzZWQuDQogICAgICovDQogICAgdm9pZCBzdF9yYXRlX2Zs b3cgKHZvaWQgKm9wYXF1ZSwgc3RydWN0IHN0X3NhbXBsZSAqaWJ1Ziwgc3RydWN0IHN0X3NhbXBs ZSAqb2J1ZiwNCiAgICAgICAgICAgICAgIGludCAqaXNhbXAsIGludCAqb3NhbXApDQogICAgew0K ICAgICAgICBzdHJ1Y3QgcmF0ZSAqcmF0ZSA9IG9wYXF1ZTsNCiAgICAgICAgc3RydWN0IHN0X3Nh bXBsZSAqaXN0YXJ0LCAqaWVuZDsNCiAgICAgICAgc3RydWN0IHN0X3NhbXBsZSAqb3N0YXJ0LCAq b2VuZDsNCiAgICAgICAgc3RydWN0IHN0X3NhbXBsZSBpbGFzdCwgaWN1ciwgb3V0Ow0KICAgICNp ZmRlZiBGTE9BVF9NSVhFTkcNCiAgICAgICAgbWl4ZW5nX3JlYWwgdDsNCiAgICAjZWxzZQ0KICAg ICAgICBpbnQ2NF90IHQ7DQogICAgI2VuZGlmDQoNCiAgICAgICAgaWxhc3QgPSByYXRlLT5pbGFz dDsNCg0KICAgICAgICBpc3RhcnQgPSBpYnVmOw0KICAgICAgICBpZW5kID0gaWJ1ZiArICppc2Ft cDsNCg0KICAgICAgICBvc3RhcnQgPSBvYnVmOw0KICAgICAgICBvZW5kID0gb2J1ZiArICpvc2Ft cDsNCg0KICAgICAgICBpZiAocmF0ZS0+b3Bvc19pbmMgPT0gKDFVTEwgKyBVSU5UX01BWCkpIHsN CiAgICAgICAgICAgIGludCBpLCBuID0gKmlzYW1wID4gKm9zYW1wID8gKm9zYW1wIDogKmlzYW1w Ow0KICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgew0KICAgICAgICAgICAgICAg IE9QIChvYnVmW2ldLmwsIGlidWZbaV0ubCk7DQogICAgICAgICAgICAgICAgT1AgKG9idWZbaV0u ciwgaWJ1ZltpXS5yKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICppc2FtcCA9IG47DQog ICAgICAgICAgICAqb3NhbXAgPSBuOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQoN CiAgICAgICAgd2hpbGUgKG9idWYgPCBvZW5kKSB7DQoNCiAgICAgICAgICAgIC8qIFNhZmV0eSBj YXRjaCB0byBtYWtlIHN1cmUgd2UgaGF2ZSBpbnB1dCBzYW1wbGVzLiAgKi8NCiAgICAgICAgICAg IGlmIChpYnVmID49IGllbmQpIHsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAg IH0NCg0KICAgICAgICAgICAgLyogcmVhZCBhcyBtYW55IGlucHV0IHNhbXBsZXMgc28gdGhhdCBp cG9zID4gb3BvcyAqLw0KDQogICAgICAgICAgICB3aGlsZSAocmF0ZS0+aXBvcyA8PSAocmF0ZS0+ b3BvcyA+PiAzMikpIHsgLy8gUDE6IChyYXRlLT5vcG9zID4+IDMyKSA9IDB4RkZGRkZGRkYNCiAg ICAgICAgICAgICAgICBpbGFzdCA9ICppYnVmKys7DQogICAgICAgICAgICAgICAgcmF0ZS0+aXBv cysrOw0KICAgICAgICAgICAgICAgIC8qIFNlZSBpZiB3ZSBmaW5pc2hlZCB0aGUgaW5wdXQgYnVm ZmVyIHlldCAqLw0KICAgICAgICAgICAgICAgIGlmIChpYnVmID49IGllbmQpIHsNCiAgICAgICAg ICAgICAgICAgICAgZ290byB0aGVfZW5kOyAvLyBQMjogZ290byB0aGUgZW5kDQogICAgICAgICAg ICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpY3VyID0gKmlidWY7DQoNCiAg ICAgICAgICAgIC8qIGludGVycG9sYXRlICovDQogICAgI2lmZGVmIEZMT0FUX01JWEVORw0KICAg ICNpZmRlZiBSRUNJUFJPQ0FMDQogICAgICAgICAgICB0ID0gKHJhdGUtPm9wb3MgJiBVSU5UX01B WCkgKiAoMS5mIC8gVUlOVF9NQVgpOw0KICAgICNlbHNlDQogICAgICAgICAgICB0ID0gKHJhdGUt Pm9wb3MgJiBVSU5UX01BWCkgLyAobWl4ZW5nX3JlYWwpIFVJTlRfTUFYOw0KICAgICNlbmRpZg0K ICAgICAgICAgICAgb3V0LmwgPSAoaWxhc3QubCAqICgxLjAgLSB0KSkgKyBpY3VyLmwgKiB0Ow0K ICAgICAgICAgICAgb3V0LnIgPSAoaWxhc3QuciAqICgxLjAgLSB0KSkgKyBpY3VyLnIgKiB0Ow0K ICAgICNlbHNlDQogICAgICAgICAgICB0ID0gcmF0ZS0+b3BvcyAmIDB4ZmZmZmZmZmY7DQogICAg ICAgICAgICBvdXQubCA9IChpbGFzdC5sICogKChpbnQ2NF90KSBVSU5UX01BWCAtIHQpICsgaWN1 ci5sICogdCkgPj4gMzI7DQogICAgICAgICAgICBvdXQuciA9IChpbGFzdC5yICogKChpbnQ2NF90 KSBVSU5UX01BWCAtIHQpICsgaWN1ci5yICogdCkgPj4gMzI7DQogICAgI2VuZGlmDQoNCiAgICAg ICAgICAgIC8qIG91dHB1dCBzYW1wbGUgJiBpbmNyZW1lbnQgcG9zaXRpb24gKi8NCiAgICAgICAg ICAgIE9QIChvYnVmLT5sLCBvdXQubCk7DQogICAgICAgICAgICBPUCAob2J1Zi0+ciwgb3V0LnIp Ow0KICAgICAgICAgICAgb2J1ZiArPSAxOw0KICAgICAgICAgICAgcmF0ZS0+b3BvcyArPSByYXRl LT5vcG9zX2luYzsNCiAgICAgICAgfQ0KDQogICAgdGhlX2VuZDogDQogICAgICAgICppc2FtcCA9 IGlidWYgLSBpc3RhcnQ7DQogICAgICAgICpvc2FtcCA9IG9idWYgLSBvc3RhcnQ7IC8vIFAzOiBv c2FtcCBpcyAwIGZvciBvYnVmIGVxdWFsIG9zdGFydA0KICAgICAgICByYXRlLT5pbGFzdCA9IGls YXN0Ow0KICAgIH0NCg0KICAgIGludCBhdWRpb19wY21fc3dfcmVhZCAoU1dWb2ljZUluICpzdywg dm9pZCAqYnVmLCBpbnQgc2l6ZSkNCiAgICB7DQogICAgICAgIEhXVm9pY2VJbiAqaHcgPSBzdy0+ aHc7DQogICAgICAgIGludCBzYW1wbGVzLCBsaXZlLCByZXQgPSAwLCBzd2xpbSwgaXNhbXAsIG9z YW1wLCBycG9zLCB0b3RhbCA9IDA7DQogICAgICAgIHN0cnVjdCBzdF9zYW1wbGUgKnNyYywgKmRz dCA9IHN3LT5idWY7DQoNCiAgICAgICAgcnBvcyA9IGF1ZGlvX3BjbV9zd19nZXRfcnBvc19pbiAo c3cpICUgaHctPnNhbXBsZXM7DQoNCiAgICAgICAgbGl2ZSA9IGh3LT50b3RhbF9zYW1wbGVzX2Nh cHR1cmVkIC0gc3ctPnRvdGFsX2h3X3NhbXBsZXNfYWNxdWlyZWQ7DQogICAgICAgIGlmIChhdWRp b19idWcgKEFVRElPX0ZVTkMsIGxpdmUgPCAwIHx8IGxpdmUgPiBody0+c2FtcGxlcykpIHsNCiAg ICAgICAgICAgIGRvbG9nICgibGl2ZV9pbj0lZCBody0+c2FtcGxlcz0lZFxuIiwgbGl2ZSwgaHct PnNhbXBsZXMpOw0KICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgIH0NCg0KICAgICAgICBz YW1wbGVzID0gc2l6ZSA+PiBzdy0+aW5mby5zaGlmdDsNCiAgICAgICAgaWYgKCFsaXZlKSB7DQog ICAgICAgICAgICByZXR1cm4gMDsNCiAgICAgICAgfQ0KDQogICAgICAgIHN3bGltID0gKGxpdmUg KiBzdy0+cmF0aW8pID4+IDMyOw0KICAgICAgICBzd2xpbSA9IGF1ZGlvX01JTiAoc3dsaW0sIHNh bXBsZXMpOw0KDQogICAgICAgIHdoaWxlIChzd2xpbSkgeyAvLyBQNTogY29tZSBiYWNrIGFnYWlu DQogICAgICAgICAgICBzcmMgPSBody0+Y29udl9idWYgKyBycG9zOw0KICAgICAgICAgICAgaXNh bXAgPSBody0+d3BvcyAtIHJwb3M7DQogICAgICAgICAgICAvKiBYWFg6IDw9ID8gKi8NCiAgICAg ICAgICAgIGlmIChpc2FtcCA8PSAwKSB7DQogICAgICAgICAgICAgICAgaXNhbXAgPSBody0+c2Ft cGxlcyAtIHJwb3M7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghaXNhbXApIHsN CiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIG9zYW1w ID0gc3dsaW07DQoNCiAgICAgICAgICAgIGlmIChhdWRpb19idWcgKEFVRElPX0ZVTkMsIG9zYW1w IDwgMCkpIHsNCiAgICAgICAgICAgICAgICBkb2xvZyAoIm9zYW1wPSVkXG4iLCBvc2FtcCk7DQog ICAgICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHN0 X3JhdGVfZmxvdyAoc3ctPnJhdGUsIHNyYywgZHN0LCAmaXNhbXAsICZvc2FtcCk7DQogICAgICAg ICAgICBzd2xpbSAtPSBvc2FtcDsgLy8gUDQ6IG5vdGhpbmcgY2hhbmdlIHdoZW4gc3dsaW0gc3Vi c3RyYWN0IDANCiAgICAgICAgICAgIHJwb3MgPSAocnBvcyArIGlzYW1wKSAlIGh3LT5zYW1wbGVz Ow0KICAgICAgICAgICAgZHN0ICs9IG9zYW1wOw0KICAgICAgICAgICAgcmV0ICs9IG9zYW1wOw0K ICAgICAgICAgICAgdG90YWwgKz0gaXNhbXA7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoISho dy0+Y3RsX2NhcHMgJiBWT0lDRV9WT0xVTUVfQ0FQKSkgew0KICAgICAgICAgICAgbWl4ZW5nX3Zv bHVtZSAoc3ctPmJ1ZiwgcmV0LCAmc3ctPnZvbCk7DQogICAgICAgIH0NCg0KICAgICAgICBzdy0+ Y2xpcCAoYnVmLCBzdy0+YnVmLCByZXQpOw0KICAgICAgICBzdy0+dG90YWxfaHdfc2FtcGxlc19h Y3F1aXJlZCArPSB0b3RhbDsNCiAgICAgICAgcmV0dXJuIHJldCA8PCBzdy0+aW5mby5zaGlmdDsN CiAgICB9DQoNCg0KICAgICNBTkFMWVNJUzoNCiAgICBhdCBwb3NpdGlvbiAxLCBQMToNCiAgICAv KiBQcml2YXRlIGRhdGEgKi8NCnN0cnVjdCByYXRlIHsNCnVpbnQ2NF90IG9wb3M7DQp1aW50NjRf dCBvcG9zX2luYzsNCnVpbnQzMl90IGlwb3M7ICAgICAgICAgICAgICAgICAgLyogcG9zaXRpb24g aW4gdGhlIGlucHV0IHN0cmVhbSAoaW50ZWdlcikgKi8NCnN0cnVjdCBzdF9zYW1wbGUgaWxhc3Q7 ICAgICAgICAgIC8qIGxhc3Qgc2FtcGxlIGluIHRoZSBpbnB1dCBzdHJlYW0gKi8NCn07DQoNCiAg ICB3aGlsZSAocmF0ZS0+aXBvcyA8PSAocmF0ZS0+b3BvcyA+PiAzMikpIHsgLy8gUDE6IChyYXRl LT5vcG9zID4+IDMyKSA9IDB4RkZGRkZGRkYNCiAgICAgICAgaWxhc3QgPSAqaWJ1ZisrOw0KICAg ICAgICByYXRlLT5pcG9zKys7DQogICAgICAgIC8qIFNlZSBpZiB3ZSBmaW5pc2hlZCB0aGUgaW5w dXQgYnVmZmVyIHlldCAqLw0KICAgICAgICBpZiAoaWJ1ZiA+PSBpZW5kKSB7DQogICAgICAgICAg ICBnb3RvIHRoZV9lbmQ7IC8vIFAyOiBnb3RvIHRoZSBlbmQNCiAgICAgICAgfQ0KICAgIH0NCiAg ICANCiAgICBJIGR1bXAgdGhlIHZhbHVlOg0KICAgIChnZGIpIHAgKnJhdGUNCiAgICAkNDUgPSB7 b3BvcyA9IDE4NDQ2NzQ0MDY5Njg3NTg1MDA1LCBvcG9zX2luYyA9IDQ2NzQ3OTQzMzUsIGlwb3Mg PSAzNjQ5MjkwMjkyLCBpbGFzdCA9IHtsID0gMCwgciA9IDB9fQ0KICAgIA0KICAgIGFzIHUgY2Fu IHNlZSwgcmF0ZS0+b3BvcyA9IDE4NDQ2NzQ0MDY5Njg3NTg1MDA1ID0gMHhGRkZGRkZGRjEwNDVB OEVELCB3aGljaCBoaWdoZXIgcGFydCBpcyAweEZGRkZGRkZGDQogICAgcmF0ZS0+aXBvcyB3aXRo IHVpbnQzMiB0eXBlLCB3aGljaCBtYXggdmFsdWUgaXMgMHhGRkZGRkZGRg0KICAgIGluIHRoZSBz aXR1YXRpb24sIChyYXRlLT5pcG9zIDw9IChyYXRlLT5vcG9zID4+IDMyKSkgaXMgZGVmaW5pdGVs eSB0cnVlIGZvcmV2ZXIuDQogICAgDQogICAgZXZlcnkgdGltZSB3aGVuIHRoZSBwcm9ncmFtIGJy ZWFrIG91dCBhdCBQMiwgZ28gdG8gUDMsIGFzc2lnbiBvc2FtcCB0byAwLCByZXR1cm4gdG8gYXVk aW9fcGNtX3N3X3JlYWQgYW5kIHN3bGltIC0gMCBhdCBQNCwgZXhjdXRlIGFnYWluIGF0IFA1LiBz byB0aGUgbWFpbiB0aHJlYWQgcmVwZWF0cyB0aGUgc2FtZSBmbG93IGFnYWluIGFuZCBhZ2Fpbi4N CiAgICANCiAgICB0aGUgZm9sbG93IGRhdGFzIG1heWJlIHVzZWZ1bDoNCiAgICAoZ2RiKSBwIHN3 DQokMTMgPSAoU1dWb2ljZUluICopIDB4N2Y1ZTU5ZjljYTEwDQooZ2RiKSBwICpzdw0KJDE0ID0g e2NhcmQgPSAweDdmNWU1OWZhMDUyMCwgYWN0aXZlID0gMSwgaW5mbyA9IHtiaXRzID0gMTYsIHNp Z24gPSAxLCBmcmVxID0gNDQxMDAsIG5jaGFubmVscyA9IDIsIGFsaWduID0gMywgc2hpZnQgPSAy LCBieXRlc19wZXJfc2Vjb25kID0gMTc2NDAwLCANCnN3YXBfZW5kaWFubmVzcyA9IDB9LCByYXRp byA9IDM5NDYwMDEyMDMsIHJhdGUgPSAweDdmNWU1YTgzZWZkMCwgdG90YWxfaHdfc2FtcGxlc19h Y3F1aXJlZCA9IDcwLCBidWYgPSAweDdmNWU1YWNkMGU5MCwgDQogIGNsaXAgPSAweDdmNWU1NmI5 ODYxMCA8Y2xpcF9uYXR1cmFsX2ludDE2X3RfZnJvbV9zdGVyZW8+LCBodyA9IDB4N2Y1ZTVhMTVk MWYwLCBuYW1lID0gMHg3ZjVlNWEwZjQ2YzAgImFkYyIsIHZvbCA9IHttdXRlID0gMCwgciA9IDQy OTQ5NjcyOTYsIGwgPSA0Mjk0OTY3Mjk2fSwgDQogIGNhbGxiYWNrID0ge29wYXF1ZSA9IDB4N2Y1 ZTU5ZmEwNjkwLCBmbiA9IDB4N2Y1ZTU2YzBkMDgwIDxoZGFfYXVkaW9faW5wdXRfY2I+fSwgZW50 cmllcyA9IHtsZV9uZXh0ID0gMHgwLCBsZV9wcmV2ID0gMHg3ZjVlNWExNWQyNDB9fQ0KDQooZ2Ri KSBwICpodw0KJDMyID0ge2VuYWJsZWQgPSAxLCBwb2xsX21vZGUgPSAwLCBpbmZvID0ge2JpdHMg PSAxNiwgc2lnbiA9IDEsIGZyZXEgPSA0ODAwMCwgbmNoYW5uZWxzID0gMiwgYWxpZ24gPSAzLCBz aGlmdCA9IDIsIGJ5dGVzX3Blcl9zZWNvbmQgPSAxOTIwMDAsIHN3YXBfZW5kaWFubmVzcyA9IDB9 LCANCiAgY29udiA9IDB4N2Y1ZTU2Yjk4NTQwIDxjb252X25hdHVyYWxfaW50MTZfdF90b19zdGVy ZW8+LCB3cG9zID0gNzM2LCB0b3RhbF9zYW1wbGVzX2NhcHR1cmVkID0gNjA3LCB0c19oZWxwZXIg PSA0Mjk0OTY3Nzc2LCBjb252X2J1ZiA9IDB4N2Y1ZTVhMGI2OGYwLCANCiAgc2FtcGxlcyA9IDE5 MjAsIHN3X2hlYWQgPSB7bGhfZmlyc3QgPSAweDdmNWU1OWY5Y2ExMH0sIGN0bF9jYXBzID0gOCwg cGNtX29wcyA9IDB4N2Y1ZTU3MzZlYWEwLCBlbnRyaWVzID0ge2xlX25leHQgPSAweDAsIGxlX3By ZXYgPSAweDdmNWU1NzNjZmQ0MH19DQoNCg0KICAgICNUUklFRA0KICAgIDEuIEkgYW0gbm90IHN1 cmUgaWYgdGhpcyBlcnJvciBvY2N1cmVkIGp1c3QgYmVjYXVzZSBJIHNuYXBzaG90dGVkIHRoZSBW TSwgYnV0IEkgcmVhbGx5IGRpZCAnc25hcHNob3Qgb3BlcmF0aW9uJyBhdCB0aGF0IG1vbWVudC4N CiAgICANCiAgICAyLiBJZiBJIGNoYW5nZSB0aGUgdmFsdWUgb2YgcmF0ZS0+b3BvcyBmcm9tIDE4 NDQ2NzQ0MDY5Njg3NTg1MDA1IHRvIDEsIHRoZSBwcm9ncmFtIHJ1biBqdXN0IGZpbmU6IA0KICAg IChnZGIpIHAgcmF0ZS0+b3Bvcw0KJDQ3ID0gMTg0NDY3NDQwNjk2ODc1ODUwMDUNCihnZGIpIHAg cmF0ZS0+b3BvcyA9IDENCiQ0OCA9IDENCiAgICANCiAgICAzLiBJIGNhbGN1bGF0ZWQgdGhlIHZh bHVlIG9mIG9wb3Mvb3Bvc19pbmMgPSAxODQ0Njc0NDA2OTY4NzU4NTAwNS80Njc0Nzk0MzM1ID0g MHhFQjMzMzMzMw0KICAgIGNvbXBhcmVkIHdpdGggdGhlIG5vcm1hbCBzaXR1YXRpb24sIG9wb3Mv b3Bvc19pbmMgPSAxNzU0NDE5MzczMzEwOTA0MDY4NC8zOTQ2MDAxMjAzID0gMHgxMDkwMUExMjQg ICANCiAgICAoZ2RiKSBwICpyYXRlDQogICAgJDIgPSB7b3BvcyA9IDE3NTQ0MTkzNzMzMTA5MDQw Njg0LCBvcG9zX2luYyA9IDM5NDYwMDEyMDMsIGlwb3MgPSA0MDg0ODI1OTIwLCBpbGFzdCA9IHts ID0gNTc3MzcyMTYsIHIgPSA2MzU2OTkyMH19DQogICAgbWF5YmUgdGhlIG9wb3NfaW5jIGlzIGlu Y29ycmVjdC4NCiAgICANCiAgICA0LiBxZW11IGFyZ3VtZW50IHdpdGggJy1zb3VuZGh3IGhkYScN CiAgICANCiAgICA1LiB0aGUgc2FtZSBwaGVub21lbm9uOiBodHRwczovL2J1Z3MuZGViaWFuLm9y Zy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTY4NTM1Mw0KDQp0aGFua3MhISENCg0KDQoNCndl aXRpZG9uZzIyMEAxNjMuY29tDQo= ------=_001_NextPart154264535768_=---- Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable =0A = =0A
Hi,
   = ; I run Windows7, which plays HD Movies=  again and again, on QEMU emulator 2.0.= 1 for several days. then I found the&nb= sp;main thread which invoke audio_pcm_sw_read->st_r= ate_flow get stuck.
    Is anyone e= ver notice it?
    here is the backtrace:
 &n= bsp;      Thread 1 (Thread 0x= 7f5e569dc920 (LWP 2683)):
    #0 &nb= sp;st_rate_flow (opaque=3D0x7f5e5a83efd0, ibuf=3D0x7f5e5a0b8070,=  obuf=3D0x7f5e5acd11c0, isamp=3Disamp@entry=3D0x7fff38f7ef00,&nb= sp;osamp=3Dosamp@entry=3D0x7fff38f7ef04)
     =    at audio/rate_template.h:71
   &n= bsp;#1  0x00007f5e56b95a16 in audio_pcm_sw_read (= sw=3D0x7f5e59f9ca10, buf=3D0x7f5e59fa06d8, size=3D<optimized&= nbsp;out>) at audio/audio.c:954
    #2=   0x00007f5e56c0d0ee in hda_audio_input_cb (opaqu= e=3D0x7f5e59fa0690, avail=3D2640) at hw/audio/hda-codec.c:1= 87
    #3  0x00007f5e56b974ed in&nbs= p;audio_run_in (s=3D<optimized out>) at audio/au= dio.c:1490
    #4  audio_run (msg=3D= msg@entry=3D0x7f5e56f5bf7c "timer") at audio/audio.c:1549    #5  0x00007f5e56b97524 in au= dio_timer (opaque=3D0x7f5e573cfd20) at audio/audio.c:1137    #6  0x00007f5e56d1adb9 in ti= merlist_run_timers (timer_list=3D0x7f5e597e83c0) at qemu-ti= mer.c:493
    #7  0x00007f5e56d1ae8a = ;in qemu_clock_run_timers (type=3Dtype@entry=3DQEMU_CLOCK_VIRTUA= L) at qemu-timer.c:504
    #8  = 0x00007f5e56d1b2d8 in qemu_clock_run_all_timers () at&= nbsp;qemu-timer.c:610
    #9  0x00007f5e5= 6cdda4c in main_loop_wait (nonblocking=3D<optimized = ;out>) at main-loop.c:515
    #10 = ;0x00007f5e56b8e203 in main_loop () at vl.c:2360<= br>    #11 main (argc=3D<optimized o= ut>, argv=3D<optimized out>, envp=3D<optimized&= nbsp;out>) at vl.c:4970
    
 =    with the follow code:   &n= bsp;
    /*
     * = ;Processed signed long samples from ibuf to&= nbsp;obuf.
     * Return number = ;of samples processed.
     */
&n= bsp;   void st_rate_flow (void *opaque, = ;struct st_sample *ibuf, struct st_sample *obuf,<= br>            = ;   int *isamp, int *osamp)
  &= nbsp; {
        struct&nbs= p;rate *rate =3D opaque;
     &= nbsp;  struct st_sample *istart, *iend;
 =        struct st_sample *osta= rt, *oend;
        struct&= nbsp;st_sample ilast, icur, out;
    = ;#ifdef FLOAT_MIXENG
       &nb= sp;mixeng_real t;
    #else
  &nb= sp;     int64_t t;
   &nbs= p;#endif

        ilast = ;=3D rate->ilast;

       = ; istart =3D ibuf;
      &= nbsp; iend =3D ibuf + *isamp;

  =       ostart =3D obuf;
 &n= bsp;      oend =3D obuf +&nbs= p;*osamp;

        if (= rate->opos_inc =3D=3D (1ULL + UINT_MAX)) {
=             in= t i, n =3D *isamp > *osamp ? *o= samp : *isamp;
       &nbs= p;    for (i =3D 0; i <&nb= sp;n; i++) {
        =         OP (obuf[i].l, i= buf[i].l);
          =       OP (obuf[i].r, ibuf[i].r);            = }
           &nb= sp;*isamp =3D n;
       &n= bsp;    *osamp =3D n;
   &= nbsp;        return;
 &nbs= p;      }

    &nb= sp;   while (obuf < oend) {

&= nbsp;           /*&= nbsp;Safety catch to make sure we have = input samples.  */
      &= nbsp;     if (ibuf >=3D iend)&n= bsp;{
           = ;     break;
     &nb= sp;      }

    &n= bsp;       /* read as ma= ny input samples so that ipos > opos=  */

         &nbs= p;  while (rate->ipos <=3D (rate->opos&n= bsp;>> 32)) { // P1: (rate->opos &g= t;> 32) =3D 0xFFFFFFFF
     =            ilast&nb= sp;=3D *ibuf++;
        &n= bsp;       rate->ipos++;
 &n= bsp;           &nbs= p;  /* See if we finished the inpu= t buffer yet */
      &nbs= p;         if (ibuf = ;>=3D iend) {
       &n= bsp;           &nbs= p;goto the_end; // P2: goto the end
 = ;            &= nbsp;  }
        &nbs= p;   }

       &nb= sp;    icur =3D *ibuf;

  &n= bsp;         /* interpol= ate */
    #ifdef FLOAT_MIXENG
 &= nbsp;  #ifdef RECIPROCAL
     &= nbsp;      t =3D (rate->opos&nb= sp;& UINT_MAX) * (1.f / UINT_MAX);
 &= nbsp;  #else
        =     t =3D (rate->opos & UIN= T_MAX) / (mixeng_real) UINT_MAX;
    = ;#endif
          &nb= sp; out.l =3D (ilast.l * (1.0 - t))&nbs= p;+ icur.l * t;
      &nbs= p;     out.r =3D (ilast.r * (= 1.0 - t)) + icur.r * t;
   = ; #else
         &nbs= p;  t =3D rate->opos & 0xffffffff;            o= ut.l =3D (ilast.l * ((int64_t) UINT_MAX -&nb= sp;t) + icur.l * t) >> 32;
 &n= bsp;          out.r = ;=3D (ilast.r * ((int64_t) UINT_MAX - t)&nbs= p;+ icur.r * t) >> 32;
   = ; #endif

         = ;   /* output sample & increment&nb= sp;position */
        &nb= sp;   OP (obuf->l, out.l);
  &nbs= p;         OP (obuf->= r, out.r);
         &= nbsp;  obuf +=3D 1;
     &= nbsp;      rate->opos +=3D rate= ->opos_inc;
        }
    the_end: 
     &= nbsp;  *isamp =3D ibuf - istart;
 &n= bsp;      *osamp =3D obuf -&n= bsp;ostart; // P3: osamp is 0 for obuf&= nbsp;equal ostart
        = rate->ilast =3D ilast;
    }

&n= bsp;   int audio_pcm_sw_read (SWVoiceIn *sw,=  void *buf, int size)
    {
=         HWVoiceIn *hw = =3D sw->hw;
        int=  samples, live, ret =3D 0, swlim, isamp= , osamp, rpos, total =3D 0;
   =      struct st_sample *src, *dst&n= bsp;=3D sw->buf;

       =  rpos =3D audio_pcm_sw_get_rpos_in (sw) % hw= ->samples;

        live&= nbsp;=3D hw->total_samples_captured - sw->total_hw_sa= mples_acquired;
        if = ;(audio_bug (AUDIO_FUNC, live < 0 || live=  > hw->samples)) {
     &= nbsp;      dolog ("live_in=3D%d hw= ->samples=3D%d\n", live, hw->samples);
  &nbs= p;         return 0;
=         }

   = ;     samples =3D size >>&nb= sp;sw->info.shift;
        i= f (!live) {
        &= nbsp;   return 0;
     &nb= sp;  }

        sw= lim =3D (live * sw->ratio) >> 32;        swlim =3D audi= o_MIN (swlim, samples);

     &nb= sp;  while (swlim) { // P5: come b= ack again
         &n= bsp;  src =3D hw->conv_buf + rpos;
&nb= sp;           isamp=  =3D hw->wpos - rpos;
    &n= bsp;       /* XXX: <=3D&nb= sp;? */
         &nbs= p;  if (isamp <=3D 0) {
  &n= bsp;           &nbs= p; isamp =3D hw->samples - rpos;
 &nbs= p;          }

&nb= sp;           if&nb= sp;(!isamp) {
        &nbs= p;       break;
   &n= bsp;        }
   = ;         osamp =3D = ;swlim;

          = ;  if (audio_bug (AUDIO_FUNC, osamp <&nbs= p;0)) {
         &nbs= p;      dolog ("osamp=3D%d\n", osa= mp);
           =      return 0;
    &n= bsp;       }

   &= nbsp;        st_rate_flow (sw= ->rate, src, dst, &isamp, &osamp);
 = ;           swlim&n= bsp;-=3D osamp; // P4: nothing change when&n= bsp;swlim substract 0
      &nb= sp;     rpos =3D (rpos + isam= p) % hw->samples;
      &nbs= p;     dst +=3D osamp;
  &= nbsp;         ret +=3D&n= bsp;osamp;
          =   total +=3D isamp;
     &= nbsp;  }

        = if (!(hw->ctl_caps & VOICE_VOLUME_CAP)) {
&n= bsp;           mixe= ng_volume (sw->buf, ret, &sw->vol);
 &nbs= p;      }

    &nb= sp;   sw->clip (buf, sw->buf, ret);        sw->total_hw_samples_a= cquired +=3D total;
       = ; return ret << sw->info.shift;
 &nbs= p;  }


    #ANALYSIS:
 &nb= sp;  at position 1, P1:
   &nbs= p;/* Private data */
= struct rate {
uint64_t opos;
uint64_t opos_inc;
uint32_t ipos;  &nb= sp;            = ;   /* position in the input strea= m (integer) */
struct st_sample ilast;&nb= sp;         /* last = ;sample in the input stream */
};

    while (rate->ipos <=3D (= rate->opos >> 32)) { // P1: (rate-&= gt;opos >> 32) =3D 0xFFFFFFFF
  &nb= sp;     ilast =3D *ibuf++;
 &nb= sp;      rate->ipos++;
  &nb= sp;     /* See if we finished=  the input buffer yet */
   &nb= sp;    if (ibuf >=3D iend) {            g= oto the_end; // P2: goto the end
 &n= bsp;      }
    }
=     
    I dump the&n= bsp;value:
    (gdb) p *rate
 &nb= sp;  $45 =3D {opos =3D 18446744069687585005,=  opos_inc =3D 4674794335, ipos =3D 364929029= 2, ilast =3D {l =3D 0, r =3D 0}}    
    as u can&n= bsp;see, rate->opos =3D 18446744069687585005 =3D&nb= sp;0xFFFFFFFF1045A8ED, which higher part is 0xFFF= FFFFF
    rate->ipos with uint32 = type, which max value is 0xFFFFFFFF
 &nbs= p;  in the situation, (rate->ipos <=3D=  (rate->opos >> 32)) is definitely = true forever.
    
    = every time when the program break out a= t P2, go to P3, assign osamp to 0,=  return to audio_pcm_sw_read and swlim -&nbs= p;0 at P4, excute again at P5. so = the main thread repeats the same flow a= gain and again.
    
   = ; the follow datas maybe useful:
  &= nbsp; (gdb) p sw
$13 =3D (SWVoiceIn *) 0x7f5e59f9ca10
(gdb) p *sw
$14 =3D {card =3D 0x7f5e59fa05= 20, active =3D 1, info =3D {bits =3D&nb= sp;16, sign =3D 1, freq =3D 44100, ncha= nnels =3D 2, align =3D 3, shift =3D&nbs= p;2, bytes_per_second =3D 176400, 
swap_e= ndianness =3D 0}, ratio =3D 3946001203, rate=  =3D 0x7f5e5a83efd0, total_hw_samples_acquired =3D&nbs= p;70, buf =3D 0x7f5e5acd0e90, 
  clip =3D 0x7f5e56b98610 &= lt;clip_natural_int16_t_from_stereo>, hw =3D 0x7f5e5a15d= 1f0, name =3D 0x7f5e5a0f46c0 "adc", vol =3D&= nbsp;{mute =3D 0, r =3D 4294967296, l = =3D 4294967296}, 
&= nbsp; callback =3D {opaque =3D 0x7f5e59fa0690,&nb= sp;fn =3D 0x7f5e56c0d080 <hda_audio_input_cb>}, = entries =3D {le_next =3D 0x0, le_prev =3D&nb= sp;0x7f5e5a15d240}}

(gdb)=  p *hw
$32 =3D=  {enabled =3D 1, poll_mode =3D 0, info&= nbsp;=3D {bits =3D 16, sign =3D 1, freq=  =3D 48000, nchannels =3D 2, align =3D&= nbsp;3, shift =3D 2, bytes_per_second =3D 19= 2000, swap_endianness =3D 0}, 
  conv =3D 0x7f5e56b98540 &= lt;conv_natural_int16_t_to_stereo>, wpos =3D 736, t= otal_samples_captured =3D 607, ts_helper =3D 4294= 967776, conv_buf =3D 0x7f5e5a0b68f0, 
  samples =3D 1920,&nbs= p;sw_head =3D {lh_first =3D 0x7f5e59f9ca10}, ctl_= caps =3D 8, pcm_ops =3D 0x7f5e5736eaa0, entr= ies =3D {le_next =3D 0x0, le_prev =3D 0= x7f5e573cfd40}}


    #TRIED
  &= nbsp; 1. I am not sure if this err= or occured just because I snapshotted the&nb= sp;VM, but I really did 'snapshot operation'=  at that moment.
    
  = ;  2. If I change the value of&nbs= p;rate->opos from 18446744069687585005 to 1, t= he program run just fine: 
   &= nbsp;(gdb) p rate->opos
= $47 =3D 18446744069687585005
(gdb) p rate->opos =3D 1
$48 =3D 1
  &n= bsp; 
    3. I calculated the&n= bsp;value of opos/opos_inc =3D 18446744069687585005/46= 74794335 =3D 0xEB333333
    compared = ;with the normal situation, opos/opos_inc =3D&nbs= p;17544193733109040684/3946001203 =3D 0x10901A124  &nb= sp;
    (gdb) p *rate
  &nbs= p; $2 =3D {opos =3D 17544193733109040684, op= os_inc =3D 3946001203, ipos =3D 4084825920, = ilast =3D {l =3D 57737216, r =3D 635699= 20}}
    maybe the opos_inc is = incorrect.
    
    4. = qemu argument with '-soundhw hda'
   = ; 
    5. the same phenomenon:&= nbsp;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=3D685353

tha= nks!!!
=0A

=0A
=0A
weitidon= g220@163.com
=0A ------=_001_NextPart154264535768_=------