|
![]() |
|
Thread Tools | Search this Thread | Display Modes |
![]() |
#41 |
Member
Join Date: Mar 2003
Location: Paris, France
Posts: 52
|
This is a beautiful day. Thanks ThinkTink for your great work!
Two quick remarks: - Some metadata fields are not displayed in Winamp FileInfo (track, year and genre AFAICT). They do appear correctly in XMPlay, Foobar, MediaInfo, TagScanner. - A minor nitpick about out_ds integration: fade-in/out works on pause and seek, but not on stop. ![]() ![]() |
![]() |
![]() |
![]() |
#42 |
Forum King
|
Please attach the files that aren't working in a zip or 7z archive and I'll take a look.
out_ds crossfades and fadeouts are working for me. I don't know why not for you. |
![]() |
![]() |
![]() |
#43 |
Forum King
|
Nevermind, I found the issue. New version attached.
| Opus Audio Codec plugins 2.0 | Embedded Album Art | DiskWrite | | Save your playlist first! | Live voice-over | X-Fade 2.2 | | More of my stuff... | Last edited by thinktink; 10th March 2013 at 00:22. |
![]() |
![]() |
![]() |
#44 |
Senior Member
|
Works great.
Actually what I don't like about opus is that all input streams are first resampled to 48 kHz as every Opus file is always 48 kHz. It is a good thing that the original sample rate is displayed in File info, but in Winamp itself it is always indicated as 48 kHz. Is there any way to change this? I mean, is there any way to get the original stream out of an Opus file without the means of resampling it back to its original sample rate after decoding the 48 kHz Opus core? (Which would be even worse)... I also wondered why the plugin's DLL is so big which causes a longer load time when running Winamp from a (slow) flash drive... I also have another suggestion: It would be fine to support Album Art for Opus! This is also specified already, it's just a BASE64 blob which is stored in a text field named "metadata_block_picture". See example file: http://meta.metaebene.me/media/raumz...r-orbiter.opus @Winamp Dev team: Are there any plans to include the Opus plugin (or another one) in one of the next Releases "officially"? Thank for all your great work!! Best regards, kzuse |
![]() |
![]() |
![]() |
#45 |
Forum King
|
The opus libraries do seem to have a set of resampler functions in them but the documentation on them is cryptic at best. Will look into it further. However, the Opus codec itself is only 48KHz. Audio that's not already 48KHz gets converted to 48KHz before being sent to Opus, that's just the nature of the codec. I saw no point originally in researching resampling ('till you mentioned it.)
As for the album art, I'll take a look. Should've mentioned it sooner though. lol [EDIT/] P.S.: Thanks for the egregiously long test vector. | Opus Audio Codec plugins 2.0 | Embedded Album Art | DiskWrite | | Save your playlist first! | Live voice-over | X-Fade 2.2 | | More of my stuff... | Last edited by thinktink; 4th March 2013 at 23:53. |
![]() |
![]() |
![]() |
#46 |
Senior Member
|
OK, thanks for the information!
Regarding the test vector, yeah, it's a well-known German podcaster who publishes all his podcasts in several formats, currently MP3, MP4 (HE-AAC), Ogg Vorbis, and since 4 or 5 months or so, also Ogg Opus. --kzuse |
![]() |
![]() |
![]() |
#47 |
Forum King
|
El-Wrong-O. It's not anything like a Blob (Binary Logical Object) in base64. It's actually a binary FLAC picture struct in base64 of which all of the fields are big endian instead of the little endian native on Intel compatible architectures. It's going to be a long week.
|
![]() |
![]() |
![]() |
#48 |
Forum King
|
Album art.
Progress, I am making it: |
![]() |
![]() |
![]() |
#49 | |
Senior Member
|
Quote:
![]() And looking at your screenshot - WELL DONE - looks like a huge progress! Thank you!!! ![]() ![]() ![]() Have a nice weekend! |
|
![]() |
![]() |
![]() |
#50 |
Forum King
|
Is anybody else experiencing a floating point divide-by-zero exception with Modern Skins only with streaming? Right now I'm fighting one (it was there apparently before the Album Art update) now and both the Borland Debugger and the Microsoft one is saying it's only occurring in gen_ff.dll. However, the call stack (of both) is not showing it's going through any of my plugin's function calls when it throws the exception. It's really odd. The call stack is showing me that along the way ::GetDC and ::wcstol is being called.
|
![]() |
![]() |
![]() |
#51 |
Forum King
|
Nevermind, I figured it out. Apparently, modern skins don't like it when you return a -1 length for streams instead of -1000 (used to indicate an audio source of indeterminable or continuous length.)
|
![]() |
![]() |
![]() |
#52 |
Forum King
|
Blamo! Album art, including streaming art with Winamp version 5.7 or higher.
Attached. | Opus Audio Codec plugins 2.0 | Embedded Album Art | DiskWrite | | Save your playlist first! | Live voice-over | X-Fade 2.2 | | More of my stuff... | Last edited by thinktink; 10th March 2013 at 04:27. |
![]() |
![]() |
![]() |
#53 |
Forum King
|
if only i used opus!
![]() interesting that your example file is mono. do ratings get saved to opus files/tags? is there a documented tagging standard for it? PENN STATE Radio or http://www.LION-Radio.org/ -- BUG #1 = Winamp skips short tracks Wish #1 = Multiple Column Sorting Wish #2 = Add TCMP/Compilation editing |
![]() |
![]() |
![]() |
#54 |
Forum King
|
If Winamp sends the ratings to the extended file info functions then yes, it will save the ratings. Otherwise if it does ratings through a different mechanism then I will need to research the API that enables that and the tags specific to Ogg/Opus that store it.
|
![]() |
![]() |
![]() |
#55 | |
Join Date: Sep 2003
Posts: 27,873
|
you'll get "rating" as the 'data' field, but need to store it against "RATING" in the vorbis comment tag.
for saving... save <value passed> * 20 (this converts the 5* range to 0-100). for reading... Quote:
|
|
![]() |
![]() |
![]() |
#56 |
Forum King
|
Odd, I'm getting the call to winampGetExtendedFileInfo/W but not the call to winampSetExtendedFileInfo/W when I try to set a rating.
|
![]() |
![]() |
![]() |
#57 |
Join Date: Sep 2003
Posts: 27,873
|
have you enabled saving ratings to files? preferences -> media library -> library options tab.
|
![]() |
![]() |
![]() |
#58 |
Forum King
|
The "Save ratings to file for compatible formats (default: off)" checkbox was unchecked but after checking it, it still didn't work. I also compiled a debug version of X-Fade to see what in_mp3 would return for the "rating" field but it just returned 1:"\0". How does Winamp determine if a plugin is "compatible"?
[EDIT/] Nevermind, I didn't have ml_local.dll installed. |
![]() |
![]() |
![]() |
#59 |
Forum King
|
Now with ratings support.
Attached. | Opus Audio Codec plugins 2.0 | Embedded Album Art | DiskWrite | | Save your playlist first! | Live voice-over | X-Fade 2.2 | | More of my stuff... | Last edited by thinktink; 11th March 2013 at 21:48. |
![]() |
![]() |
![]() |
#60 |
Join Date: Sep 2003
Posts: 27,873
|
no ml_local would explain it. and compatible is just an input plug-in being able to process winampSetExtendedFileInfo/W requests for the values needed.
|
![]() |
![]() |
![]() |
#61 |
Senior Member
|
Wow, just wow - thank you!
Yes, those podcasts are only in mono. Here's the complete "MediaInfo" output for the example file posted above: HTML Code:
General ======= Complete name : D:\Download\rz052-solar-orbiter.opus Format : OGG File size : 24.5 MiB Duration : 1h 8mn Overall bit rate : 50.2 Kbps Album : Raumzeit Track name : RZ052 Solar Orbiter Track name/Position : 52 Performer : Tim Pritlove Encoded by : auphonic.com Genre : Podcast Recorded date : 2013 Writing application : opusenc from opus-tools 0.1.5 Terms of use : http://creativecommons.org/licenses/by-nc-nd/3.0/de/ tags : timpritlove,raumzeit,podcast,esa,dlr,raumfahrt rights-date : 2013 rights : 2013 Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Germany rights-uri : http://creativecommons.org/licenses/by-nc-nd/3.0/de/ encoded_by : auphonic.com metadata_block_picture : AAAAAwAAAAppbWFnZS9qcGVnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHPy/ {...cut...} Audio ===== ID : 579673411 (0x228D1D43) Format : Opus Duration : 1h 8mn Channel(s) : 1 channel Channel positions : Front: C Sampling rate : 44.1 KHz Compression mode : Lossy Writing library : libopus 1.0.1 Menu ==== 00:00:00.000 : Intro 00:00:41.625 : Vorstellung 00:01:52.010 : Persönlicher Hintergrund 00:09:18.281 : Missionen zur Sonne 00:12:24.870 : Zur Sonne fliegen 00:17:55.250 : Flug des Solar Orbiter 00:27:19.130 : Ziele der Mission 00:36:04.010 : Solarzyklus 00:37:59.693 : Instrumente und Datenübermittlung 00:54:03.750 : Planung des Starts 00:59:58.625 : Troubleshooting 01:06:20.922 : Missionsdauer But there are some other issues I encountered with the plugin: - Seeking backwards in the long opus file works well in 99% of all cases, but sometimes, pressing the "left" arrow key on the keyboard jumps to some random position in the file, instead of 5 seconds back. Especially annoying with podcasts... ![]() - When playing an opus file through out_ds (standard output plugin), pressing "Stop" does not do the short fade-out as it does with all other file types. Maybe there's some buffering issues? I have enabled short fades for pause, seeking and stop in out_ds, but stopping an opus file results in immediate "cut off". - A very strange one: While an opus file plays, it is difficult to use the playlist buttons (those pop-up-button-menus) in classic skin! When you click on one of those, for example, "Add", the button bar pops up but immediately disappears, being "overwritten" by the playlist's contents, then again flickering up, also correlated to mouse movement. Weird, I cannot explain that to myself... - I do not understand why the DLL has to be so big... it's 1.4 MB, whereas most other (original) Nullsoft input plugins are ~100 KB or ~300 KB or so... Not a major issue, but it leads me to thinking about loading times and memory consumption? ![]() Again a big thank you and keep it up! ![]() Best regards, kzuse |
![]() |
![]() |
![]() |
#62 |
Senior Member
|
...And I found another one:
With Opus, the title doesn't scroll in the taskbar, if "Scroll Title in Taskbar" is enabled, while playing. With all other formats this works. Strangely, when pausing the Opus file, the title starts scrolling. But it doesn't add "[Paused]" to the scrolling title, as Winamp does with all other formats! Also a very weird issue.... |
![]() |
![]() |
![]() |
#63 | ||||
Forum King
|
Quote:
Quote:
Quote:
Here's why: Because I don't wanna spend 50 billion hours coding and debugging UI elements and window boxes. It's the Borland VCL that's adding to the size. It's what's enabled this plugin to be available so soon instead of 5 years later. That's not likely going to change anytime soon. Quote:
I'm seeing that as well now. I will investigate. |
||||
![]() |
![]() |
![]() |
#64 |
Senior Member
|
|
![]() |
![]() |
![]() |
#65 |
Forum King
|
I am already aware of this radio station (and have many of their (broken) streams in my playlist for testing and debugging purposes) and many others that are already streaming opus.
|
![]() |
![]() |
![]() |
#66 |
Member
Join Date: Mar 2003
Location: Paris, France
Posts: 52
|
I toyed around with the fading settings, and I discovered that the plugin correctly fades out with the "end of song" option enabled, but not with the "pause/stop" option (more precisely: "pause" works, "stop" doesn't).
|
![]() |
![]() |
![]() |
#67 | |
Forum King
|
Quote:
Attached is a new version that:
| Opus Audio Codec plugins 2.0 | Embedded Album Art | DiskWrite | | Save your playlist first! | Live voice-over | X-Fade 2.2 | | More of my stuff... | Last edited by thinktink; 17th March 2013 at 21:30. |
|
![]() |
![]() |
![]() |
#68 |
Member
Join Date: Mar 2003
Location: Paris, France
Posts: 52
|
That's odd indeed.
On my config, the only way to get proper fadeout on stop is to enable "end of song" in the DirectSound output settings. (But since "end of song" fading ruins gapless playback, that's not an option.) I don't quite understand why in_bpopus doesn't work with "pause/stop" while other plugins do (Vorbis, Flac, etc), but then again it's a minor issue. |
![]() |
![]() |
![]() |
#69 |
Forum King
|
While toying around with my new Embedded Album Art plugin I found a flaw in the opus library's case-insensitive search for the METADATA_BLOCK_PICTURE tag. It wasn't finding it as I was using lowercase letters and it was odd that it did for some but not others.
Anyways, updated version attached. @Kaminari: I am now seeing the issue. I had all of the fading options in out_ds turned on instead of just the default ones. However, I still do not understand why out_ds is not crossfading with just that option but will when the others are enabled. Somebody from the official Winamp Dev Team would have to say exactly what it is step-by-step a developer has to do exactly to get that to work. It's not an internal buffering issue that's for sure. There is no buffering functionality in input plugins from what the SDK showing. Only just what the output plugin tells the input plugin what to send to the vis functions for buffering (to keep the visualizations in-sync with the audio I imagine.) | Opus Audio Codec plugins 2.0 | Embedded Album Art | DiskWrite | | Save your playlist first! | Live voice-over | X-Fade 2.2 | | More of my stuff... | Last edited by thinktink; 24th March 2013 at 00:17. |
![]() |
![]() |
![]() |
#70 |
Ben Allison
Former Winamp Developer Join Date: Jan 2005
Location: Brooklyn, NY
Posts: 1,057
|
Make sure you're calling
code: in your Stop() function. Don't call this on the playback thread, call it directly in Stop (after you've waited for the thread to die). Most of the first party plugins do something like this: code: On the playback thread, handle stop just by calling code: And don't do anything else. You should only call code: in a legitimate end-of-file situation. Hope that helps! |
![]() |
![]() |
![]() |
#71 |
Forum King
|
Omnomnomnomnomnomnomnom... /em licks fingers.
Will make the changes as soon as I can. You're right, I'm calling ->Close() in the context of the playback thread instead of in Stop(). I actually tried that way at one point but it seemed to hang the Winamp main UI when I did and calling Stop in the thread was an easy solution. However, things have changed internally with the threading last time I tried it so maybe this time it'll work right. |
![]() |
![]() |
![]() |
#72 |
Forum King
|
Well, calling ->Close() inside of Stop() doesn't hang Winamp any more but it still doesn't work entirely. I will leave it there however as it has made small progress as now at least it fades on stop intermittently (but rarely.) The only way I can get a consistent fade out on stop is if I hit [X] (to play) and then [V] (to stop) right after (like not even a second delay between the key presses.)
This bug happens only if you have "end of song" turned off, which is odd. |
![]() |
![]() |
![]() |
#73 |
Ben Allison
Former Winamp Developer Join Date: Jan 2005
Location: Brooklyn, NY
Posts: 1,057
|
|
![]() |
![]() |
![]() |
#74 |
Forum King
|
Actually, I'm not calling that at all, at least not explicitly.
I just finished writing a dummy output plugin that outputs to a log file the thread id, name, parameters, and return value (if applicable) of all the calls to it and passing it off to out_ds (hardcoded) to see the actual difference between what the core plugins do and what mine is doing. Just so you know, I'm still on it. |
![]() |
![]() |
![]() |
#75 |
Forum King
|
hey TT, would you consider doing an ALAC plugin? I mainly use mp3 and FLAC but I have been considering switching FLAC to ALAC if winamp would support it. its open source now and royalty free:
http://en.wikipedia.org/wiki/Alac http://alac.macosforge.org/ the idea is my lossless would then work on PC/winamp and istuff natively. it looks like the tagging is the same as m4a, but we're beyond my pay grade there. as long as I can get ratings in there though! ![]() PENN STATE Radio or http://www.LION-Radio.org/ -- BUG #1 = Winamp skips short tracks Wish #1 = Multiple Column Sorting Wish #2 = Add TCMP/Compilation editing |
![]() |
![]() |
![]() |
#76 |
Forum King
|
I make no guarantees but I'll consider looking into it after I fix in_bpopus's fade on stop.
|
![]() |
![]() |
![]() |
#77 |
Senior Member
|
What would be the advantage of ALAC in favor of FLAC?
|
![]() |
![]() |
![]() |
#78 |
Forum King
|
both are lossless but as I mentioned, ALAC works natively with istuff, (iTunes, ipods, etc) whereas FLAC does not.
http://alac.macosforge.org/ PENN STATE Radio or http://www.LION-Radio.org/ -- BUG #1 = Winamp skips short tracks Wish #1 = Multiple Column Sorting Wish #2 = Add TCMP/Compilation editing |
![]() |
![]() |
![]() |
#79 |
Member
Join Date: Mar 2003
Location: Paris, France
Posts: 52
|
ALAC is already supported by in_mp4 when Winamp Essentials is installed. Just add the ALAC extension to your in_mp4 settings and you're good to go. (Whoever decided to use M4A as the official extension of the Apple lossless format is a moron.)
|
![]() |
![]() |
![]() |
#80 | |
Forum King
|
Quote:
what is the proper extension for alac? I am kinda confused by what you are saying, since I thought .m4a was the proper extension for alac. so do I just add "alac" to the input plugin? PENN STATE Radio or http://www.LION-Radio.org/ -- BUG #1 = Winamp skips short tracks Wish #1 = Multiple Column Sorting Wish #2 = Add TCMP/Compilation editing |
|
![]() |
![]() |
![]() |
|
Tags |
opus |
Thread Tools | Search this Thread |
Display Modes | |
|
|