[#37041] [ANN] Exerb/Exerb-CC 2.6.0 — Yuya Kato <yuya-ml@4th.to>
未踏ユース終了まで1ヶ月を切って、焦り気味のYuyaです。
27 messages
2003/02/02
[#37074] Re: [ANN] Exerb/Exerb-CC 2.6.0
— Satoshi Osabe <s-osabe@...>
2003/02/09
長部と申します。
[#37096] Re: [ANN] Exerb/Exerb-CC 2.6.0
— Satoshi Osabe <s-osabe@...>
2003/02/11
長部です。
[#37202] Re: [ANN] Exerb/Exerb-CC 2.6.0
— "TOYOFUKU Chikanobu" <toyofuku@...>
2003/03/02
豊福です。
[#37206] Re: [ANN] Exerb/Exerb-CC 2.6.0
— Yuya Kato <yuya-ml@4th.to>
2003/03/04
Yuyaです。
[#37208] Re: [ANN] Exerb/Exerb-CC 2.6.0
— Satoshi Osabe <osabe@...>
2003/03/04
長部と申します。
[#37209] Re: [ANN] Exerb/Exerb-CC 2.6.0
— nobu.nakada@...
2003/03/04
なかだです。
[#37211] Re: [ANN] Exerb/Exerb-CC 2.6.0
— "U.Nakamura" <usa@...>
2003/03/04
こんにちは、なかむら(う)です。
[#37047] String#each_byte — Take_tk <ggb03124@...>
たけ(tk)です
12 messages
2003/02/04
[#37050] Re: String#each_byte
— Tietew <tietew-ml-ruby-list@...>
2003/02/04
[#37052] 改行が認識されない? — 金光雅夫 (KANEMITSU Masao) <masao-k@...>
金光です。どもっ。
6 messages
2003/02/04
[#37058] Re: Local variables & blocks — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
27 messages
2003/02/05
[#37059] Re: Local variables & blocks
— ichimal@...
2003/02/06
皆様、初めまして鈴木です。
[#37063] Re: Local variables & blocks
— matz@... (Yukihiro Matsumoto)
2003/02/07
まつもと ゆきひろです
[#37110] Re: Local variables & blocks
— ichimal@...
2003/02/16
鈴木です。
[#37115] Re: Local variables & blocks
— Tanaka Akira <akr@...17n.org>
2003/02/17
In article <200302161629.h1GGTvJ5008901@fenix.ne.jp>,
[#37123] 私はこれにハマリました。
— Shin-ichiro HARA <sinara@...>
2003/02/18
原です。
[#37065] UDPから受信出来ない。 — Toru MITANI <toru@...>
6 messages
2003/02/07
[#37081] setup.rb: Patch to ignore CVS,*~,... — "Shirai,Kaoru" <shirai@...>
白井です。
13 messages
2003/02/10
[#37082] Re: setup.rb: Patch to ignore CVS,*~,...
— Minero Aoki <aamine@...>
2003/02/10
あおきです。
[#37083] Re: setup.rb: Patch to ignore CVS,*~,...
— "Shirai,Kaoru" <shirai@...>
2003/02/10
白井です。
[#37084] Re: setup.rb: Patch to ignore CVS,*~,...
— Minero Aoki <aamine@...>
2003/02/10
あおきです。
[#37085] Re: setup.rb: Patch to ignore CVS,*~,...
— "Shirai,Kaoru" <shirai@...>
2003/02/10
白井です。
[#37114] 配列とべき集合 — Masahiro Sato <msato@...>
7 messages
2003/02/17
[#37135] TMailと..なFrom行 — ICHIKAWA Manabu <ichikawa@...>
市川ともうします。
5 messages
2003/02/19
[#37153] rubyからJavaScriptの関数を起動する方法は? — "Masakazu Fujimoto" <masakazu@...>
8 messages
2003/02/23
[#37162] Rubyの10年 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
9 messages
2003/02/24
[#37171] setup.rb 3.1.4 — Minero Aoki <aamine@...>
あおきです。
7 messages
2003/02/25
[#37179] — "松尾尚典" <matsuo.hisanori@...>
松尾です。こんばんは。
10 messages
2003/02/25
[ruby-list:37157] Re: Ruby/SDL で複数の mpeg を扱うには
From:
ohai@... (Ippei Obayashi)
Date:
2003-02-24 07:18:23 UTC
List:
ruby-list #37157
こんにちは、大林です。
片多さん(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を同時に再生することはできない
* 以上の制限にたいするチェックを一切していない
--
大林一平 ohai@kmc.gr.jp
http://www.kmc.gr.jp/~ohai/
Attachments (1)
rubysdl.diff
(2.08 KB, text/x-diff)
diff -u -r1.5 rubysdl_smpeg.c
--- rubysdl_smpeg.c 11 May 2002 17:23:29 -0000 1.5
+++ rubysdl_smpeg.c 24 Feb 2003 04:14:16 -0000
@@ -20,6 +20,7 @@
#ifdef HAVE_SMPEG
#include "rubysdl.h"
#include "smpeg/smpeg.h"
+#include "SDL_mixer.h"
static SMPEG_Filter* filters[3];
#define NULL_FILTER 0
@@ -46,18 +47,20 @@
static VALUE smpeg_load(VALUE class,VALUE filename)
{
SMPEG *mpeg;
- VALUE infoObj;
+ VALUE obj;
char error_msg[2048];
- mpeg = SMPEG_new(STR2CSTR(filename),NULL,SDL_WasInit(SDL_INIT_AUDIO));
+ mpeg = SMPEG_new(STR2CSTR(filename),NULL,0);
if( SMPEG_error(mpeg) ){
snprintf(error_msg,sizeof(error_msg),"Couldn't load %s: %s",
STR2CSTR(filename),SMPEG_error(mpeg));
SMPEG_delete(mpeg);
rb_raise(eSDLError,"%s",error_msg);
}
-
- return Data_Wrap_Struct(cMPEG,0,SMPEG_delete,mpeg);
+
+ obj = Data_Wrap_Struct(cMPEG,0,SMPEG_delete,mpeg);
+ rb_iv_set(obj,"enable_audio",Qfalse);
+ return obj;
}
static VALUE smpeg_getInfo(VALUE obj,VALUE infoObj)
@@ -80,6 +83,7 @@
SMPEG *mpeg;
Data_Get_Struct(obj,SMPEG,mpeg);
SMPEG_enableaudio(mpeg,RTEST(enable));
+ rb_iv_set(obj,"enable_audio",enable);
return Qnil;
}
@@ -163,7 +167,32 @@
static VALUE smpeg_play(VALUE obj)
{
SMPEG *mpeg;
+ int use_audio;
+
Data_Get_Struct(obj,SMPEG,mpeg);
+
+ use_audio = RTEST(rb_iv_get(obj,"enable_audio")) &&
+ Mix_QuerySpec( NULL, NULL, NULL );
+
+ if( use_audio ){
+ SDL_AudioSpec audiofmt;
+ Uint16 format;
+ int freq, channels;
+
+ SMPEG_enableaudio(mpeg, 0);
+ /* Tell SMPEG what the audio format is */
+ Mix_QuerySpec(&freq, &format, &channels);
+ audiofmt.format = format;
+ audiofmt.freq = freq;
+ audiofmt.channels = channels;
+ SMPEG_actualSpec(mpeg, &audiofmt);
+
+ /* Hook in the MPEG music mixer */
+ Mix_HookMusic(NULL,NULL);
+ Mix_HookMusic(SMPEG_playAudioSDL, mpeg);
+ SMPEG_enableaudio(mpeg, 1);
+ }
+
SMPEG_play(mpeg);
return Qnil;
}
@@ -181,6 +210,7 @@
SMPEG *mpeg;
Data_Get_Struct(obj,SMPEG,mpeg);
SMPEG_stop(mpeg);
+ Mix_HookMusic(NULL,NULL);
return Qnil;
}