Mercurial > foo_out_sdl
diff foosdk/sdk/foobar2000/helpers/packet_decoder_mp3_common.cpp @ 1:20d02a178406 default tip
*: check in everything else
yay
| author | Paper <paper@tflc.us> |
|---|---|
| date | Mon, 05 Jan 2026 02:15:46 -0500 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/foosdk/sdk/foobar2000/helpers/packet_decoder_mp3_common.cpp Mon Jan 05 02:15:46 2026 -0500 @@ -0,0 +1,44 @@ +#include "StdAfx.h" +#include "packet_decoder_mp3_common.h" +#include "mp3_utils.h" + +unsigned packet_decoder_mp3_common::parseDecoderSetup( const GUID & p_owner,t_size p_param1,const void * p_param2,t_size p_param2size ) +{ + if (p_owner == owner_MP3) return 3; + else if (p_owner == owner_MP2) return 2; + else if (p_owner == owner_MP1) return 1; + else if (p_owner == owner_MP4) + { + switch(p_param1) + { + case 0x6B: + return 3; + break; + case 0x69: + return 3; + break; + default: + return 0; + } + } + else if (p_owner == owner_matroska) + { + if (p_param2size==sizeof(matroska_setup)) + { + const matroska_setup * setup = (const matroska_setup*) p_param2; + if (!strcmp(setup->codec_id,"A_MPEG/L3")) return 3; + else if (!strcmp(setup->codec_id,"A_MPEG/L2")) return 2; + else if (!strcmp(setup->codec_id,"A_MPEG/L1")) return 1; + else return 0; + } + else return 0; + } + else return 0; +} + +unsigned packet_decoder_mp3_common::layer_from_frame(const void * frame, size_t size) { + using namespace mp3_utils; + TMPEGFrameInfo info; + if (!ParseMPEGFrameHeader(info, frame, size)) throw exception_io_data(); + return info.m_layer; +}
