Lösungsvorschläge | Client-Server | Desktop übertragen



  • Hi babelduo,

    hast du die Möglichkeit den Code mal online zu stellen, bzw. komplett zu posten?

    Mal sehen was sich da noch drehen lässt, interessiert mich das Thema.

    lg
    Dibmen



  • Hast du schon eine lösung für dein Problem mit den Farbwerten gefunden?



  • hola

    mal so ein gedanke:
    wie waere es wenn man alle pixel des letzten bildes mit dem aktuellen subdrahieren wuerde ? nicht veraenderte sektionen wuerden dann '0' sein. bei wenig aenderungen koennte man dann bestimmt mit ner RLE oder so ne gute kompression bekommen und man koennte den algo auch recht gut parallelisieren. muesste von der geschwindigkeit her um einiges besser sein. was meint ihr dazu ?

    Meep Meep



  • Das ändert nicht an der Tatsache, dass momentan die Farbwerte total durcheinander sind 😢

    Aber grundsätzlich...



  • @Meep Meep
    ja danke schonmal! darüber muss ich mir nun auch gedanken machen 🙂

    ich habe hier mein projekt mal hochgestellt... vllt. findet ihr ja den
    fehler mit den farbwerten - wär cool!

    http://www.babelduo.de/screen.rar
    (MFC-Anwendung Visual C++)

    danke schonmal 🙂

    p.s: wenn man Enter drückt gehts los... 😉



  • DC->SetPixel (x,y, (red<<16 | green<<8 | blue)<<3);
    

    😉



  • Er hat damit aber noch immer einen Farbstich im Bild.

    Hast du denn das Senden via Winsock schon hinbekommen?



  • Naja, zum Ausgeben solltest du das richtig hochskalieren.
    Also (r << 19) + (g << 10) + (b << 3) wenn r, g, b in 16 bit 5-6-5 vorliegen.



  • Vielleicht bin ich einfach zu doof, aber ich fummel mir dabei einen ab
    und erhalte, wie auch immer ich es anstelle, immer einen heftigen Farbstich
    im Bild.



  • Bei mir seh ich auch nur ein lustig eingefärbtes Bild,...aber wems reicht 😃



  • Was sagt der Threadersteller dazu? Gelöst?



  • blue = (*w) & 0x1f;
    			green = ((*w)>>5) & 0x1f;
    			red = ((*w)>>10) & 0x1f;
    
    			DC->SetPixel(x,y,RGB((red * 8), (green * 8), (blue * 8)));
    

    So, das funktioniert.
    Das 16 Bit Format wo Windows verwendet wenn man bloss BI_RGB angibt ist halt RGB555. Natürlich muss das dann noch Faktor 8 hochskaliert werden...

    Noch besser ist das, damit Weiss Weiss bleibt und nicht Grau wird:

    DC->SetPixel(x,y,RGB((red << 3) + (red >> 2), (green << 3) + (green >> 2), (blue << 3) + (blue >> 2)));
    


  • hustbaer schrieb:

    blue = (*w) & 0x1f;
    			green = ((*w)>>5) & 0x1f;
    			red = ((*w)>>10) & 0x1f;
    
    			DC->SetPixel(x,y,RGB((red * 8), (green * 8), (blue * 8)));
    

    [/cpp]

    Ich möchte ja nicht aufdringlich sein, aber das entspricht genau meinem Vorschlag sechs Beiträge darüber 😉

    PS: Eine unterschiedliche Gewichtung der Farbkomponenten ist IMHO nur für LC-Displays nötig.



  • Naja, er wollte ja auch den differenten Teil ermitteln.
    Dann muss er ja noch irgendwie eine Prüfung einbinden.

    Ich kann mir nicht vorstellen, dass das so einfach bzw. schnell geht
    und man das dann noch sinnvoll über Winsock senden kann. :xmas2:



  • hallo ^^

    ja danke euch schonmal sind ja viele vorschläge hier... allerdings
    habe ich bei den vorschlägen entweder einen blauen oder einen gelben
    farbstich?

    klappt denn ein vorschlag bei euch richtig?

    @Fruggle
    ja das mit über WinSock senden ist echt kompliziert 🙂
    den vorschlag mit dem differenten teil ermitteln (also altes bild
    - neue) find ich recht interessant...

    man könnte das ja erstmal offline testen und halt immer wenn man ne
    taste drückt (oder mit nem timer) wird nur der differente teil
    neu gezeichnet...

    wenn jemand auch lust hat da rumzuprobieren gerne - hier nochmal mein
    projekt:

    http://www.babelduo.de/screen.rar
    (MFC-Anwendung Visual C++)

    ich hab in den nächsten tagen wohl net so viel zeit...

    aber vielen dank schonmal an euch 🙂



  • Bleib am Ball. Das hört sich alles sehr interessant an.
    Werde mir das Projekt auch mal ansehen 🙂 Poste hier doch mal,
    wenn du weiter machst und bei dem Differenzieren bist.



  • babelduo, bist du doof? Ich habe es runtergeladen und ausprobiert und was ich zuletzt gepostet habe funktioniert. Nimm es oder lass es aber frag bloss nicht nochmal obs denn nu funktioniert. Probiers wenigstens aus du faules Stück *****.

    @Andromeda:

    Ich möchte ja nicht aufdringlich sein, aber das entspricht genau meinem Vorschlag sechs Beiträge darüber

    Äh, ja, richtig. Wenn man die Korrektur von "0x1" -> "0x1f" noch dazunimmt die vom ursprünglichen Code ausgehend noch notwendig ist, hier aber schon zu sehen war... dann schon 🙂



  • hustbaer schrieb:

    Äh, ja, richtig. Wenn man die Korrektur von "0x1" -> "0x1f" noch dazunimmt...

    Es war nur ein Tippfehler. Das sieht doch ein Blinder mit Krückstock 😉



  • In dem Rar-Archiv wo er hochgeladen hat ist dieser Tippfehler aber so drinnen -- egal ob Tippfehler oder nicht (ja, ich glaubs ja, so doof kann man nicht wirklich sein), funktionieren wirds mit 0x1 nicht 🙂

    p.S. @XTC: was ist daran eigentlich so interessant? UltraVNC gibts doch schon... ?!? 😉



  • @hustbaer:
    Sagmal, ähm, schlechte Laune ?^^


Anmelden zum Antworten