[Sugar-devel] Etoys mp3 files

Ajay Garg ajay at activitycentral.com
Wed May 30 06:49:44 EDT 2012


On Wed, May 30, 2012 at 4:09 PM, Bert Freudenberg <bert at freudenbergs.de>wrote:

> Did you move the plugin to where the other plugins are, and possibly
> renamed it to match the other plugins name scheme?
>

Yes, tried the following variants ::

* /usr/local/lib/libMpeg3Plugin.so
* /usr/local/lib/Mpeg3Plugin.so
* /usr/lib/libMpeg3Plugin.so
* /usr/lib/Mpeg3Plugin.so


>
> Also, are you sure that "DELTA.MPG" actually is an mp3 file?
>

No, this is a MPEG file.
The same happens with a true mp3 file as well.


Regards,
Ajay

>
> - Bert -
>
> On 30.05.2012, at 10:53, Ajay Garg wrote:
>
> For brevity, here is the complete stacktrace (picked from shell command
> line) ::
>
>
>
> ##################################################################################################
> =========== SqueakDebug.log START ==========
> Error: a primitive has failed
> 30 May 2012 2:21 pm
>
> VM: unix - a SmalltalkImage
> Image: etoys4.1 [latest update: #2390]
>
> SecurityManager state:
> Restricted: false
> FileAccess: true
> SocketAccess: true
> Working Dir /home/ajay/Etoys
> Trusted Dir /home/ajay/.etoys/private
> Untrusted Dir /home/ajay/Etoys
>
> MPEGFile class(Object)>>error:
>     Receiver: MPEGFile
>     Arguments and temporary variables:
>         aString:     'a primitive has failed'
>     Receiver's instance variables:
>         superclass:     Object
>         methodDict:     a MethodDictionary(#audioChannels:->a
> CompiledMethod (1113) #audioG...etc...
>         format:     138
>         instanceVariables:     #('pathToFile' 'fileBits' 'fileIndex'
> 'endianness')
>         organization:     ('access' endianness fileHandle fileName
> getPercentage getTOC:doS...etc...
>         subclasses:     nil
>         name:     #MPEGFile
>         classPool:     a Dictionary(#Registry->nil )
>         sharedPools:     nil
>         environment:     a SystemDictionary(lots of globals)
>         category:     nil
>
> MPEGFile class(Object)>>primitiveFailed
>     Receiver: MPEGFile
>     Arguments and temporary variables:
>
>     Receiver's instance variables:
>         superclass:     Object
>         methodDict:     a MethodDictionary(#audioChannels:->a
> CompiledMethod (1113) #audioG...etc...
>         format:     138
>         instanceVariables:     #('pathToFile' 'fileBits' 'fileIndex'
> 'endianness')
>         organization:     ('access' endianness fileHandle fileName
> getPercentage getTOC:doS...etc...
>         subclasses:     nil
>         name:     #MPEGFile
>         classPool:     a Dictionary(#Registry->nil )
>         sharedPools:     nil
>         environment:     a SystemDictionary(lots of globals)
>         category:     nil
>
> MPEGFile class>>primFileValidMPEG:
>     Receiver: MPEGFile
>     Arguments and temporary variables:
>         aPath:     '/home/ajay/Desktop/DELTA.MPG'
>     Receiver's instance variables:
>         superclass:     Object
>         methodDict:     a MethodDictionary(#audioChannels:->a
> CompiledMethod (1113) #audioG...etc...
>         format:     138
>         instanceVariables:     #('pathToFile' 'fileBits' 'fileIndex'
> 'endianness')
>         organization:     ('access' endianness fileHandle fileName
> getPercentage getTOC:doS...etc...
>         subclasses:     nil
>         name:     #MPEGFile
>         classPool:     a Dictionary(#Registry->nil )
>         sharedPools:     nil
>         environment:     a SystemDictionary(lots of globals)
>         category:     nil
>
> MPEGFile class>>isFileValidMPEG:
>     Receiver: MPEGFile
>     Arguments and temporary variables:
>         path:     '/home/ajay/Desktop/DELTA.MPG'
>     Receiver's instance variables:
>         superclass:     Object
>         methodDict:     a MethodDictionary(#audioChannels:->a
> CompiledMethod (1113) #audioG...etc...
>         format:     138
>         instanceVariables:     #('pathToFile' 'fileBits' 'fileIndex'
> 'endianness')
>         organization:     ('access' endianness fileHandle fileName
> getPercentage getTOC:doS...etc...
>         subclasses:     nil
>         name:     #MPEGFile
>         classPool:     a Dictionary(#Registry->nil )
>         sharedPools:     nil
>         environment:     a SystemDictionary(lots of globals)
>         category:     nil
>
>
> --- The full stack ---
> MPEGFile class(Object)>>error:
> MPEGFile class(Object)>>primitiveFailed
> MPEGFile class>>primFileValidMPEG:
> MPEGFile class>>isFileValidMPEG:
>  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> MPEGDisplayMorph>>openFileNamed:
> MPEGDisplayMorph>>openMPEGFile
> SimpleButtonMorph>>doButtonAction
> SimpleButtonMorph>>mouseUp:
> SimpleButtonMorph(Morph)>>handleMouseUp:
> MouseButtonEvent>>sentTo:
> SimpleButtonMorph(Morph)>>handleEvent:
> SimpleButtonMorph(Morph)>>handleFocusEvent:
> [] in HandMorph>>sendFocusEvent:to:clear: {[ActiveHand := self.
> ActiveEvent := anEvent.  result := focusHolder     han...]}
> [] in PasteUpMorph>>becomeActiveDuring: {[aBlock value]}
> BlockContext>>on:do:
> PasteUpMorph>>becomeActiveDuring:
> HandMorph>>sendFocusEvent:to:clear:
> HandMorph>>sendEvent:focus:clear:
> HandMorph>>sendMouseEvent:
> HandMorph>>handleEvent:
> HandMorph>>processEvents
> [] in WorldState>>doOneCycleNowFor: {[:h |  ActiveHand := h.  h
> processEvents.  capturingGesture := capturingGest...]}
> Array(SequenceableCollection)>>do:
> WorldState>>handsDo:
> WorldState>>doOneCycleNowFor:
> WorldState>>doOneCycleFor:
> PasteUpMorph>>doOneCycle
> [] in Project class>>spawnNewProcess {[[World doOneCycle.  Processor
> yield.  false] whileFalse.  nil]}
> [] in BlockContext>>newProcess {[self value.  Processor terminateActive]}
>
> ##################################################################################################
>
> On Wed, May 30, 2012 at 10:59 AM, Ajay Garg <ajay at activitycentral.com>wrote:
>
>> Thanks Bert for the reply.
>>
>> I downloaded the source from
>> http://www.squeakvm.org/unix/release/Squeak-4.4.7.2357-src.tar.gz, did
>> "make" and "sudo make install".
>>
>> It seemed to work, but there was no improvement while playing "Supplies"
>> -> "Object Catalogue" -> "Multimedia" -> "MPEGPlayer" ->''DELTA.MPG".
>>
>> One thing I noted that all plugins file are of form "so.*", whereas I
>> believe that in unix they should be of the form "*.so". For example, the
>> generated Mpeg3Plugin file is "so.Mpeg3Plugin", and not "Mpeg3Plugin.so" -
>> something which is expected for shared-object files in the unix world.
>>
>> Am I missing something?
>>
>>
>> Thanks and Regards,
>> Ajay
>>
>>
>> On Wed, May 30, 2012 at 2:25 AM, Bert Freudenberg <bert at freudenbergs.de>wrote:
>>
>>> So problem a) is Sugar, problem b) squeak. I'll ignore a). For b):
>>>
>>> You do not need gstreamer, but rather Squeak's Mpeg3Plugin which has its
>>> own decoder. This is not shipped in Fedora due to mp3 licensing concerns.
>>> You need to copy it from an old UY bundle (there might be a x86 copy in
>>> some tracker ticket on d.l.o). If need be you can also compile it from a
>>> Squeak VM source tar ball (likely needed for ARM).
>>>
>>> - Bert -
>>>
>>> On 29.05.2012, at 22:26, Ajay Garg <ajay at activitycentral.com> wrote:
>>>
>>> Well, there are two different issues ::
>>>
>>> a)
>>> First is the data-store issue.
>>>
>>> As seen from the logs, the (mp3) file that was opened, was present in a
>>> USB pen drive.
>>> ANY ENTRY, when accessed via USB-pen-drive, will give this error (i.e.
>>> mp3, jpeg, png - any file).
>>>
>>> CAUSE ::
>>> =======
>>>
>>> The code in "carquinol" package, presumes the data-to-be-accessed coming
>>> from the journal.
>>>
>>>
>>>
>>> SOLUTION ::
>>> ==========
>>>
>>> As happens with all entries that are accessed from USB pen-drives, these
>>> entries too need to be copied first to the journal, to maintain
>>> compatability.
>>>
>>>
>>>
>>> SOLUTION-IMPLEMENTATION-REQUIREMENT ::
>>> =====================================
>>>
>>> The "etoys-sugar-code" is needed, wherein a flag may be passed to
>>> objectchooser, to copy the file to the journal if invoked from etoys; and
>>> subsequently access the journal-entry thereafter.
>>>
>>> Bert, we will be grateful if you could provide the code-location for
>>> this.
>>>
>>>
>>>
>>>
>>>
>>> b)
>>> The second issue is the sound not playing.
>>>
>>> I ensured that the following packages were installed on my non-XO laptop
>>> (Dell-F14-laptop) ::
>>>
>>> * gstreamer-plugins-bad
>>> * gstreamer-plugins-ugly
>>> * gstreamer-ffmpeg
>>> * etoys
>>> * squeak-vm
>>> * squeak-vm-nonXOplugins
>>>
>>> Thereafter, I downloaded the following MPEG file ::
>>>
>>> http://samples.fileformat.info/format/mpeg/sample/567fd6a0e0da4a8e81bdeb870de3b19c/DELTA.MPG?AWSAccessKeyId=0V91BEFA7GM093MEVMG2&Signature=zvF6p5NE3Jz3oSKtyw2obyPosDQ%3D&Expires=1338322225
>>>
>>>
>>> and tried playing via "Supplies" -> "Object Catalogue" -> "Multimedia"
>>> -> "MPEGPlayer". However, I got the same "abandon" error, with the
>>> second-last, and third-last stack-point error as follows ::
>>>
>>> #####################################################################
>>> primitiveFailed
>>>     "Announce that a primitive has failed and there is no appropriate
>>>     Smalltalk code to run."
>>>
>>>     self error: 'a primitive has failed'
>>>
>>>
>>> primFileValidMPEG: aPath
>>>     "Check to see if the file is valid"
>>>     <primitive: 'primitiveMPEG3CheckSig' module: 'Mpeg3Plugin'>
>>>     self primitiveFailed
>>> #####################################################################
>>>
>>>
>>>
>>> SOLUTION ::
>>> =========
>>>
>>> I guess there is still some plugin missing on my Dell laptop.
>>> But I have gone out of ideas to try.
>>>
>>> Bert, we will again be grateful :)
>>>
>>>
>>>
>>>
>>> Thanks and Regards,
>>> Ajay
>>>
>>>
>>> On Sun, May 27, 2012 at 2:10 AM, Rafael Ortiz <
>>> rafael at activitycentral.com> wrote:
>>>
>>>>
>>>>
>>>> On Sat, May 26, 2012 at 12:13 PM, Rafael Ortiz <
>>>> rafael at activitycentral.com> wrote:
>>>>
>>>>>
>>>>>
>>>>> On Sat, May 26, 2012 at 7:47 AM, Peter Robinson <pbrobinson at gmail.com>wrote:
>>>>>
>>>>>> On Sat, May 26, 2012 at 12:54 PM, Bert Freudenberg <
>>>>>> bert at freudenbergs.de> wrote:
>>>>>> >
>>>>>> > On 25.05.2012, at 22:21, Rafael Ortiz wrote:
>>>>>> >
>>>>>> >
>>>>>> >
>>>>>> > On Thu, May 24, 2012 at 11:34 AM, Rafael Ortiz <
>>>>>> rafael at activitycentral.com>
>>>>>> > wrote:
>>>>>> >>
>>>>>> >> Hi
>>>>>> >>
>>>>>> >> While trying to add a journal entry (mp3 file) from etoys-113, i'm
>>>>>> getting
>>>>>> >> ."An error has occurred; you should probably just hit abandon.
>>>>>> Sorry"
>>>>>> >>
>>>>>> >> Is this known?
>>>>>> >>
>>>>>> >> Log attached
>>>>>> >>
>>>>>> >
>>>>>> > A clue on what this might be happening and how to solve it,
>>>>>> appreciated.
>>>>>> >
>>>>>> > Thanks :)
>>>>>> >
>>>>>> >
>>>>>> > Well, the relevant lines in the error log seem to be these:
>>>>>> >
>>>>>> > DBusError: Traceback (most recent call last):
>>>>>> >   File "/usr/lib/python2.7/site-packages/dbus/service.py", line
>>>>>> 702, in
>>>>>> > _message_cb
>>>>>> >     retval = candidate_method(self, *args, **keywords)
>>>>>> >   File "/usr/lib/python2.7/site-packages/carquinyol/datastore.py",
>>>>>> line 355,
>>>>>> > in get_properties
>>>>>> >     metadata = self._metadata_store.retrieve(uid)
>>>>>> >   File
>>>>>> "/usr/lib/python2.7/site-packages/carquinyol/metadatastore.py", line
>>>>>> > 41, in retrieve
>>>>>> >     return metadatareader.retrieve(metadata_path, properties)
>>>>>> > IOError: Couldn't open metadata directory
>>>>>> > /home/olpc/.sugar/default/datastore//m//media/Philips/Buenos
>>>>>> Muchachos/Se
>>>>>> > Pule La Colmena/2-06 Corazonoro.mp3/metadata
>>>>>> >
>>>>>> > So apparently Etoys tries to access the metadata for the MP3 but the
>>>>>> > datastore fails to find it. Etoys does not handle that case, it
>>>>>> relies on
>>>>>> > get_properties() succeeding. Is that wrong?
>>>>>>
>>>>>> Being a mp3 do we even have the correct bits installed to be able to
>>>>>> retrieve that information?
>>>>>
>>>>>
>>>>>
>>>>> In this case what would be the proper bits ?
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>> Our default builds don't come with the
>>>>>> ability to play mp3 files so I'm not sure if we can even read the
>>>>>> metadata.
>>>>>>
>>>>>>
>>>> Also realized that the same problem is happening on
>>>> ogg files, so doesn't seem related to codecs.
>>>>
>>>>
>>>>
>>>>>  Peter
>>>>>> _______________________________________________
>>>>>> Sugar-devel mailing list
>>>>>> Sugar-devel at lists.sugarlabs.org
>>>>>> http://lists.sugarlabs.org/listinfo/sugar-devel
>>>>>>
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> Sugar-devel mailing list
>>>> Sugar-devel at lists.sugarlabs.org
>>>> http://lists.sugarlabs.org/listinfo/sugar-devel
>>>>
>>>>
>>>
>>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sugarlabs.org/archive/sugar-devel/attachments/20120530/0feabd21/attachment-0001.html>


More information about the Sugar-devel mailing list