Re: @Joseph Lord
"I wasn't aware of any digital TVs with P-in-P function. They should have the hardware to quickly swap those screens but perhaps they didn't optimise that path and just use a general change channel method."
That's my guess. Which makes it an even more stupid way to work as it's an obvious improvement (swapping the outputs from the decoders to the output, rather than forcing a channel switch).
"MPEG GOP length is one fundamental limit but in the typical case you first need to actually tune to the frequency, start demodulating, access the PAT (been a while I might have the wrong table) that will inform you the PID for the audio and video of the channel you need, listen to those PIDs and pass the data to the video decoder. And I've probably missed several steps as I haven't had my head in the DVB standards for at least 4 years."
I'm seeing a figure of about 16 frames between I-frames which suggests less than 1/2 second should be possible. I'm thinking the problem is (insofar as it resembles anything) starting up a GPS receiver. Lots of processing to get a start, then you download data tables to get the rest of the constellation. But there are various strategies you can take to speed things up, from caching old data to parallel processing to extract all codes for all satellites simultaneously (developed by Inmos to do this on a Transputer).
"My Sony TV goes from a full off to TV picture in about 6 seconds, channel change is available a few seconds later and input selection shortly after that although access to the full menu isn't really possible until about 30 seconds after switch off and the menu is fully populated (including network services) by a little after 40s. This is on a pre-2011 version of Linux when I'm not certain that it was as optimised for fast booting."
That's pretty impressive. I'm actually running an old Toshiba flat screen with a Sagem STB. 4-5 secs a channel switch and 30secs to warm boot from standby. Looking over the Sony embedded Linux work IIRC one of their still frame cameras had a 1 sec boot time by (essentially) cold booting at the factory and taking a snapshot of it into flash.