1
0
mirror of http://mpg123.de/trunk/.git synced 2025-07-30 02:01:12 +03:00

mpg123, libout123, fmt123: Make a very special friend happy, introduce output mute.

This introduces software muting in libout123, to be triggered via terminal control
key 'u' (m was taken) or the remote control commands 'mute' and 'unmute'. For this,
libout123 needs to know what a zero looks like in the current encoding. I hope
I handled that smartly enough with the MPG123_ZEROSAMPLE macro in fmt123.

I explicitly decided against linking in libsyn123. That makes only sense when
going all-in and deciding that libout123 shall convert, resample, and mix
on-the-fly to make input data match the output. This might be nice to have,
but it is also nice to have a library that does not really care about the
content it transports. It is a simple transporter with a buffer. Said buffer
necessitates that the transporter knows what empty sound looks like, but I
really don't want to burden it with more knowledge for simplicity.

This muting needs to be inside libout123 whe the buffer is used. Feeding
silence from the client application does not have latency you expect when
(un)pause is already negotiated with the buffer.



git-svn-id: svn://scm.orgis.org/mpg123/trunk@4589 35dc7657-300d-0410-a2e5-dc2837fedb53
This commit is contained in:
thor
2020-01-31 23:48:50 +00:00
parent 737a128b36
commit dabbc01437
14 changed files with 162 additions and 36 deletions

View File

@ -22,6 +22,7 @@ COMMAND CODES
You can get this info via the control command "help".
HELP/H: command listing (LONG/SHORT forms), command case insensitve
LOAD/L <trackname>: load and start playing resource <trackname>
@ -38,6 +39,10 @@ JUMP/J <frame>|<+offset>|<-offset>|<[+|-]seconds>s: jump to mpeg frame <frame> o
VOLUME/V <percent>: set volume in % (0..100...); float value
MUTE: turn on software mute in output
UNMUTE: turn off software mute in output
RVA off|(mix|radio)|(album|audiophile): set rva mode
EQ/E <channel> <band> <value>: set equalizer value for frequency band 0 to 31 on channel 1 (left) or 2 (right) or 3 (both)
@ -52,25 +57,36 @@ SCAN: scan through the file, building seek index
SAMPLE: print out the sample position and total number of samples
FORMAT: print out sampling rate in Hz and channel count
SEQ <bass> <mid> <treble>: simple eq setting...
PITCH <[+|-]value>: adjust playback speed (+0.01 is 1 % faster)
SILENCE: be silent during playback (meaning silence in text form)
STATE: Print auxilliary state info in several lines (just try it to see what info is there).
STATE: Print auxiliary state info in several lines (just try it to see what info is there).
TAG/T: Print all available (ID3) tag info, for ID3v2 that gives output of all collected text fields, using the ID3v2.3/4 4-character names. NOTE: ID3v2 data will be deleted on non-forward seeks.
TAG/T: Print all available (ID3) tag info, for ID3v2 that gives output of all collected text fields, using the ID3v2.3/4 4-character names.
The output is multiple lines, begin marked by "@T {", end by "@T }".
ID3v1 data is like in the @I info lines (see below), just with "@T" in front.
An ID3v2 data field is introduced via ([ ... ] means optional):
@T ID3v2.<NAME>[ [lang(<LANG>)] desc(<description>)]:
The lines of data follow with "=" prefixed:
@T =<one line of content in UTF-8 encoding>
meaning of the @S stream info:
S <mpeg-version> <layer> <sampling freq> <mode(stereo/mono/...)> <mode_ext> <framesize> <stereo> <copyright> <error_protected> <emphasis> <bitrate> <extension> <vbr(0/1=yes/no)>
The @I lines after loading a track give some ID3 info, the format:
@I ID3:artist album year comment genretext
where artist,album and comment are exactly 30 characters each, year is 4 characters, genre text unspecified.
You will encounter "@I ID3.genre:<number>" and "@I ID3.track:<number>".