From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Nobin Mathew" Subject: Re: Any standard ALSA application for simultaneous capture and playabck ????? Date: Tue, 22 May 2007 14:23:54 +0530 Message-ID: <8d6898730705220153t4317d3a9q6ec6c02349762700@mail.gmail.com> References: <240497.52912.qm@web31012.mail.mud.yahoo.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_125649_11191717.1179824034500" Return-path: Received: from nz-out-0506.google.com (nz-out-0506.google.com [64.233.162.228]) by alsa0.perex.cz (Postfix) with ESMTP id 4CE68244E7 for ; Tue, 22 May 2007 10:53:56 +0200 (CEST) Received: by nz-out-0506.google.com with SMTP id l8so2189542nzf for ; Tue, 22 May 2007 01:53:55 -0700 (PDT) In-Reply-To: <240497.52912.qm@web31012.mail.mud.yahoo.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: alsa-devel-bounces@alsa-project.org Errors-To: alsa-devel-bounces@alsa-project.org To: Ciaccia Cc: alsa-devel@alsa-project.org List-Id: alsa-devel@alsa-project.org ------=_Part_125649_11191717.1179824034500 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline I have a single threaded ALSA application which does simultaneous capture and playback. But i am getting overflow error XRUN from capture side. I am attaching the code to this mail. Is there any problem with single threaded approach? Is there any global configuration for ALSA lib? When i run this app, ALSA state is getting corrupted, even aplay and arecord is not working properly after that. Any comments on this issue? Thanks in advance Nobin Mathew On 5/22/07, Ciaccia wrote: > > What are the complications in implementing simultaneous playback and > > capture in ALSA??? > > > I would like to add something to this post: what is the "best" way to > program a full duplex application? I would like to have an application > that does full-duplex, with the lowest possible latency and using less > CPU resource as possible. I tried different approaches, but I was not > completely satisfied with none of them.... > > > Here is what I tried: > -having two threads, one for playback and one for capture > -defining 2 callbacks with async_handles and do all the processing in the callback functions > (the last attempt) > -using poll() to wait for one of the streams to be ready (see attached file fullduplex.c) > > Could some of you look at the attached code (it is not generic and contains lots of asserts, but it's supposed to work only on one single machine) and tell me if the last approach using poll is well structured? > > The main loop looks as following: > > > while (1) { > > err = poll(ufds, 2, -1); > > > > for (i = 0; i < 2; i++) > > { > > if (snd_pcm_poll_descriptors_revents(handles[i], &ufds[i], 1, &revents) < 0) > > { > > printf("Error getting revents for %s\n", descriptors[i].name); > > exit(1); > > } > > > > if (revents & descriptors[i].poll_flag) > > { > > if (transfer_loop(handles[i], &first[i], descriptors[i].func) < 0) > > { > > printf("transfer_loop error for %s\n", descriptors[i].name); > > // TODO exit?!? > > } > > } > > } > > } > > and the transfer_loop is a modified version of the loop found in the ALSA examples (pcm.c and latency.c). > Is this strategy optimal in respect to low latency and low CPU usage? > > Every comment is greatly appreciated > Andrea > > > > > > ____________________________________________________________________________________Luggage? GPS? Comic books? > Check out fitting gifts for grads at Yahoo! Search > http://search.yahoo.com/search?fr=oni_on_mail&p=graduation+gifts&cs=bz > ------=_Part_125649_11191717.1179824034500 Content-Type: text/plain; name=Audio.c; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f204l4tv Content-Disposition: attachment; filename="Audio.c" LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CiAqIENvcHlyaWdodCAoYykgMjAwMiBJbXB1bHNlc29mdCBQdnQuIEx0ZC4JCQkgICAqCiAqCQkJ CQlBbGwgcmlnaHRzIHJlc2VydmVkCQkJCSAgICoKICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBOYW1lCQkJOglBdWRpby5jCiAqIERl c2NyaXB0aW9uCToJV3JhcHBlciBmdW5jdGlvbiB0byBhY2Nlc3MgQXVkaW8gZGF0YQogKiAgICAg ICAgICAgICAgICAgIG92ZXIgQmx1ZXRvb3RoIG1vZHVsZQogKgogKiBNb2R1bGUJCTogICBQaG9u ZUdXCiAqIEF1dGhvcgkJOiAgIE1heWFuawogKgogKiBSZXZpc2lvbiBObwk6ICAgJFJldmlzaW9u OiAxLjExICQKICogQ2hhbmdlZCBPbiAgIDogICAkRGF0ZTogMjAwMy8xMC8xMCAwNToxNzozOSAk CiAqIENoYW5nZWQgQnkgICA6ICAgJEF1dGhvcjoga2F1c2lrICQKICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovICAgCgojaW5jbHVkZSA8c3Rk aW8uaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxz dHJpbmcuaD4KI2luY2x1ZGUgPGZjbnRsLmg+CiNpbmNsdWRlIDxjdHlwZS5oPgojaW5jbHVkZSA8 ZXJybm8uaD4KCiNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KI2luY2x1ZGUgIkF1ZGlvLmgiCgojZGVm aW5lIERFQlVHX0xPRyBwcmludGYKI2RlZmluZSBERUJVR19FUlIgcHJpbnRmCiNkZWZpbmUgU05E X1BDTV9OQU1FX0RFRkFVTFQgImRlZmF1bHQiCiNkZWZpbmUgTU9OTyAxCiNkZWZpbmUgU0FNUExF XzgwMDBIWiA4MDAwCgpzdGF0aWMgaW50IGdiUGNtT3BlbiA9IDAgOwpzdGF0aWMgbXlfc25kX3Bj bSB1UGNtOwppbnQgc3RhcnRfZGVsYXkgPSAwOwpzdGF0aWMgc2l6ZV90IGdfYml0c19wZXJfc2Ft cGxlOwoKLy8jZGVmaW5lIFVTRV9ORVdBUEkKI2RlZmluZSBDQVBUVVJFX0VOQUJMRUQgICAgCiNp Zm5kZWYgVVNFX05FV0FQSQp2b2lkIHNldF9wYXJhbXMoc25kX3BjbV90ICpwdUhhbmRsZSwgaW50 IGlGb3JtYXQpOwojZW5kaWYKCnN0YXRpYwppbnQgTXlTbmRQY21PcGVuKG15X3NuZF9wY20gKnB1 UGNtLGludCBpQ2FyZCkKewogICAgaW50IGlSZXN1bHQ7CiAgICBpZiAoKGlSZXN1bHQgPSBzbmRf cGNtX29wZW4oJnB1UGNtLT5wbGF5YmFjaywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgU05EX1BDTV9OQU1FX0RFRkFVTFQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFNORF9QQ01fU1RSRUFNX1BMQVlCQUNLLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAwKSkgPCAwKSAKICAgIHsKICAgICAgICBERUJVR19FUlIoIkVycm9yOiBhdWRpbyBvcGVuIGVy cm9yOiAlc1xuIiwgc25kX3N0cmVycm9yKGlSZXN1bHQpKTsKICAgICAgICByZXR1cm4gLTE7CiAg ICB9CiAgIAogICAgc25kX3BjbV9pbmZvX2FsbG9jYSgmcHVQY20tPnBsYXliYWNrX2luZm8pOwog ICAgaWYgKHNuZF9wY21faW5mbyhwdVBjbS0+cGxheWJhY2sscHVQY20tPnBsYXliYWNrX2luZm8p IDwgMCkKICAgIHsKICAgICAgICBERUJVR19FUlIoIkVycm9yIGluIGluZm9cbiIpOwogICAgICAg IHJldHVybiAtMTsKICAgIH0KICAgCiNpZmRlZiBDQVBUVVJFX0VOQUJMRUQgICAgCiAgICBpZiAo KGlSZXN1bHQgPSBzbmRfcGNtX29wZW4oJnB1UGNtLT5jYXB0dXJlLCAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBTTkRfUENNX05BTUVfREVGQVVMVCwgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgU05EX1BDTV9TVFJFQU1fQ0FQVFVSRSwgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMCkpIDwgMCkgCiAgICB7CiAgICAgICAgREVCVUdfRVJSKCJFcnJvcjog YXVkaW8gb3BlbiBlcnJvcjogJXNcbiIsIHNuZF9zdHJlcnJvcihpUmVzdWx0KSk7CiAgICAgICAg cmV0dXJuIC0xOwogICAgfQogICAKICAgIHNuZF9wY21faW5mb19hbGxvY2EoJnB1UGNtLT5jYXB0 dXJlX2luZm8pOwogICAgaWYgKHNuZF9wY21faW5mbyhwdVBjbS0+Y2FwdHVyZSxwdVBjbS0+Y2Fw dHVyZV9pbmZvKSA8IDApCiAgICB7CiAgICAgICAgREVCVUdfRVJSKCJFcnJvciBpbiBpbmZvXG4i KTsKICAgICAgICByZXR1cm4gLTE7CiAgICB9ICAKICAgIC8vc25kX3BjbV9kcmFpbihwdVBjbS0+ Y2FwdHVyZSk7CiNlbmRpZgogICAgc25kX3BjbV9kcmFpbihwdVBjbS0+cGxheWJhY2spOwogICAg cmV0dXJuKDApOwp9CgpzdGF0aWMKaW50IE15U2V0UGNtUGFyYW0obXlfc25kX3BjbSAqcHVQY20s IGludCBpRnJhZ21lbnQsaW50IGlGb3JtYXQpCnsKI2lmZGVmIFVTRV9ORVdBUEkKICAgIGludCBp UmV0ID0gLTE7CiAgICBpUmV0ID0gc25kX3BjbV9zZXRfcGFyYW1zKHB1UGNtLT5wbGF5YmFjaywK ICAgICAgICAgICAgICAgICAgICAgICBpRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgIFNO RF9QQ01fQUNDRVNTX1JXX0lOVEVSTEVBVkVELAoJCSAgICAgICAgICAgICAgIE1PTk8sCgkJICAg ICAgICAgICAgICAgU0FNUExFXzgwMDBIWiwKCQkgICAgICAgICAgICAgICAwLypSZXNhbXBsaW5n Ki8sCgkJICAgICAgICAgICAgICAgMC8qTGF0ZW5jeSovKTsKICAgIGlmKGlSZXQgPCAwKQogICAg ewogICAgICAgIHByaW50Zigic25kX3BjbV9zZXRfcGFyYW1zKHBsYXliYWNrKSByZXR1cm5lZCBl cnJvci4gJWRcbiIsIGlSZXQpOwogICAgICAgIHJldHVybiAtMTsKICAgIH0KICAgIAogICAgZ19i aXRzX3Blcl9zYW1wbGUgPSBzbmRfcGNtX2Zvcm1hdF9waHlzaWNhbF93aWR0aChpRm9ybWF0KTsK CiNpZmRlZiBDQVBUVVJFX0VOQUJMRUQgICAgCiAgICBpUmV0ID0gc25kX3BjbV9zZXRfcGFyYW1z KHB1UGNtLT5jYXB0dXJlLAogICAgICAgICAgICAgICAgICAgICAgIGlGb3JtYXQsCiAgICAgICAg ICAgICAgICAgICAgICAgU05EX1BDTV9BQ0NFU1NfUldfSU5URVJMRUFWRUQsCgkJICAgICAgICAg ICAgICAgTU9OTywKCQkgICAgICAgICAgICAgICBTQU1QTEVfODAwMEhaLAoJCSAgICAgICAgICAg ICAgIDAvKlJlc2FtcGxpbmcqLywKCQkgICAgICAgICAgICAgICAwLypMYXRlbmN5Ki8pOyAKICAg IGlmKGlSZXQgPCAwKQogICAgewogICAgICAgIHByaW50Zigic25kX3BjbV9zZXRfcGFyYW1zKGNh cHR1cmUpIHJldHVybmVkIGVycm9yLiAlZFxuIiwgaVJldCk7CiAgICAgICAgcmV0dXJuIC0xOwog ICAgfQojZW5kaWYKICAgIHNuZF9wY21fZHJhaW4ocHVQY20tPnBsYXliYWNrKTsKCiAgICBwcmlu dGYoIk15U2V0UGNtUGFyYW0oKTpCZWZvcmUgUHJlcGFyZVN0YXRlOiVkXG4iLHNuZF9wY21fc3Rh dGUocHVQY20tPnBsYXliYWNrKSk7CiAgICBpZiAoc25kX3BjbV9wcmVwYXJlKHB1UGNtLT5wbGF5 YmFjaykgPCAwKSAKICAgIHsKICAgICAgICBERUJVR19FUlIoInVuYWJsZSB0byBwcmVwYXJlIGNo YW5uZWxcbiIpOwogICAgICAgIHJldHVybigtMSk7CiAgICB9CiAgICBwcmludGYoIk15U2V0UGNt UGFyYW0oKTphZnRlciBwcmVwYXJlLVN0YXRlOiVkXG4iLHNuZF9wY21fc3RhdGUocHVQY20tPnBs YXliYWNrKSk7CiAgICAKI2lmZGVmIENBUFRVUkVfRU5BQkxFRCAgICAKICAgIHNuZF9wY21fZHJh aW4ocHVQY20tPmNhcHR1cmUpOwogICAgaWYgKHNuZF9wY21fcHJlcGFyZShwdVBjbS0+Y2FwdHVy ZSk8MCkKICAgIHsKCSAgICBERUJVR19FUlIoInVuYWJsZSB0byBzZXQgcmVjb3JkaW5nIGNoYW5u ZWwgcGFyYW1zXG4iKTsKICAgIAlyZXR1cm4oLTEpOwogICAgfQojZW5kaWYKICAgIGFsc2FfcHJp bnRfaHdfaW5mbygpOwojZWxzZQogICAgCiAgICBzZXRfcGFyYW1zKHB1UGNtLT5wbGF5YmFjaywg aUZvcm1hdCk7CiAgICBzdGFydF9kZWxheSA9IDE7CiAgICBzZXRfcGFyYW1zKHB1UGNtLT5jYXB0 dXJlLCBpRm9ybWF0KTsKI2VuZGlmCiAgICAKICAgIHJldHVybigwKTsKfQoKdm9pZCBhbHNhX3By aW50X2h3X2luZm8oKQp7CiAgICBteV9zbmRfcGNtICpwdVBjbSA9ICZ1UGNtOwogICAgc25kX3Bj bV91ZnJhbWVzX3QgdUJ1ZmZlclNpemUgPSAwOwogICAgc25kX3BjbV91ZnJhbWVzX3QgdVBlcmlv ZFNpemUgPSAwOyAgIAogICAgdW5zaWduZWQgaW50IGlCdWZmZXJUaW1lID0gMCwgaVBlcmlvZFRp bWUgPSAwOyAgIAogICAgdW5zaWduZWQgaW50IGlQZXJpb2RzID0gMDsKICAgIGludCBpRXJyID0g MDsKICAgIGludCBkaXIgPSAwOwoKICAgIHNuZF9wY21faHdfcGFyYW1zX3QgKnBhcmFtczsKICAg IHNuZF9wY21faHdfcGFyYW1zX3QgKmNwYXJhbXM7CiAgICBzbmRfcGNtX2h3X3BhcmFtc19hbGxv Y2EoJnBhcmFtcyk7CiAgICBzbmRfcGNtX2h3X3BhcmFtc19hbGxvY2EoJmNwYXJhbXMpOwoKICAg IHNuZF9wY21fZ2V0X3BhcmFtcyhwdVBjbS0+cGxheWJhY2ssJnVCdWZmZXJTaXplLCAmdVBlcmlv ZFNpemUpOwkgCiAgICBwcmludGYoInNuZF9wY21fZ2V0X3BhcmFtcyBmb3IgcGxheWJhY2sgcmV0 dXJuZWQgdGhlIHZhbHVlcyBhcyAweCV4LCAweCV4XG4iLHVCdWZmZXJTaXplLHVQZXJpb2RTaXpl KTsKICAgIHNuZF9wY21fZ2V0X3BhcmFtcyhwdVBjbS0+Y2FwdHVyZSwmdUJ1ZmZlclNpemUsICZ1 UGVyaW9kU2l6ZSk7CSAKICAgIHByaW50Zigic25kX3BjbV9nZXRfcGFyYW1zIGZvciBjYXB0dXJl IHJldHVybmVkIHRoZSB2YWx1ZXMgYXMgMHgleCwgMHgleFxuIix1QnVmZmVyU2l6ZSx1UGVyaW9k U2l6ZSk7CgogICAgaUVyciA9IHNuZF9wY21faHdfcGFyYW1zX2FueShwdVBjbS0+cGxheWJhY2ss IHBhcmFtcyk7CiAgICBpZiAoaUVyciA8IDApIAogICAgewogICAgICAgIHByaW50ZigiQnJva2Vu IGNvbmZpZ3VyYXRpb24gZm9yIHRoaXMgUENNOiBubyBjb25maWd1cmF0aW9ucyBhdmFpbGFibGVc biIpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIAogICAgc25kX3BjbV9od19wYXJhbXNfZ2V0 X3BlcmlvZF9zaXplKHBhcmFtcywgJnVQZXJpb2RTaXplLCAmZGlyKTsKICAgIHNuZF9wY21faHdf cGFyYW1zX2dldF9wZXJpb2RfdGltZShwYXJhbXMsICZpUGVyaW9kVGltZSwgJmRpcik7CiAgICBz bmRfcGNtX2h3X3BhcmFtc19nZXRfcGVyaW9kcyhwYXJhbXMsICZpUGVyaW9kcywgJmRpcik7CiAg ICBzbmRfcGNtX2h3X3BhcmFtc19nZXRfYnVmZmVyX3NpemUocGFyYW1zLCAmdUJ1ZmZlclNpemUp OyAKICAgIHNuZF9wY21faHdfcGFyYW1zX2dldF9idWZmZXJfdGltZShwYXJhbXMsICZpQnVmZmVy VGltZSwgJmRpcik7IAogICAgcHJpbnRmKCJhbHNhX3ByaW50X2h3X2luZm8oKTogIGJ1ZmZlcnNp emU6MHgleCBwZXJpb2RzaXplOjB4JXhcbiIKICAgICAgICAgICAgImJ1ZmZlcnRpbWU6MCV4IHBl cmlvZHRpbWU6JXggcGVyaW9kczoweCV4XG4iLAogICAgICAgICAgICB1QnVmZmVyU2l6ZSwgdVBl cmlvZFNpemUsaUJ1ZmZlclRpbWUsIGlQZXJpb2RUaW1lLCBpUGVyaW9kcyk7CiAgICAKICAgIGlF cnIgPSBzbmRfcGNtX2h3X3BhcmFtc19hbnkocHVQY20tPmNhcHR1cmUsIGNwYXJhbXMpOwogICAg aWYgKGlFcnIgPCAwKSAKICAgIHsKICAgICAgICBwcmludGYoIkJyb2tlbiBjb25maWd1cmF0aW9u IGZvciB0aGlzIFBDTTogbm8gY29uZmlndXJhdGlvbnMgYXZhaWxhYmxlXG4iKTsKICAgICAgICBy ZXR1cm47CiAgICB9CiAgICBzbmRfcGNtX2h3X3BhcmFtc19nZXRfcGVyaW9kX3NpemUoY3BhcmFt cywgJnVQZXJpb2RTaXplLCAmZGlyKTsKICAgIHNuZF9wY21faHdfcGFyYW1zX2dldF9wZXJpb2Rf dGltZShjcGFyYW1zLCAmaVBlcmlvZFRpbWUsICZkaXIpOwogICAgc25kX3BjbV9od19wYXJhbXNf Z2V0X3BlcmlvZHMoY3BhcmFtcywgJmlQZXJpb2RzLCAmZGlyKTsKICAgIHNuZF9wY21faHdfcGFy YW1zX2dldF9idWZmZXJfc2l6ZShjcGFyYW1zLCAmdUJ1ZmZlclNpemUpOyAKICAgIHNuZF9wY21f aHdfcGFyYW1zX2dldF9idWZmZXJfdGltZShjcGFyYW1zLCAmaUJ1ZmZlclRpbWUsICZkaXIpOyAK ICAgIHByaW50ZigiYWxzYV9wcmludF9od19pbmZvKCk6ICBidWZmZXJzaXplOjB4JXggcGVyaW9k c2l6ZToweCV4XG4iCiAgICAgICAgICAgICJidWZmZXJ0aW1lOjAleCBwZXJpb2R0aW1lOiV4IHBl cmlvZHM6MHgleFxuIiwKICAgICAgICAgICAgdUJ1ZmZlclNpemUsIHVQZXJpb2RTaXplLGlCdWZm ZXJUaW1lLCBpUGVyaW9kVGltZSwgaVBlcmlvZHMpOwoKfQoKaW50IHdhaXRfZm9yX3BjbV9yZWFk eSgpCnsKICAgIG15X3NuZF9wY20gKnB1UGNtID0gJnVQY207CiAgICBzbmRfcGNtX3dhaXQocHVQ Y20tPnBsYXliYWNrLCAxMCk7CiAgICBzbmRfcGNtX3dhaXQocHVQY20tPmNhcHR1cmUsIDEwKTsK fQppbnQgUmVhZEZyb21BbHNhKHZvaWQgKmJ1ZiwgaW50IGxlbikKewogICAgbXlfc25kX3BjbSAq cHVQY20gPSAmdVBjbTsKICAgIHNuZF9wY21fdWZyYW1lc190IHVOdW1GcmFtZXMgPSAobGVuICog OCkvKGdfYml0c19wZXJfc2FtcGxlKjEpOwogICAgaWYgKGdiUGNtT3BlbikKICAgIHsKICAgICAg ICBpbnQgaUxlbjsKICAgICAgICBzdGF0aWMgaWlMZW4gPSAwOwogICAgICAgIGlMZW4gPSBzbmRf cGNtX21tYXBfcmVhZGkocHVQY20tPmNhcHR1cmUsIGJ1ZiwgdU51bUZyYW1lcyk7CiAgICAgICAg aWYoaUxlbiA9PSAtRUFHQUlOKQogICAgICAgIHsKICAgICAgICAgICAgLyogV2FpdCBmb3IgYSBt YXggb2YgMTAgbXMgZm9yIHBjbSB0byBnZXQgcmVhZHkvYmUgaW4gYSBzYW5lIHN0YXRlKi8KICAg ICAgICAgICAgcHJpbnRmKCJSZWFkRnJvbUFsc2EoKTogcmVhZCBlcnJvciBFQUdBSU5cbiIpOwog ICAgICAgICAgICBwcmludGYoIldyaXRlVG9BbHNhKCk6U3RhdGU6JWRcbiIsc25kX3BjbV9zdGF0 ZShwdVBjbS0+Y2FwdHVyZSkpOwogICAgICAgICAgICBzbmRfcGNtX3dhaXQocHVQY20tPnBsYXli YWNrLCAxMCk7CiAgICAgICAgICAgIHJldHVybiBpTGVuOwogICAgICAgIH0KICAgICAgICBlbHNl IGlmKGlMZW4gPT0gLUVQSVBFKQogICAgICAgIHsKICAgICAgICAgICAgcHJpbnRmKCJSZWFkRnJv bUFsc2EoKTpTdGF0ZTolZCwgaWlMZW49JWRcbiIsc25kX3BjbV9zdGF0ZShwdVBjbS0+Y2FwdHVy ZSksaWlMZW4pOwogICAgICAgICAgICBpaUxlbiA9IDA7CiAgICAgICAgICAgIHNuZF9wY21fZHJh aW4ocHVQY20tPmNhcHR1cmUpOwogICAgICAgICAgICBpZiAoc25kX3BjbV9wcmVwYXJlKHB1UGNt LT5jYXB0dXJlKTwwKQogICAgICAgICAgICB7CgkgICAgICAgICAgICBERUJVR19FUlIoInVuYWJs ZSB0byBzZXQgcmVjb3JkaW5nIGNoYW5uZWwgcGFyYW1zXG4iKTsKICAgICAgICAgICAgCXJldHVy biAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHByaW50ZigiUmVhZEZyb21BbHNhKCk6U3Rh dGU6JWRcbiIsc25kX3BjbV9zdGF0ZShwdVBjbS0+Y2FwdHVyZSkpOwogICAgICAgICAgICByZXR1 cm4gMDsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZihpTGVuIDw9IDApCiAgICAgICAgewogICAg ICAgICAgICBwcmludGYoIlJlYWRGcm9tQWxzYSgpOlN0YXRlOiVkXG4iLHNuZF9wY21fc3RhdGUo cHVQY20tPmNhcHR1cmUpKTsKICAgICAgICAgICAgcHJpbnRmKCJSZWFkRnJvbUFsc2EoKTogcmVh ZCBlcnJvciAlZFxuIiwgaUxlbik7CiAgICAgICAgICAgIHJldHVybiBpTGVuOwogICAgICAgIH0K ICAgICAgICBpaUxlbiArPSBpTGVuOwogICAgICAgIHJldHVybiBpTGVuKigoZ19iaXRzX3Blcl9z YW1wbGUqMSkvOCk7CiAgICB9CiAgICBlbHNlCiAgICAgICAgcmV0dXJuIC1FQkFERjsKfQoKaW50 IFdyaXRlVG9BbHNhKHZvaWQgKmJ1ZiwgaW50IGxlbikKewogICAgbXlfc25kX3BjbSAqcHVQY20g PSAmdVBjbTsKICAgIHNuZF9wY21fdWZyYW1lc190IHVOdW1GcmFtZXMgPSAobGVuICogOCkvKGdf Yml0c19wZXJfc2FtcGxlKjEpOwogICAgLy9wcmludGYoIldyaXRlVG9BbHNhKCk6U3RhdGU6JWRc biIsc25kX3BjbV9zdGF0ZShwdVBjbS0+cGxheWJhY2spKTsKICAgIGlmIChnYlBjbU9wZW4pCiAg ICB7CiAgICAgICAgaW50IGlMZW47CiAgICAgICAgc3RhdGljIGlpTGVuID0gMDsKICAgICAgICBp TGVuID0gc25kX3BjbV9tbWFwX3dyaXRlaShwdVBjbS0+cGxheWJhY2ssIGJ1ZiwgdU51bUZyYW1l cyk7CiAgICAgICAgaWYoaUxlbiA9PSAtRVBJUEUpCiAgICAgICAgewogICAgICAgICAgICBwcmlu dGYoIldyaXRlVG9BbHNhKCk6U3RhdGU6JWQsIGlpTGVuPSVkXG4iLHNuZF9wY21fc3RhdGUocHVQ Y20tPnBsYXliYWNrKSxpaUxlbik7CiAgICAgICAgICAgIGlpTGVuID0gMDsKICAgICAgICAgICAg c25kX3BjbV9kcmFpbihwdVBjbS0+cGxheWJhY2spOwogICAgICAgICAgICBpZiAoc25kX3BjbV9w cmVwYXJlKHB1UGNtLT5wbGF5YmFjayk8MCkKICAgICAgICAgICAgewogICAgICAgICAgICAJLy9y ZXR1cm4gMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBwcmludGYoIldyaXRlVG9BbHNhKCk6 U3RhdGU6JWRcbiIsc25kX3BjbV9zdGF0ZShwdVBjbS0+cGxheWJhY2spKTsKICAgICAgICAgICAg cmV0dXJuIDA7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoaUxlbiA8IDApCiAgICAgICAgewog ICAgICAgICAgICByZXR1cm4gaUxlbjsKICAgICAgICB9CiAgICAgICAgaWlMZW4gKz0gaUxlbjsK ICAgICAgICByZXR1cm4gaUxlbiooKGdfYml0c19wZXJfc2FtcGxlKjEpLzgpOwogICAgfQogICAg ZWxzZQogICAgICAgIHJldHVybiAtRUJBREY7Cn0Kc3RhdGljIHNuZF9vdXRwdXRfdCAqbG9nOwoK aW50IFN0YXJ0QXVkaW8oaW50IGlGcmFnbWVudCwgaW50IGlGb3JtYXQpCnsKICAgIG15X3NuZF9w Y20gKnB1UGNtID0gJnVQY207CiAgICBpbnQgZXJyOwogICAgCgllcnIgPSBzbmRfb3V0cHV0X3N0 ZGlvX2F0dGFjaCgmbG9nLCBzdGRlcnIsIDApOwoJYXNzZXJ0KGVyciA+PSAwKTsKCiAgICAKICAg IGlmICghZ2JQY21PcGVuKQogICAgewogICAgICAgIGlmIChNeVNuZFBjbU9wZW4ocHVQY20sMCkg PCAwKQogICAgICAgIHJldHVybiAtMTsKICAgICAgICAKICAgICAgICBpZiAoTXlTZXRQY21QYXJh bShwdVBjbSwgaUZyYWdtZW50LGlGb3JtYXQpIDwgMCkKICAgICAgICB7CiAgICAgICAgICAgIHBy aW50ZigiTXlTZXRQY21QYXJhbSgpOiBGYWlsZWRcbiIpOwogICAgICAgICAgICByZXR1cm4gLTE7 CiAgICAgICAgfQogICAgICAgIGdiUGNtT3BlbiA9IDEgOwogICAgfQogICAgZWxzZQogICAgICAg IERFQlVHX0VSUigiQXVkaW8gRGV2aWNlIGlzIGFscmVhZHkgb3BlbmVkXG4iKTsKICAgIHJldHVy biAwOwp9CgppbnQgU3RvcEF1ZGlvKCkKewogICAgbXlfc25kX3BjbSAqcHVQY20gPSAmdVBjbTsK CiAgICBERUJVR19MT0coIkNsb3NpbmcgQXVkaW8gZGV2aWNlXG4iKTsKICAgIGlmIChnYlBjbU9w ZW4pCiAgICB7CiAgICAgICAgZ2JQY21PcGVuID0gMCA7CiAgICAgICAgc25kX3BjbV9kcmFpbihw dVBjbS0+cGxheWJhY2spOwogICAgICAgIHNuZF9wY21fZHJhaW4ocHVQY20tPmNhcHR1cmUpOwog ICAgICAgIHNuZF9wY21fY2xvc2UocHVQY20tPnBsYXliYWNrKTsKICAgICAgICBzbmRfcGNtX2Ns b3NlKHB1UGNtLT5jYXB0dXJlKTsKICAgIH0KICAgIHNuZF9vdXRwdXRfY2xvc2UobG9nKTsKICAg IHNuZF9jb25maWdfdXBkYXRlX2ZyZWVfZ2xvYmFsKCk7CiAgICByZXR1cm4gMDsKfQoKI2lmbmRl ZiBVU0VfTkVXQVBJIC8qIEFwbGF5IHNldCBwYXJhbXMuLiBzdG9yaW5nIGZvciBhZHZlcnNpdHkg OikgKi8Kdm9pZCBzZXRfcGFyYW1zKHNuZF9wY21fdCAqcHVIYW5kbGUsIGludCBpRm9ybWF0KQp7 CiAgICBzbmRfcGNtX3VmcmFtZXNfdCBjaHVua19zaXplID0gMDsKICAgIHVuc2lnbmVkIHBlcmlv ZF90aW1lID0gMDsKICAgIHVuc2lnbmVkIGJ1ZmZlcl90aW1lID0gMDsKICAgIHNuZF9wY21fdWZy YW1lc190IHBlcmlvZF9mcmFtZXMgPSAwOwogICAgc25kX3BjbV91ZnJhbWVzX3QgYnVmZmVyX2Zy YW1lcyA9IDA7CiAgICB1bnNpZ25lZCBpbnQgc2xlZXBfbWluID0gMDsKICAgIGludCBhdmFpbF9t aW4gPSAtMTsKICAgIGludCBtbWFwX2ZsYWcgPSAxOwogICAgaW50IHN0b3BfZGVsYXkgPSAwOwog ICAgc2l6ZV90IGJpdHNfcGVyX2ZyYW1lOwogICAgc2l6ZV90IGNodW5rX2J5dGVzOwoKCXNuZF9w Y21faHdfcGFyYW1zX3QgKnBhcmFtczsKCXNuZF9wY21fc3dfcGFyYW1zX3QgKnN3cGFyYW1zOwoJ c25kX3BjbV91ZnJhbWVzX3QgYnVmZmVyX3NpemU7CglpbnQgZXJyOwoJc2l6ZV90IG47CglzbmRf cGNtX3VmcmFtZXNfdCB4ZmVyX2FsaWduOwoJdW5zaWduZWQgaW50IHJhdGU7CglzbmRfcGNtX3Vm cmFtZXNfdCBzdGFydF90aHJlc2hvbGQsIHN0b3BfdGhyZXNob2xkOwoJc25kX3BjbV9od19wYXJh bXNfYWxsb2NhKCZwYXJhbXMpOwoJc25kX3BjbV9zd19wYXJhbXNfYWxsb2NhKCZzd3BhcmFtcyk7 CgllcnIgPSBzbmRfcGNtX2h3X3BhcmFtc19hbnkocHVIYW5kbGUsIHBhcmFtcyk7CglpZiAoZXJy IDwgMCkgewoJCXByaW50ZigiQnJva2VuIGNvbmZpZ3VyYXRpb24gZm9yIHRoaXMgUENNOiBubyBj b25maWd1cmF0aW9ucyBhdmFpbGFibGUiKTsKICAgICAgICByZXR1cm47Cgl9CiAgICAgICAJaWYo bW1hcF9mbGFnKQoJewoJc25kX3BjbV9hY2Nlc3NfbWFza190ICptYXNrID0gYWxsb2NhKHNuZF9w Y21fYWNjZXNzX21hc2tfc2l6ZW9mKCkpOwoJc25kX3BjbV9hY2Nlc3NfbWFza19ub25lKG1hc2sp OwoJc25kX3BjbV9hY2Nlc3NfbWFza19zZXQobWFzaywgU05EX1BDTV9BQ0NFU1NfTU1BUF9JTlRF UkxFQVZFRCk7CglzbmRfcGNtX2FjY2Vzc19tYXNrX3NldChtYXNrLCBTTkRfUENNX0FDQ0VTU19N TUFQX05PTklOVEVSTEVBVkVEKTsKCXNuZF9wY21fYWNjZXNzX21hc2tfc2V0KG1hc2ssIFNORF9Q Q01fQUNDRVNTX01NQVBfQ09NUExFWCk7CgllcnIgPSBzbmRfcGNtX2h3X3BhcmFtc19zZXRfYWNj ZXNzX21hc2socHVIYW5kbGUsIHBhcmFtcywgbWFzayk7Cgl9CgkKICAgICAgIAkKLy8gICAgZXJy ID0gc25kX3BjbV9od19wYXJhbXNfc2V0X2FjY2VzcyhwdUhhbmRsZSwgcGFyYW1zLAovLwkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNORF9QQ01fQUNDRVNTX1JXX0lOVEVSTEVB VkVEKTsKCWlmIChlcnIgPCAwKSB7CgkJcHJpbnRmKCJBY2Nlc3MgdHlwZSBub3QgYXZhaWxhYmxl XG4iKTsKICAgICAgICByZXR1cm47Cgl9CgllcnIgPSBzbmRfcGNtX2h3X3BhcmFtc19zZXRfZm9y bWF0KHB1SGFuZGxlLCBwYXJhbXMsIGlGb3JtYXQpOwoJaWYgKGVyciA8IDApIHsKCQlwcmludGYo IlNhbXBsZSBmb3JtYXQgbm9uIGF2YWlsYWJsZVxuIik7CiAgICAgICAgcmV0dXJuOwoJfQoJZXJy ID0gc25kX3BjbV9od19wYXJhbXNfc2V0X2NoYW5uZWxzKHB1SGFuZGxlLCBwYXJhbXMsIDEpOwoJ aWYgKGVyciA8IDApIHsKCQlwcmludGYoIkNoYW5uZWxzIGNvdW50IG5vbiBhdmFpbGFibGUiKTsK ICAgICAgICByZXR1cm47Cgl9CgoJcmF0ZSA9IFNBTVBMRV84MDAwSFo7CgllcnIgPSBzbmRfcGNt X2h3X3BhcmFtc19zZXRfcmF0ZV9uZWFyKHB1SGFuZGxlLCBwYXJhbXMsICZyYXRlLCAwKTsKCQoJ aWYgKGJ1ZmZlcl90aW1lID09IDAgJiYgYnVmZmVyX2ZyYW1lcyA9PSAwKQoJewoJZXJyID0gc25k X3BjbV9od19wYXJhbXNfZ2V0X2J1ZmZlcl90aW1lX21heChwYXJhbXMsCgkJCQkJCQkgICAgJmJ1 ZmZlcl90aW1lLCAwKTsKCQlhc3NlcnQoZXJyID49IDApOwoJCWlmIChidWZmZXJfdGltZSA+IDUw MDAwMCkKCQkJYnVmZmVyX3RpbWUgPSA1MDAwMDA7Cgl9CiAgICAgICAgcHJpbnRmKCJBTFNBIDog QnVmZmVyVGltZSA9ICVkXG4iLGJ1ZmZlcl90aW1lKTsKCWlmIChwZXJpb2RfdGltZSA9PSAwICYm IHBlcmlvZF9mcmFtZXMgPT0gMCkgewoJCWlmIChidWZmZXJfdGltZSA+IDApCgkJCXBlcmlvZF90 aW1lID0gYnVmZmVyX3RpbWUgLyA0OwoJCWVsc2UKCQkJcGVyaW9kX2ZyYW1lcyA9IGJ1ZmZlcl9m cmFtZXMgLyA0OwoJfQogICAgcHJpbnRmKCJBTFNBIDogcGVyaW9kX3RpbWU9JXgsIHBlcmlvZF9m cmFtZXM9JXgsIGJ1ZmZlcl90aW1lPSV4LCBidWZmZXJfZnJhbWVzPSV4XG4iLAogICAgICAgICAg ICBwZXJpb2RfdGltZSxwZXJpb2RfZnJhbWVzLGJ1ZmZlcl90aW1lLGJ1ZmZlcl9mcmFtZXMpOwoJ aWYgKHBlcmlvZF90aW1lID4gMCkKCQllcnIgPSBzbmRfcGNtX2h3X3BhcmFtc19zZXRfcGVyaW9k X3RpbWVfbmVhcihwdUhhbmRsZSwgcGFyYW1zLAoJCQkJCQkJICAgICAmcGVyaW9kX3RpbWUsIDAp OwoJZWxzZQoJCWVyciA9IHNuZF9wY21faHdfcGFyYW1zX3NldF9wZXJpb2Rfc2l6ZV9uZWFyKHB1 SGFuZGxlLCBwYXJhbXMsCgkJCQkJCQkgICAgICZwZXJpb2RfZnJhbWVzLCAwKTsKCWFzc2VydChl cnIgPj0gMCk7CglpZiAoYnVmZmVyX3RpbWUgPiAwKSB7CgkJZXJyID0gc25kX3BjbV9od19wYXJh bXNfc2V0X2J1ZmZlcl90aW1lX25lYXIocHVIYW5kbGUsIHBhcmFtcywKCQkJCQkJCSAgICAgJmJ1 ZmZlcl90aW1lLCAwKTsKCX0gZWxzZSB7CgkJZXJyID0gc25kX3BjbV9od19wYXJhbXNfc2V0X2J1 ZmZlcl9zaXplX25lYXIocHVIYW5kbGUsIHBhcmFtcywKCQkJCQkJCSAgICAgJmJ1ZmZlcl9mcmFt ZXMpOwoJfQoJYXNzZXJ0KGVyciA+PSAwKTsKCWVyciA9IHNuZF9wY21faHdfcGFyYW1zKHB1SGFu ZGxlLCBwYXJhbXMpOwoJaWYgKGVyciA8IDApIHsKCQlwcmludGYoIlVuYWJsZSB0byBpbnN0YWxs IGh3IHBhcmFtczoiKTsKICAgICAgICByZXR1cm47Cgl9CglzbmRfcGNtX2h3X3BhcmFtc19nZXRf cGVyaW9kX3NpemUocGFyYW1zLCAmY2h1bmtfc2l6ZSwgMCk7CglzbmRfcGNtX2h3X3BhcmFtc19n ZXRfYnVmZmVyX3NpemUocGFyYW1zLCAmYnVmZmVyX3NpemUpOwoJaWYgKGNodW5rX3NpemUgPT0g YnVmZmVyX3NpemUpIHsKCQlwcmludGYoIkNhbid0IHVzZSBwZXJpb2QgZXF1YWwgdG8gYnVmZmVy IHNpemUgKCVsdSA9PSAlbHUpIiwKCQkgICAgICBjaHVua19zaXplLCBidWZmZXJfc2l6ZSk7CiAg ICAgICAgcmV0dXJuOwoJfQoJc25kX3BjbV9zd19wYXJhbXNfY3VycmVudChwdUhhbmRsZSwgc3dw YXJhbXMpOwoJZXJyID0gc25kX3BjbV9zd19wYXJhbXNfZ2V0X3hmZXJfYWxpZ24oc3dwYXJhbXMs ICZ4ZmVyX2FsaWduKTsKCWlmIChlcnIgPCAwKSB7CgkJcHJpbnRmKCJVbmFibGUgdG8gb2J0YWlu IHhmZXIgYWxpZ25cbiIpOwogICAgICAgIHJldHVybjsKCX0KCQoJaWYgKHNsZWVwX21pbikKCQl4 ZmVyX2FsaWduID0gMTsKCQoJZXJyID0gc25kX3BjbV9zd19wYXJhbXNfc2V0X3NsZWVwX21pbihw dUhhbmRsZSwgc3dwYXJhbXMsCgkJCQkJICAgICAgc2xlZXBfbWluKTsKCWFzc2VydChlcnIgPj0g MCk7CglpZihhdmFpbF9taW4gPCAwKQoJCW4gPSBjaHVua19zaXplOwoJZWxzZSAKCQluID0gKGRv dWJsZSkgcmF0ZSAqIGF2YWlsX21pbi8xMDAwMDAwOwoKCWVyciA9IHNuZF9wY21fc3dfcGFyYW1z X3NldF9hdmFpbF9taW4ocHVIYW5kbGUsIHN3cGFyYW1zLCBuKTsKCgkvKiByb3VuZCB1cCB0byBj bG9zZXN0IHRyYW5zZmVyIGJvdW5kYXJ5ICovCgluID0gKGJ1ZmZlcl9zaXplIC8geGZlcl9hbGln bikgKiB4ZmVyX2FsaWduOwoJaWYgKHN0YXJ0X2RlbGF5IDw9IDApIHsKCQlzdGFydF90aHJlc2hv bGQgPSBuICsgKGRvdWJsZSkgcmF0ZSAqIHN0YXJ0X2RlbGF5IC8gMTAwMDAwMDsKCX0gZWxzZQoJ CXN0YXJ0X3RocmVzaG9sZCA9IChkb3VibGUpIHJhdGUgKiBzdGFydF9kZWxheSAvIDEwMDAwMDA7 CglpZiAoc3RhcnRfdGhyZXNob2xkIDwgMSkKCQlzdGFydF90aHJlc2hvbGQgPSAxOwoJaWYgKHN0 YXJ0X3RocmVzaG9sZCA+IG4pCgkJc3RhcnRfdGhyZXNob2xkID0gbjsKCWVyciA9IHNuZF9wY21f c3dfcGFyYW1zX3NldF9zdGFydF90aHJlc2hvbGQocHVIYW5kbGUsIHN3cGFyYW1zLCBzdGFydF90 aHJlc2hvbGQpOwoJYXNzZXJ0KGVyciA+PSAwKTsKCWlmIChzdG9wX2RlbGF5IDw9IDApIAoJCXN0 b3BfdGhyZXNob2xkID0gYnVmZmVyX3NpemUgKyAoZG91YmxlKSByYXRlICogc3RvcF9kZWxheSAv IDEwMDAwMDA7CgllbHNlCgkJc3RvcF90aHJlc2hvbGQgPSAoZG91YmxlKSByYXRlICogc3RvcF9k ZWxheSAvIDEwMDAwMDA7CgoJZXJyID0gc25kX3BjbV9zd19wYXJhbXNfc2V0X3N0b3BfdGhyZXNo b2xkKHB1SGFuZGxlLCBzd3BhcmFtcywgc3RvcF90aHJlc2hvbGQpOwoJYXNzZXJ0KGVyciA+PSAw KTsKCgllcnIgPSBzbmRfcGNtX3N3X3BhcmFtc19zZXRfeGZlcl9hbGlnbihwdUhhbmRsZSwgc3dw YXJhbXMsIHhmZXJfYWxpZ24pOwoJYXNzZXJ0KGVyciA+PSAwKTsKCglpZiAoc25kX3BjbV9zd19w YXJhbXMocHVIYW5kbGUsIHN3cGFyYW1zKSA8IDApIHsKCQlwcmludGYoInVuYWJsZSB0byBpbnN0 YWxsIHN3IHBhcmFtczoiKTsKICAgICAgICByZXR1cm47Cgl9CgoJZ19iaXRzX3Blcl9zYW1wbGUg PSBzbmRfcGNtX2Zvcm1hdF9waHlzaWNhbF93aWR0aChpRm9ybWF0KTsKCWJpdHNfcGVyX2ZyYW1l ID0gZ19iaXRzX3Blcl9zYW1wbGUgKiAxOwoJY2h1bmtfYnl0ZXMgPSBjaHVua19zaXplICogYml0 c19wZXJfZnJhbWUgLyA4OwoKCXNuZF9wY21fZHVtcChwdUhhbmRsZSwgbG9nKTsKCiAgICAKICAg IHByaW50ZigiQUxTQSA6IHBlcmlvZF90aW1lPTB4JXgsIHBlcmlvZF9mcmFtZXM9MHgleCwgYnVm ZmVyX3RpbWU9MHgleCwgYnVmZmVyX2ZyYW1lcz0weCV4XG4iLAogICAgICAgICAgICBwZXJpb2Rf dGltZSxwZXJpb2RfZnJhbWVzLGJ1ZmZlcl90aW1lLGJ1ZmZlcl9mcmFtZXMpOwogICAgcHJpbnRm KCJjaHVua19zaXplOiVkIGNodW5rX2J5dGVzOiVkIGJpdHMvZnJhbWU6JWQgYi9zOiVkXG4iLAog ICAgICAgICAgICBjaHVua19zaXplLCBjaHVua19ieXRlcywgYml0c19wZXJfZnJhbWUsIGdfYml0 c19wZXJfc2FtcGxlKTsKICAgIHJldHVybjsKfQojZW5kaWYgCgo= ------=_Part_125649_11191717.1179824034500 Content-Type: application/octet-stream; name=Audio.h Content-Transfer-Encoding: base64 X-Attachment-Id: f_f204lcyu Content-Disposition: attachment; filename="Audio.h" LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK ICAgICAgICAgICAgICAgIENvcHlyaWdodCBOb3RpY2UKICAgICAgICBDb3B5cmlnaHQgKGMpIDIw MDIgSW1wdWxzZXNvZnQgUHZ0LiBMdGQuCiAgICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2Vy dmVkICAKICAgICAgICBJbXB1bHNlc29mdCBQcm9wcmlldGFyeSBBbmQgQ29uZmlkZW50aWFsCiAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgog KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgog TmFtZSAgICAgICAgICAgOiAgIEF1ZGlvLmgKIERlc2NyaXB0aW9uICAgIDogICBUaGlzIGZpbGUg ZGVjbGFyZXMgZnVuY3Rpb25zIHVzZWQgdG8KICAgICAgICAgICAgICAgICAgICBBY2Nlc3MgQmx1 ZXRvb3RoIEF1ZGlvIGRhdGEKCiBNb2R1bGUgICAgICAgICA6ICAgUGhvbmUgR2F0ZXdheQogQXV0 aG9yICAgICAgICAgOiAgIE1heWFuawogRGF0ZSAgICAgICAgICAgOiAgIDAyLzA1LzIwMDMKCiBS ZXZpc2lvbiBObwk6ICAgJFJldmlzaW9uOiAxLjcgJAogQ2hhbmdlZCBPbiAgICAgOiAgICREYXRl OiAyMDAzLzEwLzEwIDA1OjE3OjM5ICQKIENoYW5nZWQgQnkgICAgIDogICAkQXV0aG9yOiBrYXVz aWsgJAogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8gCgoKCiNpZm5kZWYgX0FVRElPX0hfCiNkZWZpbmUgX0FVRElPX0hfCgoKI2RlZmluZSBT UEVFRAkJODAwMAoKLyogRGVmaW5lIHRoZSBzdXBwb3J0ZWQgRm9ybWF0cyAqLwojZGVmaW5lIElQ Q09NX1NORF9GTVRfUENNICAgICAgIDEKI2RlZmluZSBJUENPTV9TTkRfRk1UX1VMQVcgICAgICAy CiNkZWZpbmUgSVBDT01fU05EX0ZNVF9HNzI5ICAgICAgMwoKI2luY2x1ZGUgPGFsc2EvYXNvdW5k bGliLmg+CgojaWZuZGVmIF9fY3BsdXNwbHVzCiNpZmRlZiBFWFRFUk4KI3VuZGVmIEVYVEVSTgoj ZW5kaWYKI2RlZmluZSBFWFRFUk4KdHlwZWRlZiBzdHJ1Y3QKewogICBzbmRfcGNtX3QgKnBsYXli YWNrOwogICBzbmRfcGNtX2luZm9fdCAqcGxheWJhY2tfaW5mbzsKICAgc25kX3BjbV90ICpjYXB0 dXJlOwogICBzbmRfcGNtX2luZm9fdCAqY2FwdHVyZV9pbmZvOwp9IG15X3NuZF9wY207CiNlbHNl CiNpZmRlZiBFWFRFUk4KI3VuZGVmIEVYVEVSTgojZW5kaWYKI2RlZmluZSBFWFRFUk4gIGV4dGVy biAiQyIKI2VuZGlmIC8qIF9fY3BsdXNwbHVzICovCiAgICAKRVhURVJOIGludCBSZWFkRnJvbUFs c2Eodm9pZCAqYnVmLCBpbnQgbGVuKTsKRVhURVJOIGludCBXcml0ZVRvQWxzYSh2b2lkICpidWYs IGludCBsZW4pOwpFWFRFUk4gaW50IFN0YXJ0QXVkaW8oaW50IGlGcmFnbWVudCxpbnQgaUZvcm1h dCk7CkVYVEVSTiBpbnQgU3RvcEF1ZGlvKHZvaWQpOwoKI2VuZGlmIC8qIF9BVURJT19IXyAqLwo= ------=_Part_125649_11191717.1179824034500 Content-Type: text/plain; name=test.c; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f204lg5j Content-Disposition: attachment; filename="test.c" I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHB0aHJlYWQu aD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8dGVybWlvLmg+CiNpbmNsdWRlIDxlcnJu by5oPgojaW5jbHVkZSA8ZmNudGwuaD4KI2luY2x1ZGUgPHN5cy90eXBlcy5oPgovLyNpbmNsdWRl ICJpcGMtY2hhci1pb2N0bHMuaCIKI2luY2x1ZGUgPHN5cy9zaWduYWwuaD4KI2luY2x1ZGUgPHNp Z25hbC5oPgojaW5jbHVkZSA8YWxzYS9hc291bmRsaWIuaD4KI2luY2x1ZGUgPHN5cy90aW1lLmg+ CiNpbmNsdWRlIDx0aW1lLmg+Cgp0eXBlZGVmIGludCBpbnQzMjsKdHlwZWRlZiB1bnNpZ25lZCBp bnQgdWludDMyOwp0eXBlZGVmIGNoYXIgaW50ODsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnQ4 OwoKI2RlZmluZSBTQ09fQ0hVTktfU0laRSAyNTYKI2RlZmluZSBQUklOVAojZGVmaW5lIENBUFRV UkVfRU5BQkxFRAppbnQgdW5pbml0KGludCBpSXBjRmQpOwoKaW50IFN0YXJ0QXVkaW8oaW50IGlG cmFnbWVudCwgaW50IGlGb3JtYXQpOwppbnQgU3RvcEF1ZGlvKCk7CmludCBSZWFkRnJvbUFsc2Eo dm9pZCAqYnVmLCBpbnQgbGVuKTsKaW50IFdyaXRlVG9BbHNhKHZvaWQgKmJ1ZiwgaW50IGxlbik7 CgovL0dTQzNBX0NSRUFURV9NT0RVTEVJRChPU0EpOwoKaW50IGdpSXBjRmQgPSAtMTsKaW50IGdp QXVkRmQgPSAtMTsKaW50IGdoVXBzdHJlYW1UaHJlYWQgPSAwOwoKdm9pZCB1c2FnZSgpCnsKICAg IHByaW50ZigiVVNBR0U6XG5cdDxleGU+IDwvZGV2L2lwYy4uLj4gPGZpbGUgdG8gYmUgc2VudD4i KTsgICAgCiAgICBwcmludGYoIkV4YW1wbGU6XHRpcGNzY28tdGVzdGVyIC9kZXYvaXBjdHR5c2Nv IHNpbmUud2F2Iik7ICAgIAp9CmludCBpQXVkaW9GZCA9IC0xOwp2b2lkIHNpZ25hbF9oYW5kbGVy KGludCBzaWcpCnsKICAgIHN3aXRjaChzaWcpCgl7CgljYXNlIFNJR0hVUDoKCSAgICB7CgkJfWJy ZWFrOwoJY2FzZSBTSUdURVJNOgoJCXsKICAgICAgICAgICAgaWYoaUF1ZGlvRmQ+PTApCiAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgIGNsb3NlKGlBdWRpb0ZkKTsKICAgICAgICAgICAgfQog ICAgICAgICAgICBwcmludGYoIkNhbGxpbmcgVW5pbml0Iik7CiAgICAgICAgICAgIHVuaW5pdChn aUlwY0ZkKTsKICAgICAgICAgICAgcHJpbnRmKCJFeGl0aW5nIFxuIik7CiAgICAgICAgICAgIGV4 aXQoMCk7CiAgICAgICAgfWJyZWFrOwogICAgfQp9CgoKaW50IFN0YXJ0UGxheWJhY2tBbmRDYXB0 dXJlKGludCBpcGNGRCkKewogICAgdW5zaWduZWQgY2hhciBhY0RhdGFbU0NPX0NIVU5LX1NJWkVd OwogICAgaW50IGlDb3VudDsKICAgIGludCBpQ291bnQxMjM7CiAgICAKICAgIHByaW50ZigiU3Rh cnQgdGhlIHdoaWxlIGxvb29wXG4iKTsKICAgIC8vaUNvdW50MTIzID0gV3JpdGVUb0Fsc2EoYWNE YXRhLFNDT19DSFVOS19TSVpFKTsKICAgIHdoaWxlKDEpCiAgICB7CiNpZmRlZiBDQVBUVVJFX0VO QUJMRUQJICAgIAogICAgICAgIC8vZ2V0dGltZW9mZGF5KCZzdGFydCwgJnR6KTsKICAgICAgICAv L2lDb3VudCA9IFJlYWRGcm9tQWxzYShhY0RhdGEsIFNDT19DSFVOS19TSVpFKTsKICAgICAgICBp Q291bnQgPSBSZWFkRnJvbUFsc2EoYWNEYXRhLCBTQ09fQ0hVTktfU0laRSk7CgkvL3ByaW50Zigi V3JpdHRlbiBpQ291bnRcdCVkXG4iLCBpQ291bnQpOwojZWxzZQoJaUNvdW50ID0gcmVhZChnaUF1 ZEZkLGFjRGF0YSxTQ09fQ0hVTktfU0laRSk7CiNlbmRpZgogICAgICAgIGlmKGlDb3VudCA8IDAp CiAgICAgICAgewogICAgICAgICAgICBwcmludGYoIlJlYWQgRXJyb3IuICVkXG4iLCBpQ291bnQp OwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZihpQ291bnQgPT0g MCkKICAgICAgICB7CiAgICAgICAgICAgIHByaW50ZigiT3ZlcmZsb3cgc3RhdGVcbiIpOwojaWZu ZGVmIENBUFRVUkVfRU5BQkxFRAoJICAgIGxzZWVrKGdpQXVkRmQsIDAsIFNFRUtfU0VUKTsKI2Vu ZGlmCSAgICAKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIHsKCS8vCWlD b3VudCA9IDA7Ci8vcHJpbnRmKCIiKTsJCiAgICAgICAgICAgIGlDb3VudCA9IFdyaXRlVG9BbHNh KGFjRGF0YSxpQ291bnQpOwogICAgICAgICAgICBpZiAoaUNvdW50IDwgMCkKICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgcHJpbnRmKCJXcml0ZSBFcnJvciA6ICVkXG4iLGlDb3VudCk7CiAg ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAg IH0KCiAgICByZXR1cm4gMDsKfQoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKewog ICAgaW50IGlJcGNGZCA9IC0xOwogICAgaWYoYXJnYyA8IDIpCiAgICB7CiAgICAgICAgdXNhZ2Uo KTsKICAgICAgICByZXR1cm4gLTE7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgcHJpbnRm KCJJbiBFeGVjdXRpb24gIC0gWyVzICVzXVxuIiwgYXJndlswXSwgYXJndlsxXSk7CiAgICB9CiAg IAogICAgc2lnbmFsKFNJR0hVUCxzaWduYWxfaGFuZGxlcik7IC8qIGNhdGNoIGhhbmd1cCBzaWdu YWwgKi8KCXNpZ25hbChTSUdURVJNLHNpZ25hbF9oYW5kbGVyKTsgLyogY2F0Y2gga2lsbCBzaWdu YWwgKi8KCiAgICBTdGFydEF1ZGlvKFNDT19DSFVOS19TSVpFLCBTTkRfUENNX0ZPUk1BVF9TMTZf TEUpOwojaWZuZGVmIENBUFRVUkVfRU5BQkxFRAogICAgZ2lBdWRGZCA9IG9wZW4oYXJndlsyXSxP X1JET05MWSk7CiAgICBpZihnaUF1ZEZkIDwgMCkKICAgIHsKICAgICAgICBwcmludGYoIk9QZWlu ZyBBdWRpbyBmaWxlIGZhaWxlZCBcbiIpOwoJcmV0dXJuIC0xOwogICAgfQojZW5kaWYgCiAgICBT dGFydFBsYXliYWNrQW5kQ2FwdHVyZShpSXBjRmQpOwogICAgdW5pbml0KGlJcGNGZCk7CiAgICBy ZXR1cm4gMDsKfQoKaW50IHVuaW5pdChpbnQgaUlwY0ZkKQp7CiAgICBTdG9wQXVkaW8oKTsKI2lm bmRlZiBDQVBUVVJFX0VOQUJMRUQKICAgIGNsb3NlKGdpQXVkRmQpOwojZW5kaWYgCiAgICByZXR1 cm4gMDsKfQo= ------=_Part_125649_11191717.1179824034500 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel ------=_Part_125649_11191717.1179824034500--