Allow odd sized video decoder configs.
VideoFrame::IsValidConfig is a public static method, called both
externally and internally. This change removes a check which is not
wanted in all (or even most) cases where IsValidConfig was called.
Spoke with some past authors. The check is not well understood, but
best guess is that it was meant to verify that coded size is properly
aligned with the sub-sampled UV planes. The check is now made more
narrowly in CreateFrame, where we are free to adjust the size because
we own the allocation.
This change also includes some unification of error handling among
the various "Create" methods. These will now return null if the
video frame configuration is found to be invalid.
See extensive discussion and back-story in code review comments.
BUG=505070, 489744, 379127
TESTS=media_unittests (added some), and manually tested repro in bug
Review URL: https://codereview.chromium.org/
1240833003
Cr-Commit-Position: refs/heads/master@{#340946}