Click here to Skip to main content
15,896,310 members
Home / Discussions / Graphics
   

Graphics

 
GeneralRe: Animation in borderless window Pin
Aleonis23-Oct-11 7:14
Aleonis23-Oct-11 7:14 
QuestionXna object Transformation. Pin
AghaKhan22-Oct-11 20:56
AghaKhan22-Oct-11 20:56 
Questionfree or affordable software for the editing of the photo [modified] Pin
anthonybates11-Jul-11 18:06
anthonybates11-Jul-11 18:06 
AnswerRe: free or affordable software for the editing of the photo Pin
Drew Stainton11-Jul-11 18:38
Drew Stainton11-Jul-11 18:38 
QuestionGraphics Plugin for Liquidity Risk Software? Pin
StaceyL21-Jun-11 10:46
StaceyL21-Jun-11 10:46 
Jokei want to Pin
yexiaofeng18-Apr-11 22:05
yexiaofeng18-Apr-11 22:05 
Questionhai Pin
SR Baby31-Mar-11 22:32
SR Baby31-Mar-11 22:32 
QuestionProblem with compression of a DirectShow video filter Pin
428814-Jan-11 7:05
428814-Jan-11 7:05 
I'm experiencing problems in setting compression parameters for a directshow video filter for a video and audio grabbed from a usb webcam.

The code I am using (adapted from various websites on the internet) is the following (removed error checking to improve readability):

//... various code before
hr=m_pGraph->AddFilter(m_pVidDeviceFilter,L"Vid Capture Filter");
hr=m_pGraph->AddFilter(m_pAudDeviceFilter,L"Aud Capture Filter");

hr = CoCreateInstance(CLSID_WMAsfWriter,NULL,CLSCTX_INPROC_SERVER,
                  IID_IBaseFilter, (void **) &m_pWMASFWritter);



//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// !!! Try to add compression from now on !!!!

DWORD dwBitRate = 2670000; // I tried almost everything here
DWORD dwQuality = 50; // in range[0-100]
DWORD dwSecPerKey = 5000;

// Initialize a new Profile Manager
IWMProfileManager* pIPM = 0;
WMCreateProfileManager(&pIPM);

// Create a new empty profile
IWMProfile* pIProf = 0;
pIPM->CreateEmptyProfile(WMT_VER_9_0,&pIProf);
pIProf->SetName(L"Window Media Video 9 Profile");
pIProf->SetDescription (L"Window Media Video 9 Custom Encoding");

// Create a new video stream
IWMStreamConfig* pVideoStream = 0;
pIProf->CreateNewStream(WMMEDIATYPE_Video,&pVideoStream);

pVideoStream->SetStreamName(L"videostream");;
pVideoStream->SetConnectionName(L"video");
pVideoStream->SetBitrate(662144); // This causes problems
pVideoStream->SetBufferWindow(3000);
pVideoStream->SetStreamNumber(1);

IWMVideoMediaProps* pVideoMediaProps = 0;

// Get this Interface from pVideoStream...
hr = pVideoStream->QueryInterface(IID_IWMMediaProps, (void**)&pVideoMediaProps);

WM_MEDIA_TYPE sMediaType;
WMVIDEOINFOHEADER sVideoInfoHeader;
memset(&sMediaType, 0, sizeof(sMediaType));
sMediaType.majortype = WMMEDIATYPE_Video;
sMediaType.subtype = WMMEDIASUBTYPE_MPEG2_VIDEO;
sMediaType.bFixedSizeSamples = FALSE;
sMediaType.bTemporalCompression = TRUE;
sMediaType.formattype = WMFORMAT_VideoInfo;
sMediaType.cbFormat = sizeof(WMVIDEOINFOHEADER);
sMediaType.pbFormat = (BYTE *)&sVideoInfoHeader;

// Setup the Video Info Header
memset(&sVideoInfoHeader, 0, sizeof(sVideoInfoHeader));
sVideoInfoHeader.rcSource.left = 0;
sVideoInfoHeader.rcSource.top = 0;
sVideoInfoHeader.rcSource.right = 352;
sVideoInfoHeader.rcSource.bottom = 240;
sVideoInfoHeader.rcTarget.left = 0;
sVideoInfoHeader.rcTarget.top = 0;
sVideoInfoHeader.rcTarget.right = 352;
sVideoInfoHeader.rcTarget.bottom = 240;
sVideoInfoHeader.dwBitRate = 262144;
sVideoInfoHeader.AvgTimePerFrame = 333667; // (1/29.97) in 100-ns units

sVideoInfoHeader.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
sVideoInfoHeader.bmiHeader.biWidth = 352;
sVideoInfoHeader.bmiHeader.biHeight = 240;
sVideoInfoHeader.bmiHeader.biPlanes = 1;
sVideoInfoHeader.bmiHeader.biBitCount = 24;
sVideoInfoHeader.bmiHeader.biCompression = MAKEFOURCC(0xe4,0x36,0xeb,0x83);
sVideoInfoHeader.bmiHeader.biSizeImage = 0;
sVideoInfoHeader.bmiHeader.biXPelsPerMeter = 0;
sVideoInfoHeader.bmiHeader.biYPelsPerMeter = 0;
sVideoInfoHeader.bmiHeader.biClrUsed = 0;
sVideoInfoHeader.bmiHeader.biClrImportant = 0;

// Set the VideoMediaProps for this Stream
pVideoMediaProps->SetMediaType(&sMediaType);
// pVideoMediaProps->SetMaxKeyFrameSpacing(1000000);
// pVideoMediaProps->SetQuality(100);
pVideoMediaProps->Release();


hr = pIProf->AddStream(pVideoStream); ////// hr IS ALWAYS NS_E_INVALID_STREAM HERE!! PROBLEM!

if (hr == NS_E_INVALID_STREAM)
{

    // Here the problem!


}

// Set the profile for the writer
CComQIPtr<IConfigAsfWriter2> pConfigWriter;
pConfigWriter = m_pWMASFWritter;

hr = pConfigWriter->SetParam(AM_CONFIGASFWRITER_PARAM_DONTCOMPRESS, FALSE, 0);
hr = pConfigWriter->ConfigureFilterUsingProfile(pIProf);



//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// !!! End of compression code... continue with streaming/networking code.. !!!

hr=m_pGraph->AddFilter(m_pWMASFWritter,L"ASF Writter");

hr = m_pWMASFWritter->QueryInterface( IID_IFileSinkFilter, (void**)&m_pFileSinkFilter );

hr = m_pFileSinkFilter->SetFileName(L"C:\\test.wmv", NULL);

//.... etc....


Can someone point me in the right direction please?
---

Question[OpenGL/MFC/C++] backface transparency... Pin
Maximilien11-Jan-11 5:02
Maximilien11-Jan-11 5:02 
AnswerRe: [OpenGL/MFC/C++] backface transparency... Pin
jk chan14-Jan-11 4:42
jk chan14-Jan-11 4:42 
AnswerRe: [OpenGL/MFC/C++] backface transparency... Pin
parths19-Jan-11 2:49
parths19-Jan-11 2:49 
Questiontransparent using Fillpath Pin
transoft9-Jan-11 15:19
transoft9-Jan-11 15:19 
AnswerRe: transparent using Fillpath Pin
Richard MacCutchan9-Jan-11 23:28
mveRichard MacCutchan9-Jan-11 23:28 
QuestionOpenGL rendering on desktop [modified] Pin
Tcpip200519-Dec-10 1:17
Tcpip200519-Dec-10 1:17 
AnswerRe: OpenGL rendering on desktop Pin
parths22-Dec-10 22:28
parths22-Dec-10 22:28 
GeneralRe: OpenGL rendering on desktop Pin
Tcpip200524-Dec-10 2:06
Tcpip200524-Dec-10 2:06 
AnswerRe: OpenGL rendering on desktop Pin
Drew Stainton30-Dec-10 12:46
Drew Stainton30-Dec-10 12:46 
GeneralRe: OpenGL rendering on desktop Pin
Tcpip200531-Dec-10 17:51
Tcpip200531-Dec-10 17:51 
Questiontransparently blit a bitmap Pin
mike7521413-Dec-10 9:01
mike7521413-Dec-10 9:01 
AnswerRe: transparently blit a bitmap Pin
LunaticFringe13-Dec-10 12:00
LunaticFringe13-Dec-10 12:00 
AnswerRe: transparently blit a bitmap Pin
jk chan27-Dec-10 1:00
jk chan27-Dec-10 1:00 
QuestionGraphics.FillPath( Brush, GraphicsPath ) does not fill a simple Path. Pin
WDI28-Oct-10 2:47
WDI28-Oct-10 2:47 
AnswerRe: Graphics.FillPath( Brush, GraphicsPath ) does not fill a simple Path. Pin
RaviRanjanKr13-Dec-10 18:49
professionalRaviRanjanKr13-Dec-10 18:49 
Questiontool for real time graph plotting.. Pin
jainiraj27-Oct-10 1:21
jainiraj27-Oct-10 1:21 
AnswerCross Post! Pin
Henry Minute27-Oct-10 1:41
Henry Minute27-Oct-10 1:41 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.