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

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



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>
>>>>>> >>>>
>>>>>> >>>>
>>>>>> >>>
>>>>>> >>
>>>>>> >
>>>>>
>>>>>
>>>>
>>>
>>
>