media/base/VideoFrameLayout: Create VFL with factory functions using base::Optional

This enables VideoFrameLayout (VFL) to be created always by factory functions.
They return base::Optional. With invalid configured values, they should return
base::nullopt.
However, VFL is often created in VideoFrame's factory functions. Some of
VideoFrame factory function's input rule is unclear. It may leads to pass
invalid values to VFL and returns nullptr as VideoFrame.
Becuase VideoFrame is widely used on Chrome video stack on any platform, it is
dangerous to change a logic at one time.

In this CL, VFL's factory functions always create VFL. Therefore, a logic in
VideoFrame is unchanged. This also changes buffer_sizes is empty if it is not
specified.

BUG=896135
TEST=media_unittests on Linux
TEST=VEA and VDA unittest on eve

Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
Change-Id: Ibf4191f2e8674ccff084ac8fb4d7e48f89594d6c
Reviewed-on: https://chromium-review.googlesource.com/c/1250682
Commit-Queue: Hirokazu Honda <hiroh@chromium.org>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: Alexandre Courbot <acourbot@chromium.org>
Cr-Commit-Position: refs/heads/master@{#600694}
12 files changed