1
0
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:
thor
2021-04-25 15:24:14 +00:00
parent c173d1a1cb
commit 0fcb20500a
3 changed files with 25 additions and 1 deletions

2
NEWS
View File

@ -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.

View File

@ -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)>

View File

@ -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)
{