From: ohai@... (Ippei Obayashi) Date: 2003-02-24T16:18:23+09:00 Subject: [ruby-list:37157] Re: Ruby/SDL で複数の mpeg を扱うには ------=_NextPart_003_07827_030224.161744 Content-Type: text/plain; charset=ISO-2022-JP こんにちは、大林です。 片多さん(katata@chugoku-pc.ac.jp)は書きました。 >> はじめまして、片多と申します。 >> Ruby/SDLをいろいろと試しているのですが、複数のmpegファイルをを扱ってみようと思い、 >> 以下のようなスクリプトを動かしてみると、 >> >> -- >> require 'sdl' >> >> SDL.init( SDL::INIT_VIDEO|SDL::INIT_AUDIO ) >> screen = SDL.setVideoMode( 640, 480, 32, SDL::SWSURFACE ) >> >> mpeg1 = SDL::MPEG.load( 'A1_10a.mpg' ) >> mpeg2 = SDL::MPEG.load( 'A1_10b.mpg' ) # <- エラー! >> >> mpeg1.setDisplay(screen) >> mpeg1.play >> >> loop do >> case event = SDL::Event2.poll >> when SDL::Event2::KeyDown >> mpeg1.stop >> exit >> end >> end >> -- >> >> 7行目の「mpeg2 =」の行で以下のようなエラーがでます。 >> >> -- >> plaympeg.rb:7:in `load': Couldn't load A1_10b.mpg: Audio device is already opened (SDL::Error) >> from plaympeg.rb:7 >> -- >> >> すでにオーディオデバイスは開いているよ、とのことですが、 >> どのようにすればよいのでしょうか。 >> 7行目をコメントにすればもちろん動画が再生されます。 >> >> この問題に対処するパッチを作りました。 このパッチで以下のようなことが可能になるはずです。 * 複数のmpegファイルをロードし、再生すること * SDL_mixerでの音声再生機能とmpegの再生機能を共存させること * SDL_mixerで音声を再生しながらmpegで画像を音声なしで再生すること ただし、このパッチには以下のような制限、注意点、問題点があります。 * mpegを音声つきで再生するためにはSDL.initを呼んだあとSDL::Mixer.openを 呼ぶ必要がある * mpegの音声の再生とSDL_mixerでの音声の再生を同時にすることはできない * ふたつ以上のmpegを同時に再生することはできない * 以上の制限にたいするチェックを一切していない ------=_NextPart_003_07827_030224.161744 Content-Type: application/octet-stream; name=rubysdl.diff Content-Transfer-Encoding: base64 ZGlmZiAtdSAtcjEuNSBydWJ5c2RsX3NtcGVnLmMKLS0tIHJ1YnlzZGxfc21wZWcuYwkxMSBN YXkgMjAwMiAxNzoyMzoyOSAtMDAwMAkxLjUKKysrIHJ1YnlzZGxfc21wZWcuYwkyNCBGZWIg MjAwMyAwNDoxNDoxNiAtMDAwMApAQCAtMjAsNiArMjAsNyBAQAogI2lmZGVmIEhBVkVfU01Q RUcKICNpbmNsdWRlICJydWJ5c2RsLmgiCiAjaW5jbHVkZSAic21wZWcvc21wZWcuaCIKKyNp bmNsdWRlICJTRExfbWl4ZXIuaCIKIAogc3RhdGljIFNNUEVHX0ZpbHRlciogZmlsdGVyc1sz XTsKICNkZWZpbmUgTlVMTF9GSUxURVIgMApAQCAtNDYsMTggKzQ3LDIwIEBACiBzdGF0aWMg VkFMVUUgc21wZWdfbG9hZChWQUxVRSBjbGFzcyxWQUxVRSBmaWxlbmFtZSkKIHsKICAgU01Q RUcgKm1wZWc7Ci0gIFZBTFVFIGluZm9PYmo7CisgIFZBTFVFIG9iajsKICAgY2hhciBlcnJv cl9tc2dbMjA0OF07CiAgICAgCi0gIG1wZWcgPSBTTVBFR19uZXcoU1RSMkNTVFIoZmlsZW5h bWUpLE5VTEwsU0RMX1dhc0luaXQoU0RMX0lOSVRfQVVESU8pKTsKKyAgbXBlZyA9IFNNUEVH X25ldyhTVFIyQ1NUUihmaWxlbmFtZSksTlVMTCwwKTsKICAgaWYoIFNNUEVHX2Vycm9yKG1w ZWcpICl7CiAgICAgc25wcmludGYoZXJyb3JfbXNnLHNpemVvZihlcnJvcl9tc2cpLCJDb3Vs ZG4ndCBsb2FkICVzOiAlcyIsCiAJICAgICBTVFIyQ1NUUihmaWxlbmFtZSksU01QRUdfZXJy b3IobXBlZykpOwogICAgIFNNUEVHX2RlbGV0ZShtcGVnKTsKICAgICByYl9yYWlzZShlU0RM RXJyb3IsIiVzIixlcnJvcl9tc2cpOwogICB9Ci0gIAotICByZXR1cm4gRGF0YV9XcmFwX1N0 cnVjdChjTVBFRywwLFNNUEVHX2RlbGV0ZSxtcGVnKTsKKworICBvYmogPSBEYXRhX1dyYXBf U3RydWN0KGNNUEVHLDAsU01QRUdfZGVsZXRlLG1wZWcpOworICByYl9pdl9zZXQob2JqLCJl bmFibGVfYXVkaW8iLFFmYWxzZSk7CisgIHJldHVybiBvYmo7CiB9CiAKIHN0YXRpYyBWQUxV RSBzbXBlZ19nZXRJbmZvKFZBTFVFIG9iaixWQUxVRSBpbmZvT2JqKQpAQCAtODAsNiArODMs NyBAQAogICBTTVBFRyAqbXBlZzsKICAgRGF0YV9HZXRfU3RydWN0KG9iaixTTVBFRyxtcGVn KTsKICAgU01QRUdfZW5hYmxlYXVkaW8obXBlZyxSVEVTVChlbmFibGUpKTsKKyAgcmJfaXZf c2V0KG9iaiwiZW5hYmxlX2F1ZGlvIixlbmFibGUpOwogICByZXR1cm4gUW5pbDsKIH0KIApA QCAtMTYzLDcgKzE2NywzMiBAQAogc3RhdGljIFZBTFVFIHNtcGVnX3BsYXkoVkFMVUUgb2Jq KQogewogICBTTVBFRyAqbXBlZzsKKyAgaW50IHVzZV9hdWRpbzsKKyAgCiAgIERhdGFfR2V0 X1N0cnVjdChvYmosU01QRUcsbXBlZyk7CisKKyAgdXNlX2F1ZGlvID0gUlRFU1QocmJfaXZf Z2V0KG9iaiwiZW5hYmxlX2F1ZGlvIikpICYmCisgICAgTWl4X1F1ZXJ5U3BlYyggTlVMTCwg TlVMTCwgTlVMTCApOworCisgIGlmKCB1c2VfYXVkaW8gKXsKKyAgICBTRExfQXVkaW9TcGVj IGF1ZGlvZm10OworICAgIFVpbnQxNiBmb3JtYXQ7CisgICAgaW50IGZyZXEsIGNoYW5uZWxz OworICAgIAorICAgIFNNUEVHX2VuYWJsZWF1ZGlvKG1wZWcsIDApOworICAgIC8qIFRlbGwg U01QRUcgd2hhdCB0aGUgYXVkaW8gZm9ybWF0IGlzICovCisgICAgTWl4X1F1ZXJ5U3BlYygm ZnJlcSwgJmZvcm1hdCwgJmNoYW5uZWxzKTsKKyAgICBhdWRpb2ZtdC5mb3JtYXQgPSBmb3Jt YXQ7CisgICAgYXVkaW9mbXQuZnJlcSA9IGZyZXE7CisgICAgYXVkaW9mbXQuY2hhbm5lbHMg PSBjaGFubmVsczsKKyAgICBTTVBFR19hY3R1YWxTcGVjKG1wZWcsICZhdWRpb2ZtdCk7CisK KyAgICAvKiBIb29rIGluIHRoZSBNUEVHIG11c2ljIG1peGVyICovCisgICAgTWl4X0hvb2tN dXNpYyhOVUxMLE5VTEwpOworICAgIE1peF9Ib29rTXVzaWMoU01QRUdfcGxheUF1ZGlvU0RM LCBtcGVnKTsKKyAgICBTTVBFR19lbmFibGVhdWRpbyhtcGVnLCAxKTsKKyAgfQorICAgIAog ICBTTVBFR19wbGF5KG1wZWcpOwogICByZXR1cm4gUW5pbDsKIH0KQEAgLTE4MSw2ICsyMTAs NyBAQAogICBTTVBFRyAqbXBlZzsKICAgRGF0YV9HZXRfU3RydWN0KG9iaixTTVBFRyxtcGVn KTsKICAgU01QRUdfc3RvcChtcGVnKTsKKyAgTWl4X0hvb2tNdXNpYyhOVUxMLE5VTEwpOwog ICByZXR1cm4gUW5pbDsKIH0KIAo= ------=_NextPart_003_07827_030224.161744 Content-Type: text/plain; charset=ISO-2022-JP -- 大林一平 ohai@kmc.gr.jp http://www.kmc.gr.jp/~ohai/ ------=_NextPart_003_07827_030224.161744--