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;
+}