Ticket #6045: dvbrecorder_maps.diff

File dvbrecorder_maps.diff, 1.8 KB (added by ard.biesheuvel@…, 17 years ago)
  • dvbrecorder.h

     
    117117    bool                     _has_no_av;
    118118
    119119    // TS recorder stuff
    120     unsigned char   _stream_id[0x1fff + 1];
    121     unsigned char   _pid_status[0x1fff + 1];
    122     unsigned char   _continuity_counter[0x1fff + 1];
     120    std::map<uint, unsigned char> _stream_id;
     121    std::map<uint, unsigned char> _pid_status;
     122    std::map<uint, unsigned char> _continuity_counter;
    123123
    124124    // Statistics
    125125    mutable uint        _continuity_error_count;
     
    137137
    138138inline bool DVBRecorder::CheckCC(uint pid, uint new_cnt)
    139139{
    140     bool ok = ((((_continuity_counter[pid] + 1) & 0xf) == new_cnt) ||
    141                (_continuity_counter[pid] == 0xFF));
     140    bool ok = _continuity_counter.count(pid) == 0 ||
     141        ((_continuity_counter[pid] + 1) & 0xf) == new_cnt;
    142142
    143143    _continuity_counter[pid] = new_cnt & 0xf;
    144144
  • dvbrecorder.cpp

     
    314314    if (videodevice.isEmpty())
    315315        return false;
    316316
    317     bzero(_stream_id,  sizeof(_stream_id));
    318     bzero(_pid_status, sizeof(_pid_status));
    319     memset(_continuity_counter, 0xff, sizeof(_continuity_counter));
     317    _stream_id.clear();
     318    _pid_status.clear();
     319    _continuity_counter.clear();
    320320
    321321    _stream_handler = DVBStreamHandler::Get(videodevice);
    322322
     
    432432{
    433433    DTVRecorder::ResetForNewFile();
    434434
    435     bzero(_stream_id,  sizeof(_stream_id));
    436     bzero(_pid_status, sizeof(_pid_status));
    437     memset(_continuity_counter, 0xff, sizeof(_continuity_counter));
     435    _stream_id.clear();
     436    _pid_status.clear();
     437    _continuity_counter.clear();
    438438}
    439439
    440440void DVBRecorder::StopRecording(void)