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 "Digenius / Grobi / Medion / Tevion" wurde erstellt von axw, 30. Januar 2005.

  1. gkarg

    gkarg Junior Member

    Registriert seit:
    12. Dezember 2004
    Beiträge:
    52
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Anzeige
    AW: Medion 24500 auslesen (Entwicklerthread)

    Hi,

    @domroem

    ich denke auch, wir sollten die eigentlichen Daten von den Kontrolldaten isolieren. Dafür habe ich ja die parallele Aufnahme unter VDR und MD 24500 durchgeführt, damit man sich anhand der VDR Datei sieht, was für Daten kommen sollten und diese dann in der MD Datei suchen kann. Ich habe gestern schon mal kurz die Dateien verglichen. Ich habe dabei den Anfang des VDR Streams im MD Stream gefunden und bei diesem alles davor abgeschnitten.

    Der MD Stream wird im Gegensatz zum VDR Stream in bestimmten Abständen einleitend durch die Folge 00 00 00 03 unterbrochen (z.B.ab Position 0x000699c und dann erst wieder ab 0x00089A0 einleitend mit 00 00 00 01 fortgesetzt). Welche Daten "dazwischengeschoben" werden, weiss ich noch nicht.

    Zusätzlich ist in regelmäßigen Abständen die Bytefolge 00 00 00 01 hinzugefügt (z.B.an Position 0x00000990, 0x00002997, 0x000499b), die im VDR Stream nicht vorkommt.

    Aber am Wochenende mehr- da versuche ich mich mal damit den VDR Stream zu demuxen und somit eine Datei ohne Audiodaten zu erlangen. Diesen Videostream werde ich dann per Bytesuche im MD Stream suchen und kann somit hoffentlich daraufschliessen, an welchen Offsets dieser Videostream startet, unterbrochen und fortgesetzt wird.

    Ich habe zwar keine Ahnung vom DVB Datenformat -aber sollte so eigentlich auch klappen.

    Wie kann man die ganze Platte als Image sichern und laden ? - welche Parameter müssen angegeben werden (außer "image save"), damit das Programm weiß, an welchen IDE Port die Platte dranhängt?

    Leider fehlen bei dem Source Code die Dateien Disk "DiskFile.cpp" und "DiskFile.h".

    Gruß

    gkarg
     
    Zuletzt bearbeitet: 2. März 2005
  2. domroem

    domroem Junior Member

    Registriert seit:
    20. Februar 2005
    Beiträge:
    35
    Zustimmungen:
    0
    Punkte für Erfolge:
    6
    AW: Medion 24500 auslesen (Entwicklerthread)

    Hi gkarg,

    Finde Deinen Ansatz des Vergleichens sehr vielversprechend. Werde bei mir mal schauen, was mit Deinen Information zu den "ESC-Sequencen" anzfangen ist. Aber wahrscheinlich auch erst am Wochenende.

    Das C++ Projekt von mit ist noch "working". Die IDE-Platte wird über folgenden Code geöffnet (DiskAccessor.cpp)

    // Zugriff auf Festplatte
    char _devicename[] = "\\\\.\\PhysicalDrive0";
    _devicename[17] += _drive;
    m_hDevice = CreateFile(_devicename,
    GENERIC_READ | GENERIC_WRITE,
    FILE_SHARE_READ | FILE_SHARE_WRITE,
    NULL, OPEN_EXISTING, 0, NULL);

    Im Augenblick ist das hart codiert auf den IDE-Port 0 d.h. die erste Festplatte. Ist bei mir halt zufällig der Slott, in die die Festplatte im Wechselrahmen eingeschoben wird. Hier kann z.B. mit \\\\.\\PhysicalDrive1_drive usw. jede andere Platte angesprochen werden. Dies ist auch noch eines der TODOs, bevor ein EXE-File kommt. Ich werde einfach alle Platten itterieren und nach dem ID-Steing "digenius hd 1.2" scannen um den endgültigen Open zu machen.

    Im Augenblick funktioniert auch nur WIN2K (XP/WIN2000). Win 9x steht noch aus. Müßte aber für eine Veröffentlichung auch erst erledigt werden.

    Mit DiskFile.cpp/h hast Du recht. Das fehlt tatsächlich. Hatte es auf File.cpp/h renamed und dann vergessen den Projektzweig zu aktualisieren. Habe den aktuellen Source nochmal bereitgestelt.
     
    Zuletzt bearbeitet: 2. März 2005
  3. domroem

    domroem Junior Member

    Registriert seit:
    20. Februar 2005
    Beiträge:
    35
    Zustimmungen:
    0
    Punkte für Erfolge:
    6
    AW: Medion 24500 auslesen (Entwicklerthread)

    Hallo zusammen,

    gkarg`s Entdeckung der "ESC-Sequencen" hat mir keine Ruhe gelassen. Hier meine ersten Erkenntnisse:

    Der MD-Stream ist offenbar aus 8K-Blöcken (0x2000) aufgebaut, die jeweils durch eine 4-Byte große ID angeführt werden, so daß sich insgesamt eine Länge von 0x2004 Bytes pro Block ergibt.

    Einziger Sonderfall ist der erste Block, der keine ID hat und irgendwelche Beschreibungen des Films (z.B. den Sender und den Titel) enthält.

    Der erste "Streamblock" beginnt also bei 0x2004, der zweite bei 0x6008 ... Im Grunde also eine einfache Geschichte und daher auch plausibel, hieße das doch, das der Orginalstream nur gelegentlich um ein 4 Bytes (Registerbreute!) bzw. einen zusätzlichen eigenen Block ergänzt wird und dies die Firmware mit Leichtigkeit nebenher erledigen kann.


    Wenn man in 0x2004er-Schritten durchs File springt ergeben sich folgende IDs:

    - 0x00000001 offenbar nachfolgend 8K Original-Streamdaten
    - 0x00000003 nach gkarg`s Theorie irgendetwas zum Wegschmeißen. Möglicherweise Verwaltungsinformationen des MD-Files
    - 0x00000002 ??? / kommt selten vor
    - 0x0000000A ??? / noch seltener

    Folgende Fragen ergeben sich:
    - Sind 0x00000001 und 0x00000002 vieleich schon der getrennte Video- und Audiostream
    oder
    - gibt es verschiedene Typen von Verwaltungsblöcken und alle 0x00000001 sind zusammen ein nocht gemuxter PSE-Stream.

    Möglicherweise gibt die Stelle des Abgreifens des/der Streams aus der Hardware eine Idee dazu. Hat jemand dazu Ahnung bzw. eine Theorie ?
     
    Zuletzt bearbeitet: 2. März 2005
  4. gkarg

    gkarg Junior Member

    Registriert seit:
    12. Dezember 2004
    Beiträge:
    52
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    AW: Medion 24500 auslesen (Entwicklerthread)

    Hi,

    ich habe gestern die VDR Datei demuxt - habe nun den Video Stream und den Audiostream einzeln vorliegen.
    Ich habe dann noch kurz nur den Audiostream mit der MD Datei vergleichen:

    Der MD Audio Stream wird mehrmals kontinuierlich (Abstand beträgt 0x0D80) durch folgende Bytefolge
    0x00 0x00 0x01 0xC0 0x0D 0x88 0x84 0x80 0x05 0x27 0xED 0x2F + variable 2 Bytes (z.B. 0x0E 0x55, 0x73 0x95, 0xD8 0xD5, etc.)
    unterbrochen (immer vor der Bytefolge 0xff 0xfc 0xa4 0x00) und danach gleich weiter fortgesetzt


    Bei der Bytefolge
    0x00 0x00 0x00 0x0A oder 0x00 0x00 0x00 0x01
    erfolgt ein Sprung auf eine andre Position.

    Alle Angaben ohne Gewähr. Am Wochenende dann die richtige Analyse.

    Gruß

    gkarg


    @domroem

    ich habe gerade erfolglos nach den Audio Bytefolgen in der von dir ausgelesenen Datei gesucht, bis ich gemerkt habe, dass die Linux Variante des Ausleseprogramms und deine Variante im Gegensatz zueinander Little Endian / Big Endian verwendet.

    Der Audiostream, den ich vom VDR Stream demuxt habe, verwendet auf jeden Fall die gleiche Darstellungsart, wie durch das Linux Ausleseprogramm erzeugt.

    Wer von euch verwendet nun Little Endian / Big Endian ?
     
    Zuletzt bearbeitet: 3. März 2005
  5. domroem

    domroem Junior Member

    Registriert seit:
    20. Februar 2005
    Beiträge:
    35
    Zustimmungen:
    0
    Punkte für Erfolge:
    6
    AW: Medion 24500 auslesen (Entwicklerthread)

    Hallo zusammen,

    Das mit den Blöcken von 0x2004 Bytes ist der richtige Ansatz!

    Die Blöcke mit der ID 0x00000001 sind die Viedeodaten und lassen sich zusammengesetzt vom Projekt X als PES lesen und zu einem korrekten Video demuxen.

    Die Blöcke mit der ID 0x00000002 sind der Audiostream und lassen sich analog im Projekt X demuxen.

    0x00000003 ist ein Private-Stream und wird vom Projekt x korrekt analysiert, jedoch nicht in eine Datei konvertiert. Ist ja klar, ist ja privat! Scheint wirklich ein vom MD genutzter Stream zu sein.

    0x0000000A stößt auf Unverständnis im Projekt X scheinen aber möglicherweise die EPS zu sein, da Texte im Stream lesbar sind.

    Versucht man 0x00000001 und 0x00000002 zu mischen scheitert Projekt X. Offenbar sind also die Stream einzeln ausgeklinkt, jedoch jedesmal vollwertige PES. Hier immer noch die Frage: Hat einer eine Idee zum (hardwaremäßigen) Ort der Auskopplung der Streams?

    Bin jetzt dabei, das Ende der Streams zu finden. Da die Files im MD auf Cluster (1MB) aufsetzen, die Blöcke im File 8k groß sind, bleibt hinten auf alle Fälle im Cluster, möglicherweise auch im Block, ein ungenutzter und damit ungültier Rest, dessen Länge irgendwo vermerkt sein muß.

    Das mit bigendian ist bei mir so, daß ich den Platteninhalt konvertiere, d.h. die 4er-Gruppen tausche. Die Platte ist demnach bigendian. Big/litleendian ist ja im Grunde die Art, wie Register des Rechnes und damit vorrangig Zahlen im Speicher abgelegt werden. Warum das auch auf den ganzen Stream anzwenden ist, entzieht sich meiner tieferen Einsicht. Jedenfalls ist das der Weg, wie das Projekt X mit dem Stream zurechtkommt.

    Andere Demuxer habe ich noch nicht ausprobiert.
     
    Zuletzt bearbeitet: 5. März 2005
  6. gkarg

    gkarg Junior Member

    Registriert seit:
    12. Dezember 2004
    Beiträge:
    52
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    AW: Medion 24500 auslesen (Entwicklerthread)

    Hi Domroem,

    da hast du mir ja schon die ganze Arbeit abgenommen im Bezug auf die Analyse der Dateien. Da werde ich das Wochenende mal für Renovierarbeiten nutzen ;-)

    Gruß

    gkarg
     
  7. domroem

    domroem Junior Member

    Registriert seit:
    20. Februar 2005
    Beiträge:
    35
    Zustimmungen:
    0
    Punkte für Erfolge:
    6
    AW: Medion 24500 auslesen (Entwicklerthread)

    Hi gkarg,

    die Beobachtung der "ESC-Sequenzen" von Dir hat den Weg geöffnet! Ohne diese Entdeckung würde ich immer noch im Nebel stochern. Da zeigt sich mal wieder, das das Forum echt was bringt. Jeder eine Kleinigkeit und alle zusammen der Erfolg.

    Bin jetzt am konsolidieren meines C++-Codes und kann sicher Anfang nächster Woche eine erste EXE-Version zur Verfügung stellen.

    Dann geht es auf die Suche nach der besten Tool-Folge um die extrahierten Streams weiterzuverarbeiten. Projekt X ist zwar brauchbar, für den Alltagsgebrauch jedoch nach meinem Geschmak zu komplex.

    Da sind jetzt dann wieder alle gefordert!
    Also, wir haben einen PES-Stream mit Video und einen mit Audio. Wer weiß wie´s am einfachsten weitergeht?

    Zum Üben habe ich die beiden Versuchtkandidaten auf http://domroes-meckenheim.bei.t-online.de/ abgelegt.
     
    Zuletzt bearbeitet: 5. März 2005
  8. gkarg

    gkarg Junior Member

    Registriert seit:
    12. Dezember 2004
    Beiträge:
    52
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    AW: Medion 24500 auslesen (Entwicklerthread)

    Hi domroem,

    Danke für die Blumen ;-)

    Den Video Stream und den Audio Stream kann man mit TMPEGenc http://www.tmpgenc.net/e_main.html "multiplexen".
    Es handelt sich dabei um eine 30 Tage Test Version. Unter "File -> MPEG Tools -> Simple Multiplex" ist die Funktion zu finden. Danach könnte man ja die erzeugte Datei wieder analysieren und so herausfinden, wie das Endergebnis aussehen sollte.

    Gruß

    gkarg
     
  9. domroem

    domroem Junior Member

    Registriert seit:
    20. Februar 2005
    Beiträge:
    35
    Zustimmungen:
    0
    Punkte für Erfolge:
    6
    AW: Medion 24500 auslesen (Entwicklerthread)

    Kann jemand als Tester für Win9x bzw. WinMe einspringen?

    Habe zwar einen Win-Me Rechner, auf dem ich die Zugriffsroutinen auf die Festplatte üben kann, jedoch dies nur mit anderen Platten und nicht mit der Original-Medion-Platte. Daher wäre es gut, wenn jemand sich dieser Rechner annimmt.
     
  10. gkarg

    gkarg Junior Member

    Registriert seit:
    12. Dezember 2004
    Beiträge:
    52
    Zustimmungen:
    0
    Punkte für Erfolge:
    16