mjpeg_decode_accelerator_mojom_traits.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. // Copyright 2017 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef COMPONENTS_CHROMEOS_CAMERA_COMMON_MJPEG_DECODE_ACCELERATOR_MOJOM_TRAITS_H_
  5. #define COMPONENTS_CHROMEOS_CAMERA_COMMON_MJPEG_DECODE_ACCELERATOR_MOJOM_TRAITS_H_
  6. #include "base/numerics/safe_conversions.h"
  7. #include "components/chromeos_camera/common/mjpeg_decode_accelerator.mojom-shared.h"
  8. #include "components/chromeos_camera/mjpeg_decode_accelerator.h"
  9. #include "media/base/bitstream_buffer.h"
  10. namespace mojo {
  11. template <>
  12. struct EnumTraits<chromeos_camera::mojom::DecodeError,
  13. chromeos_camera::MjpegDecodeAccelerator::Error> {
  14. static chromeos_camera::mojom::DecodeError ToMojom(
  15. chromeos_camera::MjpegDecodeAccelerator::Error error);
  16. static bool FromMojom(chromeos_camera::mojom::DecodeError input,
  17. chromeos_camera::MjpegDecodeAccelerator::Error* out);
  18. };
  19. template <>
  20. struct StructTraits<chromeos_camera::mojom::BitstreamBufferDataView,
  21. media::BitstreamBuffer> {
  22. static int32_t id(const media::BitstreamBuffer& input) { return input.id(); }
  23. static mojo::ScopedSharedBufferHandle memory_handle(
  24. media::BitstreamBuffer& input);
  25. static uint32_t size(const media::BitstreamBuffer& input) {
  26. return base::checked_cast<uint32_t>(input.size());
  27. }
  28. static int64_t offset(const media::BitstreamBuffer& input) {
  29. return base::checked_cast<int64_t>(input.offset());
  30. }
  31. static base::TimeDelta timestamp(const media::BitstreamBuffer& input) {
  32. return input.presentation_timestamp();
  33. }
  34. static const std::string& key_id(const media::BitstreamBuffer& input) {
  35. return input.key_id();
  36. }
  37. static const std::string& iv(const media::BitstreamBuffer& input) {
  38. return input.iv();
  39. }
  40. static const std::vector<media::SubsampleEntry>& subsamples(
  41. const media::BitstreamBuffer& input) {
  42. return input.subsamples();
  43. }
  44. static bool Read(chromeos_camera::mojom::BitstreamBufferDataView input,
  45. media::BitstreamBuffer* output);
  46. };
  47. } // namespace mojo
  48. #endif // COMPONENTS_CHROMEOS_CAMERA_COMMON_MJPEG_DECODE_ACCELERATOR_MOJOM_TRAITS_H_