Dwayne Harris
3 years ago
5 changed files with 172 additions and 117 deletions
@ -1,10 +1,13 @@ |
|||||
all: build |
all: build |
||||
|
|
||||
build: |
build: |
||||
gcc -Wall main.c -lobs -lglut -lGL `pkg-config --cflags --libs gtk4` -o main |
|
||||
|
gcc -Wall obs.c -lobs -lglut -lGL `pkg-config --cflags --libs gtk+-3.0` -o obs |
||||
|
|
||||
|
gbuild: |
||||
|
c-for-go obs.yml |
||||
|
|
||||
run: build |
run: build |
||||
./main |
|
||||
|
./obs |
||||
|
|
||||
clean: |
clean: |
||||
rm main |
|
||||
|
rm ./obs |
@ -1,114 +0,0 @@ |
|||||
#include <stdio.h> |
|
||||
#include <GL/freeglut.h> |
|
||||
#include <gtk/gtk.h> |
|
||||
#include <gdk/gdkx.h> |
|
||||
#include <obs/obs.h> |
|
||||
|
|
||||
const int window_width = 1280; |
|
||||
const int window_height = 720; |
|
||||
Window xw; |
|
||||
|
|
||||
void |
|
||||
print_obs_version_string() |
|
||||
{ |
|
||||
const char* version = obs_get_version_string(); |
|
||||
printf("OBS version: %s\n", version); |
|
||||
} |
|
||||
|
|
||||
void |
|
||||
obs_render (void* param, |
|
||||
uint32_t cx, |
|
||||
uint32_t cy) |
|
||||
{ |
|
||||
obs_render_main_texture (); |
|
||||
} |
|
||||
|
|
||||
static void |
|
||||
activate (GtkApplication* app, |
|
||||
gpointer user_data) |
|
||||
{ |
|
||||
GtkWidget* window = gtk_application_window_new (app); |
|
||||
gtk_window_set_title (GTK_WINDOW(window), "OBS"); |
|
||||
gtk_window_set_default_size (GTK_WINDOW(window), window_width, window_height); |
|
||||
gtk_window_present (GTK_WINDOW(window)); |
|
||||
xw = gdk_x11_window_get_xid (gtk_widget_get_window(window)); |
|
||||
} |
|
||||
|
|
||||
void |
|
||||
render_sources(GtkApplication* app) |
|
||||
{ |
|
||||
GtkWidget* window = gtk_application_window_new (app); |
|
||||
gtk_window_set_title (GTK_WINDOW(window), "OBS - Sources"); |
|
||||
gtk_window_set_default_size (GTK_WINDOW(window), 500, 500); |
|
||||
gtk_window_present (GTK_WINDOW(window)); |
|
||||
} |
|
||||
|
|
||||
int |
|
||||
main(int argc, char** argv) |
|
||||
{ |
|
||||
GtkApplication* app; |
|
||||
obs_display_t* display; |
|
||||
int status; |
|
||||
|
|
||||
app = gtk_application_new("xyz.dwayne.obs", G_APPLICATION_FLAGS_NONE); |
|
||||
g_signal_connect(app, "activate", G_CALLBACK(activate), NULL); |
|
||||
|
|
||||
print_obs_version_string(); |
|
||||
|
|
||||
if (!obs_initialized()) |
|
||||
{ |
|
||||
if (!obs_startup("en-US", NULL, NULL)) |
|
||||
{ |
|
||||
printf("Failed to start OBS...\n"); |
|
||||
return 1; |
|
||||
} |
|
||||
|
|
||||
glutInit(&argc, argv); |
|
||||
|
|
||||
struct obs_video_info v; |
|
||||
struct obs_audio_info a; |
|
||||
|
|
||||
v.graphics_module = "libobs-opengl.so.0"; |
|
||||
v.fps_num = 30000; |
|
||||
v.fps_den = 1001; |
|
||||
v.base_width = window_width; |
|
||||
v.base_height = window_height; |
|
||||
v.output_width = window_width; |
|
||||
v.output_height = window_height; |
|
||||
v.output_format = VIDEO_FORMAT_NV12; |
|
||||
v.adapter = 0; |
|
||||
v.gpu_conversion = true; |
|
||||
v.colorspace = VIDEO_CS_601; |
|
||||
v.range = VIDEO_RANGE_PARTIAL; |
|
||||
v.scale_type = OBS_SCALE_BICUBIC; |
|
||||
|
|
||||
a.samples_per_sec = 44100; |
|
||||
a.speakers = SPEAKERS_STEREO; |
|
||||
|
|
||||
obs_reset_video (&v); |
|
||||
obs_reset_audio (&a); |
|
||||
} |
|
||||
|
|
||||
// struct gs_init_data info; |
|
||||
// info.cx = window_width; |
|
||||
// info.cy = window_height; |
|
||||
// info.window = NULL; // xw?? |
|
||||
// info.format = GS_BGRA; |
|
||||
// info.zsformat = GS_ZS_NONE; |
|
||||
|
|
||||
// display = obs_display_create (&info, 0); |
|
||||
// if (display == NULL) |
|
||||
// { |
|
||||
// printf("error creating display!\n"); |
|
||||
// } |
|
||||
|
|
||||
// obs_display_add_draw_callback (display, obs_render, NULL); |
|
||||
|
|
||||
status = g_application_run (G_APPLICATION (app), argc, argv); |
|
||||
|
|
||||
// obs_display_destroy (display); |
|
||||
obs_shutdown (); |
|
||||
g_object_unref (app); |
|
||||
|
|
||||
return status; |
|
||||
} |
|
@ -0,0 +1,141 @@ |
|||||
|
#include <stdio.h> |
||||
|
#include <GL/freeglut.h> |
||||
|
#include <gtk/gtk.h> |
||||
|
#include <gdk/gdkx.h> |
||||
|
#include <obs/obs.h> |
||||
|
|
||||
|
char version[256]; |
||||
|
const int window_width = 1280; |
||||
|
const int window_height = 720; |
||||
|
obs_display_t *display; |
||||
|
|
||||
|
const char * |
||||
|
get_version() |
||||
|
{ |
||||
|
sprintf (version, "Version: 0.0.1; OBS version: %s\n", obs_get_version_string ()); |
||||
|
return version; |
||||
|
} |
||||
|
|
||||
|
void |
||||
|
print_version_string() |
||||
|
{ |
||||
|
printf ("%s\n", get_version ()); |
||||
|
} |
||||
|
|
||||
|
void |
||||
|
obs_render (void *param, |
||||
|
uint32_t cx, |
||||
|
uint32_t cy) |
||||
|
{ |
||||
|
obs_render_main_texture (); |
||||
|
} |
||||
|
|
||||
|
void |
||||
|
render_input_types_window(GtkApplication *app, |
||||
|
GtkWidget *parent_window) |
||||
|
{ |
||||
|
GtkWidget *window, *box; |
||||
|
const char *input_type; |
||||
|
|
||||
|
printf("rendering input types\n"); |
||||
|
|
||||
|
window = gtk_application_window_new (app); |
||||
|
gtk_window_set_title (GTK_WINDOW (window), "OBS - Sources"); |
||||
|
gtk_window_set_default_size (GTK_WINDOW (window), 500, 500); |
||||
|
|
||||
|
box = gtk_list_box_new (); |
||||
|
for (int i = 0; obs_enum_input_types (i, &input_type); ++i) |
||||
|
{ |
||||
|
printf("input type: %s\n", input_type); |
||||
|
gtk_container_add (GTK_CONTAINER (box), gtk_label_new (input_type)); |
||||
|
} |
||||
|
|
||||
|
gtk_container_add ( GTK_CONTAINER (window), box); |
||||
|
gtk_widget_show_all (box); |
||||
|
gtk_window_present (GTK_WINDOW (window)); |
||||
|
} |
||||
|
|
||||
|
static void |
||||
|
activate (GtkApplication *app, |
||||
|
gpointer user_data) |
||||
|
{ |
||||
|
GtkWidget *window = gtk_application_window_new (app); |
||||
|
gtk_window_set_title (GTK_WINDOW (window), "OBS"); |
||||
|
gtk_window_set_default_size (GTK_WINDOW (window), window_width, window_height); |
||||
|
gtk_window_present (GTK_WINDOW (window)); |
||||
|
|
||||
|
struct gs_init_data info; |
||||
|
info.cx = window_width; |
||||
|
info.cy = window_height; |
||||
|
info.window.id = gdk_x11_window_get_xid (gtk_widget_get_window (window)); |
||||
|
info.window.display = gdk_window_get_display (gtk_widget_get_window (window)); |
||||
|
info.format = GS_BGRA; |
||||
|
info.zsformat = GS_ZS_NONE; |
||||
|
|
||||
|
display = obs_display_create (&info, 0); |
||||
|
if (display == NULL) |
||||
|
{ |
||||
|
printf("error creating display!\n"); |
||||
|
} |
||||
|
|
||||
|
obs_display_add_draw_callback (display, obs_render, NULL); |
||||
|
render_input_types_window (app, window); |
||||
|
} |
||||
|
|
||||
|
int |
||||
|
main(int argc, |
||||
|
char **argv) |
||||
|
{ |
||||
|
GtkApplication* app; |
||||
|
int status; |
||||
|
|
||||
|
app = gtk_application_new("xyz.dwayne.obs", G_APPLICATION_FLAGS_NONE); |
||||
|
g_signal_connect(app, "activate", G_CALLBACK(activate), NULL); |
||||
|
|
||||
|
print_version_string(); |
||||
|
|
||||
|
if (!obs_initialized()) |
||||
|
{ |
||||
|
if (!obs_startup("en-US", NULL, NULL)) |
||||
|
{ |
||||
|
printf("Failed to start OBS...\n"); |
||||
|
return 1; |
||||
|
} |
||||
|
|
||||
|
// This just initializes OpenGL |
||||
|
glutInit(&argc, argv); |
||||
|
|
||||
|
struct obs_video_info v; |
||||
|
struct obs_audio_info a; |
||||
|
|
||||
|
v.graphics_module = "libobs-opengl.so.0"; |
||||
|
v.fps_num = 30000; |
||||
|
v.fps_den = 1001; |
||||
|
v.base_width = window_width; |
||||
|
v.base_height = window_height; |
||||
|
v.output_width = window_width; |
||||
|
v.output_height = window_height; |
||||
|
v.output_format = VIDEO_FORMAT_NV12; |
||||
|
v.adapter = 0; |
||||
|
v.gpu_conversion = true; |
||||
|
v.colorspace = VIDEO_CS_601; |
||||
|
v.range = VIDEO_RANGE_PARTIAL; |
||||
|
v.scale_type = OBS_SCALE_BICUBIC; |
||||
|
|
||||
|
a.samples_per_sec = 44100; |
||||
|
a.speakers = SPEAKERS_STEREO; |
||||
|
|
||||
|
obs_reset_video (&v); |
||||
|
obs_reset_audio (&a); |
||||
|
} |
||||
|
|
||||
|
status = g_application_run (G_APPLICATION (app), argc, argv); |
||||
|
|
||||
|
if (display != NULL) |
||||
|
obs_display_destroy (display); |
||||
|
|
||||
|
obs_shutdown (); |
||||
|
g_object_unref (app); |
||||
|
|
||||
|
return status; |
||||
|
} |
@ -0,0 +1,14 @@ |
|||||
|
#ifndef OBS_H |
||||
|
#define OBS_H |
||||
|
|
||||
|
#ifdef __cplusplus |
||||
|
extern "C" |
||||
|
{ |
||||
|
#endif |
||||
|
|
||||
|
extern const char * get_version (void); |
||||
|
|
||||
|
#ifdef __cplusplus |
||||
|
} |
||||
|
#endif |
||||
|
#endif |
@ -0,0 +1,11 @@ |
|||||
|
--- |
||||
|
GENERATOR: |
||||
|
PackageName: obs-sample |
||||
|
PackageDescription: "Go bindings." |
||||
|
PackageLicense: "None" |
||||
|
Includes: |
||||
|
- obs.h |
||||
|
|
||||
|
PARSER: |
||||
|
IncludePaths: [/usr/include] |
||||
|
SourcesPaths: [obs.h] |
Write
Preview
Loading…
Cancel
Save
Reference in new issue