Sometimes no image rendered when playing video (2 Viewers)

doskabouter

Development Group
  • Team MediaPortal
  • September 27, 2009
    4,654
    3,120
    Nuenen
    Home Country
    Netherlands Netherlands
    Don't see anything that could lead to an overflow without anything in the logfiles...
    So I added some more and also added the core.pdb, hopefully that gives the exact linenumber where it errors out...
     

    Attachments

    • Core.zip
      2.2 MB

    bta489

    Portal Pro
    March 17, 2013
    176
    99
    Home Country
    Germany Germany
    Next set of logs. Might be a winner.
    This time it's a video file from the local network. Several attempts to play the video, all with black screen and only audio. This time, I was able to toggle the regular fullscreen overlay with info-button (or F9 key on keyboard) on top of the otherwise black screen.

    The MediaPortal.log shows mainly variations of this:
    Code:
    [Log    ] [39       ] [ERROR] - Exception: System.OverflowException: Die arithmetische Operation hat einen Überlauf verursacht.
       bei MediaPortal.Player.PlaneScene.DrawTexture(UInt32 texAddr, Int64 lColorDiffuse) in D:\MediaPortal Sources\MediaPortal-1\mediaportal\Core\Player\PlaneScene.cs:Zeile 2057.
       bei MediaPortal.Player.PlaneScene.RenderLayer(Single timePassed) in D:\MediaPortal Sources\MediaPortal-1\mediaportal\Core\Player\PlaneScene.cs:Zeile 2345.
       bei MediaPortal.GUI.Library.GUILayerManager.Render(Single timePassed, GUILayers layers) in D:\MediaPortal Sources\MediaPortal-1\mediaportal\Core\guilib\GUILayerManager.cs:Zeile 117.
       bei MediaPortalApp.RenderFrame(Single timePassed, GUILayers layers, Boolean& uiVisible)  Message: Die arithmetische Operation hat einen Überlauf verursacht.  Site   : Void DrawTexture(UInt32, Int64)  Source : Core  Stack Trace:
       bei MediaPortal.Player.PlaneScene.DrawTexture(UInt32 texAddr, Int64 lColorDiffuse) in D:\MediaPortal Sources\MediaPortal-1\mediaportal\Core\Player\PlaneScene.cs:Zeile 2057.
       bei MediaPortal.Player.PlaneScene.RenderLayer(Single timePassed) in D:\MediaPortal Sources\MediaPortal-1\mediaportal\Core\Player\PlaneScene.cs:Zeile 2345.
       bei MediaPortal.GUI.Library.GUILayerManager.Render(Single timePassed, GUILayers layers) in D:\MediaPortal Sources\MediaPortal-1\mediaportal\Core\guilib\GUILayerManager.cs:Zeile 117.
       bei MediaPortalApp.RenderFrame(Single timePassed, GUILayers layers, Boolean& uiVisible)
     

    Attachments

    • 2021-04-24_evr.log
      111.5 KB
    • 2021-04-24_MediaPortal.log
      959.4 KB
    • 2021-04-24_MediaPortal-Error.log
      750.4 KB

    doskabouter

    Development Group
  • Team MediaPortal
  • September 27, 2009
    4,654
    3,120
    Nuenen
    Home Country
    Netherlands Netherlands
    This indeed the perfect example.
    Now to solve this mystery: How can
    Code:
    if (texAddr == 0)
    this generate an overflowexception...

    Well, you know the drill... put these in the correct place, sit back and wait...

    Edit: wait, there's more going on... still investigating
     
    Last edited:

    doskabouter

    Development Group
  • Team MediaPortal
  • September 27, 2009
    4,654
    3,120
    Nuenen
    Home Country
    Netherlands Netherlands
    This one you can test. Only thing I could imagine is the exception handling had difficulties with inconsistent line-endings in the sourcefile...
    Unified them and made a new build
     

    Attachments

    • Core.zip
      2.2 MB

    CyberSimian

    Test Group
  • Team MediaPortal
  • June 10, 2013
    2,974
    1,854
    Southampton
    Home Country
    United Kingdom United Kingdom
    I have finally had an occurrence of the problem that I described earlier in this thread. But first I must apologise for not using the most recent versions of the debug DLLs. I was using the version 3 debug DLLs when the error occurred. This is the scenario:
    1. The system woke from hibernation to perform a recording.
    2. While the system was recording, I switched it "on".
    3. I started MP from the desktop (I never leave MP running).
    4. I went to "Recorded Radio" and listened to a radio recording (which I then deleted).
    5. I went and made a cup of coffee, and was away from the HTPC for more than 5 minutes. MP was initially displaying an MP panel, but the screen was blank when I returned. Note: the MP screen-saver timeout is 1 minute, and the Windows screen-saver timeout is 5 minutes.
    6. I pressed the RETURN button on the remote to return to the previous MP panel, which displayed correctly (i.e. not blank any more).
    7. I went to "Recorded TV" to watch a TV recording: audio started but no video appeared; the screen remained blank.
    8. I stopped playback and used the exit dialogue to exit MP.
    The logs have only one ERROR line, and that is the perpetual "UpdateMouseCursor cannot access a disposed object". So not relevant, I think.

    The TV recording that encountered the error is "Click" (a technology programme). Looking at the log lines following the first reference to this programme, I find these lines at line 2857, preceding where play starts (I think);

    Code:
    [DEBUG] - TSReaderPlayer: SetVideoWindow()
    [INFO ] - overlay: video WxH  : 100x100
    [INFO ] - overlay: video AR   : 100:100
    [INFO ] - overlay: screen WxH : 1920x1080
    [INFO ] - overlay: AR type    : Normal
    [INFO ] - overlay: PixelRatio : 1
    [INFO ] - overlay: src        : (0,0)-(100,100)
    [INFO ] - overlay: dst        : (420,0)-(1500,1080)
    [INFO ] - TSReaderPlayer:Window (0,0)-(100,100) - (420,0)-(1500,1080)

    The puzzling line is the "overlay: dst". My guess is that this line is indicating the destination video area, but the values don't look right. I think that the values are:

    (x_top_left, y_top_left) - (x_size, y_size)​

    The y values look correct, because the output screen is 1920x1080. But the x values do not look correct. I note that 420+1500=1920, but where does the 420 come from? :confused:

    -- from CyberSimian in the UK
     

    Attachments

    • sound_but_no_video_logs.zip
      42.9 KB

    doskabouter

    Development Group
  • Team MediaPortal
  • September 27, 2009
    4,654
    3,120
    Nuenen
    Home Country
    Netherlands Netherlands
    From what I remember from my investigations in that area is that the values could be correct (something to do with different aspect ratios between source video and screen size).
    Seeing that the original error (overflow exception) is not present in your logs, I think this is an unrelated error (albeit with the same results...)
    Only thing closest to an error is this:
    [2021-05-08 08:11:35,553] [Log ] [MPMain ] [DEBUG] - DirectShowUtil: RenderUnconnectedOutputPins Pin Output - failed
    which could indicate some graph building issues... I know it's too late but connecting graphstudio to such a case would possibly provide more info
    Perhaps you can compare that part of the log with a correctly done playback?
    These issues could also possibly be explained by system going into sleep with MP running... that is still something that is not 100% guaranteed to be working...
     

    CyberSimian

    Test Group
  • Team MediaPortal
  • June 10, 2013
    2,974
    1,854
    Southampton
    Home Country
    United Kingdom United Kingdom
    Thank you for looking at the logs. :)

    the values could be correct (something to do with different aspect ratios between source video and screen size).
    There are three different video sizes involved here:
    • The TV recording is 704x576 (standard definition).
    • The skin is 1280x720.
    • The TV screen is 1920-1080.
    However, although the recording is SD, it is wide screen, so should fill the TV screen. o_O
    (But see below.)

    These issues could also possibly be explained by system going into sleep with MP running... that is still something that is not 100% guaranteed to be working...
    I have never really believed that MP could sleep or hibernate correctly with video running, or with MP running, which is why I always exit MP to the desktop before hibernating the system. :D

    could indicate some graph building issues ... Perhaps you can compare that part of the log with a correctly done playback?
    I have just started MP again and tried to play "Click", which this time succeeded (as expected -- no screen saver action involved). Comparing the logs is interesting. With the editor that I use, I can have both old and new logs in the editing ring, and alternate between them rapidly using a function key. If the scroll positions are synchronised, it makes it very easy to spot differences.

    The line that you identified is identical in both logs -- the DirectShow Util call fails in both logs. However, there is a difference elsewhere. The following lines are present in the log which is successful, but missing from the log which failed (for context: the first two lines shown and last two lines shown are present in both logs; it is the lines in between that are missing from the failed log):

    Code:
    [INFO ] - RefreshRateChanger.AdaptRefreshRate: 'auto refreshrate changer' disabled
    [INFO ] - g_Player.Play(R:\Media Portal TV\Click (BBC News) 2021-05-08 01.30.00.ts Recording)
    [INFO ] - Loading external players plugins
    [INFO ] -   found plugin:MediaPortal.WinampPlayer.WinampPlugin in C:\Program Files (x86)\Team MediaPortal\MediaPortal\Plugins\ExternalPlayers\ExternalPlayers.dll
    [INFO ] -   player:Winamp.  author: int_20h
    [INFO ] -   found plugin:MediaPortal.ITunesPlayer.ITunesPlugin in C:\Program Files (x86)\Team MediaPortal\MediaPortal\Plugins\ExternalPlayers\ExternalPlayers.dll
    [INFO ] -   player:iTunes.  author: Frodo
    [DEBUG] - PlayerFactory: Successfully created player instance for file - R:\Media Portal TV\Click (BBC News) 2021-05-08 01.30.00.ts
    [INFO ] - TSReaderPlayer play:R:\Media Portal TV\Click (BBC News) 2021-05-08 01.30.00.ts radio:False


    So, it is the "Loading external players" lines that are missing from the failed log. Does this give a clue as to the cause of the problem?

    PS: The successful log has the same weird video size as the failed log, so my previous guess was completely wrong! :(

    -- from CyberSimian in the UK
     

    CyberSimian

    Test Group
  • Team MediaPortal
  • June 10, 2013
    2,974
    1,854
    Southampton
    Home Country
    United Kingdom United Kingdom
    I noticed another difference a bit later in the logs (before they become completely different). For context, the first line shown and last line shown are common to both logs; it is the lines in between that are missing from the failed log:

    Code:
    [DEBUG] - TSReaderPlayer: SetSourcePosition 2
    [INFO ] - TvNotify:LoadNotifies
    [INFO ] - TvNotify: 0 notifies
    [DEBUG] - PlaneScene: PresentImage() dispose surfaces
    [DEBUG] - SubEngine : init engine : MediaPortal.Player.Subtitles.SubEngine+DummyEngine
    [DEBUG] - GUIVideoOverlay : SetCurrentFile DoesPostRender _fileName Click (BBC News) 2021-05-08 01.30.00
    [DEBUG] - VMR9Helper: Playing -> Repainting, Frames 51


    -- from CyberSimian in the UK
     

    doskabouter

    Development Group
  • Team MediaPortal
  • September 27, 2009
    4,654
    3,120
    Nuenen
    Home Country
    Netherlands Netherlands
    Loading external players is only done once per mediaportal session, so it should be present earlier and doesn't give a hint...
    Same holds for the Loadnotifies
    The planescene..GUIVideooverlay looks like something interesting...
    I'll see if I can find something or add more logging...
    Which editor is that where you compare logs? I'm always struggling to do an easy comparision without the timestamps.
     

    Users who are viewing this thread

    Top Bottom