Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
nielsm
Jun 1, 2009



baby puzzle posted:

This example works, but the code is so old that it doesn't compile if I try to use it in my project because of deprecated code. It doesn't seem to use whatever the modern convention is: https://code.msdn.microsoft.com/windowsdesktop/C-Text-Speaker-37905ac5/sourcecode?fileId=45137&pathId=2037806931

It does do the basic parts, just wrapped in ATL conventions.

Removing all the fancy stuff it becomes something like this:
C++ code:
#include <sapi.h>
#include <sphelper.h>

int main()
{
  ISpVoice *tts = nullptr;
  ISpObjectToken *voice_token = nullptr;

  CoInitialize(nullptr);
  CoCreateInstance(CLSID_SpVoice, nullptr, CLSCTX_INPROC_SERVER, IID_ISpVoice, (LPVOID*)&tts);
  SpGetDefaultTokenFromCategoryId(SPCAT_VOICES, &voice_token, false);
  tts->SetVoice(voice_token);

  ULONG stream_number = 0;
  tts->Speak(L"farts", SPF_IS_NOT_XML | SPF_PURGEBEFORESPEAK, &stream_number);

  tts->Release();
  voice_token->Release();
  CoUninitialize();
}
You can add the SPF_ASYNC flag to the Speak() call to run the speech in the background, I took it off here since otherwise the speech object is torn down before speaking even starts in this example.

Adbot
ADBOT LOVES YOU

mystes
May 31, 2006

Edit: Never mind.

baby puzzle
Jun 3, 2011

I'll Sequence your Storm.
Thank you, but how do I get that to build? Including sphelper.h gives me this compile error. It uses a deprecated function GetVersionEx

1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\sphelper.h(1319): error C4996: 'GetVersionExW': was declared deprecated

somebody wrote a book about it here but I'M not using the function directly...

https://stackoverflow.com/questions/22303824/warning-c4996-getversionexw-was-declared-deprecated

nielsm
Jun 1, 2009



baby puzzle posted:

Thank you, but how do I get that to build? Including sphelper.h gives me this compile error. It uses a deprecated function GetVersionEx

1>C:\Program Files (x86)\Windows Kits\8.1\Include\um\sphelper.h(1319): error C4996: 'GetVersionExW': was declared deprecated

somebody wrote a book about it here but I'M not using the function directly...

https://stackoverflow.com/questions/22303824/warning-c4996-getversionexw-was-declared-deprecated

Which compiler/Visual Studio version are you using?

I put that code into speak.cpp, then opened the VS 2019 x64 Native Tools commandline, cd'd to where I put the file, and ran cl speak.cpp and got speak.exe produced with no errors.

baby puzzle
Jun 3, 2011

I'll Sequence your Storm.

nielsm posted:

Which compiler/Visual Studio version are you using?

I put that code into speak.cpp, then opened the VS 2019 x64 Native Tools commandline, cd'd to where I put the file, and ran cl speak.cpp and got speak.exe produced with no errors.

Do I maybe have an old version of C:\Program Files (x86)\Windows Kits\8.1\Include\um\sphelper.h ?

Microsoft Visual Studio Community 2015
Version 14.0.25431.01 Update 3
Microsoft .NET Framework
Version 4.7.03056

Visual C++ 2015 00322-20000-00000-AA329
Microsoft Visual C++ 2015

e: Ok will I guess I'm getting the latest VS...

baby puzzle fucked around with this message at 17:55 on Jul 9, 2019

baby puzzle
Jun 3, 2011

I'll Sequence your Storm.
I installed VS 2019 but I still get the same error.

Munkeymon
Aug 14, 2003

Motherfucker's got an
armor-piercing crowbar! Rigoddamndicu𝜆ous.



baby puzzle posted:

Do I maybe have an old version of C:\Program Files (x86)\Windows Kits\8.1\Include\um\sphelper.h ?

Does that mean you have the Windows 8.1 dev kit?

baby puzzle
Jun 3, 2011

I'll Sequence your Storm.

Munkeymon posted:

Does that mean you have the Windows 8.1 dev kit?

I also have a 10 folder alongside the 8.1 folder, but I'm not sure how to make it use that...

e: it seems I need to re-target from 8.1 to 10.. but that means i get to fix a lot of poo poo throughout the entire project.

I downloaded the latest windows SDK and switched my project to use the latest version.. but I still get the error:

1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\sphelper.h(1319,1): error C4996: 'GetVersionExW': was declared deprecated

10.0.18362.0 is the version that I just downloaded and installed.

baby puzzle fucked around with this message at 19:00 on Jul 9, 2019

nielsm
Jun 1, 2009



I have no idea why your environment is broken like that, but I put in some extra effort and removed the dependency on sphelper.h.

C++ code:
#include <objbase.h>
#include <sapi.h>

#pragma comment(lib, "ole32.lib")

ISpObjectToken *GetDefaultVoice()
{
	ISpObjectTokenCategory *voice_token_cat = nullptr;
	CoCreateInstance(CLSID_SpObjectTokenCategory, nullptr, CLSCTX_INPROC_SERVER, IID_ISpObjectTokenCategory, (LPVOID *)&voice_token_cat);
	voice_token_cat->SetId(SPCAT_VOICES, false);

	WCHAR *pszTokenId;
	voice_token_cat->GetDefaultTokenId(&pszTokenId);
	voice_token_cat->Release();

	ISpObjectToken *voice_token = nullptr;
	CoCreateInstance(CLSID_SpObjectToken, nullptr, CLSCTX_INPROC_SERVER, IID_ISpObjectToken, (LPVOID *)&voice_token);
	voice_token->SetId(nullptr, pszTokenId, false);
	CoTaskMemFree(pszTokenId);

	return voice_token;
}

int main()
{
  CoInitialize(nullptr);

  ISpVoice *tts = nullptr;
  CoCreateInstance(CLSID_SpVoice, nullptr, CLSCTX_INPROC_SERVER, IID_ISpVoice, (LPVOID*)&tts);

  ISpObjectToken *voice_token = GetDefaultVoice();
  tts->SetVoice(voice_token);

  ULONG stream_number = 0;
  tts->Speak(L"farts", SPF_IS_NOT_XML | SPF_PURGEBEFORESPEAK, &stream_number);

  tts->Release();
  voice_token->Release();
  CoUninitialize();
}
This is obviously lacking any error checks and will explode if anything fails. Adding error checks would probably triple the line count.


Edit: lol read some documentation and turns out you don't need all that to just use the default voice
C++ code:
#include <objbase.h>
#include <sapi.h>

#pragma comment(lib, "ole32.lib")

int main()
{
  CoInitialize(nullptr);

  ISpVoice *tts = nullptr;
  CoCreateInstance(CLSID_SpVoice, nullptr, CLSCTX_INPROC_SERVER, IID_ISpVoice, (LPVOID*)&tts);

  tts->Speak(L"farts", SPF_IS_NOT_XML | SPF_PURGEBEFORESPEAK, nullptr);

  tts->Release();
  CoUninitialize();
}

nielsm fucked around with this message at 20:06 on Jul 9, 2019

baby puzzle
Jun 3, 2011

I'll Sequence your Storm.
Oh I found this.. something called "SDL check" was on

https://stackoverflow.com/questions/20031597/error-c4996-received-when-compiling-sqlite-c-in-visual-studio-2013/20219932

Suspicious Dish
Sep 24, 2011

2020 is the year of linux on the desktop, bro
Fun Shoe
new ActiveXObject("SAPI.SpVoice").Speak("farts");

Put this in a file called speak.js and double click it

mystes
May 31, 2006

You also can probably use the UWP System::Speech::Synthesis api from a C++ desktop application using C++/winrt now. I would check if this works but I have to download 13 gigs of c++ functionality for visual studio over my slow internet connection first.

baby puzzle
Jun 3, 2011

I'll Sequence your Storm.

nielsm posted:

I have no idea why your environment is broken like that, but I put in some extra effort and removed the dependency on sphelper.h.

C++ code:
#include <objbase.h>
#include <sapi.h>

#pragma comment(lib, "ole32.lib")

ISpObjectToken *GetDefaultVoice()
{
	ISpObjectTokenCategory *voice_token_cat = nullptr;
	CoCreateInstance(CLSID_SpObjectTokenCategory, nullptr, CLSCTX_INPROC_SERVER, IID_ISpObjectTokenCategory, (LPVOID *)&voice_token_cat);
	voice_token_cat->SetId(SPCAT_VOICES, false);

	WCHAR *pszTokenId;
	voice_token_cat->GetDefaultTokenId(&pszTokenId);
	voice_token_cat->Release();

	ISpObjectToken *voice_token = nullptr;
	CoCreateInstance(CLSID_SpObjectToken, nullptr, CLSCTX_INPROC_SERVER, IID_ISpObjectToken, (LPVOID *)&voice_token);
	voice_token->SetId(nullptr, pszTokenId, false);
	CoTaskMemFree(pszTokenId);

	return voice_token;
}

int main()
{
  CoInitialize(nullptr);

  ISpVoice *tts = nullptr;
  CoCreateInstance(CLSID_SpVoice, nullptr, CLSCTX_INPROC_SERVER, IID_ISpVoice, (LPVOID*)&tts);

  ISpObjectToken *voice_token = GetDefaultVoice();
  tts->SetVoice(voice_token);

  ULONG stream_number = 0;
  tts->Speak(L"farts", SPF_IS_NOT_XML | SPF_PURGEBEFORESPEAK, &stream_number);

  tts->Release();
  voice_token->Release();
  CoUninitialize();
}
This is obviously lacking any error checks and will explode if anything fails. Adding error checks would probably triple the line count.


Edit: lol read some documentation and turns out you don't need all that to just use the default voice
C++ code:
#include <objbase.h>
#include <sapi.h>

#pragma comment(lib, "ole32.lib")

int main()
{
  CoInitialize(nullptr);

  ISpVoice *tts = nullptr;
  CoCreateInstance(CLSID_SpVoice, nullptr, CLSCTX_INPROC_SERVER, IID_ISpVoice, (LPVOID*)&tts);

  tts->Speak(L"farts", SPF_IS_NOT_XML | SPF_PURGEBEFORESPEAK, nullptr);

  tts->Release();
  CoUninitialize();
}

Well I've got the simple example working now. I should be good to go. Thank you.

mystes
May 31, 2006

I tried it and it's pretty easy to call the UWP speech synthesis api from a desktop console application, although it just gives you an audio stream and doesn't have a speech method. Here's an example of writing the result to a file (it's lovely because I don't know c++ or winrt and it copies the whole output into a vector which isn't ideal but you get the picture):
code:
#pragma comment(lib, "windowsapp")

#include <iostream>
#include <fstream>
#include <winrt/base.h>
#include <winrt/Windows.Media.Speechsynthesis.h>
#include <winrt/Windows.Storage.h>
#include <winrt/Windows.Storage.Streams.h>

using namespace winrt;
using namespace std;


int main()
{
	//Call api and get stream
	Windows::Media::SpeechSynthesis::SpeechSynthesizer s;
	auto stream = s.SynthesizeTextToStreamAsync(winrt::hstring(L"Hello world!")).get();
	
	//Copy to a vector and write to a file
	auto reader = Windows::Storage::Streams::DataReader(stream);
	reader.LoadAsync((uint32_t)stream.Size());
	std::vector<uint8_t> b;
	b.resize((uint32_t)stream.Size());
	reader.ReadBytes(b);
	ofstream fout("output.wav", ios::out | ios::binary);
	fout.write((char*)& b[0], b.size());
}
This is probably more trouble than it's worth in this case, but since it seems like the UWP apis are still supposed to be the future even if the windows store is pretty much dead and I wanted to see whether it was really easier to use the apis from desktop applications than it used to be.

You don't need a manifest file or anything and the only change you have to make from the default win32 c++ console application template is to enable c++17 if you haven't already, so it's not bad.

Scaramouche
Mar 26, 2001

SPACE FACE! SPACE FACE!

Suspicious Dish posted:

new ActiveXObject("SAPI.SpVoice").Speak("farts");

Put this in a file called speak.js and double click it

Thanks for getting me fired from my job at the anti-flatulence pharmaceuticals factory

General_Failure
Apr 17, 2005
I guess this fits here. I need some help with git.

On the following page they do something with git that doesn't work.

https://github.com/Seeed-Studio/ArduinoCore-k210

More specifically the following two lines.
code:
git clone [url]https://github.com/kendryte/kendryte-standalone-sdk[/url]
git clone [url]https://github.com/seeed-Studio/ArduinoCore-k210[/url] kendryte-standalone-sdk/src
The second one wants to put some extra directories and files into kendryte-standalone-sdk.
The trouble is git really doesn't like that.

I tried cloning to another directory then dumping the contents over the top. It didn't seem to work right.

Suggestions?

Pollyanna
Mar 5, 2005

Milk's on them.


I’ve got a RAM dump of some game console, say SNES. I know that a lot of games abstract common functionality to bytecode, and I want to try and detect it. This all basically boils down to detecting patterns in memory, e.g. seeing a lot of “7FXX” and noting it down as a common pattern.

Doing this by hand is tedious. Is there a way to program pattern-detection like this?

ultrafilter
Aug 23, 2007

It's okay if you have any questions.


There are similar problems in bioinformatics where someone's interested in looking for recurring substrings of DNA. Most of the time they have to worry about minor variations, but you don't. I'm not familiar enough with the field to know exactly what the right keywords are, but there's something out there for sure.

Bruegels Fuckbooks
Sep 14, 2004

Now, listen - I know the two of you are very different from each other in a lot of ways, but you have to understand that as far as Grandpa's concerned, you're both pieces of shit! Yeah. I can prove it mathematically.

Pollyanna posted:

I’ve got a RAM dump of some game console, say SNES. I know that a lot of games abstract common functionality to bytecode, and I want to try and detect it. This all basically boils down to detecting patterns in memory, e.g. seeing a lot of “7FXX” and noting it down as a common pattern.

Doing this by hand is tedious. Is there a way to program pattern-detection like this?

At least for bytecode specifically, I feel like it would be hard to recognize that a program is using bytecode from the contents of the RAM alone. A good example of old games that used bytecode were the old Koei games for the NES, which seemed to consist of an interpreter written in native 6502 and everything else was bytecode that was run through interpreter (which probably means the games were compiled from C rather than using hand written 6502 assembly). I would think you'd have to disassemble the game, and keep stepping through and seeing if there's a loop that gets called a lot that interprets the bytecode (e.g. you'd have something that looks like a program counter with an address pointing to data that you could infer is the bytecode, a lookup table that'd tell you what the instruction is and length of the args so you would know where the pc would point after evaluating the instruction assuming it's not a jump.) This is something you could probably figure out given enough time stepping through the code in an emulator, but not sure if it's something you could automate or just infer from looking at ram dumps.

Rocko Bonaparte
Mar 12, 2002

Every day is Friday!

Scaramouche posted:

Thanks for getting me fired from my job at the anti-flatulence pharmaceuticals factory

I was sent to MS TechEd one year when they were just starting to push Azure. In the keynote about working with it, they set up a demo cloud that would just stream out text of whatever was uploaded to it. They invited everybody with their laptops to hit the API. Somebody had managed for a good ten seconds before everybody else to have "Who farted?" at the top of a console window on a huge screen in this auditorium. I don't know who that person was, but they are a role model.

peepsalot
Apr 24, 2007

        PEEP THIS...
           BITCH!

Pollyanna posted:

I’ve got a RAM dump of some game console, say SNES. I know that a lot of games abstract common functionality to bytecode, and I want to try and detect it. This all basically boils down to detecting patterns in memory, e.g. seeing a lot of “7FXX” and noting it down as a common pattern.

Doing this by hand is tedious. Is there a way to program pattern-detection like this?
If the instructions are only 2 bytes wide, then you could do a pretty basic C/C++ program to loop through all uint16_t (only 65536 values to check) and count the occurences of each, then sort by most common.

Actually, don't literally loop through counting individual values(requiring looping through ram 65536 times), but make a size_t[65536] array and just increment the appropriate element for each 2byte offset in ram, so it requires just a single pass.

Rocko Bonaparte
Mar 12, 2002

Every day is Friday!
I was going to post a bit about byte code and possible patterns, but I've only really focused on stack-based stuff and that's not necessarily what you can even expect in an old game. If you want to see how diverse of a problem this ultimately can be, look at Python's byte code format versus something like SCUMMVM. In Python, you're looking at a stack-based VM with fairly small instructions. With SCUMMVM you're looking at much wider instructions that form something like a chain of helper function calls.

ToxicFrog
Apr 26, 2008


General_Failure posted:

I guess this fits here. I need some help with git.

On the following page they do something with git that doesn't work.

https://github.com/Seeed-Studio/ArduinoCore-k210

More specifically the following two lines.
code:
git clone [url]https://github.com/kendryte/kendryte-standalone-sdk[/url]
git clone [url]https://github.com/seeed-Studio/ArduinoCore-k210[/url] kendryte-standalone-sdk/src
The second one wants to put some extra directories and files into kendryte-standalone-sdk.
The trouble is git really doesn't like that.

I tried cloning to another directory then dumping the contents over the top. It didn't seem to work right.

Suggestions?

I have no idea what counts as "working right", but this should work in terms of getting the repo into the shape those commands are trying to do:

code:
git clone https://github.com/kendryte/kendryte-standalone-sdk
rm -rf kendryte-standalone-sdk/src
git clone https://github.com/seeed-Studio/ArduinoCore-k210 kendryte-standalone-sdk/src
cd kendryte-standalone-sdk
git checkout HEAD -- src/

baby puzzle
Jun 3, 2011

I'll Sequence your Storm.
Is there a reason to not ship pdb files with my game? I still have no idea how to decrypt a callstack from addresses alone.

nielsm
Jun 1, 2009



baby puzzle posted:

Is there a reason to not ship pdb files with my game? I still have no idea how to decrypt a callstack from addresses alone.

It makes it easier to reverse engineer your game. If that's not an issue for you, go ahead.
Otherwise set up so you can get minidump files from user crashes, you can load those into your debugger and examine the machine state at the time of crash.

(There is a way to sign up with MS to get crash data from the Windows Error Reporting service for your own software.)

csammis
Aug 26, 2003

Mental Institution
Is there a reason you wouldn't archive them yourself, tagged to associate with released builds, and get crash dumps from the field to correlate with your local copies of the PDB?


e: drat it nielsm and your ninja edit

baby puzzle
Jun 3, 2011

I'll Sequence your Storm.
Yes. I'm just too lazy to figure out how to do that.

nielsm
Jun 1, 2009



Now's the time to unlaze yourself.
Also, getting dump files can save you in situations where the stack has been smashed.

downout
Jul 6, 2009

Anyone have any recommendations for an HTML editor that "smartly" allows for editing html files? For example, when I use most html editors there will be a <p> element with some text inside and if i edit it the <p> tags disappear, or if I edit an <h1> element the h1 tags disappear. I'd like to be able to edit an html file but not actually change the markup, just the content.

fletcher
Jun 27, 2003

ken park is my favorite movie

Cybernetic Crumb

downout posted:

Anyone have any recommendations for an HTML editor that "smartly" allows for editing html files? For example, when I use most html editors there will be a <p> element with some text inside and if i edit it the <p> tags disappear, or if I edit an <h1> element the h1 tags disappear. I'd like to be able to edit an html file but not actually change the markup, just the content.

It sounds like you are looking for a WYSIWYG editor

SeaGoatSupreme
Dec 26, 2009
Ask me about fixed-gear bikes (aka "fixies")
I'm working on a little project to hustle my neices out of their Halloween candy in a few months. I've built up a dumb little turtle racing simulator in python but I'm having trouble with an onclick command for the for loop to actually start moving the drat turtles. I can have them run automatically, but that kills the time needed to get some betting going. What would be the proper syntax for tying a for loop to a click?

I realize this is tiny, small peanuts. I'm just getting started and I've been really enjoying myself.

TooMuchAbstraction
Oct 14, 2012

I spent four years making
Waves of Steel
Hell yes I'm going to turn my avatar into an ad for it.
Fun Shoe
What are you using for your user interface? Python on its own doesn't have any GUI widgets, so are you using Qt or a game engine or what?

SeaGoatSupreme
Dec 26, 2009
Ask me about fixed-gear bikes (aka "fixies")
I'm using trinket.io just to noodle around. It seems like basic python + some of the most popular modules.

There's an onclick function that I'm just completely failing to utilize and it's driving me up the wall.

The plan was to write different simple algorithms to change the average step size, then make them assign themselves to different turtles depending on which turtle I click, and run the race off that same click.

it feels like it should be incredibly easy, but I'm failing at even starting the race with a click. How am I going to take my neices' candy like this? I'm a 27 year old man I should be able to make a drat turtle move when I click it

TooMuchAbstraction
Oct 14, 2012

I spent four years making
Waves of Steel
Hell yes I'm going to turn my avatar into an ad for it.
Fun Shoe
I don't know anything about trinket.io. Can you paste your code?

baka kaba
Jul 19, 2003

PLEASE ASK ME, THE SELF-PROFESSED NO #1 PAUL CATTERMOLE FAN IN THE SOMETHING AWFUL S-CLUB 7 MEGATHREAD, TO NAME A SINGLE SONG BY HIS EXCELLENT NU-METAL SIDE PROJECT, SKUA, AND IF I CAN'T PLEASE TELL ME TO
EAT SHIT

SeaGoatSupreme posted:

I'm using trinket.io just to noodle around. It seems like basic python + some of the most popular modules.

There's an onclick function that I'm just completely failing to utilize and it's driving me up the wall.

The plan was to write different simple algorithms to change the average step size, then make them assign themselves to different turtles depending on which turtle I click, and run the race off that same click.

it feels like it should be incredibly easy, but I'm failing at even starting the race with a click. How am I going to take my neices' candy like this? I'm a 27 year old man I should be able to make a drat turtle move when I click it

do you have some kind of game loop that runs all the time, so as soon as you spin the thing up the race starts?

if so you could have some logic in there that checks a race_started variable, and if that's not True then it does nothing, otherwise it calculates the next moment of the race and updates the state (whatever you're doing now, basically). That way you can do all your config in the onclick handler functions, and when you click the turtle or whatever, it does what it needs to and sets race_started so the game loop will get crackin

El Generico
Feb 3, 2009

Birds revere you and consider you one of their own.

You are welcome in their holy places.
I need a course that teaches full stack Javascript, preferably where the final project is a real time chat app, I'm looking to build something similar to a web based MUD, but my Javascript/Node/etc is pretty lacklustre so I need to bone up. Anybody got any suggestions?

mystes
May 31, 2006

El Generico posted:

I need a course that teaches full stack Javascript, preferably where the final project is a real time chat app, I'm looking to build something similar to a web based MUD, but my Javascript/Node/etc is pretty lacklustre so I need to bone up. Anybody got any suggestions?
A full stack course is going to spend 99% of the time explaining stuff you don't need for something like that. You don't need to make a SPA, you don't need a framework, etc. You just need a webpage with a textbox and a few lines of JavaScript and then everything else can be in the server in the language of your choice.

If you look up websockets libraries for any language, they're literally going to have a chat example you can copy and paste the html/JavaScript from and just change the server side code.

El Generico
Feb 3, 2009

Birds revere you and consider you one of their own.

You are welcome in their holy places.

mystes posted:

A full stack course is going to spend 99% of the time explaining stuff you don't need for something like that. You don't need to make a SPA, you don't need a framework, etc. You just need a webpage with a textbox and a few lines of JavaScript and then everything else can be in the server in the language of your choice.

If you look up websockets libraries for any language, they're literally going to have a chat example you can copy and paste the html/JavaScript from and just change the server side code.

I'd rather already be learning too much rather than too little. Educating myself on this stuff is half or more of the point.

EDIT: I think I'm going with The Odin Project, actually, for the sake of me being a poor and also I like Ruby and I hate MongoDB

El Generico fucked around with this message at 19:40 on Jul 27, 2019

Pollyanna
Mar 5, 2005

Milk's on them.


We’re looking to replace Mongo with DocumentDB. As part of this, we want to do some performance testing against an endpoint backed alternately by Mongo or DocDB. We can do this by continually generating faked data and sending a request to the endpoint over and over.

We want a structured and easily replicable performance testing plan, such that we can get a good idea of our expected performance if/when we cut over. What tools are out there that can do this, and are recommended?

Adbot
ADBOT LOVES YOU

TheKingofSprings
Oct 9, 2012
I’m really desperate here, can someone take a look at at a GStreamer pipeline and tell me why it’s poo poo if I post it and what I’m getting on the receiver side? The two are talking briefly but there’s just no OpenGL popup :(

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply