The Official Status Thread
-
@flabdablet said in The Official Status Thread:
@boomzilla Fucking hell, Obama even managed to lower the incidence of cancer. Is there nothing that man can't do?
Run round and round in circles without getting dizzy?
-
@Rhywden And just so everybody understands: This means that you guys can keep on "debating" in your troll threads. I don't care anymore. I won't see them on the main page and I certainly won't click on any notifications.
It simply was one unneeded Godwin too many. I'm not angry, I am just tired of that shit.
-
@Rhywden said in The Official Status Thread:
It simply was one unneeded Godwin too many. I'm not angry, I am just tired of that shit.
It isn't a Godwin when you're talking about literal Nazis.
Also that isn't what Godwin is.
Also presenting a screenshot with no context is-- well, okay, that's par for the course for the forum.
-
Status: Installing PHP 7 for IIS on my laptop because it's the fastest way I can think of to validate tens of thousands of data rows without creating a massive drain on the SQL development server.
Mini-WTF: The Web Platform Installer added PHP 5.3.28 to the mix when I selected PHP 7.0.9 (x64) to install...
-
@Lorne-Kates said in The Official Status Thread:
Also presenting a screenshot with no context is @ben_lubar's job
-
@Rhywden said in The Official Status Thread:
It simply was one unneeded Godwin too many. I'm not angry, I am just tired of that shit.
XD so people constantly calling conservatives Literal Hitler is perfectly alright, but one mention of German police...
-
@anotherusername I said I'm done. Keep the trolling out of this thread.
-
@Rhywden wasn't trying to start anything. Just... you know. Had to be said. I'll shut up and go back to the garage now.
-
@anotherusername said in The Official Status Thread:
@Rhywden wasn't trying to start anything. Just... you know. Had to be said. I'll shut up and go back to the garage now.
I specifically didn't name any names. Good job for pointing out what a special kind of human you are.
-
@Rhywden TBH I was offended that you took the cheap shot about US prisons. So I responded in kind.
And you'd know that if you clicked on the notifications.
-
@anotherusername Which part of "keep the trolling out of this thread" was too hard to understand?
-
@anotherusername @Rhywden Get a room guys.
-
Status: How am I meant to put my mug on those?
-
-
Status: We just had a door-to-door salesman who was selling metal roofing. That has to be a tough gig. Not many people are just going to impulse buy metal roofing for their house. Vinyl siding or replacement windows maybe. Not premium metal roofing.
-
@Magus said in The Official Status Thread:
Status: I have now seen
https://www.youtube.com/watch?v=oE3h7KdYmIEpaging @aliceif
It was kinda boring at first but about 3 minutes in it started to get GOOOOOOOOOOOOOOOOOOOOOOOOOOOOD
-
-
@Tsaukpaetra It was never fine :D I just made that build, since I want to start working on the redesigned solution. But I never did make it work :/
-
@Magus I was like, "WTF why is this suddenly dying?!"
-
@Tsaukpaetra said in The Official Status Thread:
So still no clue what's the issue. So, on to some white box testing?
I stubbed in a method to spit back the VoIP packet right back to the original sender (but with the bot's ID, so it would appear to be a packet sent by the bot to said user), and that seems to work just fine (I mean, that's expected, but had to be sure).
So, tomorrow I'm going to tie the decoder directly to the encoder and see if it still echoes. If it doesn't, then maybe I didn't compile opus correctly somehow?Looking into how UE4 is doing the encode. Well, it does a lot more than just pipe the output of the encoder into a bitstream, that's for sure!
So now I get to convert pointer logic to compatible C#....
void FVoiceDecoderOpus::Decode(const uint8* InCompressedData, uint32 CompressedDataSize, uint8* OutRawPCMData, uint32& OutRawDataSize) { SCOPE_CYCLE_COUNTER(STAT_Voice_Decoding); int32 HeaderSize = 0; int32 BytesPerFrame = FrameSize * NumChannels * sizeof(opus_int16); int32 MaxFramesEncoded = MAX_OPUS_UNCOMPRESSED_BUFFER_SIZE / BytesPerFrame; int32 NumFramesToDecode = InCompressedData[0]; int32 PacketGeneration = InCompressedData[1]; HeaderSize += 2 * sizeof(uint8); if (PacketGeneration != LastGeneration + 1) { UE_LOG(LogVoiceDecode, Verbose, TEXT("Packet generation skipped from %d to %d"), LastGeneration, PacketGeneration); } if (NumFramesToDecode > 0 && NumFramesToDecode <= MaxFramesEncoded) { // Start of compressed data offsets const uint16* CompressedOffsets = (const uint16*)(InCompressedData + HeaderSize); uint32 LengthOfCompressedOffsets = NumFramesToDecode * sizeof(uint16); HeaderSize += LengthOfCompressedOffsets; uint32 LengthOfEntropyOffsets = 0; #if ADD_ENTROPY_TO_PACKET // Start of the entropy to each encoded frame const uint32* EntropyOffsets = (uint32*)(InCompressedData + HeaderSize); LengthOfEntropyOffsets = NumFramesToDecode * sizeof(uint32); HeaderSize += LengthOfEntropyOffsets; #endif // Start of compressed data const uint8* CompressedDataStart = (InCompressedData + HeaderSize); int32 CompressedBufferOffset = 0; int32 DecompressedBufferOffset = 0; uint16 LastCompressedOffset = 0; for (int32 i=0; i < NumFramesToDecode; i++) { int32 UncompressedBufferAvail = OutRawDataSize - DecompressedBufferOffset; if (UncompressedBufferAvail >= (MAX_OPUS_FRAMES * BytesPerFrame)) { int32 CompressedBufferSize = CompressedOffsets[i] - LastCompressedOffset; check(Decoder); int32 NumDecompressedSamples = opus_decode(Decoder, CompressedDataStart + CompressedBufferOffset, CompressedBufferSize, (opus_int16*)(OutRawPCMData + DecompressedBufferOffset), MAX_OPUS_FRAME_SIZE, 0); #if DEBUG_OPUS DebugFrameDecodeInfo(CompressedDataStart + CompressedBufferOffset, CompressedBufferSize, SampleRate); #endif // DEBUG_OPUS if (NumDecompressedSamples < 0) { const char* ErrorStr = opus_strerror(NumDecompressedSamples); UE_LOG(LogVoiceDecode, Warning, TEXT("Failed to decode: [%d] %s"), NumDecompressedSamples, ANSI_TO_TCHAR(ErrorStr)); break; } else { if (NumDecompressedSamples != FrameSize) { UE_LOG(LogVoiceDecode, Warning, TEXT("Unexpected decode result NumSamplesDecoded %d != FrameSize %d"), NumDecompressedSamples, FrameSize); } opus_decoder_ctl(Decoder, OPUS_GET_FINAL_RANGE(&Entropy[LastEntropyIdx])); #if ADD_ENTROPY_TO_PACKET if (Entropy[LastEntropyIdx] != EntropyOffsets[i]) { UE_LOG(LogVoiceDecode, Verbose, TEXT("Decoder Entropy[%d/%d] = %d expected %d"), i, NumFramesToDecode-1, Entropy[LastEntropyIdx], EntropyOffsets[i]); } #endif LastEntropyIdx = (LastEntropyIdx + 1) % NUM_ENTROPY_VALUES; DecompressedBufferOffset += NumDecompressedSamples * sizeof(opus_int16); CompressedBufferOffset += CompressedBufferSize; LastCompressedOffset = CompressedOffsets[i]; } } else { UE_LOG(LogVoiceDecode, Warning, TEXT("Decompression buffer too small to decode voice")); break; } } OutRawDataSize = DecompressedBufferOffset; } else { UE_LOG(LogVoiceDecode, Warning, TEXT("Failed to decode: buffer corrupted")); OutRawDataSize = 0; } UE_LOG(LogVoiceDecode, VeryVerbose, TEXT("OpusDecode[%d]: RawSize: %d CompressedSize: %d NumFramesEncoded: %d "), PacketGeneration, OutRawDataSize, CompressedDataSize, NumFramesToDecode); LastGeneration = PacketGeneration; }
This is going to be fun...
-
@Tsaukpaetra said in The Official Status Thread:
This is going to be fun...
C# has pointers, but they can only be used in an
unsafe {}
section.
-
@RaceProUK said in The Official Status Thread:
@Tsaukpaetra said in The Official Status Thread:
This is going to be fun...
C# has pointers, but they can only be used in an
unsafe {}
section.Yeah, I'm avoiding
unsafe
. ;) There's already much opportunity to do Bad Things with this library, I'm not going to encourage the ghosts just yet.
-
@Tsaukpaetra said in The Official Status Thread:
@Magus I was like, "WTF why is this suddenly dying?!"
Feel free to see if you can figure out what's going on :D
-
@Tsaukpaetra Usually, you can either use unsafe or write a managed C++ wrapper - and given that, I'd be tempted to choose unsafe.
-
@Tsaukpaetra said in The Official Status Thread:
I'm not going to encourage the ghosts just yet.
I knew I should have been more careful in that pyram- oh, wait, that was a different hedgehog who freed those.
-
Status: Ruh Roh. Could have fried bacon on the thing too...
(Those are status and activity lights on the left, whole lot of activity going on on those unplugged ports....)
-
@accalia said in The Official Status Thread:
@hungrier said in The Official Status Thread:
@djls45 https://thatmichaelpark.github.io/fractal-jigsaw-puzzle/fractaljigsaw.html
huh..... i thought that was too easy.....
/me finished one level and it zoomed out to another level.... this will be tricky......
And when you finish that level it zooms out again...I know it because it's basically all I've been doing on my free time this week.
-
FUCK YOU GOOGLE I WANT TO USE THIS GODDAMN PASSWORD
Also PayPal won't let me change my password now either. They probably think I'm a hacker.
Fun fact: my current Google password is 123456789aA. I figured with Google Authenticator on my phone the password is basically irrelevant.
-
@anonymous234 's a very anonymous password...
-
@Tsaukpaetra said in The Official Status Thread:
So now I get to convert pointer logic to compatible C#....
Turned all that into this:
float[] DecodeUnrealOpus(byte[] data) { Int32 NumFrames; Int32 PacketGeneration; ; List<float> f = new List<float>(); BinaryReader s = new BinaryReader(new MemoryStream(data)); //Read individual bytes because raisins. NumFrames = s.ReadByte(); PacketGeneration = s.ReadByte(); UInt16[] compFrameSizes = new UInt16[NumFrames]; //Fill the array of compressed frame sizes for (int c = 0; c < NumFrames; c++) compFrameSizes[c] = s.ReadUInt16(); int lastOffset = 0; //Start decoding the frames for (int c = 0; c < NumFrames; c++) { //Fill the buffer byte[] inBuf = s.ReadBytes(compFrameSizes[c] - lastOffset); lastOffset = compFrameSizes[c]; //Decode the frame float[] outWaveFrame; if (inBuf.Length > 0) outWaveFrame = opusDec.DecodePacketFloat(inBuf); else //Protection in case oops. Shouldn't happen, but whatever. outWaveFrame = opusDec.DecodePacketLostFloat(); //Append the floats to the list f.AddRange(outWaveFrame); } return f.ToArray(); }
Will clean later, but for the first time in weeks I have it playing audio! OMG!!!
-
@anonymous234 said in The Official Status Thread:
@accalia said in The Official Status Thread:
@hungrier said in The Official Status Thread:
@djls45 https://thatmichaelpark.github.io/fractal-jigsaw-puzzle/fractaljigsaw.html
huh..... i thought that was too easy.....
/me finished one level and it zoomed out to another level.... this will be tricky......
And when you finish that level it zooms out again...I know it because it's basically all I've been doing on my free time this week.
I've gotten this far on the 2nd level zoomed out...
-
@Polygeekery said in The Official Status Thread:
Status: We just had a door-to-door salesman who was selling metal roofing. That has to be a tough gig. Not many people are just going to impulse buy metal roofing for their house. Vinyl siding or replacement windows maybe. Not premium metal roofing.
There's a non-zero chance it was someone scouting houses to rob. Who isn't home. Who is home? Who lives there? Could they fight back? What do they own?
Not a bad idea to have a NRA sticker on your door, regardless of your gun views. :evil:
-
@Lorne-Kates said in The Official Status Thread:
There's a non-zero chance it was someone scouting houses to rob. Who isn't home. Who is home? Who lives there? Could they fight back? What do they own?
Not a bad idea to have a NRA sticker on your door, regardless of your gun views. :evil:Having a holstered pistol on your belt and two snarling dogs to hold back is more effective than any sticker.
Never mind that the dogs pose no threat to anyone who is not allergic to dog saliva. It is all about appearances. Hell, our female dog would really just be pissed that someone woke her up from her 23.5 hour per day nap.
-
Status: continuing about my mom's college classes; we get to do binders!
Order of operations!
Coloring book!
Are we graduated yet?
-
@Tsaukpaetra said in The Official Status Thread:
Are we graduated yet?
That woman has a massive dong coming out of her stomach.
-
The Great IT Purge continues. I don't know why they're getting rid of this premium, un-used equipment!
20 units!
-
@Lorne-Kates I cleaned out a closet a while back and purged a bunch of crap. One thing I kept was a USB floppy drive...because some day I might need it. I know that is stupid, but I kept it anyway and tucked it away on a shelf.
My workstation does not even have an optical drive...but I held on to a stupid floppy drive.
-
@Polygeekery said in The Official Status Thread:
My workstation does not even have an optical drive.
Beyond that...it does not even have a bay for them.
-
@Polygeekery said in The Official Status Thread:
My workstation does not even have an optical drive
I have a USB floppy, USB Blu-Ray (which is down compatible all the way back to CD-ROM!), and USB Zip Drive (just in case). Though, I don't know where the Zip Drive one is at the moment...
-
@Polygeekery said in The Official Status Thread:
but I held on to a stupid floppy drive.
I have a USB floppy and USB dvd burner, both from successively older laptops.
I bought them because the laptops didn't have the drive, and I might need it.
-
@Lorne-Kates said in The Official Status Thread:
@Polygeekery said in The Official Status Thread:
but I held on to a stupid floppy drive.
I have a USB floppy and USB dvd burner, both from successively older laptops.
I bought them because the laptops didn't have the drive, and I might need it.
Ha! I one up u! :O :P :O
-
Status: I love Love LOVE my synaptics touchpad drivers, especially when they randomly stop working for no apparent reason!
Also, while they're not working, it will instead send a "scroll up" event every now and then. So, you won't let me tap, or right click, or even move, but, yeah, let's just scroll a bit sometimes to make you feel better!
-
@Tsaukpaetra said in The Official Status Thread:
I love Love LOVE my synaptics touchpad drivers,
-
STATUS Awfully hung over and thinking about investing my spare change...
www.moneyboxapp.com
I like the concept but I just don't think I want to put that much effort in...
-
@Polygeekery said in The Official Status Thread:
Having a holstered pistol on your belt and two snarling dogs to hold back is more effective than any sticker.
Do you have a decaying sofa and a car up on blocks in your front garden too?
How about a toothless old man playing banjo and 16 children with no pants on running around?
An outside toilet with a heart shaped cut out on the door?
-
@Jaloopa said in The Official Status Thread:
How about a toothless old man playing banjo
No need for all the verbosity. I just call him "Dad".
-
@Polygeekery not Paw? Is he also your father in law?
-
@Jaloopa Maybe he's also his son, brother, uncle, and nephew too
-
@RaceProUK that might require some wibbly wobbly, timey wimey as well
-
Hosting provider: "We need storage allocation information for the database server."
Me: "I'm not a DBA by specialization and wouldn't know how to allocate the storage correctly for optimal performance. You guys have DBAs; can't they allocate it?"
Hosting provider: "We need the storage allocation information from you."
Me: "We're paying you guys for infrastructure DBA services, aren't we?"
Hosting provider: "Yes, but we need this information for all VMs before any of those services start."
Me:What, do you want me to just make something up? Then just create one big volume that houses all the data files and log files. What can go wrong?! Especially since it's on RAID 5 anyway. And the DBA experience I do have has been on Windows. Why don't you put all the Oracle files in /home? I hear that should be a big partition.
No, sorry, not going to let the buck be passed to me on this one then take the blame if we get performance problems down the road. Not that we would; it's a small project. But it's the principle of the thing. I'm not going to offer an unqualified opinion.