'From Squeak3.8 of ''5 May 2005'' [latest update: #6665] on 26 February 2006 at 1:16:15 pm'! Object subclass: #MPEGFile instanceVariableNames: 'pathToFile fileBits fileIndex endianness buffer ' classVariableNames: 'Registry ' poolDictionaries: '' category: 'Movies-Kernel'! Object subclass: #MPEGPlayer instanceVariableNames: 'external form startTime clockBias frameRate lastDelay noSound sampleRate audioPlayerProcess videoPlayerProcess playerProcessPriority soundQueue timeCheck semaphoreForSound errorForSoundStart morph volume buffer isBuffer ' classVariableNames: '' poolDictionaries: '' category: 'Movies-Kernel'! !MPEGFile methodsFor: 'access' stamp: 'JMM 1/20/2006 18:12'! buffer ^buffer! ! !MPEGFile methodsFor: 'access' stamp: 'JMM 1/20/2006 23:15'! isBufferBased ^(buffer == nil) not ! ! !MPEGFile methodsFor: 'initialize-release' stamp: 'JMM 1/20/2006 18:11'! openBuffer: aByteArray pathToFile := nil. buffer _ aByteArray. fileBits := self primFileOpenABuffer: aByteArray size: aByteArray size. fileBits notNil ifTrue: [fileIndex := Smalltalk registerExternalObject: fileBits. self register.] ! ! !MPEGFile methodsFor: 'primitives' stamp: 'JMM 1/20/2006 17:52'! primFileOpenABuffer: buffer size: aSize "Open the file" self primitiveFailed! ! !MPEGFile class methodsFor: 'instance creation' stamp: 'JMM 1/20/2006 18:18'! openBuffer: aBuffer ^self new openBuffer: aBuffer! ! !MPEGFile class methodsFor: 'instance creation' stamp: 'JMM 1/20/2006 23:05'! openFileUseBuffer: aPath | bar bytes | bar _ StandardFileStream oldFileNamed: aPath. bar binary. bytes _ bar contents. ^self new openBuffer: bytes! ! !MPEGPlayer methodsFor: 'access' stamp: 'JMM 1/20/2006 18:10'! external [external hasVideo] on: Error do: [self isBuffer ifTrue: [external := MPEGFile openBuffer: external buffer] ifFalse: [(MPEGFile isFileValidMPEG: external fileName) ifFalse: [^self error: 'Mpeg File is invalid']. external := MPEGFile openFile: external fileName]]. ^external! ! !MPEGPlayer methodsFor: 'access' stamp: 'JMM 1/20/2006 18:05'! isBuffer ^isBuffer == true! ! !MPEGPlayer methodsFor: 'initialize-release' stamp: 'JMM 1/20/2006 18:17'! initializeWithBuffer: aBuffer form: aForm isBuffer := true. buffer := aBuffer. self initialize: aBuffer. self form: aForm. ^self! ! !MPEGPlayer methodsFor: 'initialize-release' stamp: 'JMM 1/20/2006 18:07'! initializeWithBuffer: aBuffer morph: aMorphic isBuffer _ true. buffer _ aBuffer. self initialize: aBuffer. self morph: aMorphic. ^self! ! !MPEGPlayer methodsFor: 'initialize-release' stamp: 'JMM 1/20/2006 18:54'! initialize: aPath self halt. self isBuffer ifTrue: [external := MPEGFile openBuffer: buffer] ifFalse: [(MPEGFile isFileValidMPEG: aPath) ifFalse: [^nil]. external := MPEGFile openFile: aPath.]. self playerProcessPriority: Processor userSchedulingPriority. self lastDelay: 10. volume := 1.0. errorForSoundStart := 500. semaphoreForSound := Semaphore new. self startTime: (Array new: self totalVideoStreams). self clockBias: (Array new: self totalVideoStreams withAll: 0).! ! !MPEGPlayer class methodsFor: 'instance creation' stamp: 'JMM 1/20/2006 18:16'! playBuffer: aBuffer onForm: aForm ^self new initializeWithBuffer: aBuffer morph: aForm! ! !MPEGPlayer class methodsFor: 'instance creation' stamp: 'JMM 1/20/2006 18:06'! playBuffer: aBuffer onMorph: aMorph ^self new initializeWithBuffer: aBuffer morph: aMorph! ! Object subclass: #MPEGPlayer instanceVariableNames: 'external form startTime clockBias frameRate lastDelay noSound sampleRate audioPlayerProcess videoPlayerProcess playerProcessPriority soundQueue timeCheck semaphoreForSound errorForSoundStart morph volume buffer isBuffer' classVariableNames: '' poolDictionaries: '' category: 'Movies-Kernel'! Object subclass: #MPEGFile instanceVariableNames: 'pathToFile fileBits fileIndex endianness buffer' classVariableNames: 'Registry' poolDictionaries: '' category: 'Movies-Kernel'!