int kr_streamer_destroy (kr_streamer_t **streamer) { int c; if ((streamer == NULL) || (*streamer == NULL)) { return -1; } krad_vpx_encoder_destroy (&(*streamer)->vpx_enc); kr_mkv_destroy (&(*streamer)->mkv); kr_audioport_disconnect((*streamer)->audioport); kr_audioport_destroy ((*streamer)->audioport); kr_videoport_deactivate ((*streamer)->videoport); kr_videoport_destroy ((*streamer)->videoport); kr_client_destroy (&(*streamer)->client); krad_vorbis_encoder_destroy (&(*streamer)->vorbis_enc); for (c = 0; c < (*streamer)->params->channels; c++) { krad_ringbuffer_free ((*streamer)->audio_ring[c]); } krad_ringbuffer_free ((*streamer)->frame_ring); krad_framepool_destroy (&(*streamer)->framepool); free (*streamer); *streamer = NULL; return 0; }
int main (int argc, char *argv[]) { kr_client_t *kr; kr_videoport_t *kr_videoport; if (argc != 2) { if (argc > 2) { fprintf (stderr, "Only takes station argument.\n"); } else { fprintf (stderr, "No station specified.\n"); } return 1; } kr = kr_connect (argv[1]); if (kr == NULL) { fprintf (stderr, "Could not connect to %s krad radio daemon.\n", argv[1]); return 1; } kr_videoport = kr_videoport_create (kr); if (kr_videoport != NULL) { printf ("i worked real good\n"); } kr_videoport_set_callback (kr_videoport, videoport_process, NULL); kr_videoport_activate (kr_videoport); usleep (8000000); kr_videoport_deactivate (kr_videoport); kr_videoport_destroy (kr_videoport); kr_disconnect (kr); return 0; }
void kr_videoport_destroy (kr_videoport_t *kr_videoport) { if (kr_videoport->active == 1) { kr_videoport_deactivate (kr_videoport); } kr_videoport_destroy_cmd (kr_videoport->client); if (kr_videoport != NULL) { if (kr_videoport->sd != 0) { close (kr_videoport->sd); kr_videoport->sd = 0; } if (kr_videoport->kr_shm != NULL) { kr_shm_destroy (kr_videoport->kr_shm); kr_videoport->kr_shm = NULL; } free(kr_videoport); } }
int main (int argc, char *argv[]) { int ret; uint32_t width; uint32_t height; kr_client_t *client; kr_videoport_t *videoport; kr_udp_recvr_t *udp_recvr; int port; port = 3777; ret = 0; if (argc < 2) { if (argc > 2) { fprintf (stderr, "Only takes station argument.\n"); } else { fprintf (stderr, "No station specified.\n"); } return 1; } if (argc > 2) { port = atoi (argv[2]); } client = kr_client_create ("krad videoport client"); if (client == NULL) { fprintf (stderr, "Could not create KR client.\n"); return 1; } kr_connect (client, argv[1]); if (!kr_connected (client)) { fprintf (stderr, "Could not connect to %s krad radio daemon.\n", argv[1]); kr_client_destroy (&client); return 1; } if (kr_compositor_get_info_wait (client, &width, &height, NULL, NULL) != 1) { kr_client_destroy (&client); return 1; } if (kr_compositor_get_info_wait (client, &width, &height, NULL, NULL) != 1) { fprintf (stderr, "Could not get compositor info!\n"); kr_client_destroy (&client); return 1; } videoport = kr_videoport_create (client, INPUT); if (videoport == NULL) { fprintf (stderr, "Could not make videoport.\n"); kr_client_destroy (&client); return 1; } else { printf ("Working!\n"); } udp_recvr = calloc (1, sizeof (kr_udp_recvr_t)); udp_recvr->width = width; udp_recvr->height = height; udp_recvr->client = client; udp_recvr->videoport = videoport; kr_videoport_set_callback (videoport, videoport_process, udp_recvr); signal (SIGINT, signal_recv); signal (SIGTERM, signal_recv); kr_videoport_activate (videoport); kr_udp_recvr (udp_recvr, port); kr_videoport_deactivate (videoport); kr_videoport_destroy (videoport); kr_client_destroy (&client); if (udp_recvr->frames > 0) { printf ("Rendered %d frames!\n", udp_recvr->frames); } free (udp_recvr); if (ret == 0) { printf ("Worked!\n"); } return ret; }