mirror of
https://gitlab.xiph.org/xiph/ezstream.git
synced 2024-11-03 04:17:18 -05:00
Revert all changes since release_0_5_6
The individual commits have been cherry-picked into develop. From now on, master will always reflect the released state of the code as per the Gitflow branching model. See http://nvie.com/posts/a-successful-git-branching-model/ for more information.
This commit is contained in:
parent
4176545211
commit
47fc346294
24
NEWS
24
NEWS
@ -1,13 +1,3 @@
|
|||||||
Changes in 0.5.7, released on XXXX-XX-XX:
|
|
||||||
|
|
||||||
* various:
|
|
||||||
- [NEW] Add new <metadata_refreshinterval/> feature from Matthew Adams
|
|
||||||
(with minor changes plus documentation.) This allows for recurring
|
|
||||||
and custom metadata updates inbetween song changes via
|
|
||||||
<metadata_progname/>.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Changes in 0.5.6, released on 2009-08-31:
|
Changes in 0.5.6, released on 2009-08-31:
|
||||||
|
|
||||||
* ezstream-file.sh:
|
* ezstream-file.sh:
|
||||||
@ -187,7 +177,7 @@ Changes in 0.4.0, released on 2007-03-11:
|
|||||||
program.
|
program.
|
||||||
|
|
||||||
* src/compat.c:
|
* src/compat.c:
|
||||||
- [NEW] Implement a basename() function for Windows that behaves like the
|
- [ADD] Implement a basename() function for Windows that behaves like the
|
||||||
ones used on Unix systems.
|
ones used on Unix systems.
|
||||||
|
|
||||||
* win32/:
|
* win32/:
|
||||||
@ -195,19 +185,19 @@ Changes in 0.4.0, released on 2007-03-11:
|
|||||||
distribution, and provide a much better PDF version instead.
|
distribution, and provide a much better PDF version instead.
|
||||||
|
|
||||||
* various:
|
* various:
|
||||||
- [NEW] Allow ezstream to use TagLib for reading metadata from media
|
- [ADD] Allow ezstream to use TagLib for reading metadata from media
|
||||||
files. TagLib (libtag_c) is now an optional dependency.
|
files. TagLib (libtag_c) is now an optional dependency.
|
||||||
- [NEW] When built with TagLib support, include the song length in the
|
- [ADD] When built with TagLib support, include the song length in the
|
||||||
"real-time" information line, if available.
|
"real-time" information line, if available.
|
||||||
- [NEW] New <metadata_progname> configuration option, which causes
|
- [ADD] New <metadata_progname> configuration option, which causes
|
||||||
metadata to be read from the output of an external program or
|
metadata to be read from the output of an external program or
|
||||||
script.
|
script.
|
||||||
- [NEW] New runtime control via the SIGUSR2 signal, which triggers reading
|
- [ADD] New runtime control via the SIGUSR2 signal, which triggers reading
|
||||||
of fresh metadata information from <metadata_progname> (metadata
|
of fresh metadata information from <metadata_progname> (metadata
|
||||||
is always read at song changes.)
|
is always read at song changes.)
|
||||||
- [NEW] New <metadata_format> configuration option, to customize metadata
|
- [ADD] New <metadata_format> configuration option, to customize metadata
|
||||||
strings when used with the new <metadata_progname> feature.
|
strings when used with the new <metadata_progname> feature.
|
||||||
- [NEW] New '@a@' and '@t@' placeholders for separate artist and title
|
- [ADD] New '@a@' and '@t@' placeholders for separate artist and title
|
||||||
metadata in de-/encoder commands.
|
metadata in de-/encoder commands.
|
||||||
|
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@ dnl ###########
|
|||||||
dnl ## SETUP ###########################################################
|
dnl ## SETUP ###########################################################
|
||||||
dnl ###########
|
dnl ###########
|
||||||
|
|
||||||
AC_INIT([ezstream], [0.5.7],
|
AC_INIT([ezstream], [0.5.6],
|
||||||
[https://trac.xiph.org/newticket?component=ezstream])
|
[https://trac.xiph.org/newticket?component=ezstream])
|
||||||
AC_REVISION([$Id$])
|
AC_REVISION([$Id$])
|
||||||
AC_PREREQ([2.61])
|
AC_PREREQ([2.61])
|
||||||
|
@ -275,17 +275,6 @@ See the
|
|||||||
.Sy METADATA
|
.Sy METADATA
|
||||||
section for details on how metadata is handled by
|
section for details on how metadata is handled by
|
||||||
.Nm .
|
.Nm .
|
||||||
.It Sy \&<metadata_refreshinterval\ /\&>
|
|
||||||
.Pq Optional.
|
|
||||||
Configures the time
|
|
||||||
.Pq in seconds
|
|
||||||
inbetween additional metadata updates via
|
|
||||||
.Li \&<metadata_progname/\&> .
|
|
||||||
A value of 0
|
|
||||||
.Pq zero
|
|
||||||
triggers updates as fast as possible, while a value of \&-1
|
|
||||||
.Pq minus one
|
|
||||||
or the absence of this configuration element disables this feature.
|
|
||||||
.It Sy \&<stream_once\ /\&>
|
.It Sy \&<stream_once\ /\&>
|
||||||
Set to
|
Set to
|
||||||
.Sy 1
|
.Sy 1
|
||||||
|
@ -18,11 +18,6 @@
|
|||||||
configuration must be as follows:
|
configuration must be as follows:
|
||||||
-->
|
-->
|
||||||
<filename>%FILENAME%</filename>
|
<filename>%FILENAME%</filename>
|
||||||
<!--
|
|
||||||
If the generated playlist should not loop forever, set <stream_once />
|
|
||||||
to 1.
|
|
||||||
-->
|
|
||||||
<stream_once>0</stream_once>
|
|
||||||
<!--
|
<!--
|
||||||
The usual, remaining configuration statements follow. See the other
|
The usual, remaining configuration statements follow. See the other
|
||||||
examples and the documentation for details.
|
examples and the documentation for details.
|
||||||
|
@ -20,8 +20,6 @@
|
|||||||
<metadata_progname>meta.sh</metadata_progname>
|
<metadata_progname>meta.sh</metadata_progname>
|
||||||
<!-- Set the metadata string according to this format: -->
|
<!-- Set the metadata string according to this format: -->
|
||||||
<metadata_format>@s@: @a@ - @t@</metadata_format>
|
<metadata_format>@s@: @a@ - @t@</metadata_format>
|
||||||
<!-- Update metadata from meta.sh at least once every 10 seconds: -->
|
|
||||||
<metadata_refreshinterval>10</metadata_refreshinterval>
|
|
||||||
<!--
|
<!--
|
||||||
The following settings are used to describe your stream to the server.
|
The following settings are used to describe your stream to the server.
|
||||||
It's up to you to make sure that the bitrate/quality/samplerate/channels
|
It's up to you to make sure that the bitrate/quality/samplerate/channels
|
||||||
|
@ -89,8 +89,7 @@ parseConfig(const char *fileName)
|
|||||||
xmlNodePtr cur;
|
xmlNodePtr cur;
|
||||||
char *ls_xmlContentPtr;
|
char *ls_xmlContentPtr;
|
||||||
int program_set, reconnect_set, shuffle_set,
|
int program_set, reconnect_set, shuffle_set,
|
||||||
streamOnce_set, svrinfopublic_set,
|
streamOnce_set, svrinfopublic_set;
|
||||||
refresh_set;
|
|
||||||
unsigned int config_error;
|
unsigned int config_error;
|
||||||
|
|
||||||
xmlLineNumbersDefault(1);
|
xmlLineNumbersDefault(1);
|
||||||
@ -107,17 +106,14 @@ parseConfig(const char *fileName)
|
|||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(&ezConfig, 0, sizeof(ezConfig));
|
memset(&ezConfig, '\000', sizeof(ezConfig));
|
||||||
ezConfig.metadataRefreshInterval = -1;
|
|
||||||
|
|
||||||
config_error = 0;
|
config_error = 0;
|
||||||
program_set = 0;
|
program_set = 0;
|
||||||
reconnect_set = 0;
|
reconnect_set = 0;
|
||||||
refresh_set = 0;
|
|
||||||
shuffle_set = 0;
|
shuffle_set = 0;
|
||||||
streamOnce_set = 0;
|
streamOnce_set = 0;
|
||||||
svrinfopublic_set = 0;
|
svrinfopublic_set = 0;
|
||||||
|
|
||||||
for (cur = cur->xmlChildrenNode; cur != NULL; cur = cur->next) {
|
for (cur = cur->xmlChildrenNode; cur != NULL; cur = cur->next) {
|
||||||
if (!xmlStrcmp(cur->name, (const xmlChar *)"url")) {
|
if (!xmlStrcmp(cur->name, (const xmlChar *)"url")) {
|
||||||
if (ezConfig.URL != NULL) {
|
if (ezConfig.URL != NULL) {
|
||||||
@ -234,27 +230,6 @@ parseConfig(const char *fileName)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!xmlStrcmp(cur->name, (const xmlChar *)"metadata_refreshinterval")) {
|
|
||||||
if (refresh_set) {
|
|
||||||
printf("%s[%ld]: Error: Cannot have multiple <metadata_refreshinterval> elements\n",
|
|
||||||
fileName, xmlGetLineNo(cur));
|
|
||||||
config_error++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (cur->xmlChildrenNode != NULL) {
|
|
||||||
const char *errstr;
|
|
||||||
ls_xmlContentPtr = (char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1);
|
|
||||||
ezConfig.metadataRefreshInterval = (unsigned int)strtonum(ls_xmlContentPtr, -1LL, (long long)INT_MAX, &errstr);
|
|
||||||
if (errstr) {
|
|
||||||
printf("%s[%ld]: Error: In <metadata_refreshinterval>: '%s' is %s\n",
|
|
||||||
fileName, xmlGetLineNo(cur), ls_xmlContentPtr, errstr);
|
|
||||||
config_error++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
xmlFree(ls_xmlContentPtr);
|
|
||||||
refresh_set = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!xmlStrcmp(cur->name, (const xmlChar *)"playlist_program")) {
|
if (!xmlStrcmp(cur->name, (const xmlChar *)"playlist_program")) {
|
||||||
if (program_set) {
|
if (program_set) {
|
||||||
printf("%s[%ld]: Error: Cannot have multiple <playlist_program> elements\n",
|
printf("%s[%ld]: Error: Cannot have multiple <playlist_program> elements\n",
|
||||||
|
@ -66,7 +66,6 @@ typedef struct tag_EZCONFIG {
|
|||||||
int fileNameIsProgram;
|
int fileNameIsProgram;
|
||||||
int streamOnce;
|
int streamOnce;
|
||||||
unsigned int reconnectAttempts;
|
unsigned int reconnectAttempts;
|
||||||
int metadataRefreshInterval;
|
|
||||||
} EZCONFIG;
|
} EZCONFIG;
|
||||||
|
|
||||||
EZCONFIG * getEZConfig(void);
|
EZCONFIG * getEZConfig(void);
|
||||||
|
@ -750,7 +750,6 @@ sendStream(shout_t *shout, FILE *filepstream, const char *fileName,
|
|||||||
int ret;
|
int ret;
|
||||||
double kbps = -1.0;
|
double kbps = -1.0;
|
||||||
struct timeval timeStamp, *startTime = tv;
|
struct timeval timeStamp, *startTime = tv;
|
||||||
struct timeval callTime, currentTime;
|
|
||||||
|
|
||||||
if (startTime == NULL) {
|
if (startTime == NULL) {
|
||||||
printf("%s: sendStream(): Internal error: startTime is NULL\n",
|
printf("%s: sendStream(): Internal error: startTime is NULL\n",
|
||||||
@ -758,8 +757,6 @@ sendStream(shout_t *shout, FILE *filepstream, const char *fileName,
|
|||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
ez_gettimeofday((void *)&callTime);
|
|
||||||
|
|
||||||
timeStamp.tv_sec = startTime->tv_sec;
|
timeStamp.tv_sec = startTime->tv_sec;
|
||||||
timeStamp.tv_usec = startTime->tv_usec;
|
timeStamp.tv_usec = startTime->tv_usec;
|
||||||
|
|
||||||
@ -798,15 +795,7 @@ sendStream(shout_t *shout, FILE *filepstream, const char *fileName,
|
|||||||
ret = STREAM_SKIP;
|
ret = STREAM_SKIP;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (queryMetadata) {
|
||||||
ez_gettimeofday((void *)¤tTime);
|
|
||||||
|
|
||||||
if (queryMetadata ||
|
|
||||||
(pezConfig->metadataRefreshInterval != -1
|
|
||||||
&& (currentTime.tv_sec - callTime.tv_sec
|
|
||||||
>= pezConfig->metadataRefreshInterval)
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
queryMetadata = 0;
|
queryMetadata = 0;
|
||||||
if (metadataFromProgram) {
|
if (metadataFromProgram) {
|
||||||
ret = STREAM_UPDMDATA;
|
ret = STREAM_UPDMDATA;
|
||||||
@ -816,7 +805,8 @@ sendStream(shout_t *shout, FILE *filepstream, const char *fileName,
|
|||||||
|
|
||||||
total += bytes_read;
|
total += bytes_read;
|
||||||
if (qFlag && vFlag) {
|
if (qFlag && vFlag) {
|
||||||
double oldTime, newTime;
|
struct timeval tval;
|
||||||
|
double oldTime, newTime;
|
||||||
|
|
||||||
if (!isStdin && playlistMode) {
|
if (!isStdin && playlistMode) {
|
||||||
if (pezConfig->fileNameIsProgram) {
|
if (pezConfig->fileNameIsProgram) {
|
||||||
@ -832,22 +822,20 @@ sendStream(shout_t *shout, FILE *filepstream, const char *fileName,
|
|||||||
|
|
||||||
oldTime = (double)timeStamp.tv_sec
|
oldTime = (double)timeStamp.tv_sec
|
||||||
+ (double)timeStamp.tv_usec / 1000000.0;
|
+ (double)timeStamp.tv_usec / 1000000.0;
|
||||||
newTime = (double)currentTime.tv_sec
|
ez_gettimeofday((void *)&tval);
|
||||||
+ (double)currentTime.tv_usec / 1000000.0;
|
newTime = (double)tval.tv_sec
|
||||||
|
+ (double)tval.tv_usec / 1000000.0;
|
||||||
if (songLenStr == NULL)
|
if (songLenStr == NULL)
|
||||||
printf(" [ %s]",
|
printf(" [ %s]",
|
||||||
getTimeString(currentTime.tv_sec -
|
getTimeString(tval.tv_sec - startTime->tv_sec));
|
||||||
startTime->tv_sec));
|
|
||||||
else
|
else
|
||||||
printf(" [ %s/%s]",
|
printf(" [ %s/%s]",
|
||||||
getTimeString(currentTime.tv_sec -
|
getTimeString(tval.tv_sec - startTime->tv_sec),
|
||||||
startTime->tv_sec),
|
|
||||||
songLenStr);
|
songLenStr);
|
||||||
if (newTime - oldTime >= 1.0) {
|
if (newTime - oldTime >= 1.0) {
|
||||||
kbps = (((double)(total - oldTotal)
|
kbps = (((double)(total - oldTotal) / (newTime - oldTime)) * 8.0) / 1000.0;
|
||||||
/ (newTime - oldTime)) * 8.0) / 1000.0;
|
timeStamp.tv_sec = tval.tv_sec;
|
||||||
timeStamp.tv_sec = currentTime.tv_sec;
|
timeStamp.tv_usec = tval.tv_usec;
|
||||||
timeStamp.tv_usec = currentTime.tv_usec;
|
|
||||||
oldTotal = total;
|
oldTotal = total;
|
||||||
}
|
}
|
||||||
if (kbps < 0)
|
if (kbps < 0)
|
||||||
@ -966,9 +954,8 @@ streamFile(shout_t *shout, const char *fileName)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
metadata_free(&prog_mdata);
|
metadata_free(&prog_mdata);
|
||||||
if (vFlag > 1)
|
printf("%s: New metadata: ``%s''\n",
|
||||||
printf("%s: New metadata: ``%s''\n",
|
__progname, mdataStr);
|
||||||
__progname, mdataStr);
|
|
||||||
xfree(mdataStr);
|
xfree(mdataStr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#ifndef __WIN32_CONFIG_H__
|
#ifndef __WIN32_CONFIG_H__
|
||||||
#define __WIN32_CONFIG_H__
|
#define __WIN32_CONFIG_H__
|
||||||
|
|
||||||
#define PACKAGE_STRING "ezstream 0.5.7"
|
#define PACKAGE_STRING "ezstream 0.5.6"
|
||||||
|
|
||||||
#define HAVE_SYS_TYPES_H 1
|
#define HAVE_SYS_TYPES_H 1
|
||||||
#define HAVE_SYS_STAT_H 1
|
#define HAVE_SYS_STAT_H 1
|
||||||
|
Loading…
Reference in New Issue
Block a user