AyaKoshigaya

Members
  • Content count

    62
  • Joined

  • Last visited

Community Reputation

122 Neutral

About AyaKoshigaya

  • Rank
    Member
  1. The structure of my game logic

    Would you explain the technique behind this a bit more? I know what you are doing, but not how.. but it sounds very interesting! Cheers, Aya
  2. The structure of my game logic

    Hi, [quote name='YogurtEmperor' timestamp='1317393027' post='4867581']The first one just sets up the memory manager, telling it how big to make the initial heap and the “true” indicates that the heap is growable.[/quote] could you explain this a bit further? What is your "Memory Manager" doing exactly? Does it somehow handle all the new/delete calls inside your engine? If yes, how does it do this? Thanks, Aya
  3. Videocards (DeckLink, dpsReality..)

    Thanks for your answer :) I know that, without any driver etc I can't access the card, but I thought, maybe there's a lib or something out there for videocards.. :) Aya
  4. Hi, we have some machins with a RGB-Monitor that's connected via Videocard (DeckLink and dpsReality). Does anyone know, how I can display an Image on this Monitor? (It's not usable as a normal monitor in Windows, and it's not connected to the Graphiccard.. It uses a n the special Videocard). In a Programm called "Fusion" it's possible to display sequences etc on this Monitor.. I asked them how they did it, and they said "We are using the SDK we got from DPS many years ago".. they gave me some contact adresses etc, but.. since the company had many buy-outs the last year, noone in the current company have the SDK... :( So, I need a way to display my images to this Monitor, but have no idea how to do this :( And... even if I get this SDK somehow.. I'd need a SDK for EVERY Videocard, right? Isn't there a way to support all cards at once? Don't they have any common interface? Help~~ Aya
  5. Hi, I have a big problem with Multisampling (GL_ARB_multisample). My Card (GeForce 7800 GTX) supports Multisampling (I can enable it in the Forceware-Options) and the GL_ARB_multisample is in the Extension string. But, when I try to find a PixelFormat that supports Multisampling, I can't find one... I tried the tool "OpenGL Extension Viewer" (realtech VR) to check this, and in the list of the available PixelFormats the multisampling is 0 everywhere.. :( I tried this with the new 93.81 driver and now reinstalled the old 77.77. But it didn't work on both. Hardware Informations: - GeForce 7800 GTX (Forceware 93.81 / 77.77) - WinXP MCE - 2 Monitors Dual Screen - Primary Monitor: 1920x1280 - Secondary Monitor: 1280x1024 - Extension: "GL_ARB_multisample" is in the Extensions-String. I also tried to set the resolution of the PrimaryMonitor to 1280x1024 but it was still not working :( Has anyone any Idea? Aya~
  6. Playing AVI Files using DirectShow

    Quote:Original post by Muhammad Haggag What are you trying to do? I want to control the Playback Speed etc all by myself, like I can do with VFW. So, if I want 10fps I call GrabFrame 10 times per second.. if I want 100fps I'll call it 100 times per sec (I handle DropFrames myself) In VFW this works very well (only bad thing about VFW is, it doesn't support all Codecs) Aya~
  7. Playing AVI Files using DirectShow

    Hi, ok it's working now.. I'm setting a Bool Variable before grabbing to false and after Grabbing to true.. so I am only grabbing when the last Grabbed Frame is finished :) But, it's not realy fast.. I never get 30fps this way :( I uploaded the Program so you can see yourself what I mean, just start it, select an AVI File and Press "Play" or hit "Step one Frame" very often.. it's not playing in realtime :( (Play start's the Timer that calls "Step one frame" 30 times per Second) http://www.koshigaya.de/misc/DirectDrawTest.rar Aya~
  8. Playing AVI Files using DirectShow

    Hi, ok I'm not sure if Frames are skipped, but the video isn't playing with a constant rate.. the first frames are fast and anything, and then suddenly it's taking a long time for one frame etc.. I can send you the testprogram later (when Im back at home), so you can see the effect yourself :) I'm calling the GrabFrame-Function via a Timer right now for testings. I think the problem may be, DirectDraw creates threads to grab the frame, and so the timer is way faster then the Grabbing what causes the skipped frames.. If this is the problem I think I can solve it by just check if I got the last frame before I grab the next one.. or is there any other way? (Can't test it right now) Aya~
  9. Playing AVI Files using DirectShow

    Hi, this is the function I call: function GrabFrame(Frames: Integer): PByte; var stopFrame, currentFrame: Int64; timeDelta, timePerFrame: Int64; ReferenceTimePerSecond: Int64; begin ReferenceTimePerSecond:=10000000; timePerFrame:=Round(ReferenceTimePerSecond / framesPerSecond); pSeeking.GetCurrentPosition(currentFrame); timeDelta:=timePerFrame * Frames; currentFrame:=currentFrame + timeDelta; stopFrame:=0; pSeeking.SetPositions(currentFrame, AM_SEEKING_AbsolutePositioning, stopFrame, AM_SEEKING_NoPositioning); Result:=nil; end; In my Test "Frames" is allways one, and framesPerSecond is 29.97 And then in the Callback of the BufferCB I just Copy the Mem to a Bitmap. Aya~
  10. Playing AVI Files using DirectShow

    Hi, oook, it's working now, thank's a lot!! *hugs* :) But I still have one more question, is there a way to disable the FrameDropping? If I grab Frames very fast some Frmaes are Skipped.. :( I need something like "Play as fast as possible" :) Aya~
  11. Playing AVI Files using DirectShow

    But, if I don't use the Null-Renderer a Window Pops-Up displaying the Video (the Grabber still works anyway).. but I don't want that window o.O
  12. Playing AVI Files using DirectShow

    Hi, thanks a lot! :) But, I'm a bit confuesed.. what do I have to change in my code to make it work? Do I only have to add these 3 lines? o.O Aya~
  13. Playing AVI Files using DirectShow

    Hi, have you found out anything? :| Aya~
  14. Playing AVI Files using DirectShow

    Hi, this is the complete Creation Block: var timePerFrame: Double; begin CoCreateInstance(CLSID_FilterGraph, nil, CLSCTX_INPROC, IID_IGraphBuilder, pGraph); CoCreateInstance(CLSID_SampleGrabber, nil, CLSCTX_INPROC_SERVER, IID_IBaseFilter, pGrabberF); CoCreateInstance(CLSID_NullRenderer, nil, CLSCTX_INPROC_SERVER, IID_IBaseFilter, pNull); pGraph.QueryInterface(IID_IMediaControl, pControl); pGraph.QueryInterface(IID_IMediaEvent, pEvent); pGraph.QueryInterface(IID_IMediaSeeking, pSeeking); pGraph.QueryInterface(IID_IMediaFilter, pFilter); pGraph.QueryInterface(IID_IBasicVideo, pVideo); pGrabberF.QueryInterface(IID_ISampleGrabber, pGrabber); pFilter.SetSyncSource(nil); pGraph.AddFilter(pGrabberF, 'Sample Grabber'); pGraph.AddFilter(pNull, 'Null Render'); ZeroMemory(@mType, SizeOf(AM_MEDIA_TYPE)); mType.majortype := MEDIATYPE_Video; mType.subtype := MEDIASUBTYPE_RGB24; pGrabber.SetMediaType(mType); pGraph.AddSourceFilter(Filename, 'Source', pSrc); ConnectFilters(pGraph, pSrc, pGrabberF); ConnectFilters(pGraph, pGrabberF, pNull); pGrabber.SetOneShot(false); pGrabber.SetBufferSamples(true); //If I Remove these 3 Lines... GrabberCB:=TSampleGrabberCB.Create; GrabberCB.Parent:=Self; pGrabber.SetCallback(GrabberCB, 1); //And add this one, it works //pControl.RenderFile(Filename); pSeeking.GetDuration(videoDuration); pControl.Pause; //Width is still -1 after get_VideoWidth.. Width:=-1; pVideo.get_VideoWidth(Width); ShowMessage(IntToStr(Width)); Anything wrong with it? Aya~ PS: Here are the Functions like ConnectFilters I use in the above code: function ConnectFilters(var pGraph: IGraphBuilder; var pSrc, pDest: IBaseFilter): HResult; var pOut: IPin; hr: HResult; begin if (pGraph = nil) or (pSrc = nil) or (pDest = nil) then begin Result:=E_POINTER; Exit; end; hr:=GetUnconnectedPin(pSrc, PINDIR_OUTPUT, pOut); if Failed(hr) then begin Result:=hr; Exit; end; hr:=ConnectFilters(pGraph, pOut, pDest); Result:=hr; end; function ConnectFilters(var pGraph: IGraphBuilder; var pOut: IPin; pDest: IBaseFilter): HResult; var pIn: IPin; hr: HResult; begin if (pGraph = nil) or (pOut = nil) or (pDest = nil) then begin Result:=E_POINTER; Exit; end; hr:=GetUnconnectedPin(pDest, PINDIR_INPUT, pIn); if Failed(hr) then begin Result:=hr; Exit; end; hr:=pGraph.Connect(pOut, pIn); Result:=hr; end; function GetUnconnectedPin(var pFilter: IBaseFilter; pinDir: PIN_DIRECTION; var ppPin: IPin): HResult; var hr: HResult; pTmp, pPin: IPin; pEnum: IEnumPins; thisPinDir: PIN_DIRECTION; begin ppPin:=nil; pEnum:=nil; pPin:=nil; hr:=pFilter.EnumPins(pEnum); if Failed(hr) then begin Result:=hr; Exit; end; while pEnum.Next(1, pPin, nil) = S_OK do begin pPin.QueryDirection(thisPinDir); if thisPinDir = pinDir then begin hr:=pPin.ConnectedTo(pTmp); if Failed(hr) then begin ppPin:=pPin; Result:=S_OK; Exit; end; end; end; Result:=E_FAIL; end;
  15. Playing AVI Files using DirectShow

    Hi, mhh.. it's weird.. I'm now Query'ing the IBaseVideo, but it seems like it's not working with the SampleGrabber.. pGraph.QueryInterface(IID_IBasicVideo, pVideo); If I try to get the VideoWith for example, I allways get 0 (it doesn't change the passed Variable). If I now remove these 3 Lines: GrabberCB:=TSampleGrabberCB.Create; GrabberCB.Parent:=Self; pGrabber.SetCallback(GrabberCB, 1); and load the File via pControl.RenderFile(Filename); it's working. Why doesn't it work with the SampleGrabber and the AddSourceFilter? Aya~