Describe the scope of your change--i.e. what the change does and what parts
of the code were modified.
The change is very small, it literally only changes one bit in the code.
It sets the SM_LAYER12 bit in the SCI_MODE register whenever playback is started (in addition to the other flags). The SM_LAYER12 enables MPEG layer 1 and 2 decoding in addition to layer 3.
There are no known limitations. The change modifies the function of the VS1053 chip itself so that it doesn't exclude MPEG streams that are encoded using Layer 1 or Layer 2. It has no impact on the rest of the library.
Please run any tests or examples that can exercise your modified code.
To test this, encode some audio in MPEG 1 layer 1 (or layer 2) with any MPEG encoder. Put the file on a MicroSD card and mount it in the VS1053 card reader. Open the player_simple example program of the library and modify it to refer to the MP1 or MP2 file. Set up the hardware as directed by the page on the Adafruit Learn website. Download the code and run it, the MP1 or MP2 file should play fine, and MP3 files should also still play.
I tested the change with a PASC-encoded file generated with the DCC-Studio program that was included with the DCC-175 Digital Compact Cassette Recorder. PASC is the predecessor of MPEG-1 layer 1, and though the files from this program have a small header and the encoding uses the padding bits that are necessary for a tape system, PASC and MP1 are completely identical and the VS1053 plays the files flawlessly if the bit is set. Files in all other formats are also still supported, the flag has no
effect on those.
The flag in the MODE register was only intended for system designers who wanted to make and sell hardware MP3 players and didn't want to pay for the MP1 and MP2 patent licenses, but those patents have all expired. This is implied by page 6 of the datasheet:
To the best of our [VLSI's] knowledge, if the end product does not play a specific format that otherwise
would require a customer license: MPEG 1.0/2.0 layers I and II, WMA, or AAC, the respective
license should not be required. Decoding of MPEG layers I and II are disabled by default,
and WMA and AAC format exclusion can be easily performed based on the contents of the
SCI_HDAT1 register. Also PS and SBR decoding can be separately disabled.
The change is very small, it literally only changes one bit in the code.
It sets the SM_LAYER12 bit in the SCI_MODE register whenever playback is started (in addition to the other flags). The SM_LAYER12 enables MPEG layer 1 and 2 decoding in addition to layer 3.
For more information about the flag, see section 9.6.1, page 39 in the datasheet at http://www.vlsi.fi/fileadmin/datasheets/vs1053.pdf .
There are no known limitations. The change modifies the function of the VS1053 chip itself so that it doesn't exclude MPEG streams that are encoded using Layer 1 or Layer 2. It has no impact on the rest of the library.
To test this, encode some audio in MPEG 1 layer 1 (or layer 2) with any MPEG encoder. Put the file on a MicroSD card and mount it in the VS1053 card reader. Open the player_simple example program of the library and modify it to refer to the MP1 or MP2 file. Set up the hardware as directed by the page on the Adafruit Learn website. Download the code and run it, the MP1 or MP2 file should play fine, and MP3 files should also still play.
I tested the change with a PASC-encoded file generated with the DCC-Studio program that was included with the DCC-175 Digital Compact Cassette Recorder. PASC is the predecessor of MPEG-1 layer 1, and though the files from this program have a small header and the encoding uses the padding bits that are necessary for a tape system, PASC and MP1 are completely identical and the VS1053 plays the files flawlessly if the bit is set. Files in all other formats are also still supported, the flag has no effect on those.
The flag in the MODE register was only intended for system designers who wanted to make and sell hardware MP3 players and didn't want to pay for the MP1 and MP2 patent licenses, but those patents have all expired. This is implied by page 6 of the datasheet: