|
|
#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; }
|