Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von Yeats
Thema: Wie übersetze ich einen Pointer of Pointer (C++) in C#?
Am im Forum: Rund um die Programmierung

@Abt:
Danke für den Hinweis.
Soweit mir bekannt kann sizeof nur die Größe von Valuetypes ermitteln. Da die Klasse oder von mir aus auch das struct XCSymbolDesc aber zwei string Fields beinhaltet, kann doch sizeof nicht mehr verwendet werden, oder täusche ich mich?

Thema: Unmanaged Dll C++ die Funktionen in C Sharp einbinden
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

Bezieh mich hier auf ein Projekt an dem ich gerade arbeite.

Ich beziehe mich auf XC_Comm.dll. Diese Dll liegt in einem Ordner. Zuerst rufe ich die Methode SetDllDirectory auf und gib den relativen Pfad an in dem die Dll liegt.
Anschließend rufe ich die Methode LoadLibrary auf, bei dieser gebe ich den Namen der dll an.

Momentan ist das ganze noch ein Prototyp und nicht nach MVVM gebaut. Somit liegt mein Code noch im Code-Behind-File der Wpf Anwendung.

MainWindow.xaml.cs:


public void SetAndLoadDll()
{
if (!NativeMethods.SetDllDirectory(@"..\..\..\DLL"))
return;
var handler = NativeMethods.LoadLibrary("XC_Comm.dll");
}

handler sollte beim Schließen benutzt werden um die dll wieder frei zu geben(FreeLibrary).

Grüße

Thema: Wie übersetze ich einen Pointer of Pointer (C++) in C#?
Am im Forum: Rund um die Programmierung

Hallo,

Danke für deine Antwort!

Die Anzahl ist mir bekannt. Heißt das ich sollte das so schreiben können:


var list = new List<XCSymbolDesc>();

for (int index = 0; index < countSymbols; index++)
{
var pointer = info.ppSymbolList + Marshal.SizeOf<XCSymbolDesc>() * index;
list.Add(Marshal.PtrToStructure<XCSymbolDesc>(pointer));
}
Wobei hier ppSymbolList laut Api so in C++ definiert ist: XCSymbolDesc **ppSymbolList.

Mein Problem hierbei, sobald index = 1 bekomme ich eine "AccessViolationException: Attepmted to read or write protected memory."

Das nächste Problem ist, dass das erste Objekt das ich raus bekomme, die Daten falsch sind. Die Werte passen nicht mit dem zusammen was ich aus einer funktionierenden C++ Anwendung heraus bekomme.

Grüße

Thema: Unmanaged Dll C++ die Funktionen in C Sharp einbinden
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Was möchtest du wissen?

Thema: Unmanaged Dll C++ die Funktionen in C Sharp einbinden
Am im Forum: Basistechnologien und allgemeine .NET-Klassen


public static class NativeMethods
    {
        [DllImport("kernel32.dll")]
        public static extern IntPtr LoadLibrary(string dllToLoad);

        [DllImport("kernel32.dll")]
        public static extern IntPtr GetProcAddress(IntPtr hModule, string procedureName);

        [DllImport("kernel32.dll")]
        public static extern bool FreeLibrary(IntPtr hModule);

        [DllImport("kernel32.dll", SetLastError = true)]
        public static extern bool SetDllDirectory(string lpPathName);
    }
Damit kann man eine Dll in den Speicher laden und verwenden.
Das kann dann so verwendet werden:


SetDllDirectory(@"..\..\..\DLL");
LoadLibrary("Toolbox.dll");


[UnmanagedFunctionPointer(CallingConvention.StdCall)]
public delegate void DLL_Func(string logFunc);

Mfg

Thema: Wie übersetze ich einen Pointer of Pointer (C++) in C#?
Am im Forum: Rund um die Programmierung

Erstmal, Danke weismat.

Habe noch eine Verständnisfrage.

Pointer of Pointer bedeutet ja so viel wie:
Es gibt einen Speicherbereich. Auf diesen Speicher zeigt ein Pointer. Der Speicherbereich dieses Pointers wird dann nochmals referenziert.

Wenn dies nun in einer IntPtr Variable steht, kann ich nun einfach mittels Marshal.PtrToStructure diesen Pointer zurück in meine Klasse umwandeln?

Laut Doku sollte ppValues auf ein Array zeigen.

var values = Marshal.PtrToStructure<XCVarValue>(info.ppValues);

Bei Marshal.PtrToStructure bekomme ich nun ein Objekt, aber kein Array. Wie kann ich das umsetzen?

Mfg

Thema: Unmanaged Dll C++ die Funktionen in C Sharp einbinden
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

LPCSTR ist ein string


[DllImport("Toolbox.dll", CharSet = CharSet.Ansi)]
public static extern int Initialize( string systemPath, string license,  IntPtr logFunc);

Zu dem DLL_LogFunc solltest du in der API nachlesen wie hierzu die Definition aussieht. Aber einfach gesagt erwartet sich hier die C++ dll einen Pointer zu einer Methode.
Das kann man mittels eines delegate realisieren.

Sieh hierfür: Marshal Function Pointer

Beispiel für das arbeiten mit einem Delegate:


[UnmanagedFunctionPointer(CallingConvention.StdCall)]
        public delegate void GatewayCallback(uint arg0, uint arg1, uint arg2, IntPtr arg3);

[DllImport(@"XXXX.dll",
            CharSet = CharSet.Ansi,
            EntryPoint = "CommSetCallback",
            SetLastError = true,
            CallingConvention = _callingConvention)]
        public static extern void CommSetCallback(GatewayCallback fCall);

Anschließend ist dann noch die Frage des Pointers:
DLL_LogFunc*
der * zeigt an das es sich um einen Pointer handelt.

Thema: Wie übersetze ich einen Pointer of Pointer (C++) in C#?
Am im Forum: Rund um die Programmierung

Danke für die Antwort!

Habe nun mal versucht alles zusammen zu bringen.

BOOL  XC_CommUpdateValues(XCVarInfos* pInfos) 
ist die API Schnittestelle die ich ansprechen möchte. Diese Funktion nimmt einen Pointer of type XCVarInfos an. In *pInfos steht der Channel mit dem eine SPS angesprochen wird. Dort werden Daten aus einem Register gelesen und in einem Callback werden dann die Ergebnisse zurück geliefert.

Callback:
typedef BOOL  (CALLBACK *GATEWAYCALLBACK) (DWORD , ULONG, DWORD, LRESULT);

In C#:


[UnmanagedFunctionPointer(CallingConvention.StdCall)]
public delegate void GatewayCallback(uint arg0, uint arg1, uint arg2, IntPtr arg3);

Der Callback scheint zumindest zu funktionieren, da ich hiermit z.B. Status der SPS, oder auch den Channel geliefert bekomme.

Laut der Doku soll nun die Funktion XC_CommUpdateValues ebenfalls einen Callback auslösen wo ich im arg3 den Pointer zu dem Result bekommen soll.

In meinem Projekt habe ich hierfür diese Wrapper Methode definiert:

        [DllImport(@"XC_Comm.dll",
            CharSet = CharSet.Ansi,
            EntryPoint = "XC_CommUpdateValues",
            SetLastError = true,
            CallingConvention = _callingConvention)]
        public static extern bool XC_CommUpdateValues(XCVarInfos pInfos);

Die zusätzlichen Typen die in der XCVarInfo Struktur benötigt werden:

typedef struct tagXCVarValue
{
	ULONG ulTimeStamp;
	BYTE  bQuality;
	BYTE  byData[1];
}XCVarValue;

typedef struct tagXCSymbolDesc
{
	LPSTR pszName;
	LPSTR pszType;
	WORD  uRefId;
	ULONG ulOffset;
	ULONG ulSize;
	char  szAccess[2];
}XCSymbolDesc;

typedef void* XCVARLIST;

Das ergibt dann bei mir alles zusammen:


    [StructLayout(LayoutKind.Sequential)]
    public class XCVarInfos
    {
        public IntPtr hVarList;
        public IntPtr ppValues;
        public IntPtr ppSymbolList;
        public TypeClass pTypeClass;
        public uint ulNumberOfSymbols;
        public uint ulChannel;
    }

    [StructLayout(LayoutKind.Sequential)]
    public class XCSymbolDesc
    {
        [MarshalAs(UnmanagedType.LPStr)]
        public string pszName;

        [MarshalAs(UnmanagedType.LPStr)]
        public string pszType;
        public ushort uRefId;
        public uint ulOffset;
        public uint ulSize;

        [MarshalAs(UnmanagedType.ByValArray ,SizeConst = 2)]
        public char[] szAccess;
    }

    [StructLayout(LayoutKind.Sequential)]
    public class XCVarValue
    {
        public uint ulTimeStamp;
        public char bQuality;

        [MarshalAs(UnmanagedType.ByValArray)]
        public char[] byData;
    }

Damit rufe ich nun meinen Wrapper auf:


_xcVarInfos = new XCVarInfos() { ulChannel = _channel , hVarList = new IntPtr()};

var value = new XCVarValue[5];
var pValues = (IntPtr)Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(XCVarValue)) * value.Length);
GCHandle gch = GCHandle.Alloc(pValues, GCHandleType.Pinned);
_xcVarInfos.ppValues = (IntPtr)gch.AddrOfPinnedObject();

var symbolList = new XCSymbolDesc[5];
var pSymbolList = (IntPtr)Marshal.AllocCoTaskMem(Marshal.SizeOf<XCSymbolDesc>() * symbolList.Length);
GCHandle gchSymbolList = GCHandle.Alloc(pSymbolList, GCHandleType.Pinned);
_xcVarInfos.ppSymbolList = (IntPtr)
gchSymbolList.AddrOfPinnedObject();
Wrapper.XC_CommUpdateValues(_xcVarInfos);

Habe ich hier nun mal vom Prinzip die Typen richtig definiert?

Mfg

Thema: Wie übersetze ich einen Pointer of Pointer (C++) in C#?
Am im Forum: Rund um die Programmierung

@weismat, @Spook: Danke für eure Antwort. Glaub das ist was ich gesucht hab.

Habe dazu noch eine Frage:

typedef struct tagXCVarInfos
{
	XCVARLIST		hVarList;
	XCVarValue		**ppValues;
	XCSymbolDesc	**ppSymbolList;
	enum TypeClass	*pTypeClass;
	ULONG			ulNumberOfSymbols;
	ULONG			ulChannel;
}XCVarInfos;

Wie kann ich in aus dieser Struktur den Pointer of Pointer übersetzen?

Thema: [erledigt] Wie übersetze ich das Feld "char szAccess[2]" aus einer C++ lib in C#?
Am im Forum: Rund um die Programmierung

Hallo,

Bin dabei einen Wrapper für eine C++ dll zu schreiben. In dieser dll gibt es diese Typ

typedef struct tagXCSymbolDesc
{
	LPSTR pszName;
	LPSTR pszType;
	WORD  uRefId;
	ULONG ulOffset;
	ULONG ulSize;
	char  szAccess[2];
}XCSymbolDesc;

Meine Frage hierzu wie übersetze ich nun am besten das Feld char szAccess[2] nach C#?

Mfg

Thema: [erledigt] VS 2015 stürzt beim Start ab
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Nach dem Deinstallieren von DevExpress und Syncfusion Extensions scheint das Problem behoben zu sein.

Thema: [erledigt] VS 2015 stürzt beim Start ab
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo,

OS: Windows 10 Pro 64bit
Hab Visual Studio 2015 Community installiert und verwendet gehabt. Während des Arbeitens kam eine Meldung in VS, dass der Arbeitsspeicher ausgelastet ist. (16GB Arbeitsspeicher stehen zu Verfügung, ausgelastet waren 40%, VS hat allerdings 2,5GB belegt gehabt).
Nach einem Neustart von VS wurden 3,4GB von VS ausgelastet und stürzte ab. Hab auch schon eine Neuinstallation vorgenommen, allerdings half es nicht.

Was könnte ich versuchen VS wieder zum Laufen zu bringen?

Mfg Yeats

Thema: Eine Listview verschiedene ViewModel WPF<-> MVVM
Am im Forum: GUI: WPF und XAML

Hallo,

Wenn du dir die Objekte in einer Liste anzeigen lassen möchtest, dann wäre eine herangehensweise, dass du dir ein ViewModel erstellst das du dann an die View bindest.

In diesem ViewModel stellst du dann ein Property IEnumerable MessageContentxyz zur Verfügung das vom Typ Basisklasse/Interface.

Dieses Property kannst du dann an die ListView binden und mittels Templates und Styling so anpassen, dass es deinen wünschen entspricht.

Thema: [gelöst] WPF - In einem String einzelne Buchstaben durch BackColor hervorheben
Am im Forum: GUI: WPF und XAML

Hi,

Vielleicht hilft dir folgender Link:

RichTextBox with Html

Thema: SQL für Visual Studio C# WPF Projekt speichern
Am im Forum: Datentechnologien

Hallo,

Sieh dir dazu Drei- Schichten- Architektur an, dazu noch das Repository Pattern.

Thema: Wie zeige ich Zufallszahlen in einem DataGridView an?
Am im Forum: GUI: Windows-Forms

Hallo morph1um,

Wenn ich deine Frage lese, dann stellt sich mir die Frage ob du die DGV's als Seed für den Zufallszahlengenerator nutzen möchtest?!?

Thema: GridViewColumn CellTemplate und refresh
Am im Forum: GUI: WPF und XAML

Hallo,
Ein


list.Items.Refresh()

bewirkt das eine neue View erstellt wird. Dadurch verlierst du den Focus und den Inhalt. Versuche das Hinzufügen neuer Items über das MVVM Pattern zu lösen, dadurch sollte dieses Problem zu lösen sein.

Thema: Startindex einer Liste auf 1 statt 0 ändern
Am im Forum: Grundlagen von C#

@p!lle

Zitat
ändere ich das i auf 0 dann kommt mir 21 häuser raus als ergebnis hat aber nur 20 erstellt wie kann ich das ändern
Ich verstand die Frage so, dass er bei 0 starten wollte. Somit wäre die Bedingung im Schleifenkopf zum Anpassen gewesen. Wenn der Ersteller der Frage mit 1 starten möchte dann ist das natürlich auch legitim.
@Redmoon147: Hierfür sieh dir die Antwort von p!lle an

Thema: Startindex einer Liste auf 1 statt 0 ändern
Am im Forum: Grundlagen von C#

Hallo,

Sieh dir dazu deine Schleife an. Wenn du i auf 0 änderst muss du entsprechend deine Bedingung bearbeiten. Du startest bei 0 und gehst bis 20. Das sind insgesamt 21 durchläufe.
Ändere hierbei die Bedingung

 i≤anzahl 
zu

 i<anzahl 
Somit läuft die Schleife von 0 bis 19 und ergibt somit 20.

Thema: Datagridview durch Filter auf abhängige Tabelle anzeigen
Am im Forum: Datentechnologien

Welche Datentechnologie? Ef? nHibernate? Mittels vordefinierter Sql Statements?
Mittels Joints funktioniert es nicht?

Thema: ComboBox füllen + welches Datenbanksystem
Am im Forum: Datentechnologien

Zitat
- welches Datenbanksystem bietet sich für dieses Projekt + einen Anfänger für mich am besten?
Für den beschriebenen Anwendungsfall ist eine Sqlite Datenbank bei weitem ausreichend.
Zitat
- wenn ich die ComboBoxen fülle, soll ich dann schon die Spielerwerte irgendwo speichern "um sie schon mal da zu haben" oder sollte ich quasi erst, wenn man in der Combobox den Spieler anklickt das Statement abschicken und die Textboxen mit den Werten "frisch aus der Table1" füllen?
Wie meinst du "irgendwo speichern"? Liste? Xml?
Zitat
- Wenn in der Combobox der Spieler Name (mit Vor und Nachnamen) steht, wie "identifiziere" ich im Programm den Spieler anhand der Spieler ID am besten?
Sprich, dass dann auch wirklich Spieler X mit der richtigen PlayerID XYZ ausgewählt und dem entsprechend auch die richtigen Werte angezeigt werden
Eine Möglichkeit wäre, die Combobox mit deinen Spielern zu befüllen. Wenn "Spieler" als Klasse hast, kannst du dieser Klasse ein Property spendieren, dass dir den Namen des jeweiligen Spielers liefert. Dies kannst du dann in der Combobox darstellen. Somit hättest du immer direkten Zugriff auf sämtliche Properties deiner Spieler-Klasse.

Thema: DataGridView: List<string> in Zelle darstellen
Am im Forum: GUI: Windows-Forms

Sieh dir dazu einmal die Klasse HierarchicalDataTemplate an.

Gruß,
Yeats

Thema: Xamarin VS 2015 - Android und IOS
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo Broob,

Bezüglich deiner ersten Meldung, diese hat nichts mit Visual Studio 2015 zu tun, sondern betrifft deine Xamarin Lizenz.

Thema: Serial Port richtig freigeben
Am im Forum: Rund um die Programmierung

Poste doch mal deinen Code zum Neustarten des Terminals.
Wie lange benötigt das Terminal zum Herunterfahren?

Thema: [erledigt] WinRt: MediaTranscoder: Fehler bei diesem Vorgang, da...
Am im Forum: Rund um die Programmierung

Mit konstanter Bitrate

Thema: [erledigt] WinRt: MediaTranscoder: Fehler bei diesem Vorgang, da...
Am im Forum: Rund um die Programmierung

Dauer der mp3 ist über 4 Minuten, durch das entfernen von jeweils 60 am Anfang und Ende bleiben somit noch gute 2:24Minuten übrig.
Mp3 kann gelesen werde, da sie (lt. ProcessMonitor) auch nicht von einem anderen Prozess geblockt wird.
Befindet sich im genau diesem Ordner und kann vom Programmcode auch via MediaElement abgespielt werden

PS: Sie kann, ohne das Trimmen, in ein anderes Medien Format transcodiert werden. Aber sobald hier beide Properties (transcoder.TrimStartTime und transcoder.TrimStopTime) gesetzt sind, können Samples nicht mehr verarbeitet werden.
PPS: Bei einem anderen Versuch mit einem Video (und entsprechender Umstellung der Encoding Profiles), funktioniert das Trimmen.

Thema: [erledigt] WinRt: MediaTranscoder: Fehler bei diesem Vorgang, da...
Am im Forum: Rund um die Programmierung

Da auch folgendes zur gleichen Exception führt:


private async Task TranscodeFromMp3ToWav()
{
            const string inputFilePath = @"Battlelore - Sword's Song - 11 - Starlight Kingdom.mp3";
            //const string inputFilePath = @"b8845d32-8875-4469-a610-05758c3bccaf.mp3";

            var file = await KnownFolders.MusicLibrary.GetFileAsync(inputFilePath);

            var profile = MediaEncodingProfile.CreateMp3(AudioEncodingQuality.High);
            var transcoder = new MediaTranscoder();
            var folder = ApplicationData.Current.LocalFolder;
            var outputFile = await folder.CreateFileAsync("output.mp3", CreationCollisionOption.ReplaceExisting);

            transcoder.TrimStartTime = new TimeSpan(0, 0, 1, 0);
            transcoder.TrimStopTime = new TimeSpan(0, 0, 1, 0);

            var transcode = await transcoder.PrepareFileTranscodeAsync(file, outputFile, profile);

            if (transcode.CanTranscode)
            {
                await transcode.TranscodeAsync();
            }
}

Lag der Fehler nicht am async/void.

Thema: [erledigt] WinRt: MediaTranscoder: Fehler bei diesem Vorgang, da...
Am im Forum: Rund um die Programmierung

Hatte nun wieder etwas Zeit mich darum zu kümmern. Mein Ablauf sieht jetzt folgend aus:

  1. Transcodieren der mp3 in eine Wav-Datei mittels der Transcode Funktion von WinRt
  2. Die so erhaltene Wav-Datei öffne ich anschließend als Stream
  3. Diesen Stream lese ich vollständig aus und identifiziere dann die einzelnen RIFF Chunks (Header, fmt, junk, Data)
  4. Im Data Chunk hab ich dann die Raw-Audio Informationen
  5. Trimmen tu ich das ganze dann auf dem Data Chunk. Anschließend berechne ich mir die neue Größe der einzelnen Chunks (in diesem Falle dann eben von Header und Data)
  6. Schreibe eine neue Wav-Datei in den Storage
  7. Transcodiere dieses dann zurück in eine mp3-Datei
  8. Lösche die neu erstellte Wav-Datei

Thema: [erledigt] WinRt: MediaTranscoder: Fehler bei diesem Vorgang, da...
Am im Forum: Rund um die Programmierung

So wie es aussieht ist das Problem hierbei diese Zuweisung:

transcoder.TrimStartTime = new TimeSpan(0, 0, 1, 0);
transcoder.TrimStopTime = new TimeSpan(0, 0, 1, 0);

Lasse ich diese Zuweisungen weg, kann das TranscodeAsync() den Aufruf verarbeiten. Da ein Versuch mit Trimmen bei Video Dateien funktioniert, dürfte hier wohl bei Audio ein generelles Problem zu sein!?!

Hat sonst vielleicht jemand eine Idee wie ich ein Audio - Datei innerhalb einer StoreApp Trimmen könnte, ohne mir jetzt eine große Interop Wrapper Klasse zu bauen?

Mfg

Thema: [erledigt] WinRt: MediaTranscoder: Fehler bei diesem Vorgang, da...
Am im Forum: Rund um die Programmierung

Hallo

Bin mal wieder an einem Punkt angekommen wo ich Hilfe benötige.

Diesmal gehts um Audio. Mein Ziel ist es eine Audio-Date am Anfange und am Ende zu beschneiden.
Das ganze soll aber in einer Windows Store App stattfinden. Bibliotheken wie NAudio sind zwar schön, allerdings kommt man damit nicht durch den Certification Process, da NAudio ein Framework nutzt, dass nicht vom Windows Store unterstützt wird (unterstützt wird WASAPI und XAudio2).

Nach einiger Suche hab ich nun etwas gefunden, was scheinbar das tun soll was ich möchte. Mittels MediaTranscoder kann man Video und Audio Files transkodieren und auch trimmen.

Ich habe hier mal eine TestMethode geschrieben.


private async void TestAsync()
        {
            const string inputFilePath = @"Battlelore - Sword's Song - 11 - Starlight Kingdom.mp3";
            const string outputFilePath = @"output.mp3";

            var mp3AudioProfile = MediaEncodingProfile.CreateMp3(AudioEncodingQuality.Medium);

            var file = await KnownFolders.MusicLibrary.GetFileAsync(inputFilePath);
            
            //var properties = await file.GetBasicPropertiesAsync();
            //var size = properties.Size;

            var transcoder = new MediaTranscoder();
            StorageFile outputFile = null;
            var notFound = false;
            try
            {
                var oFile = await KnownFolders.MusicLibrary.GetFileAsync(outputFilePath);
                outputFile = oFile;
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
                notFound = true;
            }
            if (notFound)
                outputFile = await KnownFolders.MusicLibrary.CreateFileAsync(outputFilePath);


            //transcoder.AlwaysReencode = true;
            transcoder.TrimStartTime = new TimeSpan(0, 0, 1, 0);
            transcoder.TrimStopTime = new TimeSpan(0, 0, 1, 0);

            var preparedTranscodeResult = await transcoder.PrepareFileTranscodeAsync(file, outputFile, mp3AudioProfile);
            transcoder.VideoProcessingAlgorithm = MediaVideoProcessingAlgorithm.Default;
            
            if (preparedTranscodeResult.CanTranscode)
            {
                await preparedTranscodeResult.TranscodeAsync();
            }            
        }

Bekomme hier allerdings bei:


await preparedTranscodeResult.TranscodeAsync();

eine System.Exception mit zusätzlicher Information:
Fehler
Fehler bei diesem Vorgang, da von der Senke keine Beispiele verarbeitet wurden. (Ausnahme von HRESULT: 0xC00D4A44)

Im Detail:
Fehler
System.Exception occurred
_HResult=-1072870844
_message=Fehler bei diesem Vorgang, da von der Senke keine Beispiele verarbeitet wurden. (Ausnahme von HRESULT: 0xC00D4A44)
HResult=-1072870844
IsTransient=false
Message=Fehler bei diesem Vorgang, da von der Senke keine Beispiele verarbeitet wurden. (Ausnahme von HRESULT: 0xC00D4A44)
Source=mscorlib
StackTrace:
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
InnerException:

Hat hier vlt jemand eine Idee was mir fehlt? Ist MediaTranscoder überhaupt in der Lage, Audio Files alleine zu transkodieren?
Habe ich eine Einstellung vergessen oder bin ich einfach nur blöd?

MFG