Hallo ich habe das mit dem sample grapper fertig. in c++ MS 6.0
ist der Thread noch aktuell ?
Tut mir leid, da hab ich im Moment nix. Was sagt denn der Google dazu ?
mfg robert
Hallo ich habe das mit dem sample grapper fertig. in c++ MS 6.0
ist der Thread noch aktuell ?
P: Meine Tochter (06.11.07) und https://www.carnine.de
M: Träumen hat nix mit Dummheit zu tun es ist die Möglichkeit neues zu erdenken
Na sicher doch. Nachdem im Forum vornehmlich von Sachen berichtet wird, dir NICHT funktionieren, wär's schon, wenn du uns mal an einem Erfolg teilhaben läßt. mfg robert
ja er ist noch aktuell,
ich blick da noch nicht ganz durch, ich hab jetzt den samplegrabber soweit dass er mir bmp's auf die platte schreibt. ich will jedoch dass ich gleichzeitig auch den livestream anschauen kann, also:
ich will z.B. 1mal pro sekunde ein Bitmap aber live alles sehen.
ich hab das mal mit dem SmartTree versucht, der ja angeblich den stream teilen kann, leider zeigt er immer nur den gegrabbten teil an.
ja, wie PicNick sagt: "wär's schön, wenn du uns mal an einem Erfolg teilhaben läßt"
Ok leider habe ich den source nicht dabei.
so das ihn jetzt nicht hochladen kann.
also bei mir läuft prv und bilder klauen und auf die platte allso gleich zeitig.
aber vorsicht dann tut die kiste nix anders mehr (AMD 1000) scsi
einteil des source habe ich schon hier veröffentlicht.
https://www.roboternetz.de/phpBB2/ze...rag.php?t=2486
seite vier aber das hat gunfire ja schon
eines mene ich mich noch dunkel zu erinnern. das schreiben und bilder klauen gleichzeitig ist abhänig vom treiber der karte.
gunfire schreibst du das bilder im grapper ?
P: Meine Tochter (06.11.07) und https://www.carnine.de
M: Träumen hat nix mit Dummheit zu tun es ist die Möglichkeit neues zu erdenken
ja im grabber, aber eigentlich will ich gar nicht schreiben sonder nur analysieren, das schreiben war nur mal so zum testen.
hm wenn du schon mit 1 cam probleme bekommst bin ich mal gespannt wieviel ressourcen dann 4 brauchen, aber das soll nicht das prob. sein.
mir ist nur das mit dem preview nicht klar, wär cool wenn du mal was hochladen könntest.
ja du bekommst noch was so bald ich wieder zugriff habe.
das mit dem grapper vergiss es das tut jetzt noch aber die vorschau
wird nur noch ruckeln.ausser dem gibt das drop frames.
Hast du schon mal mit threads programmier ?
du muß die mit new einfach ein array of byte im speicher an legen
und den pointer dann per nachricht an den anderen Thread schicken.
in dem kannst du dann alles mit den daten machen was du willst.
so mache ich das auch.
Alles klar ?
Gruß
P: Meine Tochter (06.11.07) und https://www.carnine.de
M: Träumen hat nix mit Dummheit zu tun es ist die Möglichkeit neues zu erdenken
Hallo,
hier sind source auszüge.
Aber nicht kommerziell nutzen
ich hoffe es hilft dirCode:STDMETHODIMP BufferCB( double SampleTime, BYTE * pBuffer, long BufferSize ) { if(g_bWantBimap) { CBitmapData* pBitmapData = new CBitmapData; if (!pBuffer) return E_POINTER; if( pBitmapData->lBufferSize < BufferSize) { if (pBitmapData->pBuffer) { delete [] pBitmapData->pBuffer; } pBitmapData->pBuffer = NULL; pBitmapData->lBufferSize = 0; } // Since we can't access Windows API functions in this callback, just // copy the bitmap data to a global structure for later reference. pBitmapData->dblSampleTime = SampleTime; // If we haven't yet allocated the data buffer, do it now. // Just allocate what we need to store the new bitmap. if (!pBitmapData->pBuffer) { pBitmapData->pBuffer = new BYTE[BufferSize]; pBitmapData->lBufferSize = BufferSize; } if( !pBitmapData->pBuffer ) { pBitmapData->lBufferSize = 0; return E_OUTOFMEMORY; } // Copy the bitmap data into our global buffer memcpy(pBitmapData->pBuffer, pBuffer, BufferSize); pBitmapData->Height = Height; pBitmapData->Width = Width; // Post a message to our application, telling it to come back // and write the saved data to a bitmap file on the user's disk. PostThreadMessage(m_pRoboControlThreadId, WM_CAPTURE_BITMAP, NULL, (long)pBitmapData); g_bWantBimap = FALSE; } return S_OK; } das ist die routine wo das bild verschickt wird class CBitmapData { public: CBitmapData(); virtual ~CBitmapData(); double dblSampleTime; long lBufferSize; BYTE *pBuffer; BITMAPINFOHEADER bih; long Width; long Height; }; hier ist das bimapt drin m_pGrabber->SetOneShot(FALSE); m_pGrabber->SetBufferSamples(TRUE); m_pGrabber->SetCallback(&g_CB, 1); // 0 = Use the SampleCB callback method. hier wird der grapper über geben und der Mode bestimmt // Jetzt den Framegrapper auf bauen if (!m_pGrabber) { hr = m_pGrabber.CoCreateInstance( CLSID_SampleGrabber ); } CComQIPtr< IBaseFilter, &IID_IBaseFilter > pGrabBase( m_pGrabber ); CMediaType VideoType; VideoType.SetType( &MEDIATYPE_Video ); VideoType.SetSubtype( &MEDIASUBTYPE_RGB24 ); hr = m_pGrabber->SetMediaType( &VideoType ); // shouldn't fail hr = pFg->AddFilter( pGrabBase, L"Grabber" ); // ende das baut den grapper zu sammen
wenn du mein test prg haben willst da sag bescheit
P: Meine Tochter (06.11.07) und https://www.carnine.de
M: Träumen hat nix mit Dummheit zu tun es ist die Möglichkeit neues zu erdenken
cool danke, soweit hab ichs im prinzip auch,
kannst du mir das testprog mal schicken? das mit dem preview ist da ja so auch net drin...
wär echt super. danke schonmal...
Hier das test Prg,
MS:Code:if( fMPEG2 ) { hr = pBuilder->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Stream, pVCap, pGrabBase, NULL); if( FAILED( hr ) ) { ErrMsg(TEXT("Cannot build MPEG2 preview graph!")); } } else { hr = pBuilder->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Interleaved, pVCap, pGrabBase, NULL); if(hr == VFW_S_NOPREVIEWPIN) { // preview was faked up for us using the (only) capture pin fPreviewFaked = TRUE; } else if(hr != S_OK) { // maybe it's DV? hr = pBuilder->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video, pVCap, pGrabBase, NULL); if(hr == VFW_S_NOPREVIEWPIN) { // preview was faked up for us using the (only) capture pin fPreviewFaked = TRUE; } else if(hr != S_OK) { ErrMsg(TEXT("This graph cannot preview!")); fPreviewGraphBuilt = FALSE; return FALSE; } } // // Render the closed captioning pin? It could be a CC or a VBI category pin, // depending on the capture driver // if(fCapCC) { hr = pBuilder->RenderStream(&PIN_CATEGORY_CC, NULL, pVCap, NULL, NULL); if(hr != NOERROR) { hr = pBuilder->RenderStream(&PIN_CATEGORY_VBI, NULL, pVCap, NULL, NULL); if(hr != NOERROR) { ErrMsg(TEXT("Cannot render closed captioning")); } } } }
// build the preview graph!
//
// !!! PLEASE NOTE !!! Some new WDM devices have totally separate capture
// and preview settings. An application that wishes to preview and then
// capture may have to set the preview pin format using IAMStreamConfig on the
// preview pin, and then again on the capture pin to capture with that format.
// In this sample app, there is a separate page to set the settings on the
// capture pin and one for the preview pin. To avoid the user
// having to enter the same settings in 2 dialog boxes, an app can have its own
// UI for choosing a format (the possible formats can be enumerated using
// IAMStreamConfig) and then the app can programmatically call IAMStreamConfig
P: Meine Tochter (06.11.07) und https://www.carnine.de
M: Träumen hat nix mit Dummheit zu tun es ist die Möglichkeit neues zu erdenken
Lesezeichen