IPB

Welcome Guest ( Log In | Register )

 
Reply to this topicStart new topic
Porting Wavpack decoder to Dart
darkbyte
post Jan 30 2013, 11:51
Post #1





Group: Members
Posts: 42
Joined: 14-June 11
Member No.: 91517



Hi!

I'm trying to port the Wavpack decoder to Dart. I've used the Java version as the starting point and i've actually made it compilable very quickly. I'm trying to test it first with the standalone Dart VM and when that's working i will make it compatible with in-browser running.

When i started debugging the code i've realized that bit shifting in Dart is not working the same way as in Java because Dart have just one fixed point integer format. It uses a similar numeric system as Javascript. (there's a signed int type for generic integer handling, afaik its a 64bit signed integer, and num for double precision). The decoder fails very quickly in the beginning when it tries to calculate header's CRC. As i see there's a lot of bit manipulations in the code so i guess there's plenty of this kind of errors awaiting for me.

I'm wondering if there's a floating point version of the decoder available? Maybe that would be easier to port. I guess an even better way would be to understand the format and write a Dart decoder from scratch but that's a lot of work although it would be very interesting.

What do you think? smile.gif

Thanks!

Mod: i'll upload my current code to a code hosting site tonight if i won't forget it. tongue.gif

This post has been edited by darkbyte: Jan 30 2013, 12:03
Go to the top of the page
+Quote Post
nu774
post Jan 30 2013, 12:32
Post #2





Group: Developer
Posts: 295
Joined: 22-November 10
From: Japan
Member No.: 85902



Maybe you had better read ECMA script spec, where semantics of bit-wise operator (such as logical/arithmetic shift) are defined. And when you are working with 32bit integer arithmetic, maybe you could do either of the following:
CODE
(some expression) | 0 /* convert to sint32 */
(other expression) >>> 0 /* convert to  uint32 */
Go to the top of the page
+Quote Post
darkbyte
post Jan 30 2013, 12:38
Post #3





Group: Members
Posts: 42
Joined: 14-June 11
Member No.: 91517



QUOTE (nu774 @ Jan 30 2013, 13:32) *
Maybe you had better read ECMA script spec, where semantics of bit-wise operator (such as logical/arithmetic shift) are defined. And when you are working with 32bit integer arithmetic, maybe you could do either of the following:
CODE
(some expression) | 0 /* convert to sint32 */
(other expression) >>> 0 /* convert to  uint32 */


I'm wondering it this works in Dart aswell. I'll give it a shot tonight. Thanks smile.gif
Go to the top of the page
+Quote Post
soiaf
post Jan 30 2013, 21:51
Post #4





Group: Members (Donating)
Posts: 69
Joined: 13-May 05
From: Dublin, Ireland
Member No.: 22024



Sounds interesting, looking forward to seeing the end result!
If you download the Haxe decoder from the WavPack website, you'll find a file in the zip file called MyWavPack.js - this contains a WavPack decoder Javascript file generated from the various Haxe files - if Dart is using a similar method as Javascript for bit shifting then perhaps looking at this code may help.
Go to the top of the page
+Quote Post
darkbyte
post Jan 30 2013, 23:01
Post #5





Group: Members
Posts: 42
Joined: 14-June 11
Member No.: 91517



I couldn't make the bit shifting working in Dart as you suggested.
However i've found a more direct way to get signed fix point integers in Dart.
For eg. if you have a buffer with bytes loaded you can load a signed 32 bit integer this way using the "dart:scalarlist" package:

CODE
  static int getS32Int(List<int> buffer, int from) {
    final resultList = new Int8List(4)
    ..setRange(0, 4, buffer, from);
    return resultList.asByteArray().getInt32(0);
  }


On the sample Wavpack file i'm working with i've already got till the read_entropy_vars phase of WavPackOpenInputFile(). smile.gif
So i'm making progress but i have to debug the Dart and Java code side by side to validate the calculations.
Go to the top of the page
+Quote Post
bryant
post Feb 1 2013, 04:34
Post #6


WavPack Developer


Group: Developer (Donating)
Posts: 1219
Joined: 3-January 02
From: San Francisco CA
Member No.: 900



This is very cool...please keep us posted on your progress (and feel free to post any questions that come up)!

David
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 



RSS Lo-Fi Version Time is now: 22nd May 2013 - 14:01