рдПрдВрдбреНрд░реЛрдЬрдирд╛рдЗрдЬрд╝рд░ - рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг

рдпрд╣ рд▓реЗрдЦ рдХреЗрд╡рд▓ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдпреВрдирд┐рдХреНрд╕ / рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рдЕрдиреБрдХреВрд▓рди рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддрд╛ рд╣реИред

рдЕрдкрдиреЗ рдХрд╛рдо рдкрд░, рдореИрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдорд╛рдирдХ AOSP рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдиреЗ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЕрдХреНрд╕рд░ рд▓рд┐рдирдХреНрд╕ рд╕реЗ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ / рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдкрд░ рдирд┐рд░реНрдгрдп рд▓реЗрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдХрдИ рдЕрдВрдЧреНрд░реЗрдЬреА-рднрд╛рд╖рд╛ рдХреЗ рд▓реЗрдЦ рд╣реИрдВ рдЬреЛ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдФрд░ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЕрд╕реЗрдВрдмрд▓реА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА рд╕рд╛рдордЧреНрд░реА рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЗрд╕реЗ рдПрдХ рд╕рд╛рде рд░рдЦрд╛ рдФрд░ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ред рдкреНрд░рд╕реНрддреБрдд рд╕рд╛рдордЧреНрд░реА рдХрд╛ рддрд╛рддреНрдкрд░реНрдп рд╣реИ рдХрд┐ рдкрд╛рдардХреЛрдВ рдХреЛ рдПрдУрдПрд╕рдкреА рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЕрдиреБрднрд╡ рд╣реИ рдФрд░ Android.mk рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЬреНрдЮрд╛рди рд╣реИред


рдЖрдкрдХреЛ рдПрдВрдбреНрд░реЛрдЬреЗрдирд╛рдЗрдЬрд╝рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?


рдПрдВрдбреНрд░реЙрдЗрдб рдХрд╛ рдЕрдкрдирд╛ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рд╣реИ рдЬреИрд╕реЗ GNU рдореЗрдХ ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЗрд╡рд▓рдкрд░реНрд╕ рддрдм рдмрд╣реБрдд рдЦреБрд╢ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рдЙрдиреНрд╣реЗрдВ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдирдП рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ (рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдСрдЯреЛрдЯреВрд▓рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рдЬрд┐рд╕реЗ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд▓рдЧрд╛рддрд╛рд░ рдирд┐рдЧрд░рд╛рдиреА рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП (рдФрд░ рдЕрдЪрд╛рдирдХ рдХреБрдЫ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ) рджреВрд╕рд░рд╛ рд╕рдВрд╕реНрдХрд░рдг)ред рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдВрдбреНрд░реЛрдЬрд╛рдЗрдЬрд╝рд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ред

рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ Android.mk рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдкреВрд░реНрд╡-рдЕрд╕реЗрдВрдмрд▓реА рдЪрд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдд: рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЙрдЪреНрдЪрддрдо рд╕реНрддрд░ рдкрд░ рдХреЗрд╡рд▓ рдПрдХ Android.mk рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред Autoconf / automake / рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдореЗрдВ рд╕рднреА рдЪрд░рдгреЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди, рдФрд░ рдлрд┐рд░ рдЙрдирдореЗрдВ Android.mk рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рдХреЙрд▓ рдХрд░рдирд╛ ред

рдкреНрд░рддреНрдпреЗрдХ Makefile.am рдореЙрдбреНрдпреВрд▓ рдЬрд┐рд╕реЗ рдЖрдк рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдПрдВрдбреНрд░реЙрдЗрдб ред рдПрдВрдбреНрд░реЙрдЗрдб , рдПрдВрдбреНрд░реЛрдЬрдирд╛рдЗрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЯреБрдХрдбрд╝рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХрднреА-рдХрднреА Android.mk рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ рдХрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛: NDK рдпрд╛ AOSP рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВред рдПрдВрдбреНрд░реЛрдЬрд╛рдЗрдЬрд╝рд░ рднреА рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИред

рдПрдиреНрдбреНрд░реЛрдЬреЗрдирд╛рдЗрдЬрд░ ANDROID_BUILD_TOP рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдгрд╛рд▓реА рдХреА рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИ; рдпрджрд┐ рдпрд╣ рд╕реНрдерд╛рдкрд┐рдд рдпрд╛ рдЦрд╛рд▓реА рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ NDK рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред


рдЖрдЗрдП gstreamer рдХреЗ рд▓рд┐рдП gst-plugins-bad рд╕реЗ mpeg2enc рдкреНрд▓рдЧрдЗрди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред

рдкрд░рд┐рдЪрдп


рд╕рднреА рдирд┐рд░реНрдорд╛рдг AOSP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

рдЪрд░рдг 1. рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рддреИрдпрд╛рд░ рдХрд░рдирд╛


Android.mk рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рдкрде "рдмрд╛рд╣рд░реА / gstreamer-рд╕рдореБрдЪреНрдЪрдп / jni / Android.mk" рдкрд░ рд╕реНрдерд┐рдд рд╣реЛрдЧреАред рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ Android.mk рдлрд╝рд╛рдЗрд▓ рд▓реЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) 

рд╕реНрдерд╛рдиреАрдп рдкрде рд╕реЗрдЯ рдХрд░рдирд╛ рдФрд░ рдХреБрдЫ рдЪрд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдирд╛ред

 GSTREAMER_AGGREGATE_TOP := $(abspath $(LOCAL_PATH))/.. 

рдЙрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд╢реАрд░реНрд╖ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдЬрд╣рд╛рдВ рдкрд░ Gstremer рд╕реНрд░реЛрдд рд╕реНрдерд┐рдд рд╣реИрдВ ред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЪрд░ GSTREAMER_AGGREGATE_TOP "/ path / to / AOSP / external / gstreamer-рд╕рдореБрдЪреНрдЪрдп" рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛ред

 ifneq ($(SYSROOT),) NDK_BUILD := true else NDK_BUILD := false endif 

рдпрджрд┐ SYSROOT рдЪрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ ndk-build рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ AOSP рд╕реНрд░реЛрддреЛрдВ рдореЗрдВред

 ifeq ($(gstreamer_TOP),) gstreamer_TOP := $(GSTREAMER_AGGREGATE_TOP)/gstreamer endif ifeq ($(GST_PLUGINS_GOOD_TOP),) GST_PLUGINS_GOOD_TOP := $(GSTREAMER_AGGREGATE_TOP)/gst-plugins-bad endif ifeq ($(GST_PLUGINS_BAD_TOP),) GST_PLUGINS_BAD_TOP := $(GSTREAMER_AGGREGATE_TOP)/gst-plugins-bad endif 

рдЧреНрд▓реЛрдмрд▓ рд╡реИрд░рд┐рдПрдмрд▓ рд╕реЗрдЯ рдХрд░рдирд╛ рдЬрд╣рд╛рдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА, рдПрдкреНрд▓рд┐рдХреЗрд╢рди, рдкреНрд▓рдЧ рдЗрди рдЖрджрд┐ рд╕реНрдерд┐рдд рд╣реИрдВ рд╣рдореЗрдВ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЗрди рдЪрд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

 CONFIGURE_CC := $(TARGET_CC) CONFIGURE_CXX := $(TARGET_CXX) CONFIGURE_INCLUDES := CONFIGURE_LDFLAGS := -lc -ldl # as ndk-build ifeq ($(NDK_BUILD),true) CONFIGURE_CFLAGS := \ -nostdlib -Bdynamic \ -Wl,-dynamic-linker,/system/bin/linker \ -Wl,--gc-sections \ -Wl,-z,nocopyreloc \ $(call host-path,\ $(TARGET_CRTBEGIN_DYNAMIC_O) \ $(PRIVATE_OBJECTS)) \ $(call link-whole-archives,$(PRIVATE_WHOLE_STATIC_LIBRARIES))\ $(call host-path,\ $(PRIVATE_STATIC_LIBRARIES) \ $(TARGET_LIBGCC) \ $(PRIVATE_SHARED_LIBRARIES)) \ $(PRIVATE_LDFLAGS) \ $(PRIVATE_LDLIBS) \ $(call host-path,\ $(TARGET_CRTEND_O)) \ $(CONFIGURE_INCLUDES) CONFIGURE_LDFLAGS += -L$(SYSROOT)/usr/lib -L$(TARGET_OUT) CONFIGURE_INCLUDES += -I$(SYSROOT)/usr/include \ -I$(GSTREAMER_AGGREGATE_TOP)/libid3tag \ -I$(GSTREAMER_AGGREGATE_TOP)/libmad \ -I$(GSTREAMER_AGGREGATE_TOP)/faad/include CONFIGURE_CPP := $(TOOLCHAIN_PREFIX)cpp CONFIGURE_CXX := $(TOOLCHAIN_PREFIX)c++ LIB := $(SYSROOT)/usr/lib # as AOSP build else LIB := $(TARGET_OUT_SHARED_LIBRARIES) CONFIGURE_CC := $(patsubst %,$(PWD)/%,$(TARGET_CC)) CONFIGURE_CXX := $(patsubst %,$(PWD)/%,$(TARGET_CXX)) CONFIGURE_LDFLAGS += -L$(PWD)/$(TARGET_OUT_INTERMEDIATE_LIBRARIES) CONFIGURE_CFLAGS := \ -nostdlib -Bdynamic \ -Wl,-dynamic-linker,/system/bin/linker \ -Wl,--gc-sections \ -Wl,-z,nocopyreloc CONFIGURE_LDFLAGS += \ $(PWD)/$(TARGET_CRTBEGIN_DYNAMIC_O) \ $(call link-whole-archives,$(PRIVATE_WHOLE_STATIC_LIBRARIES))\ $(PRIVATE_STATIC_LIBRARIES) \ $(PWD)/$(TARGET_LIBGCC) \ $(PRIVATE_SHARED_LIBRARIES) \ $(PWD)/$(TARGET_CRTEND_O) CONFIGURE_CPP := $(PWD)/$(TARGET_TOOLS_PREFIX)cpp CONFIGURE_INCLUDES += \ $(foreach incdir, $(realpath $(C_INCLUDES) $(TARGET_C_INCLUDES)), -I$(incdir)) \ -I$(abspath $(TOP)/external/zlib) \ -I$(GSTREAMER_AGGREGATE_TOP)/libid3tag \ -I$(GSTREAMER_AGGREGATE_TOP)/libmad \ -I$(GSTREAMER_AGGREGATE_TOP)/faad/include endif CONFIGURE_CPPFLAGS := \ $(CONFIGURE_INCLUDES) CONFIGURE_CXXFLAGS := \ $(CONFIGURE_INCLUDES) 

рд╕рдВрдХрд▓рди, рд▓рд┐рдВрдХрд┐рдВрдЧ, рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рднрд┐рдиреНрди рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ ...

 # configure as ./autogen.sh CONFIGURE := autogen.sh # or configure as ./configure CONFIGURE := configure 

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ред

 CONFIGURE_PKG_CONFIG_LIBDIR := $(GLIB_TOP):$(gstreamer_TOP)/pkgconfig:$(GST_PLUGINS_BASE_TOP)/pkgconfig:$(GST_PLUGINS_GOOD_TOP)/pkgconfig:$(GST_PLUGINS_BAD_TOP)/pkgconfig:$(GSTREAMER_AGGREGATE_TOP)/x264 PKG_CONFIG := PKG_CONFIG_LIBDIR=$(CONFIGURE_PKG_CONFIG_LIBDIR) PKG_CONFIG_TOP_BUILD_DIR="/" pkg-config $ (gstreamer_TOP) / pkgconfig: $ (GST_PLUGINS_BASE_TOP) / pkgconfig: $ (GST_PLUGINS_GOOD_TOP) / pkgconfig: $ (GST_PLUGINS_BAD_TOP) / pkgconfig: $ (GSTREAMER_AGGREGATE_TOP) / x264 CONFIGURE_PKG_CONFIG_LIBDIR := $(GLIB_TOP):$(gstreamer_TOP)/pkgconfig:$(GST_PLUGINS_BASE_TOP)/pkgconfig:$(GST_PLUGINS_GOOD_TOP)/pkgconfig:$(GST_PLUGINS_BAD_TOP)/pkgconfig:$(GSTREAMER_AGGREGATE_TOP)/x264 PKG_CONFIG := PKG_CONFIG_LIBDIR=$(CONFIGURE_PKG_CONFIG_LIBDIR) PKG_CONFIG_TOP_BUILD_DIR="/" pkg-config 

рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдВ рдкреИрдХреЗрдЬ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЗрдВ (рдкреАрд╕реА рдлрд╝рд╛рдЗрд▓реЗрдВ) рд╕реНрдерд┐рдд рд╣реИрдВред рдпрд╣ рд╣рдореЗрд╢рд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЕрдХреНрд╕рд░ рдЖрдкрдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ ред рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
Pkg-config рдореБрдЦреНрдп рдкреНрд░рдгрд╛рд▓реА рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

 GST_CFLAGS := \ -DD_GNU_SOURCE \ -DGST_DISABLE_DEPRECATED \ -DHAVE_CONFIG_H \ -I$(gstreamer_TOP) 

Gstreamer рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд┐рдХрд▓реНрдкред

 GST_CFLAGS += \ $(shell $(PKG_CONFIG) gstreamer --cflags) 

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреИрдХреЗрдЬ рд╕реЗ Gstreamer рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝рдирд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдкреНрд░рдгрд╛рд▓реА рдкрд░ gstreamer рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд┐рдХрд▓реНрдк рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИред

рдЪрд░рдг 2. рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░реА


Android.mk рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдЬреЛ рдмрд╛рдЗрдирд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА / рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо Android.mk рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдФрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП "рдмрд╛рд╣рд░реА / gstreamer-рд╕рдореБрдЪреНрдЪрдп / gst-plugins / bad / Android.mk" рдкрде рдкрд░ рд╕реНрдерд┐рдд рд╣реЛрдЧрд╛ред рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ Android.mk рдлрд╝рд╛рдЗрд▓ рд▓реЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) 

рд╕реНрдерд╛рдиреАрдп рдкрде рд╕реЗрдЯ рдХрд░рдирд╛ рдФрд░ рдХреБрдЫ рдЪрд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдирд╛ред

 GST_PLUGINS_BAD_TOP := $(LOCAL_PATH) 

рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд╢реАрд░реНрд╖ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ gst-plugins-рдмреБрд░реЗ рд╕реНрд░реЛрдд рд╕реНрдерд┐рдд рд╣реИрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЪрд░ GST_PLUGINS_BAD_TOP "/ path / to / AOSP / external / gstreamer-рд╕рдореБрдЪреНрдЪрдп / gst-plugins-bad" рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛ред

 GST_PLUGINS_BAD_BUILT_SOURCES := \ pkgconfig/gstreamer-plugins-bad-1.0-uninstalled.pc \ pkgconfig/gstreamer-plugins-bad-1.0.pc \ gst-libs/gst/baseparse/Android.mk \ gst-libs/gst/basecamerabinsrc/Android.mk \ gst-libs/gst/codecparsers/Android.mk \ gst-libs/gst/interfaces/Android.mk \ gst/h264parse/Android.mk \ ... 

рдЗрд╕ рдЪрд░ рдореЗрдВ рдкрде рдФрд░ рд▓рдХреНрд╖реНрдп рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ "gst / h264parse" рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рдиреЗ рдФрд░ "Android.mk рдмрдирд╛рдиреЗ" рдкрд░ рдЕрдорд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдХрдорд╛рдВрдб "cd gst / h264parse" рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ; Android.mk рдмрдирд╛рдУ ", рдЬреЛ рдХрдорд╛рдВрдб" Make -C 'gst / h264parse' Android.mk "рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ

 GST_PLUGINS_BAD_BUILT_SOURCES := $(patsubst %, $(abspath $(GST_PLUGINS_BAD_TOP))/%, $(GST_PLUGINS_BAD_BUILT_SOURCES)) 

рд╣рдо рд╕рд╛рдкреЗрдХреНрд╖ рдкрдереЛрдВ рдХреЛ рдирд┐рд░рдкреЗрдХреНрд╖ рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВред

 .PHONY: gst-plugins-bad-configure 

рдХреЗрд╡рд▓ рдорд╛рдорд▓реЗ рдореЗрдВ "рдЧрд▓рдд" рд▓рдХреНрд╖реНрдп рдЬреЛрдбрд╝реЗрдВред

 gst-plugins-bad-configure: cd $(GST_PLUGINS_BAD_TOP) ; \ CC="$(CONFIGURE_CC)" \ CFLAGS="$(CONFIGURE_CFLAGS)" \ CXX="$(CONFIGURE_CXX)" \ CXXFLAGS="$(CONFIGURE_CXXFLAGS)" \ LD=$(TARGET_LD) \ LDFLAGS="$(CONFIGURE_LDFLAGS)" \ CPP=$(CONFIGURE_CPP) \ CPPFLAGS="$(CONFIGURE_CPPFLAGS)" \ PKG_CONFIG_LIBDIR="$(CONFIGURE_PKG_CONFIG_LIBDIR)" \ PKG_CONFIG_TOP_BUILD_DIR=/ \ $(abspath $(GST_PLUGINS_BAD_TOP))/$(CONFIGURE) \ --prefix=/system --host=arm-linux-androideabi \ --disable-gtk-doc \ --disable-valgrind && \ for file in $(GST_PLUGINS_BAD_BUILT_SOURCES); do \ rm -f $$file && \ make -C $$(dirname $$file) $$(basename $$file) ; \ done 

Gst-plugins-bad-configure рд▓рдХреНрд╖реНрдп рдмрдирд╛рдПрдВред
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╕рдордп, рд╣рдо рд╣рдореЗрд╢рд╛ "--prefix = / рд╕рд┐рд╕реНрдЯрдо" рд╡рд┐рдХрд▓реНрдк рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рднреА рд╕рд┐рд╕реНрдЯрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА, рдПрдкреНрд▓рд┐рдХреЗрд╢рди, рд╕реЗрдЯрд┐рдВрдЧреНрд╕, рдЖрджрд┐ред / рд╕рд┐рд╕реНрдЯрдо рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ
ARM рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ "--host = arm-linux-androideabi" рд╡рд┐рдХрд▓реНрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЕрдиреНрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд▓реНрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдкрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ, рдЗрдЪреНрдЫрд╛рдУрдВ рдФрд░ рдХреНрд╖рдорддрд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВред
рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рдкрд╣рд▓реЗ "рдбрд┐рд╕реНрдЯреЗрдХрд▓реАрди рдмрдирд╛рдиреЗ рдХреЗ рд╕реНрд░реЛрддреЛрдВ" рдФрд░ / рдпрд╛ "рдСрдЯреЛрд░реЛрдХреЛрди-рдлрд╝рд┐рдлрд╝" рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

 -include $(GST_PLUGINS_BAD_TOP)/gst-libs/gst/baseparse/Android.mk -include $(GST_PLUGINS_BAD_TOP)/gst-libs/gst/basecamerabinsrc/Android.mk -include $(GST_PLUGINS_BAD_TOP)/gst-libs/gst/codecparsers/Android.mk -include $(GST_PLUGINS_BAD_TOP)/gst-libs/gst/interfaces/Android.mk -include $(GST_PLUGINS_BAD_TOP)/gst/h264parse/Android.mk ... 

рдФрд░ рдмрд╣реБрдд рдЕрдВрдд рдореЗрдВ Android.mk рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдкрде рд╣реИрдВ рдЬреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ, рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ, рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЖрджрд┐ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВрдЧреЗред

рдЪрд░рдг 3. Makefile рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рдХреНрд╖реНрдп рдЬреЛрдбрд╝рдирд╛


"Android.mk" рдХреЛ Makefile.am рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рдХреНрд╖реНрдп рдЬреЛрдбрд╝рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдЬреЛ рдмрд╛рдЗрдирд░реА рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП Android.mk рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрде "рдмрд╛рд╣рд░реА / gstreamer-рд╕рдореБрдЪреНрдЪрдп / gst-plugins / bad / ext / mpeg2enc / Makefile.am" рдкрде рдкрд░ рд╕реНрдерд┐рдд рд╣реЛрдЧрд╛ред рдкреНрд▓рдЧрдЗрдиред рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ Makefile.am рдлрд╝рд╛рдЗрд▓ рд▓реЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 plugin_LTLIBRARIES = libgstmpeg2enc.la 

рдкреНрд▓рдЧрд┐рди рдирд╛рдо

 libgstmpeg2enc_la_SOURCES = \ gstmpeg2enc.cc \ gstmpeg2encoptions.cc \ gstmpeg2encoder.cc \ gstmpeg2encstreamwriter.cc \ gstmpeg2encpicturereader.cc 

рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЗрдВ

 libgstmpeg2enc_la_CXXFLAGS = \ $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) $(MPEG2ENC_CFLAGS) libgstmpeg2enc_la_LIBADD = \ $(GST_PLUGINS_BASE_LIBS) -lgstvideo-@GST_API_VERSION@ \ $(GST_LIBS) $(MPEG2ENC_LIBS) libgstmpeg2enc_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstmpeg2enc_la_LIBTOOLFLAGS = --tag=disable-static 

рд╕рдВрдХрд▓рди рдФрд░ рд▓рд┐рдВрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЭрдВрдбреЗ

 noinst_HEADERS = \ gstmpeg2enc.hh \ gstmpeg2encoder.hh \ gstmpeg2encoptions.hh \ gstmpeg2encstreamwriter.hh \ gstmpeg2encpicturereader.hh 

рд╣реИрдбрд░ рдлрд╛рдЗрд▓реЗрдВред

"Android.mk" рдХрд╛ рд▓рдХреНрд╖реНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрд╡рд╢реНрдпрдХ рд╕рдм рдХреБрдЫ рд╣реИ
 Android.mk: Makefile.am $(BUILT_SOURCES) androgenizer \ -:PROJECT libgstmpeg2enc -:SHARED libgstmpeg2enc \ -:TAGS eng debug \ -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \ -:SOURCES $(libgstmpeg2enc_la_SOURCES) \ -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(libgstmpeg2enc_la_CXXFLAGS) \ -:LDFLAGS $(libgstmpeg2enc_la_LDFLAGS) \ $(libgstmpeg2enc_la_LIBADD) \ -ldl \ -:PASSTHROUGH LOCAL_ARM_MODE:=arm \ LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \ LOCAL_CPP_EXTENSION:='.cc' \ > $@ 

рдЖрдкрдХреЛ LOCAL_CPP_EXTENSION рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рдореИрдВрдиреЗ ".ss" рдмрд▓ рд╕реЗрдЯ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдХреНрд╕рдЯреЗрдВрд╢рди "cpp" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛рдПрдБ рд╣рдореЗрд╢рд╛ рдЙрдарддреА рд╣реИрдВ рдЕрдЧрд░ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдПрдХреНрд╕рдЯреЗрдВрд╢рди "cxx", "cpp" рдФрд░ "cc" рд╡рд╛рд▓реА рдХрдИ рдлрд╛рдЗрд▓реЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИрдВред

README.txt рдореЗрдВ рдкрдврд╝реЗ рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ рдПрдВрдбреНрд░реЛрдЬрд╛рдЗрдЬрд╝рд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЕрдиреБрд╡рд╛рджред
рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА
  • - - рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд╛рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ред рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдкрд╣рд▓реЗ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

  • - - SUBDIR рдЬреЛрдбрд╝рд╛ -include , рдШреЛрд╖рд┐рдд рд╡реИрд░рд┐рдПрдмрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ _ _TOP рдХреЛ рдЫреЛрдбрд╝рдХрд░

  • -I рд╕рдорд╛рд╡реЗрд╢рди рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдкрде
    • - - ABS_TOP рд╕реНрд░реЛрдд рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкреВрд░реНрдг рдкрде рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ
    • - - REL_TOP рд╕реНрд░реЛрдд рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ

    рдпрд╣ рд╣рдореЗрд╢рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП: -: REL_TOP $ (top_srcdir) -: ABS_TOP $ (abs_top_srcdir)

  • рдирд┐рд░реНрдорд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреЗ рдкреНрд░рдХрд╛рд░:
    • - - STATIC рд▓рдХреНрд╖реНрдп рдкреНрд░рдгрд╛рд▓реА (BUILD_STATIC_LIBRARY) рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд┐рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рддрд╛ рд╣реИ
    • - - рд╕рд╛рдЭрд╛ рд▓рдХреНрд╖реНрдп рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрддрд┐рд╢реАрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рддрд╛ рд╣реИ (BUILD_SHARED_LIBRARY)
    • - - рд▓рдХреНрд╖реНрдп рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдмрдирд╛рддрд╛ рд╣реИ (BUILD_EXECUTABLE)
    • - - HOST_STATIC рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд┐рд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рддрд╛ рд╣реИ (BUILD_HOST_STATIC_LIBRARY)
    • - - HOST_SHARED рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрддрд┐рд╢реАрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рддрд╛ рд╣реИ (BUILD_HOST_SHARED_LIBRARY)
    • - - HOST_EXECUTABLE рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдмрдирд╛рддрд╛ рд╣реИ (BUILD_HOST_EXECUTABLE)

    рдПрдХрд▓ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдИ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

  • рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрд╕рд╛рдзрди (рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛!):
    • - - рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рд╕реНрд░реЛрдд

      • - - рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд▓рд┐рдП CFLAGS рдЭрдВрдбреЗ
      • - - CXXFLAGS рд╕реА + + рд╕рдВрдХрд▓рдХ рдХреЗ рд▓рд┐рдП рдЭрдВрдбреЗ
      • - - рд╕реА рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП CPPFLAGS рдЭрдВрдбреЗ

      CPPFLAGS C рдФрд░ C ++ рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
      CFLAGS рдХрд╛ рдЙрдкрдпреЛрдЧ C рдФрд░ C ++ рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
      CXXFLAGS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ C ++ рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

      Android рд╡рд┐рднрд┐рдиреНрди рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рди рд╣реЛрдВ рдЕрдЧрд░ CXXFLAGS Android.mk рдореЗрдВ LOCAL_CPPFLAGS рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдП
      рдПрдВрдбреНрд░реЙрдЗрдб рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ рдлреНрд▓реИрдЧ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

      CFLAGS, CPPFLAGS рдпрд╛ CXXFLAGS рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдореЗрдВ рд╕рднреА -I рдЭрдВрдбреЗ "-I" рдХреЗ рдмрд┐рдирд╛ LOCAL_C_INCLUDES рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛рдПрдВрдЧреЗред

      рдХреБрдЫ рдЭрдВрдбреЗ рдмрд┐рдирд╛ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╣рдЯрд╛ рджрд┐рдП рдЧрдП рд╣реИрдВ: -рд╡рд╛рдпрд░ -рдереНрд░реЗрдб

    • - - LDFLAGS рд▓рд┐рдВрдХрд░ рд╡рд┐рдХрд▓реНрдк рд╕реВрдЪреА:
      • -L foo> LOCAL_SHARED_LIBRARIES рдХреЛ foo тА║рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдЧрд╛
      • -L рдФрд░ -R рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
      • -pthread рдФрд░ -lpreadread рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рдбрд┐рд▓реАрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛
      • -рд▓рд░реНрдЯ рдХреЛ рдмрд┐рдирд╛ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдЖрд░рдЯреА рдмрд┐рд▓реНрдЯ-рдЗрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрд╛рдпреЛрдирд┐рдХ рдореЗрдВ)
      • -рдХреЛрдИ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рдмрд┐рдирд╛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
      • -dlopen ; -version -info , рдФрд░ рдЙрдирдХреЗ рдмрд╛рдж рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╢рдмреНрдж (рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реНрдХ) рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗ
      • рдХреЗрд╡рд▓ * .a рдФрд░ * .la рдлрд╛рдЗрд▓реЗрдВ рдмрдЪ рдЬрд╛рддреА рд╣реИрдВ, рдмрд╛рдХреА рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

    • - - рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА LIBFILTER_STATIC рд╕реВрдЪреА ("lib" рдЙрдкрд╕рд░реНрдЧ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рдмрд┐рдирд╛)
      рдЗрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ LOCAL_STATIC_LIBRARIES рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ LOCAL_SHARED_LIBRARIES рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред

    • - - рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА LIBFILTER_WHOLE рд╕реВрдЪреА ("lib" рдЙрдкрд╕рд░реНрдЧ рдФрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдмрд┐рдирд╛)
      рдЗрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ LOCAL_WHOLE_STATIC_LIBRARIES рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред

    • - - TAGS рдореЗрдВ рдХреЛрдИ рднреА рдкреИрд░рд╛рдореАрдЯрд░ рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП: рд╡реИрдХрд▓реНрдкрд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрд▓рдЧреНрди рдкрд░реАрдХреНрд╖рдг

    • - - рд╣реЗрдбрд░ LOCAL_COPY_HEADERS рдХреЗ рд▓рд┐рдП рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА

    • - - HEADER_TARGET LOCAL_COPY_HEADERS_TO рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдХрдИ рд▓рд╛рдЗрдиреЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЕрдВрддрд┐рдо

    • - - PASSTHROUGH рд╡рд░реНрддрдорд╛рди рдореЙрдбреНрдпреВрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб рд▓рд╛рдЗрдиреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, LOCAL_ARM_MODE: = arm

    • - - END рд╡реИрдХрд▓реНрдкрд┐рдХ ... рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╡рд░реНрдгрди рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЕрдЧрд▓реЗ рдХрд╛ рд╡рд░реНрдгрди рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред




рдЪрд░рдг 4. рд╕рднрд╛


рдПрдВрдбреНрд░реЛрдЬрд╛рдЗрдЬрд╝рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВ рдФрд░ рдЙрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдбрд╛рд▓реЗрдВ рдЬрд╣рд╛рдВ рдпрд╣ рдкреИрда рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред
рдЕрдм рд╣рдо рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, AOSP рдХреЗ рдореВрд▓ рдореЗрдВ рдЬрд╛рдПрдВ рдФрд░ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:
 make gst-plugins-bad-configure 

рдХреБрдЫ рд╕рдордп рдмрд╛рдж, gst-plugins-bad рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк Android.mk рдлрд╝рд╛рдЗрд▓ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛ рдЬрд╛рдПрдЧреА:
рдмрд╛рд╣рд░реА / gstreamer-рд╕рдореБрдЪреНрдЪрдп / gst-plugins-bad / ext / mpeg2enc / Android.mk
 LOCAL_PATH:=$(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE:=libgstmpeg2enc LOCAL_MODULE_TAGS:=eng debug LOCAL_SRC_FILES := \ gstmpeg2enc.cc \ gstmpeg2encoptions.cc \ gstmpeg2encoder.cc \ gstmpeg2encstreamwriter.cc \ gstmpeg2encpicturereader.cc LOCAL_SHARED_LIBRARIES:=\ libglib-2.0 \ libgobject-2.0 \ libgstreamer-0.10 \ libgstbase-0.10 \ libgstriff-0.10 \ libgsttag-0.10 \ libgstvideo-0.10 \ libdl LOCAL_LDFLAGS:=\ -module\ -avoid-version\ -export-symbols-regex\ -no-undefined\ -Wl,-Bsymbolic-functions LOCAL_CFLAGS := \ -DHAVE_CONFIG_H \ -I. \ -I/path/to/AOSP/external/gstreamer-aggregate/gst-plugins-bad \ -I/path/to/AOSP/external/gstreamer-aggregate/gst-plugins-bad/gst-libs \ -I/path/to/AOSP/external/gstreamer-aggregate/gst-plugins-base \ -I/path/to/AOSP/external/gstreamer-aggregate/gst-plugins-base/gst-libs \ -I/path/to/AOSP/external/gstreamer-aggregate/gstreamer \ -I/path/to/AOSP/external/gstreamer-aggregate/glib/glib \ -I/path/to/AOSP/external/gstreamer-aggregate/glib \ -I/path/to/AOSP/external/gstreamer-aggregate/glib/gmodule \ -I/path/to/AOSP/external/gstreamer-aggregate/gstreamer/libs \ -DG_THREADS_MANDATORY \ -DG_DISABLE_DEPRECATED \ -Wall \ -Wdeclaration-after-statement \ -Wvla \ -Wpointer-arith \ -Wmissing-declarations \ -Wmissing-prototypes \ -Wredundant-decls \ -Wundef \ -Wwrite-strings \ -Wformat-nonliteral \ -Wformat-security \ -Winit-self \ -Wmissing-include-dirs \ -Waddress \ -Waggregate-return \ -Wno-multichar \ -Wnested-externs \ -Wno-unused \ -g \ -DGST_DISABLE_DEPRECATED LOCAL_PRELINK_MODULE := false LOCAL_ARM_MODE:=arm LOCAL_MODULE_PATH:=$(TARGET_OUT)/lib/gstreamer-0.10 LOCAL_CPP_EXTENSION:=.cc include $(BUILD_SHARED_LIBRARY) 



рдкрд░рд┐рдгрд╛рдо


рд▓рд╛рдн:

рдиреБрдХрд╕рд╛рди:


рдкреНрд░рдпреБрдХреНрдд рд▓реЗрдЦ:

Source: https://habr.com/ru/post/In164139/


All Articles