AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Unit für mpglib.dll
Thema durchsuchen
Ansicht
Themen-Optionen

Unit für mpglib.dll

Ein Thema von crypti · begonnen am 12. Feb 2005 · letzter Beitrag vom 12. Feb 2005
Antwort Antwort
crypti

Registriert seit: 12. Feb 2005
43 Beiträge
 
#1

Unit für mpglib.dll

  Alt 12. Feb 2005, 01:56
Hallo

kann mir jemand bei Umsetzung eines Programms zum Decodieren von MP3 Dateien über die mpglib.dll nach WAV helfen?
Gleich am Anfang, hier gibt es die dll und die Sourcen in C: http://www.funsync.de/mpesch3/mpglibdll_092.zip


Der Wrappercode müsste meiner Meinung nach passend zur dll so aussehen:

Delphi-Quellcode:
  Tmpstr = record
  c : LongWord;
  end;
  Pmpstr = ^Tmpstr;

Function _InitMP3(mp : Pmpstr):Integer; cdecl; external 'mpglib.dll';
Procedure _ExitMP3(mp : Pmpstr);cdecl; external 'mpglib.dll';
Function _decodeMP3(mp : Pmpstr; inmemory : LongWord; inmemsize: LongWord; outmemory: LongWord; outmemsize, done: Integer):Integer; cdecl; external 'mpglib.dll';
tschöö
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Unit für mpglib.dll

  Alt 12. Feb 2005, 02:41
Ich kenne die DLL gheader nicht, aber sieht doch ganz gut aus. Wo benötigste du denn jetzt gezielt Hilfe? Dir die Arbeit abnhemen und dir die Headerübersetzung machen wird wohl keiner.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
crypti

Registriert seit: 12. Feb 2005
43 Beiträge
 
#3

Re: Unit für mpglib.dll

  Alt 12. Feb 2005, 02:45
Da ich momentan nur Speicherverletzungen bekomme wenn ich diese wrapperfunktionen verwende, muss da irgendwas schon falsch sein.

Hier mal zum Vergleich der c Code:

Delphi-Quellcode:
struct mpstr { char c[40000]; };


typedef BOOL (*INITMP3)  (struct mpstr *mp);
typedef void (*EXITMP3)  (struct mpstr *mp);
typedef int  (*DECODEMP3) (struct mpstr *mp, char *inmemory, int inmemsize,
                          char *outmemory,  int outmemsize, int *done);
Das Problem liegt auf jeden Fall bei dem Pointer Zeugs.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Unit für mpglib.dll

  Alt 12. Feb 2005, 02:48
Das cdecl kommt mir etwas komisch vor. Ich hätte da jetzt stdcall genommen oder sind die Funktionen so in der DLL deklariert?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
crypti

Registriert seit: 12. Feb 2005
43 Beiträge
 
#5

Re: Unit für mpglib.dll

  Alt 12. Feb 2005, 03:02
Ich denke ich weiß woran es hängt, nämlich am verwendeten struct /record.

Kann mir eventuell jemand sagen wie das in Delphi aussehen würde?

Delphi-Quellcode:
struct buf {
   unsigned char *pnt;
   long size;
   long pos;
   struct buf *next;
   struct buf *prev;
}
;
Was soll struct buf *next; sein? Ein struct das im struct wieder sich selbst linkt?
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Unit für mpglib.dll

  Alt 12. Feb 2005, 08:20
Zitat von crypti:
Ich denke ich weiß woran es hängt, nämlich am verwendeten struct /record.

Kann mir eventuell jemand sagen wie das in Delphi aussehen würde?

Delphi-Quellcode:
struct buf {
   unsigned char *pnt;
   long size;
   long pos;
   struct buf *next;
   struct buf *prev;
}
;
Was soll struct buf *next; sein? Ein struct das im struct wieder sich selbst linkt?
Hi,

ich würde mal schätzen:

Delphi-Quellcode:
type
  PByte = ^Byte;

type
  Buf = packed record
  Pnt: PByte;
  Size: LONG;
  Pos: LONG;
  Next: PBuf; // ^Buf;
  Prev: PBuf; // ^Buf;
end;
mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
crypti

Registriert seit: 12. Feb 2005
43 Beiträge
 
#7

Re: Unit für mpglib.dll

  Alt 12. Feb 2005, 12:42
Hallo

bist du sicher das man das hier machen kann?

Delphi-Quellcode:
type
  Buf = packed record
  ...
  [b]Next: PBuf; // ^Buf;
  Prev: PBuf; // ^Buf; [/b]
end;
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Unit für mpglib.dll

  Alt 12. Feb 2005, 12:44
Zitat von crypti:
Hallo

bist du sicher das man das hier machen kann?

Delphi-Quellcode:
type
  Buf = packed record
  ...
  [b]Next: PBuf; // ^Buf;
  Prev: PBuf; // ^Buf; [/b]
end;
Hi,

also meineswissens ja. Du musst eben noch oben die Deklaration von PBuf ergänzen. ("type PBuf = ^Buf")
Die beiden Typen in der struct sind ja Pointer auf eine "Buf" Struktur.

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
crypti

Registriert seit: 12. Feb 2005
43 Beiträge
 
#9

Re: Unit für mpglib.dll

  Alt 12. Feb 2005, 19:29
Hallo

ich habe das anders realisiert, trotzdem vielen Dank für euer Bemühen...

tschöö
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz