mirror of
http://mpg123.de/trunk/.git
synced 2025-07-30 02:01:12 +03:00
mpg123: generic control v9 with more delimiting
git-svn-id: svn://scm.orgis.org/mpg123/trunk@4877 35dc7657-300d-0410-a2e5-dc2837fedb53
This commit is contained in:
2
NEWS
2
NEWS
@ -31,6 +31,8 @@
|
||||
-- Fix --continue output to print track_count+1 as continue
|
||||
position after hitting the end of playlist. Makes scripts/conplay
|
||||
go to back to the beginning again (regression in 1.24.0, bug 250).
|
||||
-- Remote control API version 9 with @I { .. @I } wrapping of ID3 and
|
||||
playlist display.
|
||||
-- Added --list-devices.
|
||||
- Updated debugging/warning/error message macros to include the function
|
||||
name.
|
||||
|
@ -121,6 +121,14 @@ Note: mpg123 returns errors on stderr, so your frontend should
|
||||
@I ID3v2.title:<text>
|
||||
After loading a track with ID3v2 info, such lines occur for every line of the "title" data field and likewise for other fields (author, album, etc).
|
||||
|
||||
Since version 9, ID3 info is wrapped in
|
||||
|
||||
@I {
|
||||
...
|
||||
@I }
|
||||
|
||||
to guide parsers.
|
||||
|
||||
@I <a>
|
||||
Status message after loading a song (no ID3 song info)
|
||||
a = filename without path and extension
|
||||
@ -128,6 +136,14 @@ Note: mpg123 returns errors on stderr, so your frontend should
|
||||
@I LISTENTRY <n>: <url>
|
||||
printout of playlists loaded with LOADLIST
|
||||
|
||||
Since version 9, list printout is wrapped in
|
||||
|
||||
@I {
|
||||
...
|
||||
@I }
|
||||
|
||||
to help parsers decide if they got the whole list.
|
||||
|
||||
@S <a> <b> ...
|
||||
Stream info at beginning of playback, meaning
|
||||
S <mpeg-version> <layer> <sampling freq> <mode(stereo/mono/...)> <mode_ext> <framesize> <stereo> <copyright> <error_protected> <emphasis> <bitrate> <extension> <vbr(0/1=yes/no)>
|
||||
|
@ -218,6 +218,7 @@ static void generic_sendinfoid3(mpg123_handle *mh)
|
||||
error1("Cannot get ID3 data: %s", mpg123_strerror(mh));
|
||||
return;
|
||||
}
|
||||
generic_sendmsg("I {");
|
||||
if(v1 != NULL)
|
||||
{
|
||||
generic_sendv1(v1, "I");
|
||||
@ -231,6 +232,7 @@ static void generic_sendinfoid3(mpg123_handle *mh)
|
||||
generic_send_lines(1, "I ID3v2.comment:%s", v2->comment);
|
||||
generic_send_lines(1, "I ID3v2.genre:%s", v2->genre);
|
||||
}
|
||||
generic_sendmsg("I }");
|
||||
}
|
||||
|
||||
void generic_sendalltag(mpg123_handle *mh)
|
||||
@ -345,6 +347,8 @@ static void generic_loadlist(mpg123_handle *fr, char *arg)
|
||||
return;
|
||||
}
|
||||
|
||||
generic_sendmsg("I {");
|
||||
|
||||
/* Now got the plain playlist path in arg. On to evil manupulation of mpg123's playlist code. */
|
||||
param.listname = arg;
|
||||
param.listentry = 0; /* The playlist shall not filter. */
|
||||
@ -363,6 +367,8 @@ static void generic_loadlist(mpg123_handle *fr, char *arg)
|
||||
}
|
||||
if(!i) generic_sendmsg("I LIST EMPTY");
|
||||
|
||||
generic_sendmsg("I }");
|
||||
|
||||
/* If we have something to play, play it. */
|
||||
if(thefile) generic_load(fr, thefile, MODE_PLAYING);
|
||||
|
||||
@ -402,7 +408,7 @@ int control_generic (mpg123_handle *fr)
|
||||
#endif
|
||||
/* the command behaviour is different, so is the ID */
|
||||
/* now also with version for command availability */
|
||||
fprintf(outstream, "@R MPG123 (ThOr) v8\n");
|
||||
fprintf(outstream, "@R MPG123 (ThOr) v9\n");
|
||||
#ifdef FIFO
|
||||
if(param.fifo)
|
||||
{
|
||||
|
Reference in New Issue
Block a user