I'm a bit puzzled by this, but I'm thinking a big state machine and a timer.
The state machine starts after the detection of the 1ms pulse (you could use PulseIn for that). Once you have a negative pulse with a duration of 1ms you go into the state machine. Start a timer checking for the first falling edge. If the falling edge is more than 300us you missed a pulse (tag it as missing), stop the timer and start counting again for the next 300us. If you did not miss a pulse (i.e. you got a falling edge - tag it as present), stop the timer and wait for the next rising edge, start your 300us count once more. Do this until your overall count is 10. At that point you should be ready for the next 1ms pulse. I'm probably all over the place, but this seems reasonable. This does nothing to figure whether any present pulse is a 1 or 0; but you can add that after you get the missing pulse detection part.
Bookmarks