Xiph.Org issueshttps://gitlab.xiph.org/groups/xiph/-/issues2017-04-08T10:59:27Zhttps://gitlab.xiph.org/xiph/vorbis/-/issues/232access violations and divides by 0 when usint ov_time_tell() with a not seeka...2017-04-08T10:59:27Zxaviergonzaccess violations and divides by 0 when usint ov_time_tell() with a not seekable stream```
Hello, take a look at the ov_time_tell function in vorbisfile.c
double ov_time_tell(OggVorbis_File *vf){
/* translate time to PCM position and call ov_pcm_seek */
int link=-1;
ogg_int64_t pcm_total=0;
double time_total=0.f;...```
Hello, take a look at the ov_time_tell function in vorbisfile.c
double ov_time_tell(OggVorbis_File *vf){
/* translate time to PCM position and call ov_pcm_seek */
int link=-1;
ogg_int64_t pcm_total=0;
double time_total=0.f;
if(vf->ready_state<OPENED)return(OV_EINVAL);
if(vf->seekable){
pcm_total=ov_pcm_total(vf,-1);
time_total=ov_time_total(vf,-1);
/* which bitstream section does this time offset occur in? */
for(link=vf->links-1;link>=0;link--){
pcm_total-=vf->pcmlengths[link*2+1];
time_total-=ov_time_total(vf,link);
if(vf->pcm_offset>=pcm_total)break;
}
}
return((double)time_total+(double)(vf->pcm_offset-pcm_total)/vf->vi
[link].rate);
}
As you may easily notice, when the vf is *not* seekable, link = -1, and
therefore in the return, it tries to access vf->vi[-1].rate (access violation),
with the side effect of being that 0, so it also performs a divide by 0
operation and since the result value is a double, it returns a NAN -INF. So it
is clearly a bug, therefore I propose the following change:
double ov_time_tell(OggVorbis_File *vf){
/* translate time to PCM position and call ov_pcm_seek */
int link=-1;
ogg_int64_t pcm_total=0;
double time_total=0.f;
if(vf->ready_state<OPENED)return(OV_EINVAL);
if(vf->seekable){
pcm_total=ov_pcm_total(vf,-1);
time_total=ov_time_total(vf,-1);
/* which bitstream section does this time offset occur in? */
for(link=vf->links-1;link>=0;link--){
pcm_total-=vf->pcmlengths[link*2+1];
time_total-=ov_time_total(vf,link);
if(vf->pcm_offset>=pcm_total)break;
}
return((double)time_total+(double)(vf->pcm_offset-pcm_total)/vf->vi
[link].rate);
}
else
return((double)vf->pcm_offset/vf->vi->rate);
}
which basicaly moves the return in the old function inside so it is only called
if the vf is seekable and adds a new return for non seekable files which
returns the current sample / current section rate, which is, that is, the
current second. Probably it doesn't work properly if the current section is
using a different rate than an old (possible) one, but it is always nicer than
an access violation and a divide by 0 and also a more accurate result than NAN -
INF :)
Thanks
```Monty MontgomeryMonty Montgomeryhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2347ACL should support names2020-10-15T14:20:49ZPhilipp SchafftACL should support namesACLs should support name=""s just like Roles do for easier administration.
This will become more important when Icecast will support multiple ACLs per Role.ACLs should support name=""s just like Roles do for easier administration.
This will become more important when Icecast will support multiple ACLs per Role.Philipp SchafftPhilipp Schaffthttps://gitlab.xiph.org/xiph/libao/-/issues/664aclocal m4 file needs to be updated2006-06-12T10:28:44Zdenisaclocal m4 file needs to be updatedaclocal issues the following warning :
/usr/share/aclocal/ao.m4:9: warning: underquoted definition of XIPH_PATH_AO
run info '(automake)Extending aclocal'
or see http://sources.redhat.com/automake/automake.html#Extending-aclocal
I t...aclocal issues the following warning :
/usr/share/aclocal/ao.m4:9: warning: underquoted definition of XIPH_PATH_AO
run info '(automake)Extending aclocal'
or see http://sources.redhat.com/automake/automake.html#Extending-aclocal
I think your ao.m4 file needs to be updated. IIRC, these are minor (backward-compatible) syntactic changes.
Stan SeibertStan Seiberthttps://gitlab.xiph.org/xiph/XiphDirectory/-/issues/9Add / as Genre seperator2020-05-06T20:21:09ZAndreas MiekeAdd / as Genre seperatorSome stations seem to use / as genre seperator insted of , or space.
![Problem](/uploads/35fe7ea8c6e0024cd70a04f29f0c100e/image.png)Some stations seem to use / as genre seperator insted of , or space.
![Problem](/uploads/35fe7ea8c6e0024cd70a04f29f0c100e/image.png)1.0.0Andreas MiekeAndreas Miekehttps://gitlab.xiph.org/xiph/icecast-server/-/issues/1936Add <audio> and <video> elements to supported streams on status page.2018-06-16T22:37:50ZThomas B. RückerAdd <audio> and <video> elements to supported streams on status page.Now that Firefox will ship with fixed chaining we can push this much more.
By supported I mean at least: vorbis, Opus, theora, WebMNow that Firefox will ship with fixed chaining we can push this much more.
By supported I mean at least: vorbis, Opus, theora, WebMIcecast 2.5.0Marvin ScholzMarvin Scholzhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2313Add a history url2019-11-27T11:34:37ZRoger HågensenAdd a history urlA example url would be: http://127.0.0.1:8000/playing.json?mount=/live
The following is the minimum amount of information that a Webplayer or Website/Forum plugin/Blob plugin would need:
```
{
"server_name":"Testing Stuff",
"server_des...A example url would be: http://127.0.0.1:8000/playing.json?mount=/live
The following is the minimum amount of information that a Webplayer or Website/Forum plugin/Blob plugin would need:
```
{
"server_name":"Testing Stuff",
"server_description":"Blah blah blah",
"history":
[
{"date":"2017-03-03T10:52:10Z","artist":"Some artist","title":"Some song (this is the current one)"},
{"date":"2017-03-03T10:48:10Z","artist":"Some other artist 2","title":"Some Song 2"},
{"date":"2017-03-03T10:44:10Z","artist":"Artist 3","title":"Song 3"},
{"date":"2017-03-03T10:40:10Z","artist":"Artist 4","title":"Song 4"},
{"date":"2017-03-03T10:36:10Z","artist":"Artist 5","title":"Song 5"},
{"date":"2017-03-03T10:32:10Z","artist":"Artist 6","title":"Song 6"},
{"date":"2017-03-03T10:28:10Z","artist":"Artist 7","title":"Song 7"},
{"date":"2017-03-03T10:24:10Z","artist":"Artist 8","title":"Song 8"},
{"date":"2017-03-03T10:20:10Z","artist":"Artist 9","title":"Song 9"},
{"date":"2017-03-03T10:16:10Z","artist":"Artist 10","title":"Song 10"}
]
}
```
The server_name and server_description is included since those could change between DJs (and are nice to display in the webplayer to the listener).
The date for each song (ISO 8601 standard) is somewhat useful, not only can a webplayer show the start time for each song to the listener but (with the exception of the current song) it can calculate and show the duration of songs which a listener or visitor may find interesting.
JSON is convenient as it would need next to no processing by a server script before being passed to a Webplayer or used on a webpage via XHR.
Now as Icecast uses XML internally (mentioned on the icecast-dev mailing list recently) a alternative could be:
A example url would be: http://127.0.0.1:8000/playing.xml?mount=/live
And the following content:
```
<?xml version="1.0" encoding="UTF-8"?>
<source mount="/live">
<server_name>Testing Stuff</server_name>
<server_description>Blah blah blah</server_description>
<history>
<track>
<date>2017-03-03T10:52:10Z</date>
<artist>Some artist</artist>
<title>Some song (this is the current one)</title>
</track>
<track>
<date>2017-03-03T10:48:10Z</date>
<artist>Some other artist 2</artist>
<title>Some Song 2</title>
</track>
<track>
<date>2017-03-03T10:44:10Z</date>
<artist>Artist 3</artist>
<title>Song 3</title>
</track>
<track>
<date>2017-03-03T10:40:10Z</date>
<artist>Artist 4</artist>
<title>Song 4</title>
</track>
<track>
<date>2017-03-03T10:36:10Z</date>
<artist>Artist 5</artist>
<title>Song 5</title>
</track>
<track>
<date>2017-03-03T10:32:10Z</date>
<artist>Artist 6</artist>
<title>Song 6</title>
</track>
<track>
<date>2017-03-03T10:28:10Z</date>
<artist>Artist 7</artist>
<title>Song 7</title>
</track>
<track>
<date>2017-03-03T10:24:10Z</date>
<artist>Artist 8</artist>
<title>Song 8</title>
</track>
<track>
<date>2017-03-03T10:20:10Z</date>
<artist>Artist 9</artist>
<title>Song 9</title>
</track>
<track>
<date>2017-03-03T10:16:10Z</date>
<artist>Artist 10</artist>
<title>Song 10</title>
</track>
</history>
</source>
```
The XML is not quite as elegant as the JSON but it gets the job done and I'd rather see it as XML than never as JSON.
Thomas B. RückerThomas B. Rückerhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2018Add a web interface equivalent of SIGHUP2018-03-06T12:49:47ZwillwhAdd a web interface equivalent of SIGHUPI run icecast2 on windows, and it'd be great to have some HTTP interface I could POST to, to call a reload to add mounts, without kicking any sources or clients from the running mounts.
Thanks guys!I run icecast2 on windows, and it'd be great to have some HTTP interface I could POST to, to call a reload to add mounts, without kicking any sources or clients from the running mounts.
Thanks guys!Icecast 2.5.0Philipp SchafftPhilipp Schaffthttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2367Add ability to define which port Icecast should consider to be world reachable2018-12-16T23:05:43ZRemco BrinkAdd ability to define which port Icecast should consider to be world reachableI'm running Icecast in a reverse proxy setup with nginx, where nginx is taking care of SSL. Two listeners are configured, port 8000 on 127.0.0.1 for the nginx reverse proxy and port 8080 on 0.0.0.0 for clients to access streams. This set...I'm running Icecast in a reverse proxy setup with nginx, where nginx is taking care of SSL. Two listeners are configured, port 8000 on 127.0.0.1 for the nginx reverse proxy and port 8080 on 0.0.0.0 for clients to access streams. This setup allows me to serve my playlists over HTTPS, but unfortunately the generated m3u files now point to the incorrect port (8000, which only listens on 127.0.0.1).
Adding a configuration parameter that lets me specify which port I want to use for reporting to YP as well as which port Icecast should use in the generated m3u files would seem to solve this problem.
A patch was created by [Damien Garrido](https://damiengarrido.wordpress.com/2015/03/22/icecast-reachable-behind-reverse-proxy/) that solves this problem by adding an `<exposed-port></exposed-port>` configuration variable. Having this functionality included in Icecast would be a great help.
[exposed_port.icecast.patch](/uploads/803334e218a7f4e8c51aad38673ae9c7/exposed_port.icecast.patch)https://gitlab.xiph.org/xiph/icecast-libshout/-/issues/2331Add an option to disable tools2022-04-10T17:32:00ZFabrice FontaineAdd an option to disable toolsAs I'm unable to fork the project, please find attached a patch that allow the user to disable tools.
[0001-configure.ac-add-an-option-to-disable-tools.patch](/uploads/853966c2c49c76d002f218578e68c1a5/0001-configure.ac-add-an-option-to-...As I'm unable to fork the project, please find attached a patch that allow the user to disable tools.
[0001-configure.ac-add-an-option-to-disable-tools.patch](/uploads/853966c2c49c76d002f218578e68c1a5/0001-configure.ac-add-an-option-to-disable-tools.patch)Philipp SchafftPhilipp Schaffthttps://gitlab.xiph.org/xiph/theora/-/issues/1338Add API call to request a duplicate compressed frame2010-02-01T21:09:28ZGitlab BotAdd API call to request a duplicate compressed frameThis was planned for beta1:
http://wiki.xiph.org/index.php/Theora:Beta1ToDoThis was planned for beta1:
http://wiki.xiph.org/index.php/Theora:Beta1ToDohttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2343Add API endpoint to sets a mark in the log files2020-10-02T13:37:21ZPhilipp SchafftAdd API endpoint to sets a mark in the log filesThis is for debugging. The endpoint would write marker into the log file. This can be helpful to find things in busy logfiles more easily.
The marker could optionally include a user provided string and username+role of the user who requ...This is for debugging. The endpoint would write marker into the log file. This can be helpful to find things in busy logfiles more easily.
The marker could optionally include a user provided string and username+role of the user who requested the mark.https://gitlab.xiph.org/xiph/theora/-/issues/1730Add API to output a single duplicate for the *previous* frame2017-08-20T01:57:18ZSebastian DrögeAdd API to output a single duplicate for the *previous* frameThe use case for this is, when you only know how many duplicate frames there will be after seeing the next non-duplicate frame. This will increase latency a lot and is quite suboptimal.
TH_ENCCTL_SET_DUP_COUNT requires to know the numbe...The use case for this is, when you only know how many duplicate frames there will be after seeing the next non-duplicate frame. This will increase latency a lot and is quite suboptimal.
TH_ENCCTL_SET_DUP_COUNT requires to know the number of duplicate frames of the *next* frame in advance unfortunately.
This could maybe be implemented by allowing to pass NULL as buffer to th_encode_ycbcr_in().https://gitlab.xiph.org/xiph/vorbis-tools/-/issues/1510add check for -lnetwork when configuring vorbis-tools2018-01-22T04:18:26Zscottmc2add check for -lnetwork when configuring vorbis-toolsHaiku uses -lnetwork for socket, so adding a check for it in configure.ac takes care of this. Also moved a line in oggenc.c to fix another error since Haiku uses gcc2 and it errored out during make.
Haiku uses -lnetwork for socket, so adding a check for it in configure.ac takes care of this. Also moved a line in oggenc.c to fix another error since Haiku uses gcc2 and it errored out during make.
Michael SmithMichael Smithhttps://gitlab.xiph.org/xiph/vorbis/-/issues/1258Add defines to exclude encoder specific parts from library2017-04-08T10:58:44ZGitlab BotAdd defines to exclude encoder specific parts from librarySeveral things can be removed from the library at compile time by using #defines if only a vorbis decoder is needed. These include, but are not limted to:
* Floor packer + Floor forward function
* Residue packer + Residue forward func...Several things can be removed from the library at compile time by using #defines if only a vorbis decoder is needed. These include, but are not limted to:
* Floor packer + Floor forward function
* Residue packer + Residue forward function
* Mapping packer + Mapping forward function
* Codebook packer/encoder
* Bitrate management (bitrate.c)
* vorbis_block_internal and functions that deal with it.
* Envelope code (envelope.c)
* Psychoaucostic model code (psy.c)
* Analysis file (analysis.c)
* info packers (info.c)
* smallft.c
This reduces the size of the generated code from >100kb to ~60kb.
Monty MontgomeryMonty Montgomeryhttps://gitlab.xiph.org/xiph/vorbis/-/issues/1263Add filter support to vorbis decoding2017-04-08T10:58:44ZwilliampoetraAdd filter support to vorbis decodingWHAT:
Support for specifying a filter function when decoding a vorbis stream. The filter function can do anything to the stream, like for example applying ReplayGain.
WHEN:
Done. Had been sitting on my disk for a couple of months no...WHAT:
Support for specifying a filter function when decoding a vorbis stream. The filter function can do anything to the stream, like for example applying ReplayGain.
WHEN:
Done. Had been sitting on my disk for a couple of months now.
WHY:
I wanted to add ReplayGain (VorbisGain) support to ogg123, and found that everything could be made remarkably simpler if we can have a filter function available.
HOW:
See attached patch. It's quite simple, actually: Just create a function ov_read_filter() with the same parameters as ov_read() except that ov_read_filter() takes two extra arguments: a pointer to the filter function (filter()) and a pointer to the data to be passed to the filter function (filter_param).
The filter function takes four arguments: 1. pointer to buffer containing the pcm samples in floating point format, 2. the number of channels, 3. the number of samples, and 4. the data (filter_param). The data passed in filter_param can be anything and is to be decided by the application. In my case, I used it to implement ReplayGain in ogg123 (the implementation is basically a much stripped-down version of vgplay).
WHO:
Me. williampoetra at gmail dot com
I would love to see this patch merged. Comments and suggestion please.
Monty MontgomeryMonty Montgomeryhttps://gitlab.xiph.org/xiph/vorbis-tools/-/issues/47Add genre info to Ogg Vorbis encoder2009-04-19T20:55:25ZGitlab BotAdd genre info to Ogg Vorbis encoder```
This patch enables a user to specify a genre while encoding an Ogg Vorbis file.
Added option is -g. This fixed a minor annoyment for me. See URL for patch.
``````
This patch enables a user to specify a genre while encoding an Ogg Vorbis file.
Added option is -g. This fixed a minor annoyment for me. See URL for patch.
```Michael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-libshout/-/issues/320Add get-timeout method to API for non-blocking operation2006-06-12T11:48:28ZdanforthctAdd get-timeout method to API for non-blocking operation```
The blocking nature of sleep() in the libshout api means that users cannot wait
on other events (sockets via select(), etc.) while waiting for icecast to
consume data in a single threaded but multi-task process.
The request is that ...```
The blocking nature of sleep() in the libshout api means that users cannot wait
on other events (sockets via select(), etc.) while waiting for icecast to
consume data in a single threaded but multi-task process.
The request is that a method be added to the api, perhaps called
get_sleep_time() , that simply returns a float indicating how much time should
be waited. The user can then use this timeout in a select() call to wait while
responding to other events.
As we're using the Perl XS module, it's important that this functionality be
mirrored in that interface as well.
```Michael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2331Add history to status-json.xsl2018-07-07T19:19:02ZRoger HågensenAdd history to status-json.xslSince history is now implemented in https://gitlab.xiph.org/xiph/icecast-server/commit/3dd8bdbf40e0988d331724f2a2b5c2bf774584b4 it is hopefully trivial to add this to status-json.xsl as well?Since history is now implemented in https://gitlab.xiph.org/xiph/icecast-server/commit/3dd8bdbf40e0988d331724f2a2b5c2bf774584b4 it is hopefully trivial to add this to status-json.xsl as well?https://gitlab.xiph.org/xiph/icecast-website/-/issues/1881add http://mixxx.org to 3rd party apps2017-08-26T22:33:52ZThomas B. Rückeradd http://mixxx.org to 3rd party appshttp://mixxx.org is GPLhttp://mixxx.org is GPLThomas B. RückerThomas B. Rückerhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2016Add IP address of the source in error.log2018-03-06T12:49:48ZFrancois LafontAdd IP address of the source in error.logHere is typical content of error.log during a source connection:
```
[2014-05-02 13:43:49] INFO connection/_handle_source_request Source logging in at mountpoint "/test1.mp3"
[2014-05-02 13:43:49] INFO format-vorbis/initial_vorbis_pa...Here is typical content of error.log during a source connection:
```
[2014-05-02 13:43:49] INFO connection/_handle_source_request Source logging in at mountpoint "/test1.mp3"
[2014-05-02 13:43:49] INFO format-vorbis/initial_vorbis_page seen initial vorbis header
[2014-05-02 13:43:49] INFO source/source_main listener count on /test1.mp3 now 0
[2014-05-02 13:43:57] INFO source/get_next_buffer End of Stream /test1.mp3
[2014-05-02 13:43:57] INFO source/source_shutdown Source "/test1.mp3" exiting
```
It will be great if the IP source address was indicate in error.log. For example, something like that:
```
[2014-05-02 13:43:49] INFO connection/_handle_source_request Source (IP=192.168.0.26) logging in at mountpoint "/test1.mp3"
[2014-05-02 13:43:49] INFO format-vorbis/initial_vorbis_page seen initial vorbis header
[2014-05-02 13:43:49] INFO source/source_main listener count on /test1.mp3 now 0
[2014-05-02 13:43:57] INFO source/get_next_buffer End of Stream /test1.mp3
[2014-05-02 13:43:57] INFO source/source_shutdown Source (IP=192.168.0.26) "/test1.mp3" exiting
```
Isn't it? ;-)
Francois LafontIcecast 2.5.0Thomas B. RückerThomas B. Rücker