summaryrefslogtreecommitdiff
path: root/client/player.cc
diff options
context:
space:
mode:
Diffstat (limited to 'client/player.cc')
-rw-r--r--client/player.cc32
1 files changed, 27 insertions, 5 deletions
diff --git a/client/player.cc b/client/player.cc
index a8f6152..5ee0ccd 100644
--- a/client/player.cc
+++ b/client/player.cc
@@ -54,13 +54,35 @@ void Player::show_frame()
fprintf(stderr, "Frame!%d\n", num++);
frame = decoder->getFrame();
- if(!frame) return;
-
- dvdecoder.decode(frame);
- free(frame);
+ if(frame) {
+ dvdecoder.decode(frame);
+ free(frame);
+ }
render.width = widget->width();
render.height = widget->height();
render.display(WIDTH, HEIGHT);
-
}
+
+//Hmm ... is this how it should work?
+void Player::getScreenShot(QImage *image)
+{
+ double R, G, B;
+ double Y, U, V;
+
+ char *yuv = render.getDisplayData();
+
+ for(int x = 0; x < WIDTH; x++) {
+ for(int y = 0; y < HEIGHT; y++) {
+ Y = yuv[(x + y * WIDTH)];
+ U = yuv[(x + y * WIDTH)];
+ V = yuv[(x + y * WIDTH)];
+
+ R = Y + 1.4075 * (V - 128);
+ G = Y - (0.3455 * (U - 128)) - (0.7169 * (V - 128));
+ B = Y + 1.7790 * (U - 128);
+ // QRgb qRgb((unsigned int)R,(unsigned int)G,(unsigned int)B);
+ image->setPixel(x, y, qRgb((unsigned int)R,(unsigned int)G,(unsigned int)B));
+ }
+ }
+ }