PWM /w H-Bridge

Hey guys, I am trying to create a Bi-Directional 12 VDC Motor Speed Control and I have been having some trouble consolidating resources online. I have done a lot of Youtube and Google searching and the main problem I have is simply where to apply said PWM signals in the circuits. Most "tutorials" and such advise using a driver but that is not an option for me as I will be required to tailor this circuit for my own needs.

Here is the best explanation I could find on how to implement a ground-up H-Bridge:

This guy has each transistor controlled separately instead of having groups of 2 which confused me a little. I will need to use the Opto-Isolators as well as the Diode protection, which is why I really liked this example. When he explains driving the Motor, there are multiple states the system can be in which will decide what the Motor does. This was simple enough to understand, but in the PWM section, he does not explain how to do it at all.

Also, if anyone knows how to implement Overspeed Protection using a Snubbing circuit that would be pretty useful....

The PWM goes to the ENA pin, and is negative logic (low means ON, high means OFF). You pull one of FWD or REV high and
provide PWM on ENA, bsaically.

The one thing that tutorial doesn't mention is that the darlingtons used are slow devices, taking a few us to turn off from high currents,
so you should always turn off FWD or REV before turning on the other (don't do them simultaneously, delay perhaps 10us inbetween).

And for the same reason you won't be able to PWM at high frequencies such as 16kHz (fortunately the Arduino defaults to low frequency PWM, some
pins 1kHz, some 500Hz approx).

Replacing the darlingtons with high performance "superbeta" NPN and PNP transistors will increase the efficiency and allow faster
PWM, so long as the opto-isolator can provide enough base current at the intended load.

The opto isolator protects the Arduino should the whole motor circuit fry, which is a nice feature.