One way to decode this would be to invert it and then feed it to a UART that's set for 2.6 Mbps (a bit extreme, but some UARTs can be set this high).
The rising edge of each pulse would become a falling edge — a start bit — for the UART, and each type of pulse would produce a unique data pattern in the UART receiver: a "1" would become 0x80, a "0" would become 0xFE, and a "start bit" would become 0x00 (and possibly cause an "overrun" error). The firmware would convert these byte values into bits and then decode the protocol as appropriate.
It's possible that you could set the UART to 1.3 Mbps and receive two of the signal pulses per byte — the decoding gets a little trickier, but you'd have only half the interrupt rate to deal with.
- 0x00 → start pulse
- 0x7F → 0 followed by 0
- 0x0F → 0 followed by 1
- 0x74 → 1 followed by 0
- 0x04 → 1 followed by 1
A completely different approach would be to use a pair of retriggerable monostable multivibrators. One would be set to a period of about 1.9 µs; it would create a clock edge in the center of each bit. The other would be set to a period of about 5 µs; it would detect the "start" pulse.
You would then connect these signals to a SPI slave port on your micro: the original data signal to MOSI, the clock signal to SCLK, and the start signal to SSEL. The SPI interface would collect 8 bits at a time, and deliver them to the firmware at a rate of about 32 kB/sec.