The Inbox: Sound-nice.44.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Inbox: Sound-nice.44.mcz

commits-2
Nicolas Cellier uploaded a new version of Sound to project The Inbox:
http://source.squeak.org/inbox/Sound-nice.44.mcz

==================== Summary ====================

Name: Sound-nice.44
Author: nice
Time: 11 December 2017, 9:28:57.599 pm
UUID: 815ceacc-8a61-46c9-946d-0d6ea2761f67
Ancestors: Sound-topa.43

Transform 2 repeat loops into whileTrue: loops in ADPCMCodec

=============== Diff against Sound-topa.43 ===============

Item was changed:
  ----- Method: ADPCMCodec>>nextBits: (in category 'bit streaming') -----
  nextBits: n
  "Answer the next n bits of my bit stream as an unsigned integer."
 
  | result remaining shift |
  <inline: true>
 
  result := 0.
  remaining := n.
 
  [
  shift := remaining - bitPosition.
+ shift > 0 ]
+ whileTrue: [  "consumed currentByte buffer; fetch next byte"
- shift > 0
- ifTrue: [  "consumed currentByte buffer; fetch next byte"
  result := result + (currentByte << shift).
  remaining := remaining - bitPosition.
  currentByte := (encodedBytes at: (byteIndex := byteIndex + 1)).
+ bitPosition := 8].
+
+ "update bits left in currentByte buffer"
+ result := result + (currentByte >> (0 - shift)).
+ bitPosition := bitPosition - remaining.
+ "mask out the consumed bits:"
+ currentByte := currentByte bitAnd: (255 >> (8 - bitPosition)).
+ ^ result
- bitPosition := 8]
- ifFalse: [  "still some bits left in currentByte buffer"
- result := result + (currentByte >> (0 - shift)).
- bitPosition := bitPosition - remaining.
- "mask out the consumed bits:"
- currentByte := currentByte bitAnd: (255 >> (8 - bitPosition)).
- ^ result]] repeat
  !

Item was changed:
  ----- Method: ADPCMCodec>>nextBits:put: (in category 'bit streaming') -----
  nextBits: n put: anInteger
  "Write the next n bits to my bit stream."
 
  | buf bufBits bitsAvailable shift |
  <inline: true>
 
  buf := anInteger.
  bufBits := n.
  [
  bitsAvailable := 8 - bitPosition.
  shift := bitsAvailable - bufBits.  "either left or right shift"
  "append high bits of buf to end of currentByte:"
+ shift < 0 ]
+ whileTrue: [  "currentByte buffer filled; output it"
- shift < 0
- ifTrue: [  "currentByte buffer filled; output it"
  currentByte := currentByte + (buf >> (0 - shift)).
  encodedBytes at: (byteIndex := byteIndex + 1) put: currentByte.
  bitPosition := 0.
  currentByte := 0.
  "clear saved high bits of buf:"
  buf := buf bitAnd: (1 << (0 - shift)) - 1.
+ bufBits := bufBits - bitsAvailable].
+
+ "update bits available in currentByte buffer"
+ currentByte := currentByte + (buf << shift).
+ bitPosition := bitPosition + bufBits.
+ ^ self
- bufBits := bufBits - bitsAvailable]
- ifFalse: [  "still some bits available in currentByte buffer"
- currentByte := currentByte + (buf << shift).
- bitPosition := bitPosition + bufBits.
- ^ self]] repeat
  !