1 #include <stdlib.h>
2 #include <stdint.h>
3 #include <stdio.h>
4 #include <unistd.h>
5 #include <stdbool.h>
6 
7 #include <arcan_shmif.h>
8 
9 #ifdef ENABLE_FSRV_AVFEED
arcan_frameserver_avfeed_run(const char * resource,const char * keyfile)10 void arcan_frameserver_avfeed_run(const char* resource, const char* keyfile)
11 #else
12 int main(int argc, char** argv)
13 #endif
14 {
15 	struct arg_arr* aarr;
16 	struct arcan_shmif_cont cont = arcan_shmif_open(
17 		SEGID_APPLICATION, SHMIF_ACQUIRE_FATALFAIL, &aarr);
18 
19 	struct arcan_shmif_initial* init;
20 	if (sizeof(struct arcan_shmif_initial)
21 		!= arcan_shmif_initial(&cont, &init)){
22 		printf("couldn't query initial primary segment properties\n");
23 #ifndef ENABLE_FSRV_AVFEED
24 		return EXIT_FAILURE;
25 #endif
26 	}
27 
28 	printf("initial properties:\n\
29 \twidth * height: %zu * %zu stride: %zu  pitch: %zu\n\
30 \taudio buffers: %d, audio buffer size: %d\n\
31 \tdensity: %f\n\
32 \tlang: %s, text_lang: %s, country: %s, UTF+%d\n\
33 \tlat: %f, long: %f, elev: %f\n\
34 disp_px_w: %zu, disp_px_h: %zu, disp_rgb: %d, disp_refresh: %d\n\
35 render_node: %d\n",
36 	cont.w, cont.h, cont.stride, cont.pitch,
37 	(int) cont.abuf_cnt, (int) cont.abufsize,
38 	init->density,
39 	init->lang, init->text_lang, init->country, init->timezone,
40 	init->latitude, init->longitude, init->elevation,
41 	init->display_width_px, init->display_height_px, init->rgb_layout, (int)init->rate,
42 	init->render_node);
43 
44 	for (size_t i = 0; i < 4; i++){
45 		printf("font[%zu] = .fd = %d, .hint = %d, "
46 			".size_mm = %f, .size_pt = %zu\n", i, init->fonts[i].fd,
47 			init->fonts[i].hinting, init->fonts[i].size_mm,
48 			SHMIF_PT_SIZE(init->density, init->fonts[i].size_mm));
49 	}
50 
51 #ifndef ENABLE_FSRV_AVFEED
52 	return EXIT_SUCCESS;
53 #endif
54 }
55