<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[WaveInReset() und Unterschiede zwischen Soundkarten]]></title><description><![CDATA[<p>hi!</p>
<p>Mein Programm nimmt mit 2 Buffern wavedaten auf. Jedesmal wenn die MM_WIM_DATA Nachricht ankommt wird der volle Buffer weggeschrieben und gleich wieder leer mit WaveInAddBuffer angehängt. Soweit funktioniert das alles.<br />
Wenn jetzt aber jemand mittendrin stop drückt passiert folgendes:<br />
Die Stopnachricht ruft eine funktion auf die WaveInReset() ausführt (das wavedevice ist noch offen). Damit sollte ja (nach MSDN) der gerade beschriebene Buffer mit MM_WIM_DATA zurückgegeben werden um dann die reste in dem buffer auch noch zu speichern.<br />
Auf einem Rechner (PIII 500, Win 2000 Prof., Creative AudioPCI ES1371/ES1373) passiert das auch genauso. Auf einem anderem Rechner (Gericom Laptop PIII 1000, Win2000 Prof, SiS 7018) kommt der Buffer zwar an, ist aber leer.</p>
<p>Kann einer den Unterschied erklären?</p>
<p>Die wichtigen Teile habe ich hier mal reinkopiert:</p>
<pre><code class="language-cpp">LRESULT CALLBACK FCallback(HWND WinH, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch(message)
	{

            ...
		case WM_SD_AUDIO_STOP:
		{

			Programmstatus = SD_AUDIO_AUFNAHMESTOP;
			Aufnahme-&gt;AufnahmeStoppen();
			return(0);

                 ...

		case MM_WIM_DATA:
		{
			switch(Programmstatus)
			{
                      ...

				case SD_AUDIO_AUFNAHMESTOP:
				{
					Aufnahme-&gt;AufnahmeSpeichern((WAVEHDR*)lParam)
			    }
				break;
                  ...   
				default: break;
			}
			return(0);
		}
      ...
}
</code></pre>
<pre><code class="language-cpp">void AufnahmeKlasse::AufnahmeStoppen()
{
         waveInReset(WaveHandle);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/68133/waveinreset-und-unterschiede-zwischen-soundkarten</link><generator>RSS for Node</generator><lastBuildDate>Wed, 08 Apr 2026 18:52:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/68133.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 15 Mar 2004 11:32:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to WaveInReset() und Unterschiede zwischen Soundkarten on Mon, 15 Mar 2004 14:42:29 GMT]]></title><description><![CDATA[<p>hi!</p>
<p>Mein Programm nimmt mit 2 Buffern wavedaten auf. Jedesmal wenn die MM_WIM_DATA Nachricht ankommt wird der volle Buffer weggeschrieben und gleich wieder leer mit WaveInAddBuffer angehängt. Soweit funktioniert das alles.<br />
Wenn jetzt aber jemand mittendrin stop drückt passiert folgendes:<br />
Die Stopnachricht ruft eine funktion auf die WaveInReset() ausführt (das wavedevice ist noch offen). Damit sollte ja (nach MSDN) der gerade beschriebene Buffer mit MM_WIM_DATA zurückgegeben werden um dann die reste in dem buffer auch noch zu speichern.<br />
Auf einem Rechner (PIII 500, Win 2000 Prof., Creative AudioPCI ES1371/ES1373) passiert das auch genauso. Auf einem anderem Rechner (Gericom Laptop PIII 1000, Win2000 Prof, SiS 7018) kommt der Buffer zwar an, ist aber leer.</p>
<p>Kann einer den Unterschied erklären?</p>
<p>Die wichtigen Teile habe ich hier mal reinkopiert:</p>
<pre><code class="language-cpp">LRESULT CALLBACK FCallback(HWND WinH, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch(message)
	{

            ...
		case WM_SD_AUDIO_STOP:
		{

			Programmstatus = SD_AUDIO_AUFNAHMESTOP;
			Aufnahme-&gt;AufnahmeStoppen();
			return(0);

                 ...

		case MM_WIM_DATA:
		{
			switch(Programmstatus)
			{
                      ...

				case SD_AUDIO_AUFNAHMESTOP:
				{
					Aufnahme-&gt;AufnahmeSpeichern((WAVEHDR*)lParam)
			    }
				break;
                  ...   
				default: break;
			}
			return(0);
		}
      ...
}
</code></pre>
<pre><code class="language-cpp">void AufnahmeKlasse::AufnahmeStoppen()
{
         waveInReset(WaveHandle);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/480702</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/480702</guid><dc:creator><![CDATA[Till]]></dc:creator><pubDate>Mon, 15 Mar 2004 14:42:29 GMT</pubDate></item><item><title><![CDATA[Reply to WaveInReset() und Unterschiede zwischen Soundkarten on Mon, 15 Mar 2004 15:45:42 GMT]]></title><description><![CDATA[<p>Ich habs jetzt nochmal auf diversen anderen Rechnern ausprobiert und es scheint überall zu laufen.... Nur auf dem Laptop eben nicht.<br />
halt gericom <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/480985</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/480985</guid><dc:creator><![CDATA[Till]]></dc:creator><pubDate>Mon, 15 Mar 2004 15:45:42 GMT</pubDate></item><item><title><![CDATA[Reply to WaveInReset() und Unterschiede zwischen Soundkarten on Tue, 16 Mar 2004 06:16:20 GMT]]></title><description><![CDATA[<p>Versuchs mal mit mehr als 2 Puffern. Zwischen einer separaten Soundkarte und Soundchip-On-Board gibt es große Unterschiede bei der (Hardware-)Zwischenspeicherung der Soundpuffer. Soundchip-On-Board-Lösungen arbeiten in der Regel mit nur 2 Hardwarepuffern (abhängig von der Größe). Es kann also sein, daß der letzte Puffer noch nicht vom Audio-Chip benutzt worden ist, da die Zeitverzögerung zwischen Aufruf und Ausführung für WaveInAddBuffer, WaveInReset usw. bei Soundchip-On-Board-Konfigurationen nur ca. 1/10 der Soundkarten-Konfigurationen beträgt.</p>
<p>Blackbird</p>
]]></description><link>https://www.c-plusplus.net/forum/post/481425</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/481425</guid><dc:creator><![CDATA[Blackbird]]></dc:creator><pubDate>Tue, 16 Mar 2004 06:16:20 GMT</pubDate></item><item><title><![CDATA[Reply to WaveInReset() und Unterschiede zwischen Soundkarten on Tue, 16 Mar 2004 08:12:51 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/680">@Blackbird</a></p>
<p>da ist aber wer früh auf <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /></p>
<p>Wenn die Verzögerung zu gross ist und der Buffer noch garnicht bei der soundkarte angekommen kann er auch nicht beschrieben werden. Aber die ganze Aufnahmereihe funktioniert ja vorher perfekt... nur beim letzen BUffer eben nicht. Er wechselt die Buffer vorher ja einige duzendmal ohne Probleme.<br />
Der Buffer ist 5 sekunden lang... Da sollte genug Zeit sein den Buffer an die Soundkarte zu übergeben. Und auch wenn ich erst kurz vor dem abschliessen des Buffers abbreche ist er auch leer.</p>
<p>Kann das trotzdem an der Verzögerung liegen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/481452</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/481452</guid><dc:creator><![CDATA[Till]]></dc:creator><pubDate>Tue, 16 Mar 2004 08:12:51 GMT</pubDate></item><item><title><![CDATA[Reply to WaveInReset() und Unterschiede zwischen Soundkarten on Wed, 17 Mar 2004 06:01:00 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/5331">@Till</a>,</p>
<blockquote>
<p>da ist aber wer früh auf <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /></p>
</blockquote>
<p>&quot;früh&quot; ist relativ <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Woran es geneu liegt, kann ich dir auch nicht sagen. Da hilft nur messen, prüfen, testen ...<br />
Die Hardware und die Treiber-Software ist aber bei On-Board-Chip- und Soundkarten-Konfigurationen verschieden.<br />
5 s sind auch zienmich große Buffer, meine waren immer so im Millisekundenbereich. Wie hoch ist denn die Verzögerung zwischen einem Pegelsprung am Mikro (LineIn) und dem Eintreffen des Buffers in WIM_DATA? Und wann tritt der Pegelsprung im Buffer auf?<br />
Immer jeweils beim Gericom und bei den Soundkarten gemessen.</p>
<p>Blackbird</p>
]]></description><link>https://www.c-plusplus.net/forum/post/482259</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/482259</guid><dc:creator><![CDATA[Blackbird]]></dc:creator><pubDate>Wed, 17 Mar 2004 06:01:00 GMT</pubDate></item><item><title><![CDATA[Reply to WaveInReset() und Unterschiede zwischen Soundkarten on Wed, 17 Mar 2004 13:31:23 GMT]]></title><description><![CDATA[<p>Ich habs mittlerweile ziemlich vielen verschiedenen Soundkarten getestet. Irgendwie haben (grob verallgemeinert) alle onboard chips dieses verhalten.</p>
<p>Ich hab mir einfach damit geholfen nicht 2*5s sondern 10 * 0,1s buffer zu nehmen. Da läuft die aufnahme sicherer und diese ganzen waveInReset Probleme sind dahin. Eine zehntelsekunde als maximaler datenverlust ist ok.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/482550</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/482550</guid><dc:creator><![CDATA[Till]]></dc:creator><pubDate>Wed, 17 Mar 2004 13:31:23 GMT</pubDate></item><item><title><![CDATA[Reply to WaveInReset() und Unterschiede zwischen Soundkarten on Wed, 17 Mar 2004 21:27:43 GMT]]></title><description><![CDATA[<p>Keine Ahnung, aber evtl. sind den Onboard-Sound-Chips einfach die Buffer zu groß gewesen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/483076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/483076</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Wed, 17 Mar 2004 21:27:43 GMT</pubDate></item></channel></rss>