![]() |
AW: C++ Delphi Übersetzung 3DYDYoutube Filter
Nein es geht nicht. (auch mit HRESULT nicht) aber meine variante.
Ich verändere dadurch das Interface Dort ist die Funktion so definiert.
Code:
Ich kann diese nicht einfach ändern so wie ich will. ;)
STDMETHOD_(BSTR, GetName)(UINT index) = 0;
BSTR = PWideChar ist die Rückgabe. gruss |
AW: C++ Delphi Übersetzung 3DYDYoutube Filter
Bezüglich des ENUMs:
In Delphi sind die standardmäßig so klein wie möglich (hier also Byte), aber in C++ sind ENUMs/SETs oft immer INTEGER. Also entweder den Typ als Integer/LongInt definieren und die Werte als Konstanten, oder
Delphi-Quellcode:
um diese Typ-Definition. (beim SET mit einem DummyWert =31)
{$MINENUMSIZE 4}
Bei Enums mit Vorgaben (
Delphi-Quellcode:
) könnte man noch bedenken, dass dort leider keine TypeInfo für die Werte generiert werden.
=irgendwas
Das könnte man mit Dummy-/Füllwerten für die Nichtdefinierten 0 bis 2 und ohne die Zuweisung =3 beheben, falls man ![]() |
AW: C++ Delphi Übersetzung 3DYDYoutube Filter
Danke!
Hier nochmal der aktuelle Status habe Kommentiert was geht und was nicht. Siehe '// ****'
Delphi-Quellcode:
Muss jetzt mal abwarten was da von dem noch kommt wenn nichts weiter stelle ich den Support ein.
{$REGION 'Interface DYDYoutubeFilter ISupportedSites'}
ISupportedSites = interface(IUnknown) ['{FF762ACC-13EC-463A-A29C-FD4B0CD3E019}'] // Version number equals to total number of functions within the interface // (ISupportedSites::kVersion is the current version). New functions are // appended to the interface. Function signatures are never change. Therefore // version number is the way to check whether particular function is available // in the interface function GetVersion: UINT; stdcall; // **** Funktioniert // Number of supported sites function GetCount: UINT; stdcall; // **** Funktioniert // Get site name or NULL if index >= GetCount() function GetName(index: UINT): PWideChar; stdcall; // **** Funktioniert // Test whether url can be analyzed for video retrieving. S_FALSE means that // url seems from the supported site but not a valid video clip page. When // S_OK is returned, canonical_url will contain canonical page url, otherwise // it will not be changed // If explicitly == TRUE then S_OK will be returned only if URL definitely // points to video page URL instead of maybe just to some other page from the // supported site. This can be determined only for few sites, for others need // page data to determine this function Test(url: PWideChar; explicitly: BOOL; var canonical_url: PWideChar): HRESULT; stdcall; // **** Funktioniert ABER URL ist Nil vielleicht muss das so sein // Returns clip start time encoded in URL, in milliseconds function GetStartTime(url: PWideChar): UINT; stdcall; // **** Funktioniert end; {$ENDREGION} Das ist zu stressig alles irgendwie zusammen zu klopfen ohne vernünftiges SDK. gruss |
AW: C++ Delphi Übersetzung 3DYDYoutube Filter
Nun schon leicht älter als 2 Jahre, aber dennoch mal Fragen zu diesem Codec:
Kann man damit auch einen (anderen) IPTV-Source laden ausser YouTube ? Ich suche einen DS-Filter um ZATTOO (und derivate wie z.B. EWE-TV) zu laden. Mit 3DYDYouTube geht das anscheinend nicht, weil: Interface not found ... Oder ist das irgendwas anders an Params zu setzen ? |
AW: C++ Delphi Übersetzung 3DYDYoutube Filter
Zitat:
3DYDYouTube verwendet bzw. kann verwendet werden in verbindung mit der youtube-dl.exe diese sorgt dann dafür das du andere von youtube-dl.exe verwendete IPTV-Sources-streams verwenden kannst. bsp.. Zitat:
Und ja auch ZATTOO. Zitat:
Mein Player (3DYDYouTube -> youtube-dl) und ZDFChannel Live stream |
AW: C++ Delphi Übersetzung 3DYDYoutube Filter
... das hatte ich mir schon gedacht, ABER: Wie sag ich's dem Filter ?
Bislang hatte ich den LAV-Splitter in Beutzung, der ja ansonsten auch problemlos läuft. Als Sorce bei Zattoo kann der jedoch nur HLS-Streams und - was wesentlich ist: Beim laden / umschalten von Programmen vergehen 3-8 Sekunden ( ! ) je nach Programmaterial, bis die Load-Procedure fertig ist und was auf dem Schirm erscheint. Im Firefox über die jeweilige Page (Zattoo oder EWE) geht das ratzfatz ohne sichtbare Verzögerung - mit VLC ist das ähnlich fix. Wird das also nicht am Server liegen ... Wenn ich in meinem Proggie nun den LAV durch den YT-Filter ersetze (nur die CLSID ändern), dann kommt der Fehler "Interface not found" schon bei LOAD(URL). Kannst du mir bitte ein paar Denkanstöße geben, wie und was ich dem Filter sagen muss ? |
AW: C++ Delphi Übersetzung 3DYDYoutube Filter
Zitat:
Wenn ich einen Stream lade bzw. die URL übergebe geht das bei mir auch ratzfatz mit Zattoo habe ich keine Erfahrung und will mich dort auch nicht registrieren. Wenn du willst kannst du gerne mal meinen Player damit testen falls Zattoo damit funktioniert kann ich dir unter Umständen mit meiner Player Engine Source aushelfen den du dann allerdings selbst durchforsten musst. Sag mir was du brauchst x64 oder x86 zum testen Denkanstöße kann ich dir leider so aus der Luft nicht geben weis ja nicht was da bei dir interna so abgeht. |
AW: C++ Delphi Übersetzung 3DYDYoutube Filter
@ venice2
Du hast eine (private) Mail von TERWI. Keine PN ! |
AW: C++ Delphi Übersetzung 3DYDYoutube Filter
... aber nichtsdesdotrotz würde mich mal sehr interessieren, ob es noch mehr wissenswerte Info ausser diesen hier unter "https://ys.3dyd.com/developers/" gibt:
- IAMMediaContent (Win-Standard) - IAMNetworkStatus (Win-Standard) - IAMOpenProgress (Win-Standard) - ISupportedSites (by Progger - bisher diskutiertes in "developers.zip") - IPropertyBag, IPropertyBag2 (Win-Standard - Design by Progger) Mittels dem bei der Installtion erzeugtem "configure.bat" hab ich mir mal die Prop-Pages angesehen ... ... wirklich schlau wird man da ohne die Beschreibung der Funktion durch Progger selbst wahrscheinlich nicht. Ich jedenfalls nicht. Hat da schon mal jemnd angefragt, was was genau wie wo bewirkt und wa wann wo veranlasst ? Jemand schon mal nachgefragt ? |
AW: C++ Delphi Übersetzung 3DYDYoutube Filter
Habe dir angeboten den Quelltext zu schicken wenn du ihn nicht anforderst dann kann ich leider auch nichts machen.
Zitat:
Bsp. IAMMediaContent
Delphi-Quellcode:
prop page.
function TEVMRPlayer.GetYoutubeFilterDescription(var Description: string): HRESULT;
var MediaContent: IAMMediaContent; pwcDescription: PWideChar; begin Result := E_FAIL; if not Assigned(srcFilter) then exit; if IsUrl then begin if Assigned(DYDYoutubeFilter) then begin srcFilter.QueryInterface(IID_IAMMediaContent, MediaContent); Result := MediaContent.get_Description(pwcDescription); if not SUCCEEDED(Result) then ReportError('YoutubeFilterTitle fails', Result) else begin Description := pwcDescription; SysFreeString(pwcDescription); end; end; end; end;
Delphi-Quellcode:
procedure TEVMRPlayer.Show_YoutubeFilterPropertyPage(ParentHandle: HWND);
var hr: HRESULT; PropertyPage: ISpecifyPropertyPages; FilterInfo: FILTER_INFO; pFilterUnk: IUnknown; caGUID: CAUUID; begin if not IsRegisteredFilter(CLSID_LegacyAmFilterCategory, CLSID_3DYDYoutubeSource) then Exit; if not Assigned(DYDYoutubeFilter) then Exit; hr := DYDYoutubeFilter.QueryInterface(IID_ISpecifyPropertyPages, PropertyPage); if (SUCCEEDED(hr)) then begin // Get the name of filter and pointer to IUnknown. DYDYoutubeFilter.QueryFilterInfo(FilterInfo); DYDYoutubeFilter.QueryInterface(IID_IUnknown, pFilterUnk); // Get configuration page. PropertyPage.GetPages(caGUID); {$IFDEF CPUX64} MyOleCreatePropertyFrame( {$ELSE} OleCreatePropertyFrame( {$ENDIF} ParentHandle, 0, 0, FilterInfo.achName, 1, @pFilterUnk, caGUID.cElems, caGUID.pElems, 0, 0, nil); // Clean up pFilterUnk := nil; FilterInfo.pGraph := nil; CoTaskMemFree(caGUID.pElems); end; end; exports..
Delphi-Quellcode:
und, und, und... ;)
KVideo_ShowYoutubeFilterConfig: function(Index: Integer; ParentHandle:HWND): HRESULT; stdcall;
// Shows the YoutubeFilter Config window // ( parameter ) // - Index : Instance Count of KVideoPlayer KVideo_YoutubeFilterState: procedure(Index: Integer; out Registered, Loaded: BOOL); stdcall; // Checks if YoutubeFilter is ready to service // YoutubeFilter is used to play files from YouTube // * note) The configuration window to change YoutubeFilter's properties is shown only // when YoutubeFilter is registered at system. // ( parameter ) // - Index : Instance Count of KVideoPlayer // - Registered : true if YoutubeFilter is registered at system, else false // - Loaded : true if YoutubeFilter is loaded, else false KVideo_GetYoutubeFilterTitle: function(Index: Integer; var Title: PWideChar): HRESULT; stdcall; // Get Media Title // ( parameter ) // - Index : Instance Count of KVideoPlayer // - Title : if Available KVideo_GetYoutubeFilterSupportedSites: function(Index: Integer; var Sites: string; Count: Integer): HRESULT; stdcall; // Get Supported Sites // ( parameter ) // - Index : Instance Count of KVideoPlayer // - Sites : which supported // - Count : Index from KVideo_GetYoutubeFilterSupportedSitesCount // ( result ) // - 0 on success, else fails KVideo_GetYoutubeFilterSupportedSitesCount: function(Index: Integer; var Count: Integer): HRESULT; stdcall; // Get Supported Sites count // ( parameter ) // - Index : Instance Count of KVideoPlayer // - Count : of Supported Sites // ( result ) // - 0 on success, else fails Zitat:
Wenn ja warum? Die Filter arbeiten doch zusammen. ![]() ![]() ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz