I'm working on a product which uses an ADV7611 to feed a video compressor. I am encountering strange behaviour when the input is video from an Apple iPad 2, using an Apple Digital Video Adapter (which provides an HDMI output, and a dock connector to charge the iPad). The iPad 2 prefers to output 1080p60 if the sink supports it.
When the iPad is asleep, the HDMI output appears to be delivering a valid 1080p video signal (but it is all black). However, there is no audio - HDMI register 0x18 contains 0x10, and my encoder delivers samples of silence, but not enough of those samples.
Once the iPad is active, HDMI register 0x18 contains 0x31 (most of the time), and I get valid audio samples (all the time).
The problem here is that the encoder appears to be getting either no samples, or insufficient audio samples when there is no audio in the HDMI stream. The encoder timestamps its outgoing audio and video by counting audio samples and video frames; the audio timestamp lags far behind the video timestamp. Thus the encoder A/V sync is bad until the entire encode process is restarted.
This raises several questions:
HDMI register 0x18 bit 0 (AUDIO_SAMPLE_PCKT_DET) tells me that there have been recent audio samples. The upper 4 bits register 0x18 are not documented, but they are often non-zero. What do they mean, and should I care?
AUDIO_SAMPLE_PCKT_DET is sometimes 0 although I'm receiving continuously valid audio. Is there a more reliable indicator that there is valid audio in the HDMI stream, or are there some heuristics I should be using?
Should the I2S output contains a continous stream of silence when the incoming HDMI contains no audio? If not, can I force the ADV7611 to output continuous silence?
I don't have easy access to the ADV7611 MCLK, LRCLK etc signals (this is a production board, and difficult to probe), so I can't determine if there is something wrong with the outgoing audio. Under what circumstances could the I2S output be invalid, and how could I correct it?
I should add that the iPad with Apple Digital Video Adapter works fine with the TVs we have tried it with. It may not exhibit this behavior with the ADV7611 and a 720p60 or 1024x768@60 output signal, but this is tedious to test - we'd need to create an EDID which does not support 1080p60.