Commit 0d0bd385 authored by dalecurtis@google.com's avatar dalecurtis@google.com

Enable media in default GN build -- Part Deux!

Previous submission was missing enough of the android portion to prevent
passing of compilation.  This patch combines ajwong@'s previous work with
enough fixes to the Android build to get it working.

BUG=none
TEST=passes GN, compiles.
R=brettw@chromium.org

Review URL: https://codereview.chromium.org/390893003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@283477 0039d316-1c4b-4281-b951-d872f2087c98
parent d0ef976d
...@@ -38,6 +38,7 @@ group("root") { ...@@ -38,6 +38,7 @@ group("root") {
"//gpu", "//gpu",
"//google_apis", "//google_apis",
"//ipc", "//ipc",
"//media",
"//mojo", "//mojo",
"//mojo/common", "//mojo/common",
"//mojo/environment:chromium", "//mojo/environment:chromium",
......
...@@ -220,7 +220,7 @@ deps = { ...@@ -220,7 +220,7 @@ deps = {
"src/third_party/ffmpeg": "src/third_party/ffmpeg":
Var("chromium_git") + Var("chromium_git") +
"/chromium/third_party/ffmpeg.git@f620cda6d1661f1b2f3214d17b9a254f5c89225f", "/chromium/third_party/ffmpeg.git@4b7b36f956209fad838ad87d0129130713fbb00c",
"src/third_party/libjingle/source/talk": "src/third_party/libjingle/source/talk":
(Var("googlecode_url") % "webrtc") + "/trunk/talk@" + (Var("googlecode_url") % "webrtc") + "/trunk/talk@" +
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
# Use of this source code is governed by a BSD-style license that can be # Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file. # found in the LICENSE file.
import("//build/config/android/config.gni")
import("//build/config/arm.gni") import("//build/config/arm.gni")
import("//build/config/ui.gni") import("//build/config/ui.gni")
import("//build/config/linux/pkg_config.gni") import("//build/config/linux/pkg_config.gni")
...@@ -31,7 +32,7 @@ if (is_android) { ...@@ -31,7 +32,7 @@ if (is_android) {
# Original conditional: (OS=="linux" or OS=="freebsd" or OS=="solaris") and embedded!=1 # Original conditional: (OS=="linux" or OS=="freebsd" or OS=="solaris") and embedded!=1
use_alsa = false use_alsa = false
use_pulseaudio = false use_pulseaudio = false
if (is_posix) { if (is_posix && !is_android) {
use_alsa = true use_alsa = true
if (!use_cras) { if (!use_cras) {
use_pulseaudio = true use_pulseaudio = true
...@@ -46,7 +47,7 @@ proprietary_codecs = false ...@@ -46,7 +47,7 @@ proprietary_codecs = false
# TODO(ajwong): Where are these coming from?jk # TODO(ajwong): Where are these coming from?jk
enable_mpeg2ts_stream_parser = false enable_mpeg2ts_stream_parser = false
enable_browser_cdms = false enable_browser_cdms = is_android
# Common configuration for targets in the media directory. # Common configuration for targets in the media directory.
# NOT for exporting. # NOT for exporting.
...@@ -114,13 +115,6 @@ if (!linux_link_pulseaudio) { ...@@ -114,13 +115,6 @@ if (!linux_link_pulseaudio) {
component("media") { component("media") {
sources = [ sources = [
"audio/agc_audio_stream.h", "audio/agc_audio_stream.h",
"audio/android/audio_record_input.cc",
"audio/android/audio_record_input.h",
"audio/android/opensles_input.cc",
"audio/android/opensles_input.h",
"audio/android/opensles_output.cc",
"audio/android/opensles_output.h",
"audio/android/opensles_wrapper.cc",
"audio/audio_buffers_state.cc", "audio/audio_buffers_state.cc",
"audio/audio_buffers_state.h", "audio/audio_buffers_state.h",
"audio/audio_device_name.cc", "audio/audio_device_name.cc",
...@@ -589,14 +583,19 @@ component("media") { ...@@ -589,14 +583,19 @@ component("media") {
sources += [ sources += [
"audio/android/audio_manager_android.cc", "audio/android/audio_manager_android.cc",
"audio/android/audio_manager_android.h", "audio/android/audio_manager_android.h",
"audio/android/audio_record_input.cc",
"audio/android/audio_record_input.h",
"audio/android/opensles_input.cc",
"audio/android/opensles_input.h",
"audio/android/opensles_output.cc",
"audio/android/opensles_output.h",
"audio/android/opensles_wrapper.cc",
"base/android/demuxer_android.h", "base/android/demuxer_android.h",
"base/android/demuxer_stream_player_params.cc", "base/android/demuxer_stream_player_params.cc",
"base/android/demuxer_stream_player_params.h", "base/android/demuxer_stream_player_params.h",
"base/android/media_player_manager.h", "base/android/media_player_manager.h",
"base/android/media_resource_getter.cc", "base/android/media_resource_getter.cc",
"base/android/media_resource_getter.h", "base/android/media_resource_getter.h",
"base/media.cc",
"base/media.h",
"base/media_stub.cc", "base/media_stub.cc",
"midi/midi_manager_android.cc", "midi/midi_manager_android.cc",
"midi/usb_midi_device_android.cc", "midi/usb_midi_device_android.cc",
...@@ -609,20 +608,19 @@ component("media") { ...@@ -609,20 +608,19 @@ component("media") {
"video/capture/android/video_capture_device_factory_android.h", "video/capture/android/video_capture_device_factory_android.h",
] ]
defines += [ "DISABLE_USER_INPUT_MONITOR" ] defines += [ "DISABLE_USER_INPUT_MONITOR" ]
# TODO(ajwong): Fix for android. deps += [
# deps += [ ":media_android_jni_headers",
# ":media_android_jni_headers", ":player_android",
# ":player_android", ":video_capture_android_jni_headers",
# ":video_capture_android_jni_headers", ]
# ] if (!is_android_webview_build) {
# if (!android_webview_build) { deps += [ ":media_java" ]
# deps += [ ":media_java" ] }
# }
} }
if (is_chromeos) { if (is_chromeos) {
# A simple WebM encoder for animated avatars on ChromeOS. # A simple WebM encoder for animated avatars on ChromeOS.
sources += [ sources += [
"formats/webm/chromeos/ebml_writer.cc", "formats/webm/chromeos/ebml_writer.cc",
"formats/webm/chromeos/ebml_writer.h", "formats/webm/chromeos/ebml_writer.h",
"formats/webm/chromeos/webm_encoder.cc", "formats/webm/chromeos/webm_encoder.cc",
...@@ -791,6 +789,8 @@ component("media") { ...@@ -791,6 +789,8 @@ component("media") {
if (proprietary_codecs) { if (proprietary_codecs) {
sources += [ sources += [
"formats/mp2t/es_adapter_video.cc",
"formats/mp2t/es_adapter_video.h",
"formats/mp2t/es_parser.h", "formats/mp2t/es_parser.h",
"formats/mp2t/es_parser_adts.cc", "formats/mp2t/es_parser_adts.cc",
"formats/mp2t/es_parser_adts.h", "formats/mp2t/es_parser_adts.h",
...@@ -1051,6 +1051,7 @@ test("media_unittests") { ...@@ -1051,6 +1051,7 @@ test("media_unittests") {
"filters/h264_to_annex_b_bitstream_converter_unittest.cc", "filters/h264_to_annex_b_bitstream_converter_unittest.cc",
"formats/common/stream_parser_test_base.cc", "formats/common/stream_parser_test_base.cc",
"formats/common/stream_parser_test_base.h", "formats/common/stream_parser_test_base.h",
"formats/mp2t/es_adapter_video_unittest.cc",
"formats/mp2t/es_parser_h264_unittest.cc", "formats/mp2t/es_parser_h264_unittest.cc",
"formats/mp2t/mp2t_stream_parser_unittest.cc", "formats/mp2t/mp2t_stream_parser_unittest.cc",
"formats/mp4/aac_unittest.cc", "formats/mp4/aac_unittest.cc",
...@@ -1102,7 +1103,8 @@ test("media_unittests") { ...@@ -1102,7 +1103,8 @@ test("media_unittests") {
"//skia", # Direct dependency required to inherit config. "//skia", # Direct dependency required to inherit config.
"//testing/gmock", "//testing/gmock",
"//testing/gtest", "//testing/gtest",
# "//third_party/widevine/cdm/widevine_cdm.gyp:widevine_cdm_version_h", TODO(GYP): Port over CDM stuff. # TODO(dalecurtis): Port the rest of Widevine stuff.
"//third_party/widevine/cdm:version_h",
"//ui/base", "//ui/base",
"//ui/gfx:gfx_test_support", "//ui/gfx:gfx_test_support",
] ]
...@@ -1138,7 +1140,7 @@ test("media_perftests") { ...@@ -1138,7 +1140,7 @@ test("media_perftests") {
"//testing/gmock", "//testing/gmock",
"//testing/gtest", "//testing/gtest",
"//testing/perf", "//testing/perf",
# "//third_party/widevine/cdm/widevine_cdm.gyp:widevine_cdm_version_h", TODO(GYP): Port over CDM stuff. "//third_party/widevine/cdm:version_h",
"//ui/gl", "//ui/gl",
"//ui/gfx:gfx_test_support", "//ui/gfx:gfx_test_support",
] ]
...@@ -1226,7 +1228,6 @@ if (cpu_arch == "x86" || cpu_arch == "x64") { ...@@ -1226,7 +1228,6 @@ if (cpu_arch == "x86" || cpu_arch == "x64") {
} }
} }
source_set("media_test_support") { source_set("media_test_support") {
sources = [ sources = [
"audio/mock_audio_manager.cc", "audio/mock_audio_manager.cc",
...@@ -1288,48 +1289,50 @@ component("shared_memory_support") { ...@@ -1288,48 +1289,50 @@ component("shared_memory_support") {
deps = [ "//base" ] deps = [ "//base" ]
} }
test("ffmpeg_unittests") { if (media_use_ffmpeg) {
sources = [ "ffmpeg/ffmpeg_unittest.cc" ] test("ffmpeg_unittests") {
sources = [ "ffmpeg/ffmpeg_unittest.cc" ]
deps = [ deps = [
":media", ":media",
":media_test_support", ":media_test_support",
"//base", "//base",
"//base:i18n", "//base:i18n",
"//base/test:test_support", "//base/test:test_support",
"//testing/gtest", "//testing/gtest",
"//third_party/ffmpeg", "//third_party/ffmpeg",
"//ui/gfx:gfx_test_support", "//ui/gfx:gfx_test_support",
] ]
} }
test("ffmpeg_regression_tests") { test("ffmpeg_regression_tests") {
sources = [ sources = [
"base/run_all_unittests.cc", "base/run_all_unittests.cc",
"ffmpeg/ffmpeg_regression_tests.cc", "ffmpeg/ffmpeg_regression_tests.cc",
"filters/pipeline_integration_test_base.cc", "filters/pipeline_integration_test_base.cc",
] ]
configs += [ ":media_config" ] configs += [ ":media_config" ]
deps = [ deps = [
":media", ":media",
":media_test_support", ":media_test_support",
"//base/test:test_support", "//base/test:test_support",
"//testing/gmock", "//testing/gmock",
"//testing/gtest", "//testing/gtest",
"//third_party/ffmpeg", "//third_party/ffmpeg",
"//ui/gfx/geometry", "//ui/gfx/geometry",
"//ui/gfx:gfx_test_support", "//ui/gfx:gfx_test_support",
] ]
# TODO(ajwong): This was in the original gyp, but it seems silly. # TODO(ajwong): This was in the original gyp, but it seems silly.
# ['os_posix==1 and OS!="mac"', { # ['os_posix==1 and OS!="mac"', {
# 'conditions': [ # 'conditions': [
# ['use_allocator!="none"', { # ['use_allocator!="none"', {
# 'dependencies': [ # 'dependencies': [
# '../base/allocator/allocator.gyp:allocator', # '../base/allocator/allocator.gyp:allocator',
# ], # ],
# }], # }],
# ], # ],
# }], # }],
}
} }
if (use_x11) { if (use_x11) {
...@@ -1347,7 +1350,7 @@ if (use_x11) { ...@@ -1347,7 +1350,7 @@ if (use_x11) {
":media_config", ":media_config",
"//build/config/linux:x11", "//build/config/linux:x11",
"//build/config/linux:xext", "//build/config/linux:xext",
# TODO(ajwong): Why does xent get a separate thing in //build/config/linux:BUILD.gn # TODO(ajwong): Why does xext get a separate thing in //build/config/linux:BUILD.gn
# "//build/config/linux:xrender", # "//build/config/linux:xrender",
] ]
deps = [ deps = [
...@@ -1360,3 +1363,86 @@ if (use_x11) { ...@@ -1360,3 +1363,86 @@ if (use_x11) {
] ]
} }
} }
if (is_android) {
import("//build/config/android/rules.gni")
source_set("player_android") {
configs += [ ":media_config" ]
sources = [
"base/android/audio_decoder_job.cc",
"base/android/audio_decoder_job.h",
"base/android/browser_cdm_factory_android.cc",
"base/android/media_codec_bridge.cc",
"base/android/media_codec_bridge.h",
"base/android/media_decoder_job.cc",
"base/android/media_decoder_job.h",
"base/android/media_drm_bridge.cc",
"base/android/media_drm_bridge.h",
"base/android/media_jni_registrar.cc",
"base/android/media_jni_registrar.h",
"base/android/media_player_android.cc",
"base/android/media_player_android.h",
"base/android/media_player_bridge.cc",
"base/android/media_player_bridge.h",
"base/android/media_player_listener.cc",
"base/android/media_player_listener.h",
"base/android/media_source_player.cc",
"base/android/media_source_player.h",
"base/android/video_decoder_job.cc",
"base/android/video_decoder_job.h",
"base/android/webaudio_media_codec_bridge.cc",
"base/android/webaudio_media_codec_bridge.h",
"base/android/webaudio_media_codec_info.h",
]
deps = [
":media_android_jni_headers",
"//base",
"//third_party/widevine/cdm:version_h",
"//ui/gl",
"//url"
]
}
generate_jni("media_android_jni_headers") {
sources = [
"base/android/java/src/org/chromium/media/AudioManagerAndroid.java",
"base/android/java/src/org/chromium/media/AudioRecordInput.java",
"base/android/java/src/org/chromium/media/MediaCodecBridge.java",
"base/android/java/src/org/chromium/media/MediaDrmBridge.java",
"base/android/java/src/org/chromium/media/MediaPlayerBridge.java",
"base/android/java/src/org/chromium/media/MediaPlayerListener.java",
"base/android/java/src/org/chromium/media/UsbMidiDeviceAndroid.java",
"base/android/java/src/org/chromium/media/UsbMidiDeviceFactoryAndroid.java",
"base/android/java/src/org/chromium/media/WebAudioMediaCodecBridge.java",
]
jni_package = "media"
}
generate_jni("video_capture_android_jni_headers") {
sources = [
"base/android/java/src/org/chromium/media/VideoCapture.java",
"base/android/java/src/org/chromium/media/VideoCaptureFactory.java",
]
jni_package = "media"
}
android_library("media_java") {
srcjar_deps = [
":media_android_imageformat_list",
]
java_files = []
}
java_cpp_template("media_android_imageformat_list") {
sources = [
"base/android/java/src/org/chromium/media/ImageFormat.template",
]
inputs = [
"video/capture/android/imageformat_list.h"
]
package_name = "org/chromium/media"
}
# TODO(dalecurtis): Finish media_unittests_apk and media_perftests_apk.
}
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