Binärdatei, Structs vorhanden aber kein Plan



  • Hi

    Ich hab folgendes Problem, ich versuche eine Binärdatei auszulesen, zu der ich sogar eine Header Datei mit den entsprechenden structs habe, allerdings komm ich damit nicht viel weiter.
    Ich muss dazu sagen, das eigentliche auslesen ist nicht das Problem (ich verwende übrigens C#)
    Mein Problem ist nur ich hab keine richtige Ahnung wie ich die Header Datei verwenden kann.

    Ich habs schon geschafft den FileHeader auszulesen, der steht halt ganz am Anfang daher kein Problem.
    Mein Problem ist eher, dass ich aus diese Datei hier nicht auslesen kann wann und wo welche Daten denn jetzt nun stehen..
    Wenn jemand von euch mir vielleicht erklären kann wie die Datei ausgebaut ist wär ich euch sehr dankbar 🙂

    mfg
    amfa

    Hier die Datei

    #############################################
    ProgDVB 4.80.5 - ProgDVBChannelsListFormat.h
    
    namespace ChListFormat{
    // Channels.dat file
    ///////////////////////////////////////////////////////////////////////////////////////
    const char TUNER_TYPE_ERROR = 0;
    const char TUNER_TYPE_UNKNOW = 1;
    const char TUNER_TYPE_DVB_S = 2;
    const char TUNER_TYPE_DVB_C = 3;
    const char TUNER_TYPE_DVB_T = 4;
    
    const char CHT_TV = 0;
    const char CHT_RADIO = 1;
    const char CHT_OTHER = 2;
    
    const char EST_AUDIO = 1;
    const char EST_SUBTITLE = 2;
    const char EST_TELETEXT_PAGE = 3;
    const char EST_AC3_AUDIO = 4;
    const char EST_CA_SYSTEM = 5;
    const char EST_PROG_DVB_BIN = 6;
    
    const int StorageFileHeaderID =0x22DFBC3B;
    const int StorageFileHeaderVer =114;
    
    const int MAX_LNG_STREAM_COUNT=40;
    
    struct TStorageFileHeader{
    unsigned int m_ID;
    unsigned int m_Version;
    unsigned int m_HeaderSize;
    unsigned int m_FileLength;
    unsigned int m_ItemCount;
    };
    
    struct TChannelIDStruct{
    unsigned __int16 m_TID;
    unsigned __int16 m_SID;
    unsigned __int16 m_SatPosition;
    unsigned __int16 m_LNB;
    unsigned __int16 m_NID;
    unsigned __int16 m_PCR;
    
    int m_Frequency;
    };
    
    struct TLngStream{
    char m_StreamType;
    char m_SubType;
    char m_Language[4];
    
    __int16 m_composition_page_id_PageNumber;
    __int16 m_ancillary_page_id_MagazineNumber;
    __int16 m_Pid;
    
    };
    
    struct TDeviceID{
    unsigned int m_SubID;
    char m_Type;
    unsigned __int64 m_DllID;
    };
    
    struct TChannelIdEx{
    ChListFormat::TChannelIDStruct m_ID;
    ChListFormat::TDeviceID m_DeviceID;
    };
    
    struct TChannelInfoStruct{
    __int16 m_StructSize;
    
    ChListFormat::TChannelIDStruct m_ID;
    
    wchar_t m_Caption[64];
    wchar_t m_ServiceLabel[32];
    wchar_t m_ProviderLabel[32];
    wchar_t m_NetworkName[32];
    
    unsigned __int16 m_VideoPID;
    unsigned __int16 m_TeletextPID;
    unsigned __int16 m_PCR_PID;
    unsigned __int16 m_PMT_PID;
    unsigned __int16 m_ECM_PID;
    
    char m_ServiceStatus; // EIT_schedule_flag (1Bit) + EIT_present_following_flag (1Bit)
    // + Running status (3Bit) + free_CA_mode (1Bit)
    TLngStream m_LngStreams[ChListFormat::MAX_LNG_STREAM_COUNT];
    char m_LngStreamCount;
    char m_CurrentAudio;
    char m_CurrentSubtitle;
    unsigned char m_ChannelMask;
    
    int m_SymbolRate;
    unsigned int m_Qam;
    OLD_BOOL m_Pol;
    
    char m_Quality;
    char m_Level;
    
    int m_ChannelNumber;
    OLD_BOOL m_IsCanUpdate;
    unsigned int m_Ratio;
    
    bool m_AdultChannel;
    bool m_bIsAvcVideo;
    bool m_bIsDVB_S2;
    char m_FEC; // auto,1/2,2/3,3/4,3/5,4/5,5/6,5/11,7/8,8/9
    
    TDeviceID m_DeviceID;
    };
    
    ///////////////////////////////////////////////////////////////////////////////////////
    ////////////////////// Tree files format //////////////////////////////////////////////////
    const int ChannelTreeHeaderID =0x42DFBC3A;
    const int ChannelTreeHeaderVer =106;
    
    typedef enum LIST_TYPE {
    LT_NULL=-1,
    LT_FAVORITES=0,
    LT_DYNAMIC=1
    } LIST_TYPE;
    
    typedef enum GROUP_TYPE{
    GT_SAT_NAME=0,
    GT_NETWORK_NAME=1,
    GT_PROV_NAME=2,
    GT_TRANSPONDER=3,
    GT_NONE=4
    }GROUP_TYPE;
    
    typedef enum SORT_TYPE{
    ST_UNSORT=-1,
    ST_CAPTION=0,
    ST_NUMBER=1,
    ST_TYPE=2
    };
    
    struct TDynamicListFilterItem {
    __int16 m_Position;
    unsigned char m_Lnb;
    ChListFormat::TDeviceID m_DeviceID;
    };
    
    struct TChannelTreeFileHeader2{
    unsigned int m_ID;
    unsigned int m_Version;
    unsigned int m_HeaderSize;
    unsigned int m_FileLength;
    unsigned int m_ItemCount;
    OLD_BOOL m_bRequestForDelete;
    LIST_TYPE m_Type;
    };
    struct TChannelTreeFileHeader:public TChannelTreeFileHeader2{
    OLD_BOOL m_ChannelTypes[3]; // tv,radio,other
    wchar_t m_Caption[64];
    int m_SatPosiotions[500]; // not used in >=106
    int m_SatPosiotionCount; // not used in >=106
    SORT_TYPE m_SortType;
    GROUP_TYPE m_GroupType;
    OLD_BOOL m_bShowNumber;
    OLD_BOOL m_bLocalNumber;
    __int16 m_FilterItemCount; // 106
    //ChListFormat::TDynamicListFilterItem; m_DynamicListFilterItems[m_FilterItemCount]
    } ;
    
    struct TChannelTreeFolder{
    unsigned int m_StructSize;
    wchar_t m_Caption[64];
    unsigned int m_ChannelsCount;
    // after that TChannelIDStruct[m_ChannelsCount]
    };
    
    };
    #pragma pack(pop)
    
    #endif
    


  • hi,

    du verlangst Unmögliches! Wie soll jemand erahnen, in welcher Reihenfolge die structs auf der Datei stehen, noch welche structs in Abhängigkeit anderer Daten überhaupt da vorhanden sind. Die Headerdatei nützt dir nichts. du braucht eine genaue Spezifikation des Dateiaufbaus.

    von Ney



  • Ok ... dann liegts ja doch nicht an mir 😃
    Das Problem ist, ich hab nur die Datei bekommen.. und damit solls angeblich funktionieren 😞
    Aber ich hab sowas befürchtet.
    Naja vielleicht bekomm ich das ja noch irgendwie raus.

    Danke trotzdem

    mfg
    amfa



  • Jo funktioniert auch so .... du guckst dir jetzt an wie viele Bytes eine Struct einnimmt usw ... das ist nicht soo schwer wenn du schonmal die Grundstruktur hast 🙄



  • Problem ist halt da sind mehrer structs drin.
    ich muss mal sehen, in welcher reihenfolge die in der Datei vorkommen.

    danke nochmal



  • Wie wärs denn damit am Anfang: struct TChannelTreeFileHeader
    ?


Anmelden zum Antworten