philippe_44 wrote: 
> AFAIK unless you disable alac native globally, it's difficult. I'll try
> to explain a bit how it works.
> 
> LMS sees that source is "alc". It then reads the list of codecs the
> player is supporting which is "alc,aac,ogg,ops,ogf,flc,aif,pcm,mp3" for
> squeezelite-esp32 (unless PolyVection has changed it) and then starts
> rules matching.
> 
> So it the rule matcher will look for and "alc xxx" rule where xxx is in
> the list of codecs, using the order sent by player (unless the "prefer
> native codec" option is checked, in which case the rule matcher will
> *always* start with the source code).
> 
> So it starts with any rule "alc alc" and it will start first with
> custom-convert rules and rules that specify a player model or mac
> address, that's true. But in your case, it finds and "alc alc" rule
> (which is the identity rule) that matches and because that rule is not
> disabled, this is the end of the search. The rule also have criteria if
> you want to seek, resample, or that apply to different source (Remote,
> stdIn, File), but that's irrelevant in your case.
> 
> So, if you want a different outcome, you can use one of these options
> 
> - disable alc native support for all players
> - remove alc from codecs supported by DAC32
> - change order of codecs reported by DAC32 (needs recompile)
> - build an "alc alc" rule for your DAC32 (specifiy MAC) that forces
> resample to 48kHz (e.g.)
> 
> But simply doing an 'alc flc' rule will not do anything because the 'alc
> alc' general rule will work and prevail

Thank you.  I think I understand more now.  

To restate what you said, the order of operations is to match rules
based on:

1. source codec plus player supported codecs, in the order given by the
player
2. It finds first match of source and supported codec and executes,
rather than finding most specific match, with the following caveats:
3. If there is more than one rule matching the source codec plus
supported codec, the rule matcher will then inspect player model and MAC
address values
4. If "Prefer native format (decoding on the player) whenever possible"
is enabled, it will ignore all of the above and just send source codec
natively, assuming the source codec matches *any* supported player
codec.  If there is not a native match, it will begin to inspect the
rules.

In my use case, if I create an alc alc rule in custom-convert.conf, it
will match that rule first, and stop.  It didn't match the alc flc rule
because it was looking for an alc alc rule due to alc being the native
codec, and alc coming before flc in the supported codec assertion from
the player.

I have tested and confirmed that an alc alc rule in custom-convert.conf
matches.  Haven't figured out the syntax to resample alc yet, as per
your suggestion above.

So, I think that I could disable native alc alc support globally, write
a rule to transcode alc to flc for the DAC32, and then write *another*
rule that matches alc alc as a fall through for every other player.  The
net effect would be to support native alc codec everywhere but the
DAC32.  Let me test that...

Hm.  I got the first part of that to work, but now ALL alc is being
transcoded to flc.  Have to work on that a bit more.

Again, very helpful.  Thanks.


------------------------------------------------------------------------
benh's Profile: http://forums.slimdevices.com/member.php?userid=6732
View this thread: http://forums.slimdevices.com/showthread.php?t=114534

_______________________________________________
ripping mailing list
ripping@lists.slimdevices.com
http://lists.slimdevices.com/mailman/listinfo/ripping

Reply via email to