To my knowledge the protocol I describe here was developed by NEC.
I've seen very similar protocol descriptions on the internet, and there the protocol is called Japanese Format.
The NEC protocol uses pulse distance encoding of the bits.
Each pulse is a 560µs long 38kHz carrier burst (about 21 cycles).
A logical "1" takes 2.25ms to transmit, while a logical "0" is only half of that, being 1.125ms.
The recommended carrier duty-cycle is 1/4 or 1/3.
The picture above shows a typical pulse train of the NEC protocol. With this protocol the LSB is transmitted first. In this case Address $59 and Command $16 is transmitted. A message is started by a 9ms AGC burst, which was used to set the gain of the earlier IR receivers. This AGC burst is then followed by a 4.5ms space, which is then followed by the Address and Command. Address and Command are transmitted twice. The second time all bits are inverted and can be used for verification of the received message. The total transmission time is constant because every bit is repeated with its inverted length. If you're not interested in this reliability you can ignore the inverted values, or you can expand the Address and Command to 16 bits each!
A command is transmitted only once, even when the key on the remote control remains pressed. Every 110ms a repeat code is transmitted for as long as the key remains down. This repeat code is simply a 9ms AGC pulse followed by a 2.25ms space and a 560µs burst.
Extended NEC protocol
The NEC protocol is so widely used that soon all possible addresses were used up.
By sacrificing the address redundancy the address range was extended from 256 possible values to approximately 65000 different values.
This way the address range was extended from 8 bits to 16 bits without changing any other property of the protocol.
The command redundancy is still preserved. Therefore each address can still handle 256 different commands.
Keep in mind that 256 address values of the extended protocol are invalid because they are in fact normal NEC protocol addresses. Whenever the low byte is the exact inverse of the high byte it is not a valid extended address.
The table below lists the messages sent by the remote control of my late Fisher 530 VCR (it served us well during its 20 years long life).