Commit d361d269 authored by Chih-Yu Huang's avatar Chih-Yu Huang Committed by Commit Bot

components/arc: Create mojo enum for media::DecodeStatus.

BUG=b:136716638
TEST=components_unittests

Change-Id: I6d62a63b06869aad9ee08a6786da8a701ba15122
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1697501
Commit-Queue: Chih-Yu Huang <akahuang@chromium.org>
Reviewed-by: default avatarDominick Ng <dominickn@chromium.org>
Reviewed-by: default avatarHirokazu Honda <hiroh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#678970}
parent a79f327a
......@@ -170,6 +170,48 @@ bool EnumTraits<arc::mojom::VideoPixelFormat, media::VideoPixelFormat>::
return false;
}
// Make sure values in arc::mojom::DecodeStatus match to the values in
// media::DecodeStatus.
#define CHECK_DECODE_STATUS_ENUM(value) \
static_assert(static_cast<int>(arc::mojom::DecodeStatus::value) == \
static_cast<int>(media::DecodeStatus::value), \
"enum ##value mismatch")
CHECK_DECODE_STATUS_ENUM(OK);
CHECK_DECODE_STATUS_ENUM(ABORTED);
CHECK_DECODE_STATUS_ENUM(DECODE_ERROR);
#undef CHECK_DECODE_STATUS_ENUM
// static
arc::mojom::DecodeStatus
EnumTraits<arc::mojom::DecodeStatus, media::DecodeStatus>::ToMojom(
media::DecodeStatus input) {
switch (input) {
case media::DecodeStatus::OK:
case media::DecodeStatus::ABORTED:
case media::DecodeStatus::DECODE_ERROR:
return static_cast<arc::mojom::DecodeStatus>(input);
}
NOTREACHED() << "unknown status: " << static_cast<int>(input);
return arc::mojom::DecodeStatus::DECODE_ERROR;
}
// static
bool EnumTraits<arc::mojom::DecodeStatus, media::DecodeStatus>::FromMojom(
arc::mojom::DecodeStatus input,
media::DecodeStatus* output) {
switch (input) {
case arc::mojom::DecodeStatus::OK:
case arc::mojom::DecodeStatus::ABORTED:
case arc::mojom::DecodeStatus::DECODE_ERROR:
*output = static_cast<media::DecodeStatus>(input);
return true;
}
NOTREACHED() << "unknown status: " << static_cast<int>(input);
return false;
}
// static
bool StructTraits<arc::mojom::VideoFramePlaneDataView, arc::VideoFramePlane>::
Read(arc::mojom::VideoFramePlaneDataView data, arc::VideoFramePlane* out) {
......
......@@ -9,6 +9,7 @@
#include "components/arc/common/video_common.mojom.h"
#include "components/arc/video_accelerator/video_frame_plane.h"
#include "media/base/decode_status.h"
#include "media/base/video_codecs.h"
#include "media/base/video_frame_layout.h"
#include "media/base/video_types.h"
......@@ -136,6 +137,14 @@ struct StructTraits<arc::mojom::VideoFrameLayoutDataView,
std::unique_ptr<media::VideoFrameLayout>* out);
};
template <>
struct EnumTraits<arc::mojom::DecodeStatus, media::DecodeStatus> {
static arc::mojom::DecodeStatus ToMojom(media::DecodeStatus input);
static bool FromMojom(arc::mojom::DecodeStatus input,
media::DecodeStatus* output);
};
} // namespace mojo
#endif // COMPONENTS_ARC_COMMON_VIDEO_ACCELERATOR_STRUCT_TRAITS_H_
......@@ -81,6 +81,14 @@ enum VideoPixelFormat {
[MinVersion=2] PIXEL_FORMAT_XBGR = 28,
};
[Extensible]
enum DecodeStatus {
// The values must match to the values in media::DecodeStatus
OK = 0,
ABORTED = 1,
DECODE_ERROR = 2,
};
// The offset and stride of a video frame plane. Both offset and stride must
// be non negative.
struct VideoFramePlane {
......
......@@ -5,6 +5,7 @@
mojom = "//components/arc/common/video_common.mojom"
public_headers = [
"//components/arc/video_accelerator/video_frame_plane.h",
"//media/base/decode_status.h",
"//media/base/video_codecs.h",
"//media/base/video_frame_layout.h",
"//media/base/video_types.h",
......@@ -27,6 +28,7 @@ deps = [
]
type_mappings = [
"arc.mojom.DecodeStatus=media::DecodeStatus",
"arc.mojom.MediaVideoFramePlane=media::VideoFrameLayout::Plane",
"arc.mojom.Size=gfx::Size",
"arc.mojom.VideoCodecProfile=media::VideoCodecProfile",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment