h264parse doesn't distinguish between interleaved and mixed
gsth264parse.c
says:
else if (sps->frame_mbs_only_flag == 0) {
imode = GST_VIDEO_INTERLACE_MODE_MIXED;
}
So essentially this means "if it's interleaved or mixed, make it mixed and don't bother checking".
The H264 headers contain more information and avdec_h264
parses that information. However, avdec_h264
also says "if we have an interlace-mode
from the upstream caps, keep it", so all content is detected as mixed.
Ideally h264parse
should correctly parse that information from the headers. Until then, it might be worth modifying avdec_h264
to not believe what upstream says about interlace-mode and always override it, as a workaround.