add stream discovery and receiving
This commit is contained in:
@@ -1,6 +1,27 @@
|
|||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
const omt = @cImport(@cInclude("libomt.h"));
|
const omt = @cImport(@cInclude("libomt.h"));
|
||||||
|
|
||||||
|
fn discoverStream() ?[*c]u8 {
|
||||||
|
var discovery_count: i32 = 0;
|
||||||
|
|
||||||
|
while (discovery_count == 0) {
|
||||||
|
const discovered = omt.omt_discovery_getaddresses(&discovery_count);
|
||||||
|
std.log.info("Found {} streams:", .{discovery_count});
|
||||||
|
|
||||||
|
const count: usize = @intCast(discovery_count);
|
||||||
|
for (0..count) |i| {
|
||||||
|
const name = discovered[i];
|
||||||
|
std.log.info(" {s}", .{name});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (discovery_count > 0) {
|
||||||
|
return discovered[0];
|
||||||
|
}
|
||||||
|
std.Thread.sleep(1000 * 1000 * 1000);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
pub fn main() !void {
|
pub fn main() !void {
|
||||||
// var gpa = std.heap.GeneralPurposeAllocator(.{}){};
|
// var gpa = std.heap.GeneralPurposeAllocator(.{}){};
|
||||||
// const allocator = gpa.allocator();
|
// const allocator = gpa.allocator();
|
||||||
@@ -8,16 +29,16 @@ pub fn main() !void {
|
|||||||
std.log.info("Receiving...", .{});
|
std.log.info("Receiving...", .{});
|
||||||
omt.omt_setloggingfilename("omtrecvtest.log");
|
omt.omt_setloggingfilename("omtrecvtest.log");
|
||||||
|
|
||||||
var found_address_count: i32 = 0;
|
const stream = discoverStream() orelse undefined;
|
||||||
_ = omt.omt_discovery_getaddresses(&found_address_count);
|
|
||||||
|
|
||||||
std.log.info("Found {d} omt addresses\n", .{found_address_count});
|
// TODO: How to coerce C string array into something printable again?
|
||||||
|
// std.log.info("Listening to {s}", @as([*:0]u8, stream));
|
||||||
|
|
||||||
const receiver_flags = omt.OMTFrameType_Video | omt.OMTFrameType_Audio | omt.OMTFrameType_Metadata;
|
const receiver_flags = omt.OMTFrameType_Video | omt.OMTFrameType_Audio | omt.OMTFrameType_Metadata;
|
||||||
const receiver = omt.omt_receive_create(
|
const receiver = omt.omt_receive_create(
|
||||||
"pop-os (Omtoy Sender)",
|
stream,
|
||||||
receiver_flags,
|
receiver_flags,
|
||||||
omt.OMTPreferredVideoFormat_UYVYorUYVAorP216orPA16,
|
omt.OMTPreferredVideoFormat_UYVYorBGRA,
|
||||||
0,
|
0,
|
||||||
);
|
);
|
||||||
defer omt.omt_receive_destroy(receiver);
|
defer omt.omt_receive_destroy(receiver);
|
||||||
|
|||||||
@@ -1,6 +1,18 @@
|
|||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
const omt = @cImport(@cInclude("libomt.h"));
|
const omt = @cImport(@cInclude("libomt.h"));
|
||||||
|
|
||||||
|
fn printDiscovery() void {
|
||||||
|
var discovery_count: i32 = 0;
|
||||||
|
const discovered = omt.omt_discovery_getaddresses(&discovery_count);
|
||||||
|
std.log.info("Found {} streams:", .{discovery_count});
|
||||||
|
|
||||||
|
const count: usize = @intCast(discovery_count);
|
||||||
|
for (0..count) |i| {
|
||||||
|
const name = discovered[i];
|
||||||
|
std.log.info(" {s}", .{name});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn main() !void {
|
pub fn main() !void {
|
||||||
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
|
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
|
||||||
const allocator = gpa.allocator();
|
const allocator = gpa.allocator();
|
||||||
@@ -11,7 +23,9 @@ pub fn main() !void {
|
|||||||
const sender = omt.omt_send_create("Omtoy Sender", omt.OMTQuality_Default) orelse undefined;
|
const sender = omt.omt_send_create("Omtoy Sender", omt.OMTQuality_Default) orelse undefined;
|
||||||
defer omt.omt_send_destroy(sender);
|
defer omt.omt_send_destroy(sender);
|
||||||
|
|
||||||
std.log.info("Sender created", .{});
|
printDiscovery();
|
||||||
|
|
||||||
|
std.log.info("Sender created: Omtoy Sender", .{});
|
||||||
|
|
||||||
{
|
{
|
||||||
var sender_info = std.mem.zeroes(omt.OMTSenderInfo);
|
var sender_info = std.mem.zeroes(omt.OMTSenderInfo);
|
||||||
@@ -93,6 +107,7 @@ pub fn main() !void {
|
|||||||
// send 10000 frames
|
// send 10000 frames
|
||||||
while (frame_count < 10000) : (frame_count += 1) {
|
while (frame_count < 10000) : (frame_count += 1) {
|
||||||
@memcpy(frame_buffer, content);
|
@memcpy(frame_buffer, content);
|
||||||
|
|
||||||
// TODO: copy the white line over here
|
// TODO: copy the white line over here
|
||||||
line_position += stride * 2;
|
line_position += stride * 2;
|
||||||
if (line_position >= video_frame.DataLength) {
|
if (line_position >= video_frame.DataLength) {
|
||||||
|
|||||||
Reference in New Issue
Block a user