[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] Patch - Re-add music support for file-like objects



Rene: what version of SDL_mixer are you using?

I think I was wrong... SDL_mixer 1.2.8 supports OGG, MP3, MID, and MOD music.

Only SVN supports WAV.

On Sat, Jul 12, 2008 at 1:40 PM, Brian Fisher <brian@xxxxxxxxxxxxxxxxxxx> wrote:
> by svn version do you mean 1.3, or an upcoming bug-fix release of 1.2?
>
>
> On Sat, Jul 12, 2008 at 9:27 AM, Forrest Voight <voights@xxxxxxxxx> wrote:
>>
>> The current sdl_mixer svn only supports mikmod. The svn version
>> supports all of those formats.
>>
>> On Sat, Jul 12, 2008 at 4:55 AM, René Dudfield <renesd@xxxxxxxxx> wrote:
>> > hi,
>> >
>> > I just wrote a test for it (see test/mixer_test.py).
>> >
>> > Unfortunately it doesn't seem to be able to load from a file like
>> > object for mp3, ogg, or wav files.
>> >
>> > Any ideas?
>> >
>> > ======================================================================
>> > ERROR: test_mixer_music__load (__main__.MixerModuleTest)
>> > ----------------------------------------------------------------------
>> > Traceback (most recent call last):
>> >  File "test\mixer_test.py", line 207, in test_mixer_music__load
>> >    pygame.mixer.music.load(open(musfn))
>> > error: Module format not recognized
>> >
>> >
>> > cu,
>> >
>> > On Thu, Jul 10, 2008 at 11:33 PM, René Dudfield <renesd@xxxxxxxxx>
>> > wrote:
>> >> Cool, thanks.
>> >>
>> >> Committed revision 1482.
>> >>
>> >> On Wed, Jul 9, 2008 at 12:39 PM, Forrest Voight <voights@xxxxxxxxx>
>> >> wrote:
>> >>> All we need to do is make RwopsFromPythonThreaded not try to make a
>> >>> standard rwop, because it shouldn't.
>> >>>
>> >>> And it is correct, RwopsFromPythonThreaded is obviously meant to be
>> >>> used like this (hence the threaded).
>> >>>
>> >>> Attached is the updated patch.
>> >>>
>> >>> Forrest
>> >>>
>> >>> On Tue, Jul 8, 2008 at 9:38 PM, René Dudfield <renesd@xxxxxxxxx>
>> >>> wrote:
>> >>>> I guess we need to store a reference to the file object somewhere,
>> >>>> and
>> >>>> release the reference at cleanup.
>> >>>>
>> >>>>
>> >>>> On Wed, Jul 9, 2008 at 9:40 AM, Brian Fisher
>> >>>> <brian@xxxxxxxxxxxxxxxxxxx> wrote:
>> >>>>> Hmmm... from looking at the patch, it seems that it does not fix the
>> >>>>> crash
>> >>>>> that Forrest discovered (where the file object falls out of scope
>> >>>>> and gets
>> >>>>> deleted so the rwobject ends up having bad pointers) - Is that
>> >>>>> correct
>> >>>>> Forrest?
>> >>>>>
>> >>>>> If that is the case, it seems to me that the feature implementation
>> >>>>> isn't
>> >>>>> finished yet, so the patch as sent is not ready to be applied to
>> >>>>> pygame
>> >>>>> 1.8.1.
>> >>>>>
>> >>>>> I would imagine that in most cases, people wouldn't be keeping
>> >>>>> around a
>> >>>>> python reference to the file object they would pass in (cause it
>> >>>>> loads the
>> >>>>> music up in some other function or something), which means most
>> >>>>> attempts to
>> >>>>> use this feature would get crashes and bad behavior as the mixer
>> >>>>> tries to
>> >>>>> stream the music, but the file object falls out of scope - and the
>> >>>>> crash
>> >>>>> would happen at what seems like a random point in time.
>> >>>>>
>> >>>>> Also, as I said in an earlier email, I don't think this patch is
>> >>>>> exposing an
>> >>>>> existing bug, I think it uses rwobject in a way that's not intended,
>> >>>>> as
>> >>>>> other "load-from-file" pygame uses don't require the file-object to
>> >>>>> exist
>> >>>>> longer than it takes for the load function to return.
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>> On Tue, Jul 8, 2008 at 3:20 PM, René Dudfield <renesd@xxxxxxxxx>
>> >>>>> wrote:
>> >>>>>>
>> >>>>>> Cool, thanks.  I'll try and patch it tonight (+ 9 hours).
>> >>>>>>
>> >>>>>> cu,
>> >>>>>>
>> >>>>>> On Wed, Jul 9, 2008 at 1:09 AM, Forrest Voight <voights@xxxxxxxxx>
>> >>>>>> wrote:
>> >>>>>> > I did the version checks.
>> >>>>>> >
>> >>>>>> > There are currently no tests for pygame.mixer.music, but I'll try
>> >>>>>> > to
>> >>>>>> > make a test for this.
>> >>>>>> >
>> >>>>>> > Also, I found a bug in rwobject. It makes a standard SDL_RWops
>> >>>>>> > from
>> >>>>>> > python file objects but doesn't hold a reference to them.
>> >>>>>> > This is shown by doing something like:
>> >>>>>> >
>> >>>>>> > pygame.mixer.music.load(open('x.mp3'))
>> >>>>>> >
>> >>>>>> > Then playing it, and pygame crashes.
>> >>>>>> > This is not my patch's fault, it just exposes it.
>> >>>>>> >
>> >>>>>> > Forrest Voight
>> >>>>>> >
>> >>>>>> > On Tue, Jul 8, 2008 at 2:08 AM, René Dudfield <renesd@xxxxxxxxx>
>> >>>>>> > wrote:
>> >>>>>> >> hi,
>> >>>>>> >>
>> >>>>>> >> I think this will have to wait until we put the version checks
>> >>>>>> >> in and
>> >>>>>> >> have unittests... ie for pygame 1.9.  Unless someone can get
>> >>>>>> >> around to
>> >>>>>> >> it in the next week.
>> >>>>>> >>
>> >>>>>> >>
>> >>>>>> >> cu,
>> >>>>>> >>
>> >>>>>> >>
>> >>>>>> >> On Wed, Jun 18, 2008 at 2:44 PM, Forrest Voight
>> >>>>>> >> <voights@xxxxxxxxx>
>> >>>>>> >> wrote:
>> >>>>>> >>> OK, I'll work on unit tests and a version check.
>> >>>>>> >>>
>> >>>>>> >>> On Mon, Jun 16, 2008 at 11:52 AM, Lenard Lindstrom
>> >>>>>> >>> <len-l@xxxxxxxxx>
>> >>>>>> >>> wrote:
>> >>>>>> >>>> Maybe the test could write a sine wave to a StringIO, load it,
>> >>>>>> >>>> then
>> >>>>>> >>>> use
>> >>>>>> >>>> get_buffer (sound objects do have get_buffer now, right?*) to
>> >>>>>> >>>> check
>> >>>>>> >>>> it.
>> >>>>>> >>>>
>> >>>>>> >>>> Lenard
>> >>>>>> >>>>
>> >>>>>> >>>> * Sorry, I don't have access to latest Python/Pygame at the
>> >>>>>> >>>> moment.
>> >>>>>> >>>>
>> >>>>>> >>>> Quoting René Dudfield <renesd@xxxxxxxxx>:
>> >>>>>> >>>>
>> >>>>>> >>>>> Hi,
>> >>>>>> >>>>>
>> >>>>>> >>>>> nice patch!  This will be very useful :)
>> >>>>>> >>>>>
>> >>>>>> >>>>> Do you know which version of sdl_mixer allows rwops for music
>> >>>>>> >>>>> (Mix_LoadMUS_RW)?  Does it require an SDL_mixer version
>> >>>>>> >>>>> check?
>> >>>>>> >>>>>
>> >>>>>> >>>>> Are you able to make make any unit tests for using file likes
>> >>>>>> >>>>> with
>> >>>>>> >>>>> the
>> >>>>>> >>>>> music mixer?  We're using unittests for all new code now, and
>> >>>>>> >>>>> it'd
>> >>>>>> >>>>> make us feel more safe about adding it in for the 1.8.1
>> >>>>>> >>>>> release.
>> >>>>>> >>>>>
>> >>>>>> >>>>> Not really sure how best to test it.  I guess just loading
>> >>>>>> >>>>> the music
>> >>>>>> >>>>> from different filename, and from a python file object would
>> >>>>>> >>>>> be ok
>> >>>>>> >>>>> for
>> >>>>>> >>>>> now.
>> >>>>>> >>>>>
>> >>>>>> >>>>> here's a start on a test for it...
>> >>>>>> >>>>>
>> >>>>>> >>>>> data_fname = os.path.join('..', 'examples', 'data')
>> >>>>>> >>>>> #note, I just added house_lo.ogg to svn.
>> >>>>>> >>>>> oggfn = os.path.join(data_fname, 'house_lo.ogg')
>> >>>>>> >>>>>
>> >>>>>> >>>>> pygame.mixer.music.load(oggfn)
>> >>>>>> >>>>> pygame.mixer.music.load(open(oggfn))
>> >>>>>> >>>>> oggf = open(oggfn)
>> >>>>>> >>>>> pygame.mixer.music.load(oggf)
>> >>>>>> >>>>>
>> >>>>>> >>>>>
>> >>>>>> >>>>>
>> >>>>>> >>>>> cheers,
>> >>>>>> >>>>>
>> >>>>>> >>>>>
>> >>>>>> >>>>>
>> >>>>>> >>>>> On Sat, Jun 14, 2008 at 9:53 AM, Forrest Voight
>> >>>>>> >>>>> <voights@xxxxxxxxx>
>> >>>>>> >>>>> wrote:
>> >>>>>> >>>>> > Thanks!
>> >>>>>> >>>>> >
>> >>>>>> >>>>> > On Fri, Jun 13, 2008 at 7:31 PM, Lenard Lindstrom
>> >>>>>> >>>>> > <len-l@xxxxxxxxx> wrote:
>> >>>>>> >>>>> >> This is interesting. I am having a look at it. No promise
>> >>>>>> >>>>> >> it can
>> >>>>>> >>>>> >> go into
>> >>>>>> >>>>> >> 1.8.1 though as this is supposed to be a bug fix.
>> >>>>>> >>>>> >>
>> >>>>>> >>>>> >> Lenard
>> >>>>>> >>>>> >>
>> >>>>>> >>>>> >>
>> >>>>>> >>>>> >> Forrest Voight wrote:
>> >>>>>> >>>>> >>>
>> >>>>>> >>>>> >>> This patch re-adds support for playing (and queueing)
>> >>>>>> >>>>> >>> music from
>> >>>>>> >>>>> >>> python file-like objects.
>> >>>>>> >>>>> >>>
>> >>>>>> >>>>> >>> While support for WAV music streams is still in SDL_mixer
>> >>>>>> >>>>> >>> svn,
>> >>>>>> >>>>> >>> there
>> >>>>>> >>>>> >>> is support for mp3, mikmod and other formats already.
>> >>>>>> >>>>> >>>
>> >>>>>> >>>>> >>>
>> >>>>>> >>>>> >>
>> >>>>>> >>>>> >>
>> >>>>>> >>>>> >
>> >>>>>> >>>>>
>> >>>>>> >>>>
>> >>>>>> >>>>
>> >>>>>> >>>> --
>> >>>>>> >>>> Lenard Lindstrom
>> >>>>>> >>>> <len_l@xxxxxxxxx>
>> >>>>>> >>>>
>> >>>>>> >>>>
>> >>>>>> >>>
>> >>>>>> >>
>> >>>>>> >
>> >>>>>
>> >>>>>
>> >>>>
>> >>>
>> >>
>> >
>
>