Einzelnen Beitrag anzeigen

SonnyBoyPro

Registriert seit: 9. Mai 2007
68 Beiträge
 
#1

DVD Navigator und VMR9 Allocator

  Alt 16. Jul 2014, 20:28
Hallo zusammen,
da ich im Netz keinen Hinweis darauf bekommen habe (oder falsch gesucht habe ), hier nun eine kurz Info:
mit dem VMR9 Allocator und DirectX9Ex kann man ja sehr schön SharedResources generieren, die man dann z.B. unter DirectX 11 verwenden kann. Hat bei File-Play auch sofort funktioniert. Nur bei DVD kam bei mir immer nur ein schwarzer Bildschirm (obwohl FilterGraph okay war und bei WindowMode die DVD abgespielt wurde).
Der Grund: die function TAllocator.InitializeDevice(dwUserID: DWORD; lpAllocInfo: PVMR9AllocationInfo; var lpNumBuffers: DWORD): HResult; stdcall; Funktion wird 2x aufgerufen, daher bekommt man also wieder ein anderes Handle und muss die Texture neu erzeugen.

Hier mal kurzer Codeausschnitt
Delphi-Quellcode:
function TAllocator.InitializeDevice(dwUserID: DWORD; lpAllocInfo: PVMR9AllocationInfo; var lpNumBuffers: DWORD): HResult; stdcall;

....

VideoHandle := 0;
            // create the private texture
           hr:=FD3DDev.CreateTexture(lpAllocInfo.dwWidth, lpAllocInfo.dwHeight, 1, D3DUSAGE_RENDERTARGET, dm.Format, D3DPOOL_DEFAULT,
                FVideoTexture, @VideoHandle);
           { in the case we got a new handle -> for VMR9 and DVD playback e.g. }
           if Assigned (FNewHandle) then
              FNewHandle;
            if hr<>S_OK then
                exit;

...
und

Delphi-Quellcode:

procedure TGUIWindowVideo.NewHandle;
var
    lTextureD3D11: ID3D11Texture2D;
    tempResource11: ID3D11Resource;
    hr: Hresult;
begin
    FOffscreenTexture := nil;

    hr := FDeviceD11.OpenSharedResource(FFilterGraphDVD.Allocator.VideoHandle, ID3D11Resource, tempResource11);

    tempResource11.QueryInterface(ID3D11Texture2D, lTextureD3D11);
    tempResource11 := nil;
    hr := FDeviceD11.CreateShaderResourceView(lTextureD3D11, nil, FOffscreenTexture);
end;
Das Ergebnis hängt dabei

Da ich als nächstes nun die DVD-Navigation einbauen werde, bin ich schon gespannt worauf ich noch alles komm
Miniaturansicht angehängter Grafiken
cmc_dvd_test.jpg  
  Mit Zitat antworten Zitat