> Nem talalok olyan progit ami a 23.976 fps divx-et 25 fps-
en jatszana le.
A divx ugyebar egy avi codec, az avi fajlt pedig olyan
frame rate-tel kell lejatszani, ami bele vagyon irva,
kulonben gyorsabb/lassabb kepfolyamot fogsz latni, extrem
esetben burleszket vagy lassitott felvetelt. Ilyenkor a kep
es a hang is el szokott csuszni egymastol.
Ha ugy gondolod, hogy az avi-ban rossz frame rate van
bejegyezve, akkor azt allitgasd, es a lejatszo programok
mindig annyival fogjak lejatszani. Ez fuggetlen a geped
orajeletol. Ha a geped sebesseget egy kritikus hatar ala
viszed, akkor a lejatszo nem tudja tartani az eloirt frame
rate-et, es elkezd szaggatni, de nem ter el az avi altal
eloirt ertektol.
Pityu
|
udv midenkinek,
Hazifeladatkent egy microprocessor szimulatort kell irnom, ime a hibas reszlet
a kodbol:
public class Processor {
private short counter;
private int programSize;
...
public void changeCounter(short newValue) {
if(newValue<programSize) counter=newValue;
else {
// error handling
}
}
public void step() {
if(status==RUNNING) {
register=memory[counter];
switch(register) {
case 0: // no operation
changeCounter(counter+1);
break;
...
case 9: // halt
status=HALTED;
changeCounter(++counter);
break;
default: // invalid instruction
// error handling
}
}
}
}
a problema a kovetkezo: ha a changeCounter() method parametere counter+1, akkor
a
compiler azt mondja, hogy changeCounter(short) in Processor cannot be applied t
o (int)
ha viszont a parameter ++counter, akkor semmi baja sincsen. a changeCounter
method-nak az lenne a feladata, hogy illegalis memoria cim eseten egy megfelelo
hibauzenetet (exception) kuldjon, ergo nem akarom rogton novelni az erteket. S
egyszeruen halvany lila gozom sincs, hogy mit csinaltam rosszul, vagy hogy hogy
an tudnam
kijavitani. Ha a changeCounter-t modositom, hogy int parametere legyen, akkor m
eg az a
baja, hogy possible loss of precision, ugyhogy ugy tunik, hogy az sem megoldas.
Elore is koszi a valaszokat!
zsepi
|