Prilikom pregledanja video formata (AM_MEDIA_TYPE) capture pina na video capture device-u u VIDEO_STREAM_CONFIG_CAPS postoje polja koja opisuju moguce capture formate (velicina capture "prozora" odnosno dimenzije video zapisa). Ukoliko se pogleda DirectX implementacija (ne znam da li je do DirectX-a ili konkretno do drajvera) odnosno propertypages za dati pin, on nudi neke "standardne" formate dimenzija capture-a. Postoji mnogo vise kombinacija koje se mogu izvuci iz gore navedenog ... Kako oni odredjuju "standardne" velicine?
Ja sam se opredelio za formate koji su 4:3 i padaju u ovu oblast ... evo koda:
int xmin = caps.MinOutputSize.cx;
int ymin = caps.MinOutputSize.cy;
int xmax = caps.MaxOutputSize.cx;
int ymax = caps.MaxOutputSize.cy;
int xstep = caps.OutputGranularityX;
int ystep = caps.OutputGranularityY;
int cnter = 0;
int cbpos = -1;
for(int i=xmin;i<=xmax;i+=xstep)
if((i*3)%4==0){
int ytest = (i*3)/4;
if(((ytest-ymin)%ystep==0)&&(ytest>=ymin)&&(ytest<=ymax)){
ComboBox4->Items->Add(IntToStr(i)+" x "+IntToStr(ytest));
ComboBox4->Enabled = true;
Label4->Enabled = true;
if((xdef==i)&&(ydef==ytest))
cbpos = cnter;
cnter+=1;
}
}
Ali se dalje desava sledece:
Ukoliko izaberem neki od formata koji su veci po dimenzijama od capture pin standardnog (352x288 ili tako nesto) bez problema mogu da ga setujem preko IAMMediaConfig -a ali kada rebildujem graph ako prvo renderujem preview pin na video renderer, javlja mi gresku da ne moze da izrenderuje capture pin na kompresor ... a ako prvo renderujem pri istom setovanju capture pin onda njega pusta ali mi posle javlja istu gresku za preview pin (oba postoje na capture device filteru).
Greska se ponavlja cak i ako stavim isti media format i za preview pin ...
Napominjem da sve rezolucije koje prave ovaj problem (cak i u GraphEditu - kada "prisluskuje" filter graph) nisu navedene u PropertyPages-ima za dati pin ...
(propertypages je isti u GraphEditu i u AMCap.exe koji dolazi kao demo uz DX9SDK).
Za "default" velicine nema problema ...
Jedini problem je zapravo bio u tome sto ja zelim da napravim sopstveni interface za setovanje capture-a a ne da koristim exposed property pages ....
Gde gresim? i u cemu je caka...
Kako da i ja dobijem te "standardne" velicine koje nudi DirectX? (neke su 4:3 neke 5:4, 11:9 pa cak i 22:17)???
P.S. proveravam sve greske i eventualne null pointere i ostalo i jedino mi vraca u datom slucaju gresku:No combination of intermediate filters could be found to make the connection.