mirror of
https://github.com/Tha14/toxic.git
synced 2024-11-22 20:33:02 +01:00
Refactoring to compliment OSX
This commit is contained in:
parent
619fdc1098
commit
e91aaf6c73
@ -186,7 +186,7 @@ void read_device_callback(const int16_t* captured, uint32_t size, void* data)
|
|||||||
|
|
||||||
void write_device_callback(uint32_t friend_number, const int16_t* PCM, uint16_t size)
|
void write_device_callback(uint32_t friend_number, const int16_t* PCM, uint16_t size)
|
||||||
{
|
{
|
||||||
if (friend_number >= 0 && CallControl.calls[friend_number].ttas)
|
if ( CallControl.calls[friend_number].ttas )
|
||||||
write_out(CallControl.calls[friend_number].out_idx, PCM, size, CallControl.audio_channels);
|
write_out(CallControl.calls[friend_number].out_idx, PCM, size, CallControl.audio_channels);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -294,10 +294,10 @@ void cmd_list_video_devices(WINDOW *window, ToxWindow *self, Tox *m, int argc, c
|
|||||||
VideoDeviceType type;
|
VideoDeviceType type;
|
||||||
|
|
||||||
if ( strcasecmp(argv[1], "in") == 0 ) /* Input devices */
|
if ( strcasecmp(argv[1], "in") == 0 ) /* Input devices */
|
||||||
type = input;
|
type = vdt_input;
|
||||||
|
|
||||||
else if ( strcasecmp(argv[1], "out") == 0 ) /* Output devices */
|
else if ( strcasecmp(argv[1], "out") == 0 ) /* Output devices */
|
||||||
type = output;
|
type = vdt_output;
|
||||||
|
|
||||||
else {
|
else {
|
||||||
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Invalid type: %s", argv[1]);
|
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Invalid type: %s", argv[1]);
|
||||||
@ -327,10 +327,10 @@ void cmd_change_video_device(WINDOW *window, ToxWindow *self, Tox *m, int argc,
|
|||||||
VideoDeviceType type;
|
VideoDeviceType type;
|
||||||
|
|
||||||
if ( strcmp(argv[1], "in") == 0 ) /* Input devices */
|
if ( strcmp(argv[1], "in") == 0 ) /* Input devices */
|
||||||
type = input;
|
type = vdt_input;
|
||||||
|
|
||||||
else if ( strcmp(argv[1], "out") == 0 ) /* Output devices */
|
else if ( strcmp(argv[1], "out") == 0 ) /* Output devices */
|
||||||
type = output;
|
type = vdt_output;
|
||||||
|
|
||||||
else {
|
else {
|
||||||
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Invalid type: %s", argv[1]);
|
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Invalid type: %s", argv[1]);
|
||||||
@ -371,10 +371,10 @@ void cmd_ccur_video_device(WINDOW *window, ToxWindow *self, Tox *m, int argc, ch
|
|||||||
VideoDeviceType type;
|
VideoDeviceType type;
|
||||||
|
|
||||||
if ( strcmp(argv[1], "in") == 0 ) /* Input devices */
|
if ( strcmp(argv[1], "in") == 0 ) /* Input devices */
|
||||||
type = input;
|
type = vdt_input;
|
||||||
|
|
||||||
else if ( strcmp(argv[1], "out") == 0 ) /* Output devices */
|
else if ( strcmp(argv[1], "out") == 0 ) /* Output devices */
|
||||||
type = output;
|
type = vdt_output;
|
||||||
|
|
||||||
else {
|
else {
|
||||||
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Invalid type: %s", argv[1]);
|
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Invalid type: %s", argv[1]);
|
||||||
@ -404,8 +404,8 @@ void cmd_ccur_video_device(WINDOW *window, ToxWindow *self, Tox *m, int argc, ch
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* TODO: check for failure */
|
/* TODO: check for failure */
|
||||||
close_video_device(input, this_call->vin_idx);
|
close_video_device(vdt_input, this_call->vin_idx);
|
||||||
open_video_device(input, selection, &this_call->vin_idx);
|
open_video_device(vdt_input, selection, &this_call->vin_idx);
|
||||||
register_video_device_callback(self->num, this_call->vin_idx, read_video_device_callback, &self->num);
|
register_video_device_callback(self->num, this_call->vin_idx, read_video_device_callback, &self->num);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -65,9 +65,12 @@ typedef struct VideoDevice {
|
|||||||
void* cb_data; /* Data to be passed to callback */
|
void* cb_data; /* Data to be passed to callback */
|
||||||
int32_t friend_number; /* ToxAV friend number */
|
int32_t friend_number; /* ToxAV friend number */
|
||||||
|
|
||||||
|
#ifdef __linux__
|
||||||
struct v4l2_format fmt;
|
struct v4l2_format fmt;
|
||||||
struct VideoBuffer *buffers;
|
struct VideoBuffer *buffers;
|
||||||
uint32_t n_buffers;
|
uint32_t n_buffers;
|
||||||
|
#else /* __OSX__ */
|
||||||
|
#endif
|
||||||
|
|
||||||
uint32_t ref_count;
|
uint32_t ref_count;
|
||||||
int32_t selection;
|
int32_t selection;
|
||||||
@ -660,10 +663,13 @@ void* video_thread_poll (void* arg) // TODO: maybe use thread for every input so
|
|||||||
XFlush(device->x_display);
|
XFlush(device->x_display);
|
||||||
free(img_data);
|
free(img_data);
|
||||||
|
|
||||||
|
#ifdef __linux__
|
||||||
if ( -1 == xioctl(device->fd, VIDIOC_QBUF, &buf) ) {
|
if ( -1 == xioctl(device->fd, VIDIOC_QBUF, &buf) ) {
|
||||||
unlock;
|
unlock;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
#else /* __OSX__ */
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
unlock;
|
unlock;
|
||||||
}
|
}
|
||||||
@ -692,7 +698,7 @@ VideoDeviceError close_video_device(VideoDeviceType type, uint32_t device_idx)
|
|||||||
if ( !device->ref_count ) {
|
if ( !device->ref_count ) {
|
||||||
|
|
||||||
if ( type == vdt_input ) {
|
if ( type == vdt_input ) {
|
||||||
|
#ifdef __linux__
|
||||||
enum v4l2_buf_type buf_type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
enum v4l2_buf_type buf_type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||||
if( -1 == xioctl(device->fd, VIDIOC_STREAMOFF, &buf_type) ) {}
|
if( -1 == xioctl(device->fd, VIDIOC_STREAMOFF, &buf_type) ) {}
|
||||||
|
|
||||||
@ -701,12 +707,18 @@ VideoDeviceError close_video_device(VideoDeviceType type, uint32_t device_idx)
|
|||||||
if ( -1 == munmap(device->buffers[i].start, device->buffers[i].length) ) {
|
if ( -1 == munmap(device->buffers[i].start, device->buffers[i].length) ) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#else /* __OSX__ */
|
||||||
|
#endif
|
||||||
|
|
||||||
close(device->fd);
|
close(device->fd);
|
||||||
XDestroyWindow(device->x_display, device->x_window);
|
XDestroyWindow(device->x_display, device->x_window);
|
||||||
XFlush(device->x_display);
|
XFlush(device->x_display);
|
||||||
XCloseDisplay(device->x_display);
|
XCloseDisplay(device->x_display);
|
||||||
pthread_mutex_destroy(device->mutex);
|
pthread_mutex_destroy(device->mutex);
|
||||||
|
#ifdef __linux__
|
||||||
free(device->buffers);
|
free(device->buffers);
|
||||||
|
#else /* __OSX__ */
|
||||||
|
#endif
|
||||||
free(device);
|
free(device);
|
||||||
} else {
|
} else {
|
||||||
vpx_img_free(&device->input);
|
vpx_img_free(&device->input);
|
||||||
|
Loading…
Reference in New Issue
Block a user