Click here to Skip to main content
12,070,942 members (54,815 online)
   

Graphics

 
GeneralRe: Animation in borderless window Pin
Aleonis23-Oct-11 8:14
memberAleonis23-Oct-11 8:14 
QuestionXna object Transformation. Pin
AghaKhan22-Oct-11 21:56
memberAghaKhan22-Oct-11 21:56 
Questionfree or affordable software for the editing of the photo [modified] Pin
anthonybates11-Jul-11 19:06
memberanthonybates11-Jul-11 19:06 
AnswerRe: free or affordable software for the editing of the photo Pin
Drew Stainton11-Jul-11 19:38
memberDrew Stainton11-Jul-11 19:38 
QuestionGraphics Plugin for Liquidity Risk Software? Pin
StaceyL21-Jun-11 11:46
memberStaceyL21-Jun-11 11:46 
Jokei want to Pin
yexiaofeng18-Apr-11 23:05
memberyexiaofeng18-Apr-11 23:05 
Questionhai Pin
SR Baby31-Mar-11 23:32
memberSR Baby31-Mar-11 23:32 
QuestionProblem with compression of a DirectShow video filter Pin
428814-Jan-11 8:05
member428814-Jan-11 8: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 6:02
memberMaximilien11-Jan-11 6:02 
AnswerRe: [OpenGL/MFC/C++] backface transparency... Pin
jk chan14-Jan-11 5:42
memberjk chan14-Jan-11 5:42 
AnswerRe: [OpenGL/MFC/C++] backface transparency... Pin
parths19-Jan-11 3:49
memberparths19-Jan-11 3:49 
Questiontransparent using Fillpath Pin
transoft9-Jan-11 16:19
membertransoft9-Jan-11 16:19 
AnswerRe: transparent using Fillpath Pin
Richard MacCutchan10-Jan-11 0:28
mvpRichard MacCutchan10-Jan-11 0:28 
QuestionOpenGL rendering on desktop [modified] Pin
Tcpip200519-Dec-10 2:17
memberTcpip200519-Dec-10 2:17 
AnswerRe: OpenGL rendering on desktop Pin
parths22-Dec-10 23:28
memberparths22-Dec-10 23:28 
GeneralRe: OpenGL rendering on desktop Pin
Tcpip200524-Dec-10 3:06
memberTcpip200524-Dec-10 3:06 
AnswerRe: OpenGL rendering on desktop Pin
Drew Stainton30-Dec-10 13:46
memberDrew Stainton30-Dec-10 13:46 
GeneralRe: OpenGL rendering on desktop Pin
Tcpip200531-Dec-10 18:51
memberTcpip200531-Dec-10 18:51 
Questiontransparently blit a bitmap Pin
mike7521413-Dec-10 10:01
membermike7521413-Dec-10 10:01 
AnswerRe: transparently blit a bitmap Pin
LunaticFringe13-Dec-10 13:00
memberLunaticFringe13-Dec-10 13:00 
AnswerRe: transparently blit a bitmap Pin
jk chan27-Dec-10 2:00
memberjk chan27-Dec-10 2:00 
QuestionGraphics.FillPath( Brush, GraphicsPath ) does not fill a simple Path. Pin
WDI28-Oct-10 3:47
memberWDI28-Oct-10 3:47 
AnswerRe: Graphics.FillPath( Brush, GraphicsPath ) does not fill a simple Path. Pin
RaviRanjankr13-Dec-10 19:49
memberRaviRanjankr13-Dec-10 19:49 
Questiontool for real time graph plotting.. Pin
jainiraj27-Oct-10 2:21
memberjainiraj27-Oct-10 2:21 
AnswerCross Post! Pin
Henry Minute27-Oct-10 2:41
mvpHenry Minute27-Oct-10 2: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.


Advertise | Privacy | Mobile
Web02 | 2.8.160208.1 | Last Updated 25 Jan 2016
Copyright © CodeProject, 1999-2016
All Rights Reserved. Terms of Service
Layout: fixed | fluid