[Sugar-devel] Etoys mp3 files
Bert Freudenberg
bert at freudenbergs.de
Wed May 30 06:39:47 EDT 2012
Did you move the plugin to where the other plugins are, and possibly renamed it to match the other plugins name scheme?
Also, are you sure that "DELTA.MPG" actually is an mp3 file?
- 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/20f9132c/attachment-0001.html>
More information about the Sugar-devel
mailing list