#include "media/gpu/chromeos/platform_video_frame_utils.h"
#include <stddef.h>
#include <stdint.h>
#include <optional>
#include <utility>
#include <vector>
#include "base/containers/contains.h"
#include "base/files/file.h"
#include "base/files/file_path.h"
#include "base/files/scoped_file.h"
#include "base/logging.h"
#include "base/numerics/safe_conversions.h"
#include "base/time/time.h"
#include "media/base/color_plane_layout.h"
#include "media/base/format_utils.h"
#include "media/base/video_frame.h"
#include "media/base/video_frame_layout.h"
#include "media/base/video_types.h"
#include "media/video/fake_gpu_memory_buffer.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/gfx/buffer_types.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/geometry/size.h"
#include "ui/gfx/linux/native_pixmap_dmabuf.h"
#include "ui/gfx/native_pixmap_handle.h"
namespace media {
namespace {
scoped_refptr<VideoFrame> CreateMockDmaBufVideoFrame(
VideoPixelFormat pixel_format,
const gfx::Size& coded_size,
const gfx::Rect& visible_rect,
const gfx::Size& natural_size) { … }
}
TEST(PlatformVideoFrameUtilsTest, CreateNativePixmapDmaBuf) { … }
#if BUILDFLAG(IS_CHROMEOS_ASH)
TEST(PlatformVideoFrameUtilsTest, CreateVideoFrame) {
constexpr VideoPixelFormat kPixelFormat = PIXEL_FORMAT_NV12;
constexpr gfx::Size kCodedSize(320, 240);
constexpr gfx::Rect kVisibleRect(kCodedSize);
constexpr gfx::Size kNaturalSize(kCodedSize);
constexpr auto kTimeStamp = base::Milliseconds(1234);
constexpr gfx::BufferUsage kBufferUsage =
gfx::BufferUsage::VEA_READ_CAMERA_AND_CPU_READ_WRITE;
const VideoFrame::StorageType storage_types[] = {
VideoFrame::STORAGE_DMABUFS,
VideoFrame::STORAGE_GPU_MEMORY_BUFFER,
};
for (const auto& storage_type : storage_types) {
scoped_refptr<VideoFrame> frame;
switch (storage_type) {
case VideoFrame::STORAGE_DMABUFS:
frame =
CreatePlatformVideoFrame(kPixelFormat, kCodedSize, kVisibleRect,
kNaturalSize, kTimeStamp, kBufferUsage);
break;
case VideoFrame::STORAGE_GPU_MEMORY_BUFFER:
frame = CreateGpuMemoryBufferVideoFrame(kPixelFormat, kCodedSize,
kVisibleRect, kNaturalSize,
kTimeStamp, kBufferUsage);
break;
default:
NOTREACHED_IN_MIGRATION();
break;
};
ASSERT_TRUE(frame);
EXPECT_EQ(frame->format(), kPixelFormat);
EXPECT_EQ(frame->coded_size(), kCodedSize);
EXPECT_EQ(frame->visible_rect(), kVisibleRect);
EXPECT_EQ(frame->natural_size(), kNaturalSize);
EXPECT_EQ(frame->timestamp(), kTimeStamp);
EXPECT_EQ(frame->storage_type(), storage_type);
switch (storage_type) {
case VideoFrame::STORAGE_DMABUFS:
EXPECT_FALSE(frame->NumDmabufFds() == 0);
break;
case VideoFrame::STORAGE_GPU_MEMORY_BUFFER:
EXPECT_TRUE(frame->GetGpuMemoryBuffer());
break;
default:
NOTREACHED_IN_MIGRATION();
break;
};
}
}
#endif
}