ginnie Posted March 25, 2010 Share Posted March 25, 2010 (edited) Hi, when I watch myZen.tv (1080i channel), DVBViewer displays "1920x1088 50 fps" in the status bar. Elecard Stream Inspector for recorded transport stream of myZen.tv displays "25 fps" (correct), but DVBViewer again displays "50 fps" when it play the TS file. Is this a bug in DVBViewer or I get incorrect transport stream from my DVB-C operator? Edited March 25, 2010 by ginnie Quote Link to comment
Derrick Posted March 25, 2010 Share Posted March 25, 2010 ..could be that the parameter reader algo of the source filter is buggy but it's more likely, that myZen uses a wrong parameter Quote Link to comment
varesino Posted March 26, 2010 Share Posted March 26, 2010 Another possibility is that your codec double the frame rate to deinterlace your stream Quote Link to comment
ginnie Posted March 26, 2010 Author Share Posted March 26, 2010 (edited) You can get small TS-file (about 10 MB) and find out what's going on. Edited March 26, 2010 by ginnie Quote Link to comment
Griga Posted March 26, 2010 Share Posted March 26, 2010 Ok, let's have a look at the video headers (sequence parameter set, SPS) of your sample. That's what I see there: frame_mbs_only_flag = 1 means that your sample contains progessive video (not interlaced). The following values are used to calculate the frame rate num_units_in_tick = 1 time_scale = 50 When the H.264 thing started, the specifications didn't make clear whether the quotient time_scale / num_units_in_tick indicates the field rate (= double frame rate) or the frame rate. H.264 encoders handled it differently. Some reported the field rate, some the frame rate. So I didn't know what to do when I had to code the H.264 format detection. Eventually it came down to a kind of "best guess" by including the frame_mbs_only_flag in the calculation. However, nowadays all H.264 encoders (at least in the DVB sphere) seem to report the field rate, even in case of progressive video. So the formula should be frame_rate = (time_scale / 2) / num_units_in_tick throughout, yielding 25 fps in your case, which is correct. I think I will change it accordingly in the DVBViewer & DVBViewer Filter code, though I have some old H.264 samples where this method yields the wrong result. Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.