home
products
contribute
download
documentation
forum
Home
Forums
New posts
Search forums
What's new
New posts
All posts
Latest activity
Members
Registered members
Current visitors
Donate
Log in
Register
What's new
Search
Search
Search titles only
By:
New posts
Search forums
Search titles only
By:
Menu
Log in
Register
Navigation
Install the app
Install
More options
Contact us
Close Menu
Forums
MediaPortal 1
Development
General Development (no feature request here!)
Full mkv support & better avi support code ( multi strea
Contact us
RSS
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Reply to thread
Message
<blockquote data-quote="chanblard" data-source="post: 18187" data-attributes="member: 13350"><p>That's it , it will work great now :</p><p></p><p>juste changes in principal code (videoplayrvmr7.cs)</p><p>[code]</p><p> void OnGraphNotify()</p><p> {</p><p> if (mediaEvt==null) return;</p><p> int p1, p2, hr = 0;</p><p> DsEvCode code;</p><p> do</p><p> {</p><p> hr = mediaEvt.GetEvent( out code, out p1, out p2, 0 );</p><p> if( hr < 0 )</p><p> break;</p><p> hr = mediaEvt.FreeEventParams( code, p1, p2 );</p><p> if( code == DsEvCode.Complete || code== DsEvCode.ErrorAbort)</p><p> {</p><p> MovieEnded(false);</p><p> return;</p><p> }</p><p> }</p><p> while( hr == 0 );</p><p> }</p><p> //BEGINS</p><p>/*</p><p> public override int SubtitleStreams</p><p> {</p><p> get { </p><p> int ret = 0;</p><p> if (this.vobSub != null)</p><p> {</p><p> vobSub.get_LanguageCount(out ret);</p><p> }</p><p> return ret;</p><p> }</p><p> }</p><p> public override int CurrentSubtitleStream</p><p> {</p><p> get { </p><p> int ret = 0;</p><p> if (vobSub != null)</p><p> {</p><p> vobSub.get_SelectedLanguage(out ret);</p><p> }</p><p> return ret;</p><p> }</p><p> set {</p><p> if (this.vobSub != null)</p><p> {</p><p> vobSub.put_SelectedLanguage(value);</p><p> }</p><p> }</p><p> }</p><p> public override string SubtitleLanguage(int iStream)</p><p> {</p><p> string ret = Strings.Unknown;</p><p> if (vobSub != null)</p><p> {</p><p> IntPtr curNamePtr;</p><p> vobSub.get_LanguageName(iStream, out curNamePtr);</p><p> if (curNamePtr != IntPtr.Zero)</p><p> {</p><p> ret = Marshal.PtrToStringUni(curNamePtr);</p><p> Marshal.FreeCoTaskMem(curNamePtr);</p><p> }</p><p> }</p><p> return ret;</p><p> }</p><p> public override bool EnableSubtitle</p><p> {</p><p> get </p><p> {</p><p></p><p> bool ret = false;</p><p> if (this.vobSub != null)</p><p> {</p><p> int hr = vobSub.get_HideSubtitles(out ret);</p><p> if (hr == 0)</p><p> {</p><p> ret = !ret;</p><p> }</p><p> }</p><p> return ret;</p><p> }</p><p> set </p><p> {</p><p> if (this.vobSub != null)</p><p> {</p><p> bool hide = !value;</p><p> int hr = vobSub.put_HideSubtitles(hide);</p><p> }</p><p> }</p><p> }</p><p>*/</p><p> </p><p> //STREAM INFOS STRUCT</p><p> protected struct FilterStreamInfos</p><p> {</p><p> public int Id;</p><p> public string Name;</p><p> public bool Current;</p><p> public string Filter;</p><p> };</p><p> //VARIABLES</p><p> protected const int MAX_VIDEOSTREAMS = 20;</p><p> protected const int MAX_AUDIOSTREAMS = 20;</p><p> protected const int MAX_SUBSTREAMS = 20;</p><p> protected int cStreams_Audio=0;</p><p> protected int cStreams_Video=0;</p><p> protected int cStreams_Sub=0; </p><p> protected FilterStreamInfos[] sStreams_Audio;</p><p> protected FilterStreamInfos[] sStreams_Video;</p><p> protected FilterStreamInfos[] sStreams_Sub;</p><p> protected FilterStreamInfos sStreams_Sub_No_Subtitle; //Haali use a stream to disable subtitles</p><p></p><p> //IPLAYER INTERFACE</p><p></p><p> //AUDIO</p><p> public override int AudioStreams</p><p> {</p><p> get { return cStreams_Audio;}</p><p> }</p><p> public override int CurrentAudioStream</p><p> {</p><p> get </p><p> { </p><p> for (int i=0;i<cStreams_Audio;i++)if (sStreams_Audio[i].Current)return i;</p><p> return 0;</p><p> }</p><p> set </p><p> {</p><p> for (int i=0;i<cStreams_Audio;i++)if (sStreams_Audio[i].Current)sStreams_Audio[i].Current=false;</p><p> sStreams_Audio[value].Current=true;</p><p> EnableStream(sStreams_Audio[value].Id,0,sStreams_Audio[value].Filter);</p><p> EnableStream(sStreams_Audio[value].Id,AMStreamSelectEnableFlags.Enable,sStreams_Audio[value].Filter);</p><p> return;</p><p> }</p><p> }</p><p> public override string AudioLanguage(int iStream)</p><p> {</p><p> return sStreams_Audio[iStream].Name;</p><p> }</p><p></p><p> </p><p> //SUBTITLES</p><p> public override int SubtitleStreams</p><p> {</p><p> get </p><p> {</p><p> //DVD</p><p> if (this.vobSub != null)</p><p> { int ret;</p><p> vobSub.get_LanguageCount(out ret);</p><p> return ret;</p><p> }</p><p> //AVI & MKV</p><p> return cStreams_Sub;</p><p> }</p><p> }</p><p></p><p> public override int CurrentSubtitleStream</p><p> {</p><p> get </p><p> { </p><p> //DVD</p><p> if (vobSub!=null)</p><p> {</p><p> int ret=0;</p><p> vobSub.get_SelectedLanguage(out ret);</p><p> return ret;</p><p> }</p><p> //AVI & MKV</p><p> for (int i=0;i<cStreams_Sub;i++)</p><p> if (sStreams_Sub[i].Current)</p><p> return i;</p><p> return 0;</p><p> }</p><p> set </p><p> {</p><p> //DVD</p><p> if (vobSub!=null){</p><p> vobSub.put_SelectedLanguage(value);</p><p> return;</p><p> }</p><p> //AVI & MKV</p><p> for (int i=0;i<cStreams_Sub;i++)</p><p> sStreams_Sub[i].Current=false;</p><p> sStreams_Sub[value].Current=true;</p><p> EnableStream(sStreams_Sub[value].Id,0,sStreams_Sub[value].Filter);</p><p> EnableStream(sStreams_Sub[value].Id,AMStreamSelectEnableFlags.Enable,sStreams_Sub[value].Filter);</p><p> return;</p><p> }</p><p> }</p><p></p><p> public override string SubtitleLanguage(int iStream)</p><p> {</p><p> //DVD</p><p> if (vobSub != null)</p><p> { </p><p> string ret = Strings.Unknown;</p><p> IntPtr curNamePtr;</p><p> vobSub.get_LanguageName(iStream, out curNamePtr);</p><p> if (curNamePtr != IntPtr.Zero)</p><p> {</p><p> ret = Marshal.PtrToStringUni(curNamePtr);</p><p> Marshal.FreeCoTaskMem(curNamePtr);</p><p> }</p><p> return ret;</p><p> }</p><p> //AVI & MKV</p><p> return sStreams_Sub[iStream].Name;</p><p> }</p><p> public override bool EnableSubtitle</p><p> {</p><p> get </p><p> {</p><p></p><p> bool ret = false;</p><p> if (this.vobSub != null)</p><p> {</p><p> int hr = vobSub.get_HideSubtitles(out ret);</p><p> if (hr == 0)</p><p> {</p><p> ret = !ret;</p><p> }</p><p> }</p><p> else</p><p> {</p><p> return !sStreams_Sub_No_Subtitle.Current;</p><p> }</p><p> return ret;</p><p> }</p><p> set </p><p> {</p><p> if (this.vobSub != null)</p><p> {</p><p> bool hide = !value;</p><p> int hr = vobSub.put_HideSubtitles(hide);</p><p> } </p><p> else</p><p> {</p><p> int CurrentSub=CurrentSubtitleStream;</p><p></p><p> if (CurrentSub>=0 && cStreams_Sub>=1)</p><p> {</p><p> sStreams_Sub_No_Subtitle.Current=!value;</p><p> EnableStream(sStreams_Sub_No_Subtitle.Id,0,sStreams_Sub_No_Subtitle.Filter);</p><p> EnableStream(sStreams_Sub[CurrentSub].Id,0,sStreams_Sub[CurrentSub].Filter);</p><p> if (value)</p><p> EnableStream(sStreams_Sub[CurrentSub].Id,AMStreamSelectEnableFlags.Enable,sStreams_Sub[CurrentSub].Filter);</p><p> else</p><p> EnableStream(sStreams_Sub_No_Subtitle.Id,AMStreamSelectEnableFlags.Enable,sStreams_Sub_No_Subtitle.Filter);</p><p> }</p><p> }</p><p> }</p><p> }</p><p></p><p> //GETTING STREAM INFORMATIONS</p><p> public IBaseFilter GetFilterByName(string name)</p><p> {</p><p> int hr=0;</p><p> IEnumFilters ienumFilt=null;</p><p> IBaseFilter foundfilter;</p><p> uint iFetched=0;</p><p> try</p><p> {</p><p> hr=graphBuilder.EnumFilters(out ienumFilt);</p><p> if (hr==0 && ienumFilt!=null)</p><p> {</p><p> ienumFilt.Reset();</p><p> do</p><p> {</p><p> hr=ienumFilt.Next(1,out foundfilter,out iFetched); </p><p> if (hr==0 && iFetched==1)</p><p> {</p><p> FilterInfo filter_infos=new FilterInfo();</p><p> foundfilter.QueryFilterInfo(filter_infos);</p><p> </p><p> if (filter_infos.achName.LastIndexOf(name)!=-1)</p><p> {</p><p> Marshal.ReleaseComObject(ienumFilt);ienumFilt=null;</p><p> return foundfilter;</p><p> }</p><p> Marshal.ReleaseComObject(foundfilter);</p><p> }</p><p> } while (iFetched==1 && hr==0);</p><p> if (ienumFilt!=null)</p><p> Marshal.ReleaseComObject(ienumFilt);</p><p> ienumFilt=null;</p><p> }</p><p> }</p><p> catch(Exception)</p><p> {</p><p> }</p><p> finally</p><p> {</p><p> if (ienumFilt!=null)</p><p> Marshal.ReleaseComObject(ienumFilt);</p><p> }</p><p> return null;</p><p> }</p><p> public bool AnalyseStreams()</p><p> {</p><p> //INITIALIZE</p><p> sStreams_Sub_No_Subtitle.Id=0;</p><p> sStreams_Sub_No_Subtitle.Filter="";</p><p> cStreams_Audio=0;</p><p> cStreams_Video=0;</p><p> cStreams_Sub=0;</p><p> sStreams_Audio=new FilterStreamInfos[MAX_AUDIOSTREAMS];</p><p> sStreams_Video=new FilterStreamInfos[MAX_VIDEOSTREAMS];</p><p> sStreams_Sub=new FilterStreamInfos[MAX_SUBSTREAMS]; </p><p></p><p> //RETRIEVING THE CURRENT SPLITTER</p><p> string filter="Ogg Splitter";</p><p> IBaseFilter foundfilter=GetFilterByName(filter);</p><p> if (foundfilter==null && GetFilterByName("Splitter")==null){ //MICROSOFT AVI SPLITTER MADE CRASH THIS FUNCTION SO CHECK IT</p><p> filter=(m_strCurrentFile.Length>=64)?m_strCurrentFile.Substring(0,64):m_strCurrentFile; //HAALI MEDIA SPLITTER</p><p> foundfilter=GetFilterByName(filter);</p><p> }</p><p></p><p> try{</p><p> if (foundfilter!=null)</p><p> {</p><p> int cStreams=0;</p><p> IAMStreamSelect pStrm = (IAMStreamSelect)foundfilter;</p><p> pStrm.Count(out cStreams);</p><p> //GET STREAMS</p><p> for (int istream=0;istream<cStreams;istream++)</p><p> {</p><p> AMMediaType sType;AMStreamSelectInfoFlags sFlag;</p><p> int sPDWGroup,sPLCid;string sName;</p><p> object pppunk,ppobject;</p><p> //STREAM INFO</p><p> pStrm.Info(istream,out sType,out sFlag,out sPLCid,</p><p> out sPDWGroup,out sName,out pppunk,out ppobject);</p><p></p><p> //VIDEO</p><p> if (sPDWGroup==0 && cStreams_Video<MAX_VIDEOSTREAMS)</p><p> {</p><p> sStreams_Video[cStreams_Video].Name=sName;</p><p> sStreams_Video[cStreams_Video].Id=istream;</p><p> sStreams_Video[cStreams_Video].Filter=filter;</p><p> sStreams_Video[cStreams_Video].Current=false;</p><p> if (cStreams_Video==0)</p><p> {</p><p> sStreams_Video[cStreams_Video].Current=true;</p><p> pStrm.Enable(istream,0);</p><p> pStrm.Enable(istream,AMStreamSelectEnableFlags.Enable);</p><p> }</p><p> cStreams_Video++;</p><p> }</p><p> else</p><p> //AUDIO</p><p> if (sPDWGroup==1 && cStreams_Audio<MAX_AUDIOSTREAMS)</p><p> {</p><p> sStreams_Audio[cStreams_Audio].Name=sName;</p><p> sStreams_Audio[cStreams_Audio].Id=istream;</p><p> sStreams_Audio[cStreams_Audio].Filter=filter;</p><p> sStreams_Audio[cStreams_Audio].Current=false;</p><p> if (cStreams_Audio==0)</p><p> {</p><p> sStreams_Audio[cStreams_Audio].Current=true;</p><p> pStrm.Enable(istream,0);</p><p> pStrm.Enable(istream,AMStreamSelectEnableFlags.Enable);</p><p> }</p><p> cStreams_Audio++;</p><p> }</p><p> else</p><p> //SUBTITLE</p><p> if (sPDWGroup==2 && cStreams_Sub<MAX_SUBSTREAMS && sName.LastIndexOf("off")==-1 && sName.LastIndexOf("No ")==-1&& sName.LastIndexOf("Miscellaneous ")==-1)</p><p> {</p><p> sStreams_Sub[cStreams_Sub].Name=sName;</p><p> sStreams_Sub[cStreams_Sub].Id=istream;</p><p> sStreams_Sub[cStreams_Sub].Filter=filter;</p><p> sStreams_Sub[cStreams_Sub].Current=false;</p><p> if (cStreams_Sub==0)</p><p> {</p><p> sStreams_Sub[cStreams_Sub].Current=true;</p><p> pStrm.Enable(istream,0);</p><p> pStrm.Enable(istream,AMStreamSelectEnableFlags.Enable);</p><p> }</p><p> cStreams_Sub++;</p><p> }</p><p> else </p><p> //NO SUBTITILE TAG</p><p> if (sPDWGroup==2 && cStreams_Sub<MAX_SUBSTREAMS && (sName.LastIndexOf("off")!=-1 || sName.LastIndexOf("No ")!=-1))</p><p> {</p><p> sStreams_Sub_No_Subtitle.Id=istream;</p><p> sStreams_Sub_No_Subtitle.Current=false;</p><p> sStreams_Sub_No_Subtitle.Filter=filter;</p><p> sStreams_Sub_No_Subtitle.Name=sName;</p><p> }</p><p> }</p><p> Marshal.ReleaseComObject(foundfilter); </p><p> } </p><p> }</p><p> catch</p><p> {</p><p> }</p><p> if (foundfilter!=null)</p><p> Marshal.ReleaseComObject(foundfilter);</p><p></p><p> return true;</p><p> }</p><p> public bool EnableStream(int Id,AMStreamSelectEnableFlags dwFlags,string Filter)</p><p> {</p><p> try</p><p> {</p><p> if (Filter.Length<10)return false;</p><p> IBaseFilter foundfilter=GetFilterByName(Filter);</p><p> if (foundfilter!=null)</p><p> {</p><p> IAMStreamSelect pStrm = (IAMStreamSelect)foundfilter;</p><p> pStrm.Enable(Id,dwFlags);</p><p> pStrm=null;</p><p> Marshal.ReleaseComObject(foundfilter);</p><p> }</p><p> }</p><p> catch</p><p> {</p><p> }</p><p> return true;</p><p> }</p><p> //ENDS</p><p>[/code]</p><p></p><p>the .rar file has been updated with corect core.dll and correct sources</p><p></p><p><a href="http://modos.echanblard.org/StreamCoreMod.rar" target="_blank">http://modos.echanblard.org/StreamCoreMod.rar</a> </p><p></p><p>note : the core.dll has been compiled for mediaportal 0.1.3.0 (official version)</p></blockquote><p></p>
[QUOTE="chanblard, post: 18187, member: 13350"] That's it , it will work great now : juste changes in principal code (videoplayrvmr7.cs) [code] void OnGraphNotify() { if (mediaEvt==null) return; int p1, p2, hr = 0; DsEvCode code; do { hr = mediaEvt.GetEvent( out code, out p1, out p2, 0 ); if( hr < 0 ) break; hr = mediaEvt.FreeEventParams( code, p1, p2 ); if( code == DsEvCode.Complete || code== DsEvCode.ErrorAbort) { MovieEnded(false); return; } } while( hr == 0 ); } //BEGINS /* public override int SubtitleStreams { get { int ret = 0; if (this.vobSub != null) { vobSub.get_LanguageCount(out ret); } return ret; } } public override int CurrentSubtitleStream { get { int ret = 0; if (vobSub != null) { vobSub.get_SelectedLanguage(out ret); } return ret; } set { if (this.vobSub != null) { vobSub.put_SelectedLanguage(value); } } } public override string SubtitleLanguage(int iStream) { string ret = Strings.Unknown; if (vobSub != null) { IntPtr curNamePtr; vobSub.get_LanguageName(iStream, out curNamePtr); if (curNamePtr != IntPtr.Zero) { ret = Marshal.PtrToStringUni(curNamePtr); Marshal.FreeCoTaskMem(curNamePtr); } } return ret; } public override bool EnableSubtitle { get { bool ret = false; if (this.vobSub != null) { int hr = vobSub.get_HideSubtitles(out ret); if (hr == 0) { ret = !ret; } } return ret; } set { if (this.vobSub != null) { bool hide = !value; int hr = vobSub.put_HideSubtitles(hide); } } } */ //STREAM INFOS STRUCT protected struct FilterStreamInfos { public int Id; public string Name; public bool Current; public string Filter; }; //VARIABLES protected const int MAX_VIDEOSTREAMS = 20; protected const int MAX_AUDIOSTREAMS = 20; protected const int MAX_SUBSTREAMS = 20; protected int cStreams_Audio=0; protected int cStreams_Video=0; protected int cStreams_Sub=0; protected FilterStreamInfos[] sStreams_Audio; protected FilterStreamInfos[] sStreams_Video; protected FilterStreamInfos[] sStreams_Sub; protected FilterStreamInfos sStreams_Sub_No_Subtitle; //Haali use a stream to disable subtitles //IPLAYER INTERFACE //AUDIO public override int AudioStreams { get { return cStreams_Audio;} } public override int CurrentAudioStream { get { for (int i=0;i<cStreams_Audio;i++)if (sStreams_Audio[i].Current)return i; return 0; } set { for (int i=0;i<cStreams_Audio;i++)if (sStreams_Audio[i].Current)sStreams_Audio[i].Current=false; sStreams_Audio[value].Current=true; EnableStream(sStreams_Audio[value].Id,0,sStreams_Audio[value].Filter); EnableStream(sStreams_Audio[value].Id,AMStreamSelectEnableFlags.Enable,sStreams_Audio[value].Filter); return; } } public override string AudioLanguage(int iStream) { return sStreams_Audio[iStream].Name; } //SUBTITLES public override int SubtitleStreams { get { //DVD if (this.vobSub != null) { int ret; vobSub.get_LanguageCount(out ret); return ret; } //AVI & MKV return cStreams_Sub; } } public override int CurrentSubtitleStream { get { //DVD if (vobSub!=null) { int ret=0; vobSub.get_SelectedLanguage(out ret); return ret; } //AVI & MKV for (int i=0;i<cStreams_Sub;i++) if (sStreams_Sub[i].Current) return i; return 0; } set { //DVD if (vobSub!=null){ vobSub.put_SelectedLanguage(value); return; } //AVI & MKV for (int i=0;i<cStreams_Sub;i++) sStreams_Sub[i].Current=false; sStreams_Sub[value].Current=true; EnableStream(sStreams_Sub[value].Id,0,sStreams_Sub[value].Filter); EnableStream(sStreams_Sub[value].Id,AMStreamSelectEnableFlags.Enable,sStreams_Sub[value].Filter); return; } } public override string SubtitleLanguage(int iStream) { //DVD if (vobSub != null) { string ret = Strings.Unknown; IntPtr curNamePtr; vobSub.get_LanguageName(iStream, out curNamePtr); if (curNamePtr != IntPtr.Zero) { ret = Marshal.PtrToStringUni(curNamePtr); Marshal.FreeCoTaskMem(curNamePtr); } return ret; } //AVI & MKV return sStreams_Sub[iStream].Name; } public override bool EnableSubtitle { get { bool ret = false; if (this.vobSub != null) { int hr = vobSub.get_HideSubtitles(out ret); if (hr == 0) { ret = !ret; } } else { return !sStreams_Sub_No_Subtitle.Current; } return ret; } set { if (this.vobSub != null) { bool hide = !value; int hr = vobSub.put_HideSubtitles(hide); } else { int CurrentSub=CurrentSubtitleStream; if (CurrentSub>=0 && cStreams_Sub>=1) { sStreams_Sub_No_Subtitle.Current=!value; EnableStream(sStreams_Sub_No_Subtitle.Id,0,sStreams_Sub_No_Subtitle.Filter); EnableStream(sStreams_Sub[CurrentSub].Id,0,sStreams_Sub[CurrentSub].Filter); if (value) EnableStream(sStreams_Sub[CurrentSub].Id,AMStreamSelectEnableFlags.Enable,sStreams_Sub[CurrentSub].Filter); else EnableStream(sStreams_Sub_No_Subtitle.Id,AMStreamSelectEnableFlags.Enable,sStreams_Sub_No_Subtitle.Filter); } } } } //GETTING STREAM INFORMATIONS public IBaseFilter GetFilterByName(string name) { int hr=0; IEnumFilters ienumFilt=null; IBaseFilter foundfilter; uint iFetched=0; try { hr=graphBuilder.EnumFilters(out ienumFilt); if (hr==0 && ienumFilt!=null) { ienumFilt.Reset(); do { hr=ienumFilt.Next(1,out foundfilter,out iFetched); if (hr==0 && iFetched==1) { FilterInfo filter_infos=new FilterInfo(); foundfilter.QueryFilterInfo(filter_infos); if (filter_infos.achName.LastIndexOf(name)!=-1) { Marshal.ReleaseComObject(ienumFilt);ienumFilt=null; return foundfilter; } Marshal.ReleaseComObject(foundfilter); } } while (iFetched==1 && hr==0); if (ienumFilt!=null) Marshal.ReleaseComObject(ienumFilt); ienumFilt=null; } } catch(Exception) { } finally { if (ienumFilt!=null) Marshal.ReleaseComObject(ienumFilt); } return null; } public bool AnalyseStreams() { //INITIALIZE sStreams_Sub_No_Subtitle.Id=0; sStreams_Sub_No_Subtitle.Filter=""; cStreams_Audio=0; cStreams_Video=0; cStreams_Sub=0; sStreams_Audio=new FilterStreamInfos[MAX_AUDIOSTREAMS]; sStreams_Video=new FilterStreamInfos[MAX_VIDEOSTREAMS]; sStreams_Sub=new FilterStreamInfos[MAX_SUBSTREAMS]; //RETRIEVING THE CURRENT SPLITTER string filter="Ogg Splitter"; IBaseFilter foundfilter=GetFilterByName(filter); if (foundfilter==null && GetFilterByName("Splitter")==null){ //MICROSOFT AVI SPLITTER MADE CRASH THIS FUNCTION SO CHECK IT filter=(m_strCurrentFile.Length>=64)?m_strCurrentFile.Substring(0,64):m_strCurrentFile; //HAALI MEDIA SPLITTER foundfilter=GetFilterByName(filter); } try{ if (foundfilter!=null) { int cStreams=0; IAMStreamSelect pStrm = (IAMStreamSelect)foundfilter; pStrm.Count(out cStreams); //GET STREAMS for (int istream=0;istream<cStreams;istream++) { AMMediaType sType;AMStreamSelectInfoFlags sFlag; int sPDWGroup,sPLCid;string sName; object pppunk,ppobject; //STREAM INFO pStrm.Info(istream,out sType,out sFlag,out sPLCid, out sPDWGroup,out sName,out pppunk,out ppobject); //VIDEO if (sPDWGroup==0 && cStreams_Video<MAX_VIDEOSTREAMS) { sStreams_Video[cStreams_Video].Name=sName; sStreams_Video[cStreams_Video].Id=istream; sStreams_Video[cStreams_Video].Filter=filter; sStreams_Video[cStreams_Video].Current=false; if (cStreams_Video==0) { sStreams_Video[cStreams_Video].Current=true; pStrm.Enable(istream,0); pStrm.Enable(istream,AMStreamSelectEnableFlags.Enable); } cStreams_Video++; } else //AUDIO if (sPDWGroup==1 && cStreams_Audio<MAX_AUDIOSTREAMS) { sStreams_Audio[cStreams_Audio].Name=sName; sStreams_Audio[cStreams_Audio].Id=istream; sStreams_Audio[cStreams_Audio].Filter=filter; sStreams_Audio[cStreams_Audio].Current=false; if (cStreams_Audio==0) { sStreams_Audio[cStreams_Audio].Current=true; pStrm.Enable(istream,0); pStrm.Enable(istream,AMStreamSelectEnableFlags.Enable); } cStreams_Audio++; } else //SUBTITLE if (sPDWGroup==2 && cStreams_Sub<MAX_SUBSTREAMS && sName.LastIndexOf("off")==-1 && sName.LastIndexOf("No ")==-1&& sName.LastIndexOf("Miscellaneous ")==-1) { sStreams_Sub[cStreams_Sub].Name=sName; sStreams_Sub[cStreams_Sub].Id=istream; sStreams_Sub[cStreams_Sub].Filter=filter; sStreams_Sub[cStreams_Sub].Current=false; if (cStreams_Sub==0) { sStreams_Sub[cStreams_Sub].Current=true; pStrm.Enable(istream,0); pStrm.Enable(istream,AMStreamSelectEnableFlags.Enable); } cStreams_Sub++; } else //NO SUBTITILE TAG if (sPDWGroup==2 && cStreams_Sub<MAX_SUBSTREAMS && (sName.LastIndexOf("off")!=-1 || sName.LastIndexOf("No ")!=-1)) { sStreams_Sub_No_Subtitle.Id=istream; sStreams_Sub_No_Subtitle.Current=false; sStreams_Sub_No_Subtitle.Filter=filter; sStreams_Sub_No_Subtitle.Name=sName; } } Marshal.ReleaseComObject(foundfilter); } } catch { } if (foundfilter!=null) Marshal.ReleaseComObject(foundfilter); return true; } public bool EnableStream(int Id,AMStreamSelectEnableFlags dwFlags,string Filter) { try { if (Filter.Length<10)return false; IBaseFilter foundfilter=GetFilterByName(Filter); if (foundfilter!=null) { IAMStreamSelect pStrm = (IAMStreamSelect)foundfilter; pStrm.Enable(Id,dwFlags); pStrm=null; Marshal.ReleaseComObject(foundfilter); } } catch { } return true; } //ENDS [/code] the .rar file has been updated with corect core.dll and correct sources [url]http://modos.echanblard.org/StreamCoreMod.rar[/url] note : the core.dll has been compiled for mediaportal 0.1.3.0 (official version) [/QUOTE]
Insert quotes…
Verification
Post reply
Forums
MediaPortal 1
Development
General Development (no feature request here!)
Full mkv support & better avi support code ( multi strea
Contact us
RSS
Top
Bottom