Opus inside OggPages, Decoding a live Opus internet stream |
Opus inside OggPages, Decoding a live Opus internet stream |
Nov 14 2012, 06:15
Post
#1
|
|
|
Group: Members Posts: 9 Joined: 14-November 12 Member No.: 104501 |
I'm currently working on a Winamp input plugin to provide better native support for the Opus codec than the one that dshow could provide linking in the k-lite codec pack. Metadata and whatnot.
Anyways, I'm dynamically linking in the official opusfile-0.1-win32 libraries from the opus-codec site and I have been able to succesfully decode and get Winamp to play a local .opus file. However, I've not been so fortunate with online streams. I am not familiar at all with any of the internals/packets/pages/whatevers of live streams. I can get my plugin to connect to a server, get the data it's outchucking, parse out the HTTP header, parse the seperate Ogg Pages, get the OpusHead, and get the OpusTags, but that's it. I tried sending, just the Ogg pages, a chain of Ogg pages, individual segments in the pages, to all of the in-memory functions of the libraries but they all either return error code -133 (OP_EBADHEADER), -137 (OP_EBADLINK), or -139 (OP_EBADTIMESTAMP). I know nothing of "granules", whatever that means. Can somebody tell me how to decode an Ogg Opus stream with those libraries or if it's not possible to? C++ tia This post has been edited by thinktink: Nov 14 2012, 06:19 |
|
|
|
![]() |
Nov 15 2012, 15:54
Post
#2
|
|
![]() Group: Developer Posts: 191 Joined: 8-July 03 Member No.: 7653 |
I am not familiar at all with any of the internals/packets/pages/whatevers of live streams. I can get my plugin to connect to a server, get the data it's outchucking, parse out the HTTP header, parse the seperate Ogg Pages, get the OpusHead, and get the OpusTags, but that's it. I tried sending, just the Ogg pages, a chain of Ogg pages, individual segments in the pages, to all of the in-memory functions of the libraries but they all either return error code -133 (OP_EBADHEADER), -137 (OP_EBADLINK), or -139 (OP_EBADTIMESTAMP). Live streams are exactly like files. You shouldn't need to do any parsing, you should be able to pass the data to opusfile using the callback apis. Opusfile has good http support internally, but unfortunately its POSIX-api only at this point so it doesn't include that functionality on Windows. I think it would be great if someone wanted to work on that. QUOTE Can somebody tell me how to decode an Ogg Opus stream with those libraries or if it's not possible to? Can you post your code? It's easier to point out problems in existing code then to walk over the whole process and hopefully clarify something for you by accident. This post has been edited by NullC: Nov 15 2012, 15:55 |
|
|
|
thinktink Opus inside OggPages Nov 14 2012, 06:15
thinktink QUOTE (NullC @ Nov 15 2012, 06:54) QUOTE ... Nov 15 2012, 16:28
thinktink QUOTE (NullC @ Nov 15 2012, 06:54) QUOTE ... Nov 15 2012, 17:57
christiansteifen Hi
You can use easy edcast to feed opus stream.
i... Nov 15 2012, 18:18
Dynamic QUOTE (christiansteifen @ Nov 15 2012, 17... Nov 15 2012, 20:53
Arkadas QUOTE (christiansteifen @ Nov 15 2012, 19... Feb 25 2013, 20:51
thinktink I've made significant progress but I'm sti... Nov 18 2012, 15:01
nu774 Made a (quick & dirty) patch for opusfile, whi... Nov 19 2012, 12:05
thinktink QUOTE (nu774 @ Nov 19 2012, 03:05) Made a... Nov 19 2012, 16:20
nu774 This patch is to be applied to the source code, no... Nov 19 2012, 17:15

thinktink QUOTE (nu774 @ Nov 19 2012, 08:15) This p... Nov 19 2012, 19:10
saratoga QUOTE (thinktink @ Nov 19 2012, 11:20) We... Nov 19 2012, 17:30
NullC QUOTE (thinktink @ Nov 19 2012, 08:20) Ju... Nov 27 2012, 17:59
thinktink QUOTE (NullC @ Nov 27 2012, 08:59) ...SNI... Nov 30 2012, 14:02
lvqcl Opusfile git: http://git.xiph.org/?p=opusfile.git;... Nov 19 2012, 21:05
thinktink QUOTE (lvqcl @ Nov 19 2012, 12:05) Opusfi... Nov 19 2012, 22:28![]() ![]() |
|
Lo-Fi Version | Time is now: 26th May 2013 - 09:07 |