annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 #include "StdAfx.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2 #include "packet_decoder_mp3_common.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 #include "mp3_utils.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 unsigned packet_decoder_mp3_common::parseDecoderSetup( const GUID & p_owner,t_size p_param1,const void * p_param2,t_size p_param2size )
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 if (p_owner == owner_MP3) return 3;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8 else if (p_owner == owner_MP2) return 2;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 else if (p_owner == owner_MP1) return 1;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 else if (p_owner == owner_MP4)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12 switch(p_param1)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 case 0x6B:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 return 3;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 break;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 case 0x69:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 return 3;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 break;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 default:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 return 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 else if (p_owner == owner_matroska)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 if (p_param2size==sizeof(matroska_setup))
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 const matroska_setup * setup = (const matroska_setup*) p_param2;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 if (!strcmp(setup->codec_id,"A_MPEG/L3")) return 3;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 else if (!strcmp(setup->codec_id,"A_MPEG/L2")) return 2;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 else if (!strcmp(setup->codec_id,"A_MPEG/L1")) return 1;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 else return 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 else return 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36 else return 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 unsigned packet_decoder_mp3_common::layer_from_frame(const void * frame, size_t size) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 using namespace mp3_utils;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 TMPEGFrameInfo info;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 if (!ParseMPEGFrameHeader(info, frame, size)) throw exception_io_data();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 return info.m_layer;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 }