Musepack Forums

Musepack Forums (https://forum.musepack.net/index.php)
-   MPC for UNIX (https://forum.musepack.net/forumdisplay.php?f=9)
-   -   Gstreamer plugin for musepack (https://forum.musepack.net/showthread.php?t=9)

Lefungus 01 August 2004 09:30 am

Gstreamer plugin for musepack
 
This is my next target as it seems to be possible under some conditions. Those are that the source must be a musepack file. Not a big deal when it comes to music players since they exactly use that.
But you won't be able to leverage gstreamer possibilities, and mux musepack in other containers. That will only be available with sv7.5.

As long as it allows me to play musepack under muine, rhythmbox or juk, all will be fine :)

mpcfiend 14 October 2004 04:47 am

I'm curious how the battle is going. I too want to play Musepack within the KDE framework. :)

Ganymed 14 October 2004 07:40 am

Quote:

I'm curious how the battle is going. I too want to play Musepack within the KDE framework. :)
amaroK is a audio player for KDE which has Musepack support. Too bad, that it doesn't support cuesheets and ReplayGain.

Best regards,
~ Florian

Lefungus 14 October 2004 03:15 pm

I haven't done much about it since I am currently very busy. Anyway, the more I look at it, the more hackish it looks like, so don't hold your breath on this topic.

mpcfiend 15 October 2004 02:20 am

Thanks for the replies; I guess we'll have to wait for SV 7.5 to be released before anything comes of this topic. In the meantime, I'll try Amarok, thanks for that tip!

Beelzebubu 07 November 2004 01:47 pm

Hi,

since it takes so long, I'll give it a try myself. Apparently I ended up getting a MPC file on my harddisk for some reason and I want to play it. Some questions:
* MPC_decoder::Decode() takes a int32 as argument (ok, so it's MPC_SAMPLE_FORMAT but that's the same thing). Howlarge should I allocate this buffer? FrameLength*samplesize*channels?
* Is the format "plain" signed 32-bit integer or is there something special? Looking at the headers, it seems like the format is -(1<<29) to (1<<29), which seems weird because afaik, integer 32-bit signed audio is in -(1<<30) to (1<<30) (full 32-bit data value range). Am I just missing something obvious? I don't want the plugin to do any sort of sample conversion, we have way better plugins elsewhere in GStreamer to do that. A musepack decoder should just decode.
* am I supposed to keep track of timestamps myself or are there timestamps embedded in the stream? If not, how do I know the exact timestamp after a seek (given that it's VBR)? Or doesn't that matter?
* can I reuse a MPC_decoder object between streams?
* who takes ownership (and thus takes care of dereferencing) the MPC_reader that I provide to MPC_decoder?
* What's APEv2 and how do I read it?

Thanks,

Ronald

Lefungus 07 November 2004 03:25 pm

The documentation of APEv2 tags is here.
Currently, it seems to be broken, so google's cache will do the job meanwhile [1] [2] [3] [4].

I can't really help about the internals of libmusepack though.

DEATH 07 November 2004 04:38 pm

Quote:

* MPC_decoder::Decode() takes a int32 as argument (ok, so it's MPC_SAMPLE_FORMAT but that's the same thing). Howlarge should I allocate this buffer? FrameLength*samplesize*channels?
MPC_SAMPLE_FORMAT is either int32 (signed) or float, depending on MPC_FIXED_POINT #define in mpc_math.h. Floating-point mode is faster on about anything that has an FPU. As indicated by comments in headers, nominal range of fixed-point mode output is -MPC_FIXED_POINT_SCALE .. MPC_FIXED_POINT_SCALE, while nominal output range for floating-point decoding is -1 .. 1. Results may exceed nominal range, calling code is responsible for clipping them. Output buffer for Decode() should be MPC_decocder::DecodeBufferLength items long.
Quote:

* am I supposed to keep track of timestamps myself or are there timestamps embedded in the stream? If not, how do I know the exact timestamp after a seek (given that it's VBR)? Or doesn't that matter?
Library is responsible for seeking by itself. You only call the SeekSeconds() or SeekSamples() function. There are no timestamps in the stream, and seeking is very inefficient because of cross-frame dependencies.
Quote:

* can I reuse a MPC_decoder object between streams?
No.
Quote:

* who takes ownership (and thus takes care of dereferencing) the MPC_reader that I provide to MPC_decoder?
Caller has to create/destroy the MPC_reader callback object.

On a side note, it seems someone axed sample.cpp from the archive instead of updating it to compile it with new library changes. I've fixed it and temporarily mirrored here.

Shy 07 November 2004 05:41 pm

The above sample.cpp is now added to the libmusepack archive on the site.

Beelzebubu 07 November 2004 06:27 pm

ok, thanks all, MPC support added. Will do APEv2 later on.

mpcfiend 07 November 2004 11:06 pm

Thanks muchly :) I'm sure there's a whole crew over at HA that was looking forward to hearing this as well.

Regards,
James

Shy 07 November 2004 11:37 pm

Thanks Beelzebubu. I'm sure our team would be glad to answer all further questions you might have, including APEv2 matters. You could ask the same you asked in your news update here, just without the "ignorant morons" part, and you might learn a thing or two.


All times are GMT. The time now is 12:02 pm.

Powered by vBulletin® Version 3.8.11 Beta 2
Copyright ©2000 - 2019, vBulletin Solutions Inc.