|
|
|
|
What is SEFC and SESC?
MP3s may contain a block of data about the file like artist and title, track number, genre or even longer texts like comments.
This data block is the ID3 Tag. More information about ID3 tags can be found here: ID3.org.
As of introduction of the ID3v2 Tag even user data can be stored in v2 tags called frames.
These frames are identified by IDs like "TIT2" which stands for title. "SEFC" and "SESC" are such IDs too.
SEFC contains a value which represents the number of MPEG frames the MPEG file has.
This information can greatly increase speed when working with MPEG files as there is no need to count the frames when this information is needed for example when editing.
The good side is that storing this value does not increases file's size as it is only about a couple of bytes. This value's existence also gives exact Playtime values (which are then stored in TLEN frame).
SESC contains simplified FFT sample data (Stream Editor Sample Cache). It's like a cache for the decoded audio stream (like a thumbnail).
When displaying audio files graphicaly this cache can be used, so there is no need to decode the whole file and sample it afterwards.
This increases loading speed dramatically, but increses file size too by about +0.5% (usually smaller and MP3 Stream Editor stores this sample cache data compressed).
Note for programmers: Standard ID3v2 (zlib) compression is used at maximum rate. The data format is byte/sample representing stereo FFT data (left, right, left,...) or mono (data, data, data,...).
Version 2 changes: There is a header at the beginning of the data. ID: 4 bytes long: $55 55 55 55 followed by one byte version number (currently): $02, then the header size (excluding the ID, version and self) as 4 byte long unsigned integer (Cardinal in Delphi): $00 00 00 04, following the data in the header currently (only) number of channels (unsigned integer): $00 00 00 02. After the header comes the actual data.
Note that the header is subject to compression and unsynchronisation as together with the data (the whole ID3v2 frame alltogether).
For Delphi programmers: ID3v2 Library 2.0 includes a complete solution for managing a SESC frame.
Some of programs making use of the SESC frame are: MP3 Stream Editor, TSampleDisplay3D, Filesystem Dialogs Library, Directory Opus Sample Display Plugin and ID3v2 Library 2.0
SESP stands for Stream Editor Seek Points and is a simple textual description with a leading Zero byte $00 (if ANSI) or $01 (if unicode UTF-16 with BOM) for seeks in milliseconds. One line per data, that is $00 + TEXT + $0D $0A + TEXT + $0D $0A ...
Must start with 0, that is the first subsong starts at the beginning.
Can be altered manualy easely with MP3 Stream Editor's ID3v2 editor as simple text (altough there is a built in Subsong layout editor).
SESA (Stream Editor Subsong Artists) is a simple textual description with a leading Zero byte $00 (if ANSI) or $01 (if unicode UTF-16 with BOM) for each subsong's Artist.
SEST (Stream Editor Subsong Titles) is a simple textual description with a leading Zero byte $00 (if ANSI) or $01 (if unicode UTF-16 with BOM) for each subsong's Title.
SEAT (Stream Editor Album Titles) is a simple textual description with a leading Zero byte $00 (if ANSI) or $01 (if unicode UTF-16 with BOM) for each subsong's Album name.
Note for programmers: SESP, SESA, SEST and SEAT are linked in count and can be accesed as (TStringList in Delphi) Artist - Title - Position: SESA[i] - SEST[i] - SESP[i]. Also the SESP values are sorted starting with the lowest value (0 needed) and growing to higher values.
SEAC (Stream Editor Album Colors) contains two DWord (Delphi: Cardinal) values which represents two (Windows) BGR color values.
SEBR (Stream Editor Bit Rate) contains a value which represents the average bitrate of the file, in the format: Extended (10 Bytes).
|
|
|
|
|
|