Added pixelflut client code
This commit is contained in:
parent
16f41a5298
commit
4e5d910e5b
2 changed files with 20 additions and 7 deletions
15
pixelflut.c
15
pixelflut.c
|
|
@ -9,6 +9,17 @@
|
|||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
|
||||
static uint8_t *images[2048] = { 0 };
|
||||
static int image_count = 0;
|
||||
|
||||
int store_image(const uint8_t *img, int w, int h) {
|
||||
if (image_count >= sizeof(images)/sizeof(images[0]))
|
||||
return -1;
|
||||
images[image_count] = malloc(w*h*4);
|
||||
memcpy(images[image_count], img, w*h*4);
|
||||
return image_count++;
|
||||
}
|
||||
|
||||
#define PIXEL_FORMAT "PX %zd %zd %02x%02x%02x\n"
|
||||
int cct(const char *target, int port) {
|
||||
printf("Reconnecting %s:%d\n", target, port);
|
||||
|
|
@ -35,7 +46,7 @@ int cct(const char *target, int port) {
|
|||
return sockfd;
|
||||
}
|
||||
|
||||
int sendframe(int fd, uint8_t *img, int w, int h, int ox, int oy) {
|
||||
int sendframe(int fd, int idx, int w, int h, int ox, int oy) {
|
||||
static unsigned long fcnt=0;
|
||||
printf("frame %lu %dx%d @pos %dx%d\n", fcnt++, w, h, ox, oy);
|
||||
int fmtlen = snprintf(NULL, 0, PIXEL_FORMAT, (size_t)1000, (size_t)1000, 0xff, 0xff, 0xff);
|
||||
|
|
@ -47,7 +58,7 @@ int sendframe(int fd, uint8_t *img, int w, int h, int ox, int oy) {
|
|||
char *p = out;
|
||||
for (size_t x=0; x<w; x++) {
|
||||
for (size_t y=0; y<h; y++) {
|
||||
uint8_t *px = img + (y*w + x)*4;
|
||||
uint8_t *px = images[idx] + (y*w + x)*4;
|
||||
uint8_t r = px[0], g = px[1], b = px[2], a = px[3];
|
||||
if (a != 255)
|
||||
continue;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue