Skip to content

Commit

Permalink
Merge branch 'master' into MP1-1.22-Pre-Release_test
Browse files Browse the repository at this point in the history
  • Loading branch information
owlsroost committed Mar 2, 2019
2 parents 67690b1 + c137a91 commit 101d7a7
Show file tree
Hide file tree
Showing 17 changed files with 483 additions and 141 deletions.
34 changes: 24 additions & 10 deletions mediaportal/Core/DShowNET/Helper/DirectShowUtil.cs
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ namespace DShowNET.Helper
public class DirectShowUtil
{
private const int magicConstant = -759872593;
private static object audioLock = new object();

static DirectShowUtil() {}

Expand Down Expand Up @@ -198,20 +199,33 @@ private static IBaseFilter AddAudioRenderer(IGraphBuilder graphBuilder, string s

//check first if audio renderer exists!
bool bRendererExists = false;
foreach (Filter filter in Filters.AudioRenderers)
lock (audioLock)
{
Log.Debug("DirectShowUtil: List 'check if already exist' AddAudioRendererToGraph filter: {0} to graph for {1}", filter.Name, strFilterName);
if (String.Compare(filter.Name, strFilterName, StringComparison.OrdinalIgnoreCase) == 0)
foreach (Filter filter in Filters.AudioRenderers)
{
try
{
Log.Debug(
"DirectShowUtil: List 'check if already exist' AddAudioRendererToGraph filter: {0} to graph for {1}",
filter.Name, strFilterName);
if (String.Compare(filter.Name, strFilterName, StringComparison.OrdinalIgnoreCase) == 0)
{
bRendererExists = true;
Log.Info("DirectShowUtil: found audio renderer - {0}", filter.Name);
}
}
catch (Exception e)
{

}
}

if (!bRendererExists)
{
bRendererExists = true;
Log.Info("DirectShowUtil: found audio renderer - {0}", filter.Name);
Log.Error("DirectShowUtil: FAILED: audio renderer:{0} doesnt exists", strFilterName);
return null;
}
}
if (!bRendererExists)
{
Log.Error("DirectShowUtil: FAILED: audio renderer:{0} doesnt exists", strFilterName);
return null;
}

// first remove all audio renderers
bool bAllRemoved = false;
Expand Down
2 changes: 1 addition & 1 deletion mediaportal/Core/DShowNET/Helper/Filters/FilterHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
using System;
using System.Collections;
using System.Runtime.InteropServices.ComTypes;
using System.Threading;
using DirectShowLib;
using MediaPortal.GUI.Library;

Expand Down Expand Up @@ -147,7 +148,6 @@ public static ArrayList GetAudioRenderers()

public static void ReloadFilterCollection()
{
return;
Log.Debug($"FilterHelper: ReloadFilterCollection init");
try
{
Expand Down
1 change: 1 addition & 0 deletions mediaportal/Core/DShowNET/Helper/Filters/Filters.cs
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ public static void FilterCollectionReload()
Thread.CurrentThread.IsBackground = true;
Thread.CurrentThread.Name = "FilterCollectionReload";
Thread.Sleep(500);
Log.Debug($"Filter: FilterCollectionReload init");
VideoInputDevices = new FilterCollection(FilterCategory.VideoInputDevice, true);
AudioInputDevices = new FilterCollection(FilterCategory.AudioInputDevice, true);
Expand Down
23 changes: 22 additions & 1 deletion mediaportal/Core/Player/AudioPlayerVMR.cs
Original file line number Diff line number Diff line change
Expand Up @@ -515,7 +515,28 @@ private void OnGraphNotify()
hr = mediaEvt.FreeEventParams(code, p1, p2);
if (code == EventCode.Complete || code == EventCode.ErrorAbort)
{
MovieEnded(false);
if (GUIGraphicsContext.VideoRenderer == GUIGraphicsContext.VideoRendererType.madVR)
{
try
{
Log.Debug("AudioPlayerVMR: EventCode.Complete: {0}", Enum.GetName(typeof(EventCode), code));
Log.Debug("AudioPlayerVMR: VMR9Util.g_vmr9.playbackTimer {0}", VMR9Util.g_vmr9.playbackTimer);
if (VMR9Util.g_vmr9.playbackTimer.Second != 0)
{
MovieEnded(false);
}
}
catch (Exception ex)
{
Log.Error("AudioPlayerVMR: OnGraphNotify exception: {0}", ex);
}
}

if (GUIGraphicsContext.VideoRenderer != GUIGraphicsContext.VideoRendererType.madVR)
{
Log.Debug("AudioPlayerVMR EventCode.Complete: {0}", Enum.GetName(typeof(EventCode), code));
MovieEnded(false);
}
}
} while (hr == 0);
}
Expand Down
23 changes: 21 additions & 2 deletions mediaportal/Core/Player/BDPlayer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2593,11 +2593,30 @@ protected void OnGraphNotify()
break;
case EventCode.ErrorAbort:
Log.Debug("BDPlayer - GraphNotify: Error: {0}", param1);
MovieEnded();
if (GUIGraphicsContext.VideoRenderer == GUIGraphicsContext.VideoRendererType.madVR)
{
try
{
Log.Debug("BDPlayer: VMR9Util.g_vmr9.playbackTimer {0}", VMR9Util.g_vmr9.playbackTimer);
if (VMR9Util.g_vmr9.playbackTimer.Second != 0)
{
MovieEnded();
}
}
catch (Exception ex)
{
Log.Error("BDPlayer: OnGraphNotify exception: {0}", ex);
}
}

if (GUIGraphicsContext.VideoRenderer != GUIGraphicsContext.VideoRendererType.madVR)
{
MovieEnded();
}
break;
default:
break;
}
}
}
}

Expand Down
26 changes: 24 additions & 2 deletions mediaportal/Core/Player/BaseStreamBufferPlayer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1518,8 +1518,30 @@ private void OnGraphNotify()
else */
if (code == EventCode.Complete || code == EventCode.ErrorAbort)
{
//Log.Info("StreamBufferPlayer: event:{0} param1:{1} param2:{2} param1:0x{3:X} param2:0x{4:X}",code.ToString(),p1,p2,p1,p2);
MovieEnded();
if (GUIGraphicsContext.VideoRenderer == GUIGraphicsContext.VideoRendererType.madVR)
{
try
{
Log.Debug("StreamBufferPlayer: EventCode.Complete: {0}", Enum.GetName(typeof(EventCode), code));
Log.Debug("StreamBufferPlayer: VMR9Util.g_vmr9.playbackTimer {0}", VMR9Util.g_vmr9.playbackTimer);
if (VMR9Util.g_vmr9.playbackTimer.Second != 0)
{
//Log.Info("StreamBufferPlayer: event:{0} param1:{1} param2:{2} param1:0x{3:X} param2:0x{4:X}",code.ToString(),p1,p2,p1,p2);
MovieEnded();
}
}
catch (Exception ex)
{
Log.Error("StreamBufferPlayer: OnGraphNotify exception: {0}", ex);
}
}

if (GUIGraphicsContext.VideoRenderer != GUIGraphicsContext.VideoRendererType.madVR)
{
Log.Debug("StreamBufferPlayer.Complete: {0}", Enum.GetName(typeof(EventCode), code));
//Log.Info("StreamBufferPlayer: event:{0} param1:{1} param2:{2} param1:0x{3:X} param2:0x{4:X}",code.ToString(),p1,p2,p1,p2);
MovieEnded();
}
}
//else
//Log.Info("StreamBufferPlayer: event:{0} 0x{1:X} param1:{2} param2:{3} param1:0x{4:X} param2:0x{5:X}",code.ToString(), (int)code,p1,p2,p1,p2);
Expand Down
49 changes: 40 additions & 9 deletions mediaportal/Core/Player/BaseTSReaderPlayer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2031,17 +2031,48 @@ private void OnGraphNotify()
hr = _mediaEvt.FreeEventParams(code, p1, p2);
if (code == EventCode.Complete || code == EventCode.ErrorAbort)
{
Log.Info("TSReaderPlayer: event:{0} param1:{1} param2:{2} param1:0x{3:X} param2:0x{4:X}", code.ToString(),
p1, p2, p1, p2);
MovieEnded();
if (GUIGraphicsContext.VideoRenderer == GUIGraphicsContext.VideoRendererType.madVR)
{
try
{
Log.Debug("VideoPlayer: EventCode.Complete: {0}", Enum.GetName(typeof(EventCode), code));
Log.Debug("VideoPlayer: VMR9Util.g_vmr9.playbackTimer {0}", VMR9Util.g_vmr9.playbackTimer);
if (VMR9Util.g_vmr9.playbackTimer.Second != 0)
{
Log.Info("TSReaderPlayer: event:{0} param1:{1} param2:{2} param1:0x{3:X} param2:0x{4:X}", code.ToString(),
p1, p2, p1, p2);
MovieEnded();

// Playback was aborted! No sound driver is available!
if (code == EventCode.ErrorAbort && p1 == DSERR_NODRIVER)
{
CloseInterfaces();
ExclusiveMode(false);
_state = PlayState.Ended;
Log.Error("TSReaderPlayer: No sound driver is available!");
}
}
}
catch (Exception ex)
{
Log.Error("TSReaderPlayer: OnGraphNotify exception: {0}", ex);
}
}

// Playback was aborted! No sound driver is available!
if (code == EventCode.ErrorAbort && p1 == DSERR_NODRIVER)
if (GUIGraphicsContext.VideoRenderer != GUIGraphicsContext.VideoRendererType.madVR)
{
CloseInterfaces();
ExclusiveMode(false);
_state = PlayState.Ended;
Log.Error("TSReaderPlayer: No sound driver is available!");
Log.Info("TSReaderPlayer: event:{0} param1:{1} param2:{2} param1:0x{3:X} param2:0x{4:X}", code.ToString(),
p1, p2, p1, p2);
MovieEnded();

// Playback was aborted! No sound driver is available!
if (code == EventCode.ErrorAbort && p1 == DSERR_NODRIVER)
{
CloseInterfaces();
ExclusiveMode(false);
_state = PlayState.Ended;
Log.Error("TSReaderPlayer: No sound driver is available!");
}
}
}
//else
Expand Down
6 changes: 5 additions & 1 deletion mediaportal/Core/Player/MediaInfoWrapper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ public class MediaInfoWrapper
private int _videoDuration = 0;
private bool _DVDenabled = false;
private bool _BDenabled = false;
private bool _mediaInfoForceDisable = false;
private bool _enabledDRR = false;
private string _ParseSpeed;

//Audio
Expand Down Expand Up @@ -107,6 +109,8 @@ public MediaInfoWrapper(string strFile)
{
_DVDenabled = xmlreader.GetValueAsBool("dvdplayer", "mediainfoused", false);
_BDenabled = xmlreader.GetValueAsBool("bdplayer", "mediainfoused", false);
_mediaInfoForceDisable = xmlreader.GetValueAsBool("general", "mediainfoforcedisable", false);
_enabledDRR = xmlreader.GetValueAsBool("general", "autochangerefreshrate", false);
_ParseSpeed = xmlreader.GetValueAsString("debug", "MediaInfoParsespeed", "0.3");
// fix delay introduced after 0.7.26: http://sourceforge.net/tracker/?func=detail&aid=3013548&group_id=86862&atid=581181
}
Expand Down Expand Up @@ -145,7 +149,7 @@ public MediaInfoWrapper(string strFile)
isDVD = false;
//currently mediainfo is only used for local video related material (if enabled)
if ((!isVideo && !isDVD) || (isDVD && !_DVDenabled) || (isDVD && _BDenabled))
if ((!isVideo && !isDVD) || (isDVD && !_DVDenabled) || (isDVD && _BDenabled) || (_mediaInfoForceDisable && !_enabledDRR))
{
Log.Debug("MediaInfoWrapper: isVideo:{0}, isDVD:{1}[enabled:{2}]", isVideo, isDVD, _DVDenabled);
Log.Debug("MediaInfoWrapper: disabled for this content");
Expand Down
26 changes: 24 additions & 2 deletions mediaportal/Core/Player/RTSPPlayer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1286,8 +1286,30 @@ private void OnGraphNotify()
hr = mediaEvt.FreeEventParams(code, p1, p2);
if (code == EventCode.Complete || code == EventCode.ErrorAbort)
{
MovieEnded(false);
return;
if (GUIGraphicsContext.VideoRenderer == GUIGraphicsContext.VideoRendererType.madVR)
{
try
{
Log.Debug("RTSPPlayer: EventCode.Complete: {0}", Enum.GetName(typeof(EventCode), code));
Log.Debug("RTSPPlayer: VMR9Util.g_vmr9.playbackTimer {0}", VMR9Util.g_vmr9.playbackTimer);
if (VMR9Util.g_vmr9.playbackTimer.Second != 0)
{
MovieEnded(false);
return;
}
}
catch (Exception ex)
{
Log.Error("RTSPPlayer: OnGraphNotify exception: {0}", ex);
}
}

if (GUIGraphicsContext.VideoRenderer != GUIGraphicsContext.VideoRendererType.madVR)
{
Log.Debug("RTSPPlayer: EventCode.Complete: {0}", Enum.GetName(typeof(EventCode), code));
MovieEnded(false);
return;
}
}
} while (hr == 0);
}
Expand Down
Loading

0 comments on commit 101d7a7

Please sign in to comment.