Habe dir angeboten den Quelltext zu schicken wenn du ihn nicht anforderst dann kann ich leider auch nichts machen.
Zitat:
Hat da schon mal jemnd angefragt, was was genau wie wo bewirkt und wa wann wo veranlasst ?
Jemand schon mal nachgefragt ?
Jo und auf Grund dessen meine Funktionen geschrieben.
Bsp.
IAMMediaContent
Delphi-Quellcode:
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;
prop page.
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:
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
und, und, und...
Zitat:
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).
Du meinst mit 3DYDYouTube ersetzt?
Wenn ja warum?
Die Filter arbeiten doch zusammen.
https://www.gitmemory.com/issue/ytdl...2258/568124272
http://trac.lliurex.net/xenial/brows...oo.py?rev=8788
using Zattoo with youtube-dl