Zum Inhalt springen

WAV nach MP3 und zurück (war: Mal was anspruchsvolles (c++))


Empfohlene Beiträge

Hallo Leute,

habe gestern folgende Aufgabe gestellt bekommen und komm keinen Schritt weiter.

Mein Chief will, ein Programm welches mit dem Codec von Windows bzw. über directx arbeited.

Aber hier erst mal das Programm:

Erstellen Sie eine Dialoganwendung, welche 2 Dateinamen als Eingabe annimmt und wahlweise eine mp3-Datei in eine wav-Datei oder umgekehrt umwandelt. Sie können als Vorlage auch eine Kopie (!) Ihres Programms aus der vorangegangenen Aufgabe verwenden.

Ereugen Sie die entsprechenden Filtergraphen manuell:

mp3_to_wav-Filtergraph:

Source: CLSID_AsyncReader

mpeg1 Splitter: CLSID_MPEG1Splitter

MP3 Decoder: DShowUtils::CLSID_MP3Decoder

Waveformat erzeugen: DShowUtils::CLSID_WAVDEST

FileWriter im RIFF-Format: CLSID_FileWriter

wav_to_mp3-Filtergraph:

Source: CLSID_AsyncReader

Waveformat Parser: DShowUtils::CLSID_WAVEParser

MP3 Encoder: DShowUtils::CLSID_LameMP3Encoder

File Writer (ohne RIFF): DShowUtils::CLSID_DumpFile

Auch hier sind die Dateinamen für Quell- und Zieldatei über ein IFileSourceFilter-Interface (bzw. über ein IFileSinkFilter-Interface) zu benennen:

IFileSourceFilter* FileSource=NULL;

g_pSource->QueryInterface(IID_IFileSourceFilter, (void**)&FileSource);

FileSource->Load(DShowUtils::AnsiToUnicode(aktname),NULL);

FileSource->Release();

IFileSinkFilter* FileDest=NULL;

g_pDest->QueryInterface(IID_IFileSinkFilter, (void**)&FileDest);

FileDest->SetFileName(DShowUtils::AnsiToUnicode(aktname),NULL);

FileDest->Release();

Fügen Sie die erzeugten Filter dem Filtergraphen hinzu und verbinden Sie die entsprechenden Pins wie in der nachstehenden Grafik angegeben (achten Sie dabei auf die genaue Pin-Bezeichnung!). Wenn die Filter in den Graphen eingefügt sind, können Sie die Interfaces freigeben (Release) und den Graphen testen.

Vergessen Sie nicht, die für diese Aufgabe zusätzlich notwendigen DirectShow-Filter zu registrieren. Dies können Sie aus Ihrem Programm heraus zur Laufzeit tun

DShowUtils::RegisterFilterDll("DUMP.AX",true);

DShowUtils::RegisterFilterDll("lame_dshow.ax",true);

DShowUtils::RegisterFilterDll("WAVDEST.AX",true);

oder aus der Programmshell heraus

regsvr32.exe DUMP.AX /s

regsvr32.exe lame_dshow.ax /s

regsvr32.exe WAVDEST.AX /s

wobei Sie natürlich die entsprechenden Rechte benötigen. Zerstören Sie den Filtergraphen im Ereignishandler EC_COMPLETE bzw. EC_USERABORT.

Bemerkung 1: Der mp3-Encoder unterstützt einen Einstellungsdialog. Testen Sie diesen über das in der Vorlesung besprochene Interface.

PS: Die Funktionalität reicht. Das Programm muss nicht nach Anweisung geschrieben werde. Ich bin irgendwie noch immer für die ActivX Schiene.

Bin mal gespannt.

Danke im Voraus

Bene

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...