TVEngine3 Snapshot: 02-14-2008 05-07h Revision 17388 (1 Viewer)

MediaPortal-Bot

Worlds greatest bot!
March 26, 2007
3,715
180
Home Country
Germany Germany
General Infos:

Please visit our Wiki-Guide before you try out this engine.
We also provide some tutorial videos which show how to install and configure the TV-Server and TV-Client.

MediaPortal TVEngine3 Capabilities:

- seperate front/backend
- supports multiple frontends
- supports multiple backends (master/slave servers)
- analog/atsc/dvb-c/dvb-s/dvb-t support
- recording to mpeg-2 program stream (.mpg)
- mpeg-2 transport stream timeshifting
- multi tuner support of course
- epg / mhw grabbing right from the DVB stream
- network streaming via rtsp
- teletext grabbing

- ci / cam support for firedtv, twinhan and technotrend
- placeshifting
- TV Movie Clickfinder EPG import


MediaPortal TVEngine3 Requirements:

- latest MediaPortal SVN-Build Wiki-Guide --> Download
- Microsoft SQL Server 2005 Express Edition ---> Download
- additional (but recommened) SQL Server Management Studio Express ---> Download
 

MediaPortal-Bot

Worlds greatest bot!
March 26, 2007
3,715
180
Home Country
Germany Germany
Changes since last snapshot:

------------------------------------------------------------------------
r17387 | gemx | 2008-02-13 10:31:47 +0100 (Mi, 13 Feb 2008) | 1 line

Fixed pmtLength>188 in CDiskRecorder::WriteFakePMT (now a second packet gets written with the rest of the section)
------------------------------------------------------------------------


dev note

-no dev note for this snapshot






This thread is open to everyone to provide feedback for this particular snapshot.
If you found or confirm a bug please still open a single thread with full details in the Bugsection[/FONT][/SIZE]
 

Ambass

Retired Team Member
  • Premium Supporter
  • December 24, 2007
    555
    129
    Home Country
    France France
    Previously I was using the 17150.

    I've tested the 17383, it's not working with all TV channels with PMT greater than 188 bytes ( may be due to Cyberlink codec, seems a little bit better with MPV, but not sure ).

    I've now loaded this new build that should fix the problem, and now TvService crash on all these channels !!

    Memory used by TvSevice normally around 25Mb increase suddenly to more than 100Mb and disappear from the task manager. ( No crash window, no blue screen..... )

    I attach the Tv and TsWriter log files

    Another thing concerning MPA decoder ( but I don't wher it comes from ), single audio channel MPEG2 ( mono ) is not working and freezes the video !

    Regards.

    Ambass.
     

    Ambass

    Retired Team Member
  • Premium Supporter
  • December 24, 2007
    555
    129
    Home Country
    France France
    Hi,

    It seems a part of the problem is in the DiskRecorder.cpp.
    On CANALSAT in france, we receive PMT up to 431 bytes ( may be more ), and the function below will crash on the red lines.

    I've attached a log from 17383 where PMT error size appear.


    void CDiskRecorder::WriteFakePMT()
    {
    int program_info_length=0;
    int sectionLenght=9+2*5+5;

    int current_next_indicator=1;
    int section_number = 0;
    int last_section_number = 0;
    int transportId=DR_FAKE_TRANSPORT_ID;

    int tableId=2;
    int pid=DR_FAKE_PMT_PID;
    int PayLoadUnitStart=1;
    int AdaptionControl=1;

    m_iPmtContinuityCounter++;
    if (m_iPmtContinuityCounter>0xf) m_iPmtContinuityCounter=0;

    BYTE pmt[256];
    memset(pmt,0xff,sizeof(pmt));
    pmt[0]=0x47;
    pmt[1]=(PayLoadUnitStart<<6) + ( (pid>>8) & 0x1f);
    pmt[2]=(pid&0xff);
    pmt[3]=(AdaptionControl<<4) +m_iPmtContinuityCounter;
    pmt[4]=0;
    byte* pmtPtr=&pmt[4];
    pmt[5]=tableId;//table id
    pmt[6]=0;
    pmt[7]=0;
    pmt[8]=(DR_FAKE_SERVICE_ID>>8)&0xff;
    pmt[9]=(DR_FAKE_SERVICE_ID)&0xff;
    pmt[10]=((m_iPmtVersion&0x1f)<<1)+current_next_indicator;
    pmt[11]=section_number;
    pmt[12]=last_section_number;
    pmt[13]=(DR_FAKE_PCR_PID>>8)&0xff;
    pmt[14]=(DR_FAKE_PCR_PID)&0xff;
    pmt[15]=(program_info_length>>8)&0xff;
    pmt[16]=(program_info_length)&0xff;

    int pmtLength=9+4;
    int offset=17;
    ivecPidInfo2 it=m_vecPids.begin();
    while (it!=m_vecPids.end())
    {
    PidInfo2 info=*it;
    pmt[offset++]=info.streamType;
    pmt[offset++]=0xe0+((info.fakePid>>8)&0x1F); // reserved; elementary_pid (high)
    pmt[offset++]=(info.fakePid)&0xff; // elementary_pid (low)
    pmt[offset++]=0; // es_length (high)
    pmt[offset++]=0; // es_length (low)
    pmtLength+=5;
    if (info.rawDescriptorData!=NULL)
    {
    pmt[offset-1]=info.rawDescriptorSize;
    memcpy(&pmt[offset],info.rawDescriptorData,info.rawDescriptorSize);
    offset += info.rawDescriptorSize;
    pmtLength += info.rawDescriptorSize;
    }
    ++it;
    }
    unsigned section_length = (pmtLength);
    pmt[6]=0xb0+((section_length>>8)&0xf);
    pmt[7]=section_length&0xff;

    DWORD crc= crc32((char*)&pmt[5],offset-5);
    pmt[offset++]=(byte)((crc>>24)&0xff);
    pmt[offset++]=(byte)((crc>>16)&0xff);
    pmt[offset++]=(byte)((crc>>8)&0xff);
    pmt[offset++]=(byte)((crc)&0xff);

    //if(pmtLength > 188) WriteLog("ERROR: Pmt length : %i ( >188 )!!!!",pmtLength);

    Write(pmt,188);
    if (pmtLength>188)
    {
    int newLength=pmtLength-188;
    byte packet[188];
    memset(packet,0xff,188);
    packet[0]=0x47;
    packet[1]=(pid>>8) & 0x1f;
    packet[2]=(pid&0xff);
    m_iPmtContinuityCounter++;
    if (m_iPmtContinuityCounter>0xf) m_iPmtContinuityCounter=0;
    packet[3]=(AdaptionControl<<4) +m_iPmtContinuityCounter;
    memcpy(&packet[4],&pmt[188],newLength);
    Write(packet,188);
    }
    }


    Regards.

    Ambass.
     

    gemx

    Retired Team Member
  • Premium Supporter
  • October 31, 2006
    1,972
    539
    Home Country
    Germany Germany
    Hi,

    It seems a part of the problem is in the DiskRecorder.cpp.
    On CANALSAT in france, we receive PMT up to 431 bytes ( may be more ), and the function below will crash on the red lines.
    ...

    Regards.

    Ambass.

    Thanks. Fixed in next snapshot ;)
     

    iosub

    Portal Pro
    April 26, 2006
    573
    30
    San Sebastian
    HI

    I got a TVserver crash...
    Tswriter log
    14-02-2008 13:51:14.125 DiskRecorder[TIMESHIFT] paused=yes
    14-02-2008 13:51:14.125 epg: reset
    14-02-2008 13:51:14.125 epg:ResetEPG()
    14-02-2008 13:51:14.125 mhw reset
    14-02-2008 13:51:15.156 pmtgrabber: set callback:b70014
    14-02-2008 13:51:15.156 pmtgrabber: grab pmt:67 sid:b4
    14-02-2008 13:51:15.343 service_id=180
    14-02-2008 13:51:15.343 pmtgrabber: got pmt 67 sid:b4
    14-02-2008 13:51:15.343 pmtgrabber: got pmt version:2 -1
    14-02-2008 13:51:15.343 pmtgrabber: do calback
    14-02-2008 13:51:15.343 analyzer: set video pid:cb
    14-02-2008 13:51:15.343 analyzer: reset
    14-02-2008 13:51:15.343 analyzer: set audio pid:12f
    14-02-2008 13:51:15.343 analyzer: reset
    14-02-2008 13:51:15.343 DiskRecorder[TIMESHIFT] paused=yes
    14-02-2008 13:51:15.343 DiskRecorder[TIMESHIFT] Received from TvService: pmt pid:0x67 serviceId: 0xb4 pmtlength:284
    14-02-2008 13:51:15.343 DiskRecorder[TIMESHIFT] Old pids cleared
    14-02-2008 13:51:15.343 DiskRecorder[TIMESHIFT] got pmt - tableid: 0x2 section_length: 284 sid: 0xb4
    14-02-2008 13:51:15.343 DiskRecorder[TIMESHIFT] PMT parsed - Pid 0x67 ServiceId 0xb4 stream count: 12
    14-02-2008 13:51:15.343 DiskRecorder[TIMESHIFT] pcr pid:0xcb
    14-02-2008 13:51:15.343 DiskRecorder[TIMESHIFT] SetPcrPid clear old PIDs
    14-02-2008 13:51:15.343 DiskRecorder[TIMESHIFT] determine new start pcr
    14-02-2008 13:51:15.343 DiskRecorder[TIMESHIFT] add video stream pid: 0xcb fake pid: 0x30 stream type: 0x2 logical type: 0x2 descriptor length: 16
    14-02-2008 13:51:15.343 DiskRecorder[TIMESHIFT] add audio stream pid: 0x12f fake pid: 0x40 stream type: 0x4 logical type: 0x4 descriptor length: 17
    14-02-2008 13:51:15.343 DiskRecorder[TIMESHIFT] add audio stream pid: 0x132 fake pid: 0x41 stream type: 0x4 logical type: 0x4 descriptor length: 17
    14-02-2008 13:51:15.343 DiskRecorder[TIMESHIFT] add teletext stream pid: 0x2bf fake pid: 0x69 stream type: 0x6 logical type: 0x56 descriptor length: 20
    14-02-2008 13:51:15.343 DiskRecorder[TIMESHIFT] stream rejected - pid: 0x8fe stream type: 0x5 logical type: 0x5 descriptor length: 5
    14-02-2008 13:51:15.343 DiskRecorder[TIMESHIFT] stream rejected - pid: 0x8ff stream type: 0xb logical type: 0xb descriptor length: 51
    14-02-2008 13:51:15.343 DiskRecorder[TIMESHIFT] stream rejected - pid: 0x900 stream type: 0x5 logical type: 0x5 descriptor length: 5
    14-02-2008 13:51:15.343 DiskRecorder[TIMESHIFT] stream rejected - pid: 0x901 stream type: 0xb logical type: 0xb descriptor length: 49
    14-02-2008 13:51:15.343 DiskRecorder[TIMESHIFT] stream rejected - pid: 0x902 stream type: 0x5 logical type: 0x5 descriptor length: 5
    14-02-2008 13:51:15.343 DiskRecorder[TIMESHIFT] stream rejected - pid: 0x908 stream type: 0x5 logical type: 0x5 descriptor length: 5
    14-02-2008 13:51:15.343 DiskRecorder[TIMESHIFT] stream rejected - pid: 0x912 stream type: 0x5 logical type: 0x5 descriptor length: 5
    14-02-2008 13:51:15.343 DiskRecorder[TIMESHIFT] stream rejected - pid: 0x91c stream type: 0x5 logical type: 0x5 descriptor length: 5
    14-02-2008 13:51:15.343 DiskRecorder[TIMESHIFT] paused=no
    14-02-2008 13:51:15.390 DiskRecorder[TIMESHIFT] start of audio detected
    14-02-2008 13:51:15.437 DiskRecorder[TIMESHIFT] start of audio detected
    14-02-2008 13:51:15.703 DiskRecorder[TIMESHIFT] start of video detected
    14-02-2008 13:51:15.703 DiskRecorder[TIMESHIFT] Pcr start :0 days 04:29:23 268
    14-02-2008 13:51:15.703 DiskRecorder[TIMESHIFT] Pcr high :0 days 04:30:39 220
    14-02-2008 13:51:15.703 DiskRecorder[TIMESHIFT] Pcr duration :0 days 00:01:15 951
    14-02-2008 13:51:15.703 DiskRecorder[TIMESHIFT] Pcr current :0 days 09:27:48 112
    14-02-2008 13:51:15.703 DiskRecorder[TIMESHIFT] Pcr newstart :0 days 09:26:32 160
    14-02-2008 13:51:15.703 DiskRecorder[TIMESHIFT] Ignoring first PCR jump after channel change
    14-02-2008 13:51:15.703 DiskRecorder[TIMESHIFT] PCR: 0 days 00:01:15 951 new: 0 days 09:27:48 112 prev: 0 days 09:26:32 160 start: 0 days 09:26:32 160 diff: 0 days 00:01:15 951 hole: 0 days 00:00:00 0 holeB: 0 days 00:00:00 0 - pid:cb
    14-02-2008 13:51:15.703 DiskRecorder[TIMESHIFT] clear TS packet queue
    14-02-2008 13:51:47.484 DiskRecorder[TIMESHIFT] Stop 'D:\MediaShift\live2-0.ts.tsbuffer'
    14-02-2008 13:51:47.484 DiskRecorder[TIMESHIFT] Reset
    14-02-2008 13:51:47.484 del m_pVideoAnalyzer
    14-02-2008 13:51:47.484 analyzer: reset
    14-02-2008 13:51:47.484 del m_pPmtGrabber
    14-02-2008 13:51:47.484 del m_pRecorder
    14-02-2008 13:51:47.484 del m_pTimeShifting
    14-02-2008 13:51:47.484 del m_pTeletextGrabber
    14-02-2008 13:51:47.484 del m_pCaGrabber
    14-02-2008 13:51:47.484 del done...
    14-02-2008 13:51:47.484 CMpTsFilter::pause()
    14-02-2008 13:51:47.562 CMpTsFilter::confused:top()
    14-02-2008 13:51:48.718 analyzer: reset
    14-02-2008 13:51:48.734 CPcrRefClock::ctor: clock frequency is -1063087296
    14-02-2008 13:51:48.734 CPcrRefClock: compensation is 1080
    14-02-2008 13:51:48.734 CPcrRefClock::ctor: clock frequency is -1063087296
    14-02-2008 13:51:48.734 CPcrRefClock: compensation is 1104
    14-02-2008 13:51:48.734 cagrabber: reset
    14-02-2008 13:51:48.734 epg: reset
    14-02-2008 13:51:48.734 epg:ResetEPG()
    14-02-2008 13:51:48.734 mhw reset
    14-02-2008 13:51:49.125 analyzer: reset
    14-02-2008 13:51:49.125 CPcrRefClock::ctor: clock frequency is -1063087296
    14-02-2008 13:51:49.125 CPcrRefClock: compensation is 1096
    14-02-2008 13:51:49.125 CPcrRefClock::ctor: clock frequency is -1063087296
    14-02-2008 13:51:49.125 CPcrRefClock: compensation is 1128
    14-02-2008 13:51:49.125 cagrabber: reset
    14-02-2008 13:51:49.125 epg: reset
    14-02-2008 13:51:49.125 epg:ResetEPG()
    14-02-2008 13:51:49.125 mhw reset
    14-02-2008 13:51:49.125 CMpTsFilter::pause()
    14-02-2008 13:51:49.140 CMpTsFilter::Run()
    14-02-2008 13:51:49.437 pmtgrabber: set callback:b7feb4
    14-02-2008 13:51:49.437 pmtgrabber: grab pmt:101 sid:1a4
    14-02-2008 13:51:49.531 service_id=1170
    14-02-2008 13:51:49.531 pmtgrabber: got pmt 101 sid:492
    14-02-2008 13:51:49.531 pmtgrabber: serviceid mismatch 1170 != 420
    14-02-2008 13:51:49.531 service_id=420
    14-02-2008 13:51:49.531 pmtgrabber: got pmt 101 sid:1a4
    14-02-2008 13:51:49.531 pmtgrabber: got pmt version:2 -1
    14-02-2008 13:51:49.531 pmtgrabber: do calback
    14-02-2008 13:51:49.656 analyzer: set video pid:1a5
    14-02-2008 13:51:49.656 analyzer: reset
    14-02-2008 13:51:49.656 analyzer: set audio pid:1a6
    14-02-2008 13:51:49.656 analyzer: reset
    14-02-2008 13:51:49.843 CMpTsFilter::pause()
    14-02-2008 13:51:49.906 DiskRecorder[TIMESHIFT] set filename:D:\MediaShift\live18-0.ts
    14-02-2008 13:51:49.906 DiskRecorder[TIMESHIFT] transport stream mode
    14-02-2008 13:51:49.906 DiskRecorder[TIMESHIFT] paused=yes
    14-02-2008 13:51:49.906 DiskRecorder[TIMESHIFT] Received from TvService: pmt pid:0x101 serviceId: 0x1a4 pmtlength:52
    14-02-2008 13:51:49.906 DiskRecorder[TIMESHIFT] Old pids cleared
    14-02-2008 13:51:49.906 DiskRecorder[TIMESHIFT] got pmt - tableid: 0x2 section_length: 52 sid: 0x1a4
    14-02-2008 13:51:49.906 DiskRecorder[TIMESHIFT] PMT parsed - Pid 0x101 ServiceId 0x1a4 stream count: 3
    14-02-2008 13:51:49.906 DiskRecorder[TIMESHIFT] pcr pid:0x1a5
    14-02-2008 13:51:49.906 DiskRecorder[TIMESHIFT] SetPcrPid clear old PIDs
    14-02-2008 13:51:49.906 DiskRecorder[TIMESHIFT] add video stream pid: 0x1a5 fake pid: 0x30 stream type: 0x2 logical type: 0x2 descriptor length: 0
    14-02-2008 13:51:49.906 DiskRecorder[TIMESHIFT] add audio stream pid: 0x1a6 fake pid: 0x40 stream type: 0x4 logical type: 0x4 descriptor length: 6
    14-02-2008 13:51:49.906 DiskRecorder[TIMESHIFT] add audio stream pid: 0x1a7 fake pid: 0x41 stream type: 0x4 logical type: 0x4 descriptor length: 6
    14-02-2008 13:51:49.906 DiskRecorder[TIMESHIFT] paused=no
    14-02-2008 13:51:49.906 DiskRecorder[TIMESHIFT] Start 'D:\MediaShift\live18-0.ts.tsbuffer'
    14-02-2008 13:51:49.906 DiskRecorder[TIMESHIFT] SetVideoAudioObserver observer ok
    14-02-2008 13:51:49.968 DiskRecorder[TIMESHIFT] start of video detected
    14-02-2008 13:51:49.968 DiskRecorder[TIMESHIFT] Pcr new start pcr :0 days 03:04:21 204 - pid:1a5
    14-02-2008 13:51:49.968 DiskRecorder[TIMESHIFT] clear TS packet queue
    14-02-2008 13:51:50.31 DiskRecorder[TIMESHIFT] start of audio detected
    14-02-2008 13:51:50.93 DiskRecorder[TIMESHIFT] start of audio detected
    14-02-2008 13:51:50.984 CMpTsFilter::Run()
    14-02-2008 13:51:51.00 pmtgrabber: set callback:b7ff34
    14-02-2008 13:51:51.00 pmtgrabber: grab pmt:fa1 sid:4e4
    14-02-2008 13:51:51.46 service_id=1252
    14-02-2008 13:51:51.46 pmtgrabber: got pmt fa1 sid:4e4
    14-02-2008 13:51:51.46 pmtgrabber: got pmt version:23 -1
    14-02-2008 13:51:51.46 pmtgrabber: do calback
    14-02-2008 13:51:51.46 analyzer: set video pid:191
    14-02-2008 13:51:51.46 analyzer: reset
    14-02-2008 13:51:51.46 analyzer: set audio pid:192
    14-02-2008 13:51:51.46 analyzer: reset
    14-02-2008 13:51:51.62 epg: set callback
    14-02-2008 13:51:51.62 EpgScanner::GrabEPG
    14-02-2008 13:51:51.62 epg:GrabEPG
    14-02-2008 13:51:51.62 epg:ResetEPG()
    14-02-2008 13:51:51.62 epg:GrabEPG()
    14-02-2008 13:51:51.62 EpgScanner::GrabMHW
    14-02-2008 13:51:51.62 mhw grab
    14-02-2008 13:51:51.62 mhw reset
    14-02-2008 13:51:51.62 mhw grabber started decoders:2
    14-02-2008 13:53:02.31 mhw grabber ended
    14-02-2008 13:53:02.31 epg: epg received
    14-02-2008 13:53:02.31 epg: do callback
    14-02-2008 13:54:38.687 DiskRecorder[TIMESHIFT] Jump forward in PCR detected
    14-02-2008 13:54:38.687 DiskRecorder[TIMESHIFT] PCR: 0 days 00:02:22 248 new: 0 days 03:07:09 887 prev: 0 days 03:06:43 432 start: 0 days 03:04:21 204 diff: 0 days 00:00:26 455 hole: 0 days 00:00:26 435 holeB: 0 days 00:00:00 0 - pid:1a5

    After that I got on the "event viewer"
    At 13:54:11

    Faulting application tvservice.exe, version 1.0.0.0, stamp 47b376fb, faulting module kernel32.dll, version 5.1.2600.3119, stamp 46239bd5, debug? 0, fault address 0x00012a5b.
     

    vuego

    Documentation Group
  • Team MediaPortal
  • August 5, 2006
    1,641
    764
    Göteborg
    Home Country
    Sweden Sweden
    I can no longer scan for channels using DVB-C.
    Only channels on the first transponder is found. After that all remaining transponders says Nothing found. At this point the TV Server crash almost every time. In tv.log i see that 8 channels is found on the first transponder and 11 on the second however only the first 8 channels is visible at TV Channels.

    In error.log:
    System.AccessViolationException: Attempted to read or write protected memory

    In SVN 17305 I could complete a scan but no HD channels were found.
    In SVN 17267 scanning is complete and all channels found.
     

    Users who are viewing this thread

    Top Bottom