jmac698
17th December 2007, 07:33
Detecting of Dups fails due to B frames; Ideal removal of Dups relies on frame type determination
Review of terms
A B frame encodes motion between anchor frames.
An I/P frame can be considered an anchor in this case.
A typical MPEG2 stream often has the sequence I/P B B.
Now consider the case of film presented in 60fps (720P). There are 2 or 3 frames repeated. They should be exact duplicates minus noise:
A A A B B, Where A is first film frame, B is second film frame
2 frames @ 24fps=1/12s, 5 frames @ 60fps=1/12s
It turns out that some material has artificial motion inserted into B frames where the I/P B B sequence *should* be all the same film frame repeated. The B frames are steps between the previous and next real (film) frame.
The practical result, is that decimating 60fps->24fps results in blurred images or floating heads/limbs, if those body parts had been in motion at the wrong moment.
You can get excellent quality in decimation by selecting specific duplicates based on frame type, and knowing where you are in the pulldown pattern. For example, avoid the first B frame seems to always work. In fact, to a large degree, 60fps frames 1 and 3 of a group of 5 in the pulldown pattern seem to work.
For example, the automated de-duper of Autogk fails to eliminate these bad frames, and even misses dups because of the artificial motion introduced in B frames.
Now my question, how to make a script aware of frame type, how to write frame-at-a-time dedup script, or who to beg to include a new feature in their dedup filter :)
The ideal solution will pick the best "phases", or which version of a duped frame, based on some freely made settings relating frame types to pulldown phase.
Some practical uses include creating a new video consisting of only I/P frames from several digital copies of the same material. This would be the case of TV shows that air twice.
TV stations realtime encode all material so airing the same source twice will result in some random placement of B frames relative to source frames. Besides avoiding the major artecfact, you can get images the quality of 2-3 times the bitrate.
Imagine for example a static image encoded by any codec - after several frames, all errors have been corrected and you have a perfect frame. This might be useful for downloading streaming video too, if it's realtime converted.
Review of terms
A B frame encodes motion between anchor frames.
An I/P frame can be considered an anchor in this case.
A typical MPEG2 stream often has the sequence I/P B B.
Now consider the case of film presented in 60fps (720P). There are 2 or 3 frames repeated. They should be exact duplicates minus noise:
A A A B B, Where A is first film frame, B is second film frame
2 frames @ 24fps=1/12s, 5 frames @ 60fps=1/12s
It turns out that some material has artificial motion inserted into B frames where the I/P B B sequence *should* be all the same film frame repeated. The B frames are steps between the previous and next real (film) frame.
The practical result, is that decimating 60fps->24fps results in blurred images or floating heads/limbs, if those body parts had been in motion at the wrong moment.
You can get excellent quality in decimation by selecting specific duplicates based on frame type, and knowing where you are in the pulldown pattern. For example, avoid the first B frame seems to always work. In fact, to a large degree, 60fps frames 1 and 3 of a group of 5 in the pulldown pattern seem to work.
For example, the automated de-duper of Autogk fails to eliminate these bad frames, and even misses dups because of the artificial motion introduced in B frames.
Now my question, how to make a script aware of frame type, how to write frame-at-a-time dedup script, or who to beg to include a new feature in their dedup filter :)
The ideal solution will pick the best "phases", or which version of a duped frame, based on some freely made settings relating frame types to pulldown phase.
Some practical uses include creating a new video consisting of only I/P frames from several digital copies of the same material. This would be the case of TV shows that air twice.
TV stations realtime encode all material so airing the same source twice will result in some random placement of B frames relative to source frames. Besides avoiding the major artecfact, you can get images the quality of 2-3 times the bitrate.
Imagine for example a static image encoded by any codec - after several frames, all errors have been corrected and you have a perfect frame. This might be useful for downloading streaming video too, if it's realtime converted.