1. Cookies optimieren die Bereitstellung unserer Dienste. Mit der Nutzung unserer Dienste erklärst Du dich damit einverstanden, dass wir Cookies verwenden. Weitere Informationen
    Information ausblenden
  2. Willkommen im Forum von DIGITAL FERNSEHEN - dem führenden Portal für digitales Fernsehen, Medien und Entertainment. Wenn du hier neu bist, schau dich ruhig etwas um und melde dich an, um am Forengeschehen teilnehmen zu können.
    Information ausblenden

Medion 24500 auslesen (Entwicklerthread)

Dieses Thema im Forum "Medion / Tevion" wurde erstellt von axw, 30. Januar 2005.

  1. axw

    axw Neuling

    Registriert seit:
    30. Januar 2005
    Beiträge:
    2
    Anzeige
    Hallo allerseits,

    wie andere Eigentümer eines Medion 24500 würde auch ich gerne DVDs aus Aufzeichnungen erstellen und habe mich daher etwas mit der Kiste beschäftigt.

    !!! hier gibt es nichts fertiges, sondern es werden "Mitstreiter" gesucht!!!
    !!! Verwendung auf eigenes Risiko, Alpha-Code !!!

    Ich bin soweit gekommen, aus einem Festplattenimage (erzeugt mit "dd if=/dev/hdc of=/filename" unter Linux) PES-Streams auslesen zu können (mit einfachem Auswahlmenu über das Inhaltsverzeichnus), leider sind die PES-Streams nicht ganz Standard-kompatibel (ProjektX erkennt sie, beim demuxen verliert es aber immer wieder die Syncronisation) - es fehlt also jemand mit Erfahrung bez. Mpeg (bzw. einfach jemand, der auch die Tools der Windows-Welt mal ausprobiert, ich bin eingefleischter Linuxer)


    Hier daher der "Imagereader" medion.c, zu kompilieren mit
    gcc medion.c -o medion -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
    (die Optionen sind wichtig, sonst kein Zugrif >4GB) unter Linux, der Filename des Images muß angepaßt werden.

    //medion.c: quick-and-dirty, GPL, enthält Linux-Code (___arch__swab32)
    #include <stdio.h>
    #include <stdarg.h>
    #include <sys/types.h>
    #include <sys/mman.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <unistd.h>
    #include <string.h>
    #include <errno.h>

    typedef unsigned int __u32;
    #define O_LARGEFILE 0100000
    #define FATSTART 0x200
    #define DIRSTART 0x500000
    #define DATASTART 0x0
    #define FATSIZE 38166
    #define CLUSTERS 2048

    #define FILENAME "/p6/med/medion.img"

    static __inline__ __const__ __u32 ___arch__swab32(__u32 x)
    {
    __asm__("xchgb %b0,%h0\n\t" /* swap lower bytes */
    "rorl $16,%0\n\t" /* swap words */
    "xchgb %b0,%h0" /* swap higher bytes */
    :"=q" (x)
    : "0" (x));
    return x;
    }


    static int Input_fd, out_fd;
    ssize_t size;


    __u32 fat[FATSIZE];
    char buf[512];
    __u32 buf2[64],buf3[CLUSTERS*128], u, akt, next,q,w,l;
    int liste[50];

    int main(){
    printf("med: Ausleseprogramm für Medion 245000 Diskimages\n");

    if ((Input_fd = open(FILENAME,O_RDONLY|O_LARGEFILE)) == -1){
    perror("Fehler beim öffnen des Images: ");
    exit(1);
    }

    if (read(Input_fd, buf, 17) != 17){
    perror("Fehler beim Lesen des Labels");
    exit(2);
    }
    if ( strncmp(buf, "digenius hd V1.02", 17) != 0){
    printf("Falscher Disklabel !");
    exit(3);
    }
    printf("Disklabel: %17s - OK\n", buf);
    if (lseek(Input_fd, FATSTART, SEEK_SET) ==-1){
    perror("Fehler beim Positionieren auf die FAT: ");
    exit(4);
    }
    if ((size =read(Input_fd, fat, FATSIZE*4)) ==-1){
    perror("Fehler beim lesen der FAT: ");
    exit(5);
    }
    printf("FAT eingelesen, %i Bytes\n", size);

    // Inhaltsverzeichnis lesen
    printf("\nInhaltsverzeichnis:\n");
    l=0;
    for(q=0;q<50;q++){
    if (lseek(Input_fd, DIRSTART + q*256, SEEK_SET) ==-1){
    printf("Fehler beim Positionieren auf Directory-Eintrag %i ", q);
    perror(" : ");
    exit(6);
    }
    if ((size =read(Input_fd, buf2, 256)) ==-1){
    printf("Fehler beim Lesen von Directory-Eintrag %i: ", q);
    perror(" : ");
    exit(7);
    }
    if ( buf2[0] == 0 ) continue;
    l++;
    for(w=0;w<=9;w++){
    u=___arch__swab32(buf2[w]);
    buf2[w]=u;
    }
    buf2[10]=0;
    liste[l]=buf2[56];
    printf("%i: %36s, FAT %x\n", l,(char *)buf2, buf2[56]);
    }

    do{
    printf("Bitte Indexnummer der auszulesenden Datei eingeben (0 für Ende): ");
    w=0;
    gets(buf);
    w=atoi(buf);
    if (( w<0) || ( w>l)){
    printf("Bitte eine Zahl zwischen 0 und %u eingeben!\n",l);
    continue;
    }
    if (w != 0){
    printf("\nSchreibe Datei %u ab FAT %x\n",w, liste[w]);
    sprintf(buf,"./%u.dat",w);
    if ((out_fd=open(buf,O_EXCL|O_LARGEFILE|O_WRONLY|O_CREAT)) == -1){
    perror("Fehler beim Öffnen der Ausgabedatei: ");
    exit(7);
    }
    akt=liste[w];
    while(akt != 0xffffffff){
    if (lseek(Input_fd,(akt*CLUSTERS*512),SEEK_SET) == -1){
    perror("Fehler beim Positionieren: ");
    exit(8);
    }
    if (read(Input_fd,buf3, 512*CLUSTERS) == -1){
    perror("Fehler beim Lesen: ");
    exit(9);
    }
    for(q=0;q<(CLUSTERS*128);q++){
    u=___arch__swab32(buf3[q]);
    buf3[q]=u;
    }
    if (write(out_fd,buf3, 512*CLUSTERS) == -1){
    perror("Fehler beim Schreiben: ");
    exit(10);
    }
    akt=fat[akt];
    }
    close(out_fd);
    }
    }while (w!=0);
    return(0);
    }

    //Ende des Programms
     
  2. sdidi

    sdidi Junior Member

    Registriert seit:
    15. November 2004
    Beiträge:
    38
    AW: Medion 24500 auslesen (Entwicklerthread)

    Hallo AXW,

    lade mir gerade Linux herunter..
    Werde deine "Anleitung" in den nächsten Tagen mal ausprobieren, und dann berichten..
    Ich Finde es gut, daß es jemand versuchen will, die Nuß zu knacken.
    Werde mit meinen beschränkten Möglichkeiten versuchen Dich/Uns zu unterstützen ..
    Bin zwar kein Profi, aber habe kein Prob noch etwas dazuzulernen/ auzuprobieren..


    Gruß Sven
     
  3. z/OS

    z/OS Platin Member

    Registriert seit:
    17. September 2002
    Beiträge:
    2.131
    Ort:
    Rheinbach
    Technisches Equipment:
    Technisat HD S2
    AW: Medion 24500 auslesen (Entwicklerthread)

    Hi,
    hab' mal ein paar Tools aus der bösen Windows-Welt versucht. Leider Ohne Erfolg.
    Pinacle Studio 8.6 kann mit den Files gar nichts anfangen, und pvstrumento hängt sich bei mir sofort auf.
    DVD-Lab zeigt Teilbilder an, oben ist alles noch gut, im unteren Bildteil geht gar nichts.
    Nach den Feiertagen geht's weiter...
    Trotzdem, vielen Dank,
    Thomas
     
  4. tingeltangelmoe

    tingeltangelmoe Neuling

    Registriert seit:
    29. Dezember 2004
    Beiträge:
    5
    AW: Medion 24500 auslesen (Entwicklerthread)

    probiert mal tmpgenc aus ;) ich habe jahre lang eigentlich damit super erfahrung gesammelt! der hat alles meistens geschluckt!

    gruss moe
     
  5. sdidi

    sdidi Junior Member

    Registriert seit:
    15. November 2004
    Beiträge:
    38
    AW: Medion 24500 auslesen (Entwicklerthread)

    Guten Morgen,

    aufgrund einer def. Platte kann ich z.Zt. nicht mit Linux expementieren.. (oder geht das Auslesen auch via z.B. Knoppix ?) ..

    Habe aber ev. nen Tip und zwar Stand in der Computerbald 3/2005 etwas über "Projekt X" www.oozoon.de
    Und noch einen Link: www.haenlein-software.de

    Gruß sdidi
     
  6. axw

    axw Neuling

    Registriert seit:
    30. Januar 2005
    Beiträge:
    2
    AW: Medion 24500 auslesen (Entwicklerthread)

    Hallo zusammen,

    wie es aussieht, ist hier etwas tiefer zu Graben.

    Was ich mittlerweise über das Datenformat weiss:
    PES-Stream, drei PID (ProjektX findet mehr, halte ich aber für Falschmeldungen)
    - 0xC0: MP2 Audio, anscheinend noch mit irgendwelchen Kontrolldaten (CRC,PTS,...); ich habe mir ein kleines Programm geschrieben, das den Inhalt dieser Pakete ausliest, den Anfang bis zum ersten MP2-Header abschneidet und den Rest als Datei speichert. Das Ergebnis lässt sich mit MP2-fähigen Player abspielen, enthält aber leider in ziemlich regelmäßigen Abständen "Zischer" (wohl durch erwähnte Kontrolldaten, mit denen der Player sonst nichts anfangen kann)
    - 0xBD: ttx (Bildschirmtext), nicht weiter untersucht
    - 0xE4: der Video-Stream. Wird leider in Paketen freier Länge (Packetsize 0) kodiert, in welche anscheinend Audio und ttx-Pakete eingebettet sein können. Hier liegen die eigentlichen Probleme für ProjektX (und wohl auch für DVD-Lab, die Fehlerbeschreibung hört sich bekannt an: es wird von diesen Programmen nur bis zum Anfang eines eingebettete Paketes gelesen, der Rest anschließend verworfen...)

    Was in dieser Situation (außer dem ultimativen Fingerzeig eines Mpeg-Gurus) hilfreich sein könnte:
    - Windows-Version von medion.c, dann könnten hier mehr Leute mithelfen
    - Informationen zu den verwendeten Mpeg-Formaten auf Byteebene (das beste, was ich bisher habe, ist der Java-Kode von ProjektX - er könnte besser kommentiert sein)
    - Mitstreiter mit Zeit und Elan für die Arbeit auf Codelevel (der Java-Kode von ProjektX ist ja offen und steht als Basis zur Verfügung, u.U. reichen da kleine Anpassungen)

    Gruß axw
     
  7. Chimbo

    Chimbo Neuling

    Registriert seit:
    14. Februar 2005
    Beiträge:
    2
    AW: Medion 24500 auslesen (Entwicklerthread)

    Hi,

    ich würde des Spass gerne mal unter Windows testen. Nur habe ich gerade kein HD-Image zur Hand, bin auch seelisch noch nicht soweit, meinen Receiver zu schlachten (wüsste auch nicht, wie ich unter Windows ein Image machen müsste).
    Könntest Du evtl. ein winziges Image zur Verfügung stellen?

    Ich habe dafür Webspace (100 MB) und ein paar Gig Transfer auf meiner HP noch übrig, somit hätten auch noch andere Interessenten was davon. Wir würden alle erstmal mit dem gleichen Image testen können, was beim Fachsimpeln sicherlich hilft.

    Was macht ___arch__swab32 genau? Tauscht es ein paar Bytes aus?

    Gruß
     
  8. Chimbo

    Chimbo Neuling

    Registriert seit:
    14. Februar 2005
    Beiträge:
    2
    AW: Medion 24500 auslesen (Entwicklerthread)

    Oops.. hatte nicht gesehen, dass die Funktion auch im Source ist. Frage von selbst beantwortet
     
  9. domroem

    domroem Junior Member

    Registriert seit:
    20. Februar 2005
    Beiträge:
    35
    AW: Medion 24500 auslesen (Entwicklerthread)

    Hallo zusammen,

    versuche auch seit einiger Zeit die Festplatte auzulesen. Hier meine bisherigen Erkenntnisse (teilweise aus den verstreuten Beiträgen hier zusammengesammelt):

    Festplatenorganisation MD 24500
    === 0x0: "digenius hd V1.02" ; Erkennungsstring
    === 0x200: FAT (32bit big Endian)
    Cluster Size 1MB
    Je Cluster ein Eintrag
    Einträge:
    0 freier Cluster
    0xFFFFFFFF End of File
    <ClusterNr> Fortsetzung des Files im angegebnen Cluster
    === 0x50000 Inhaltsverzeichnis (4096 Einträge)
    Eintrag im Inhaltsverzeichnis (256 Bytes):
    0x0: Name der Aufzeichnung, 32 big Endian, 0-ternimierter String
    0xD4: ? Information zum Stand der Wiedergabe
    0xD8: ? dito
    0xDC: ? dito
    0xE0: Nr (32bit) des ersten Cluster
    0xE4: ?
    0xE8: ? möglicherweise Länge bzw. Anzahl Cluster
    0xEC: ?
    0xF0: Datum / ? Format
    0xF4: ?
    0xF8: ?
    0xFC: ?
    Bei gelöschten Files sind die ersten 4 Bytes des Eintrags auf 0 gesetzt.
    === 0x60000 Datenbereich
    File/Stream (32bit big Endian)
    ? Die ersten 0x2000 Byte sind möglicherweise ein Etiket

    Habe ein C++ Projekt (Visual Studio 6.0) mit dem ich experimentiere. Ist stark "working", jedoch kann jeder gerne drauf aufsetzen. http://domroes-meckenheim.bei.t-online.de/. Natürlich alles auf eigene Gefahr. Kann auch später ein Win-32-EXE erstellen.

    Habe auch ein 2-3 minutigen Stream. Wo kann ich den hinstellen?

    Matthias
     
    Zuletzt bearbeitet: 26. Februar 2005
  10. rflow

    rflow Neuling

    Registriert seit:
    25. Februar 2005
    Beiträge:
    1
    AW: Medion 24500 auslesen (Entwicklerthread)

    Hallo, habt ihr das Auslesen der HD mit WinPVR probiert.
    Geht beim Hyundai wunderbar.

    Tschöbidö
     

Diese Seite empfehlen