[mediacodec] Make FrameSink a lib.
TEST: use_media_decoder
Change-Id: I03699e80935fae3e8f70015e8de7b7c7897343cf
diff --git a/examples/media/BUILD.gn b/examples/media/BUILD.gn
index 5cf4650..9be4ff5 100644
--- a/examples/media/BUILD.gn
+++ b/examples/media/BUILD.gn
@@ -119,6 +119,7 @@
}
package("use_media_decoder") {
+ testonly = true
deprecated_bare_package_url = "//build"
deps = [
diff --git a/examples/media/use_media_decoder/BUILD.gn b/examples/media/use_media_decoder/BUILD.gn
index 0423db3..3f5dcc6 100644
--- a/examples/media/use_media_decoder/BUILD.gn
+++ b/examples/media/use_media_decoder/BUILD.gn
@@ -5,6 +5,8 @@
import("//build/test.gni")
source_set("use_media_decoder_source_set") {
+ testonly = true
+
sources = [
"codec_buffer.cc",
"codec_buffer.h",
@@ -12,10 +14,6 @@
"codec_client.h",
"codec_output.cc",
"codec_output.h",
- "frame_sink.cc",
- "frame_sink.h",
- "frame_sink_view.cc",
- "frame_sink_view.h",
"use_aac_decoder.cc",
"use_aac_decoder.h",
"use_video_decoder.cc",
@@ -33,7 +31,9 @@
]
deps = [
+ "//garnet/lib/media/codec_impl:fourcc",
"//garnet/lib/media/raw_video_writer:raw_video_writer",
+ "//garnet/lib/media/test:frame_sink",
"//garnet/lib/media/wav_writer:wav_writer",
"//garnet/public/lib/component/cpp",
"//garnet/public/lib/ui/base_view/cpp",
@@ -42,12 +42,14 @@
}
executable("use_media_decoder") {
+ testonly = true
sources = [
"main.cc",
]
deps = [
":use_media_decoder_source_set",
+ "//garnet/lib/media/test:frame_sink",
"//garnet/public/lib/component/cpp",
"//zircon/public/lib/async-loop-cpp",
]
@@ -86,6 +88,8 @@
deps = [
":use_media_decoder_source_set",
+ "//garnet/lib/media/codec_impl:fourcc",
+ "//garnet/lib/media/test:frame_sink",
"//garnet/public/lib/component/cpp",
"//zircon/public/lib/async-loop-cpp",
]
diff --git a/examples/media/use_media_decoder/main.cc b/examples/media/use_media_decoder/main.cc
index 5c9de68..d5a1d8f 100644
--- a/examples/media/use_media_decoder/main.cc
+++ b/examples/media/use_media_decoder/main.cc
@@ -5,7 +5,6 @@
#include <stdint.h>
#include <stdio.h>
-#include "frame_sink.h"
#include "use_aac_decoder.h"
#include "use_video_decoder.h"
@@ -14,6 +13,7 @@
#include <lib/fxl/command_line.h>
#include <lib/fxl/log_settings_command_line.h>
#include <lib/fxl/logging.h>
+#include <lib/media/test/frame_sink.h>
#include <thread>
diff --git a/examples/media/use_media_decoder/use_video_decoder.cc b/examples/media/use_media_decoder/use_video_decoder.cc
index bfa788c..86d6fa3 100644
--- a/examples/media/use_media_decoder/use_video_decoder.cc
+++ b/examples/media/use_media_decoder/use_video_decoder.cc
@@ -5,7 +5,6 @@
#include "use_video_decoder.h"
#include "codec_client.h"
-#include "frame_sink.h"
#include "util.h"
#include <garnet/lib/media/raw_video_writer/raw_video_writer.h>
@@ -14,6 +13,8 @@
#include <lib/fit/defer.h>
#include <lib/fxl/arraysize.h>
#include <lib/fxl/logging.h>
+#include <lib/media/codec_impl/fourcc.h>
+#include <lib/media/test/frame_sink.h>
#include <stdint.h>
#include <string.h>
diff --git a/examples/media/use_media_decoder/util.h b/examples/media/use_media_decoder/util.h
index c0606be..829bf94 100644
--- a/examples/media/use_media_decoder/util.h
+++ b/examples/media/use_media_decoder/util.h
@@ -75,19 +75,4 @@
void SHA256_Update_VideoPlane(SHA256_CTX* sha256_ctx, uint8_t* start,
uint32_t width, uint32_t stride, uint32_t height);
-static inline constexpr uint32_t make_fourcc(uint8_t a, uint8_t b, uint8_t c,
- uint8_t d) {
- return (static_cast<uint32_t>(d) << 24) | (static_cast<uint32_t>(c) << 16) |
- (static_cast<uint32_t>(b) << 8) | static_cast<uint32_t>(a);
-}
-
-static inline std::string fourcc_to_string(uint32_t fourcc) {
- // fourcc has first letter in the low-order byte. We want that letter to be
- // the first byte in memory, without regard for host endian-ness, so convert
- // from host to little-endian which puts the low-order byte first.
- uint32_t little_endian_fourcc = htole32(fourcc);
- return std::string(reinterpret_cast<char*>(&little_endian_fourcc),
- sizeof(fourcc));
-}
-
#endif // GARNET_EXAMPLES_MEDIA_USE_MEDIA_DECODER_UTIL_H_
diff --git a/lib/media/codec_impl/BUILD.gn b/lib/media/codec_impl/BUILD.gn
index dedcc73..9fd8f3b 100644
--- a/lib/media/codec_impl/BUILD.gn
+++ b/lib/media/codec_impl/BUILD.gn
@@ -9,6 +9,14 @@
include_dirs = [ "include" ]
}
+source_set("fourcc") {
+ public_configs = [ ":codec_impl_include_config" ]
+
+ public = [
+ "include/lib/media/codec_impl/fourcc.h",
+ ]
+}
+
source_set("codec_impl") {
sources = [
"codec_adapter.cc",
@@ -30,6 +38,7 @@
"include/lib/media/codec_impl/codec_packet.h",
]
public_deps = [
+ ":fourcc",
"//zircon/public/lib/async-cpp",
"//zircon/public/lib/async-loop-cpp",
"//zircon/public/lib/fbl",
diff --git a/lib/media/codec_impl/include/lib/media/codec_impl/fourcc.h b/lib/media/codec_impl/include/lib/media/codec_impl/fourcc.h
new file mode 100644
index 0000000..1eabaae
--- /dev/null
+++ b/lib/media/codec_impl/include/lib/media/codec_impl/fourcc.h
@@ -0,0 +1,25 @@
+// Copyright 2019 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef GARNET_LIB_MEDIA_CODEC_IMPL_INCLUDE_LIB_MEDIA_CODEC_IMPL_FOURCC_H_
+#define GARNET_LIB_MEDIA_CODEC_IMPL_INCLUDE_LIB_MEDIA_CODEC_IMPL_FOURCC_H_
+
+#include <endian.h>
+
+static inline constexpr uint32_t make_fourcc(uint8_t a, uint8_t b, uint8_t c,
+ uint8_t d) {
+ return (static_cast<uint32_t>(d) << 24) | (static_cast<uint32_t>(c) << 16) |
+ (static_cast<uint32_t>(b) << 8) | static_cast<uint32_t>(a);
+}
+
+static inline std::string fourcc_to_string(uint32_t fourcc) {
+ // fourcc has first letter in the low-order byte. We want that letter to be
+ // the first byte in memory, without regard for host endian-ness, so convert
+ // from host to little-endian which puts the low-order byte first.
+ uint32_t little_endian_fourcc = htole32(fourcc);
+ return std::string(reinterpret_cast<char*>(&little_endian_fourcc),
+ sizeof(fourcc));
+}
+
+#endif // GARNET_LIB_MEDIA_CODEC_IMPL_INCLUDE_LIB_MEDIA_CODEC_IMPL_FOURCC_H_
diff --git a/lib/media/test/BUILD.gn b/lib/media/test/BUILD.gn
new file mode 100644
index 0000000..46bf4e2
--- /dev/null
+++ b/lib/media/test/BUILD.gn
@@ -0,0 +1,43 @@
+# Copyright 2019 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//build/package.gni")
+import("//build/test.gni")
+
+config("media_test_include_config") {
+ include_dirs = [ "include" ]
+}
+
+source_set("frame_sink") {
+ testonly = true
+
+ sources = [
+ "frame_sink.cc",
+ "frame_sink_view.cc",
+ ]
+
+ include_dirs = [ "include" ]
+
+ public_configs = [ ":media_test_include_config" ]
+
+ public = [
+ "include/lib/media/test/frame_sink.h",
+ "include/lib/media/test/frame_sink_view.h",
+ ]
+
+ public_deps = [
+ "//zircon/public/lib/async",
+ "//zircon/public/lib/async-cpp",
+ "//zircon/public/lib/async-loop-cpp",
+ ]
+
+ deps = [
+ "//garnet/lib/media/codec_impl:fourcc",
+ "//garnet/lib/media/raw_video_writer:raw_video_writer",
+ "//garnet/lib/media/wav_writer:wav_writer",
+ "//garnet/public/lib/component/cpp",
+ "//garnet/public/lib/ui/base_view/cpp",
+ "//garnet/public/lib/ui/scenic/cpp",
+ ]
+}
diff --git a/examples/media/use_media_decoder/frame_sink.cc b/lib/media/test/frame_sink.cc
similarity index 97%
rename from examples/media/use_media_decoder/frame_sink.cc
rename to lib/media/test/frame_sink.cc
index 7235aa7..e2f3521 100644
--- a/examples/media/use_media_decoder/frame_sink.cc
+++ b/lib/media/test/frame_sink.cc
@@ -2,10 +2,9 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "frame_sink.h"
+#include "lib/media/test/frame_sink.h"
-#include "frame_sink_view.h"
-#include "util.h"
+#include "lib/media/test/frame_sink_view.h"
#include <fuchsia/mediacodec/cpp/fidl.h>
#include <lib/async-loop/cpp/loop.h>
@@ -13,6 +12,7 @@
#include <lib/component/cpp/startup_context.h>
#include <lib/fit/defer.h>
#include <lib/fxl/logging.h>
+#include <lib/media/codec_impl/fourcc.h>
#include <lib/zx/vmo.h>
#include <memory>
diff --git a/examples/media/use_media_decoder/frame_sink_view.cc b/lib/media/test/frame_sink_view.cc
similarity index 98%
rename from examples/media/use_media_decoder/frame_sink_view.cc
rename to lib/media/test/frame_sink_view.cc
index a85b504..74278ef 100644
--- a/examples/media/use_media_decoder/frame_sink_view.cc
+++ b/lib/media/test/frame_sink_view.cc
@@ -2,12 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "frame_sink_view.h"
+#include "lib/media/test/frame_sink_view.h"
-#include "frame_sink.h"
-#include "util.h"
+#include "lib/media/test/frame_sink.h"
#include <lib/fxl/logging.h>
+#include <lib/media/codec_impl/fourcc.h>
#include <lib/ui/scenic/cpp/commands.h>
#include <iomanip>
diff --git a/examples/media/use_media_decoder/frame_sink.h b/lib/media/test/include/lib/media/test/frame_sink.h
similarity index 100%
rename from examples/media/use_media_decoder/frame_sink.h
rename to lib/media/test/include/lib/media/test/frame_sink.h
diff --git a/examples/media/use_media_decoder/frame_sink_view.h b/lib/media/test/include/lib/media/test/frame_sink_view.h
similarity index 100%
rename from examples/media/use_media_decoder/frame_sink_view.h
rename to lib/media/test/include/lib/media/test/frame_sink_view.h