
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://kb.speeddemosarchive.com/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://kb.speeddemosarchive.com/index.php?action=history&amp;feed=atom&amp;title=Anri-chan%2FSource%2Faud.cpp</id>
		<title>Anri-chan/Source/aud.cpp - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://kb.speeddemosarchive.com/index.php?action=history&amp;feed=atom&amp;title=Anri-chan%2FSource%2Faud.cpp"/>
		<link rel="alternate" type="text/html" href="https://kb.speeddemosarchive.com/index.php?title=Anri-chan/Source/aud.cpp&amp;action=history"/>
		<updated>2026-04-18T18:09:37Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.23.9</generator>

	<entry>
		<id>https://kb.speeddemosarchive.com/index.php?title=Anri-chan/Source/aud.cpp&amp;diff=2093&amp;oldid=prev</id>
		<title>Ballofsnow: New page: &lt;pre&gt;&lt;nowiki&gt; /*    Returns the audio type.    author: ballofsnow   date: 31 July 2007   license: none (public domain)   target: win32 (MINGW), recommend using the free IDE from bloodshed....</title>
		<link rel="alternate" type="text/html" href="https://kb.speeddemosarchive.com/index.php?title=Anri-chan/Source/aud.cpp&amp;diff=2093&amp;oldid=prev"/>
				<updated>2007-08-01T03:41:43Z</updated>
		
		<summary type="html">&lt;p&gt;New page: &amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt; /*    Returns the audio type.    author: ballofsnow   date: 31 July 2007   license: none (public domain)   target: win32 (MINGW), recommend using the free IDE from bloodshed....&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
&lt;br /&gt;
  Returns the audio type.&lt;br /&gt;
&lt;br /&gt;
  author: ballofsnow&lt;br /&gt;
  date: 31 July 2007&lt;br /&gt;
  license: none (public domain)&lt;br /&gt;
  target: win32 (MINGW), recommend using the free IDE from bloodshed.net&lt;br /&gt;
  version: beta 0.2&lt;br /&gt;
&lt;br /&gt;
  AC3       00000000 = 0x00&lt;br /&gt;
  Unknown1  00100000 = 0x20&lt;br /&gt;
  Mpeg-1    01000000 = 0x40&lt;br /&gt;
  Mpeg-2ext 01100000 = 0x60&lt;br /&gt;
  LPCM      10000000 = 0x80&lt;br /&gt;
  Unknown2  10100000 = 0xA0&lt;br /&gt;
  DTS       11000000 = 0xC0&lt;br /&gt;
  SDDS      11100000 = 0xE0&lt;br /&gt;
&lt;br /&gt;
  Find the byte at offset 0x204 or decimal 516 of an IFO file.&lt;br /&gt;
&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
#include &amp;lt;bitset&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
void usage(char *argv0);&lt;br /&gt;
unsigned char checkifo[12]= { 0x44, 0x56, 0x44, 0x56, 0x49, 0x44, 0x45, 0x4F, 0x2D, 0x56, 0x54, 0x53 }; /* DVDVIDEO-VTS */&lt;br /&gt;
unsigned char buffer[1024*1024];&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char **argv) {&lt;br /&gt;
  FILE *ifo;&lt;br /&gt;
  char *ifoname=NULL;&lt;br /&gt;
  int rval;&lt;br /&gt;
  printf (&amp;quot;Audio type analyzer\n&amp;quot;);&lt;br /&gt;
  printf (&amp;quot;beta 0.2, ballofsnow\n&amp;quot;);&lt;br /&gt;
  printf (&amp;quot;This software comes with no warranty.\n&amp;quot;);&lt;br /&gt;
  printf (&amp;quot;For help, run program with no parameters\n\n&amp;quot;);  &lt;br /&gt;
  &lt;br /&gt;
  if (argc!=2) {&lt;br /&gt;
    usage(argv[0]);&lt;br /&gt;
    return 0;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* LOAD AND VALIDATE THE IFO */&lt;br /&gt;
  ifoname=argv[1];&lt;br /&gt;
  if ((ifo=fopen(ifoname,&amp;quot;rb&amp;quot;))==NULL) {&lt;br /&gt;
    printf (&amp;quot;[-] Failed to open IFO file \&amp;quot;%s\&amp;quot;.\n&amp;quot;, ifoname);&lt;br /&gt;
    return -1;&lt;br /&gt;
  } &lt;br /&gt;
  // Source res is at offset 0x0200, or 512 decimal, 2 bytes.&lt;br /&gt;
  // Audio type is at offset 0x0204, or 516 decimal, 1 byte. &lt;br /&gt;
  fread(buffer,1,517,ifo);&lt;br /&gt;
  if (memcmp(checkifo,buffer,12) != 0) {&lt;br /&gt;
     printf (&amp;quot;This isn't an IFO file.\n&amp;quot;);&lt;br /&gt;
     free(buffer);&lt;br /&gt;
     fclose(ifo);&lt;br /&gt;
     usage(argv[0]);&lt;br /&gt;
     return -1;&lt;br /&gt;
  }&lt;br /&gt;
  /* FINISHED VALIDATING */&lt;br /&gt;
  &lt;br /&gt;
  /* MASK THE BYTE TO GET THE RELEVANT BITS */&lt;br /&gt;
  bitset&amp;lt;CHAR_BIT&amp;gt; atype (buffer[516]); &lt;br /&gt;
  atype &amp;amp;= 0xE0;&lt;br /&gt;
      &lt;br /&gt;
  if (atype == 0x00) {&lt;br /&gt;
     printf (&amp;quot;AC3\n&amp;quot;);&lt;br /&gt;
     rval=1;     &lt;br /&gt;
  }&lt;br /&gt;
  else if (atype == 0x20) {&lt;br /&gt;
     printf (&amp;quot;Unknown1\n&amp;quot;);&lt;br /&gt;
     rval=2;&lt;br /&gt;
  }&lt;br /&gt;
  else if (atype == 0x40) {&lt;br /&gt;
     printf (&amp;quot;Mpeg-1\n&amp;quot;);&lt;br /&gt;
     rval=3;&lt;br /&gt;
  }&lt;br /&gt;
  else if (atype == 0x60) {&lt;br /&gt;
     printf (&amp;quot;Mpeg-2ext\n&amp;quot;);&lt;br /&gt;
     rval=4;&lt;br /&gt;
  }&lt;br /&gt;
  else if (atype == 0x80) {&lt;br /&gt;
     printf (&amp;quot;LPCM\n&amp;quot;);&lt;br /&gt;
     rval=5;&lt;br /&gt;
  }&lt;br /&gt;
  else if (atype == 0xA0) {&lt;br /&gt;
     printf (&amp;quot;Unknown2\n&amp;quot;);&lt;br /&gt;
     rval=6;&lt;br /&gt;
  }&lt;br /&gt;
  else if (atype == 0xC0) {&lt;br /&gt;
     printf (&amp;quot;DTS\n&amp;quot;);&lt;br /&gt;
     rval=7;&lt;br /&gt;
  }&lt;br /&gt;
  else if (atype == 0xE0) {&lt;br /&gt;
     printf (&amp;quot;SDDS\n&amp;quot;);&lt;br /&gt;
     rval=8;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  free(buffer); // ifo buffer&lt;br /&gt;
  fclose(ifo);&lt;br /&gt;
  return rval;  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void usage(char *argv0) {&lt;br /&gt;
  printf (&amp;quot;Usage: %s &amp;lt;VTS IFO file&amp;gt;\n\n&amp;quot;, argv0);&lt;br /&gt;
  printf (&amp;quot;Returns value to %%ERRORLEVEL%%.\n&amp;quot;);&lt;br /&gt;
  printf (&amp;quot;  1 - AC3\n&amp;quot;);&lt;br /&gt;
  printf (&amp;quot;  2 - Unknown1\n&amp;quot;);&lt;br /&gt;
  printf (&amp;quot;  3 - Mpeg-1\n&amp;quot;);&lt;br /&gt;
  printf (&amp;quot;  4 - Mpeg-2ext\n&amp;quot;);&lt;br /&gt;
  printf (&amp;quot;  5 - LPCM\n&amp;quot;);&lt;br /&gt;
  printf (&amp;quot;  6 - Unknown2\n&amp;quot;);&lt;br /&gt;
  printf (&amp;quot;  7 - DTS\n&amp;quot;);&lt;br /&gt;
  printf (&amp;quot;  8 - SDDS\n&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ballofsnow</name></author>	</entry>

	</feed>