From 88a096aa96ddb8a2917ff8bd5dc337ed7b9d06fb Mon Sep 17 00:00:00 2001 From: Crepieux Pierre Date: Wed, 4 Sep 2019 16:33:42 +0200 Subject: [PATCH 1/7] let's start from android 9 to provide android 10 support --- jni/minicap-shared/aosp/src/minicap_29.cpp | 386 +++++++++++++++++++++ 1 file changed, 386 insertions(+) create mode 100644 jni/minicap-shared/aosp/src/minicap_29.cpp diff --git a/jni/minicap-shared/aosp/src/minicap_29.cpp b/jni/minicap-shared/aosp/src/minicap_29.cpp new file mode 100644 index 00000000..c5a04d39 --- /dev/null +++ b/jni/minicap-shared/aosp/src/minicap_29.cpp @@ -0,0 +1,386 @@ +#include "Minicap.hpp" + +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +#include +#include +#include +#include +#include + +#include + +#include +#include +#include + +#include "mcdebug.h" + +static const char* +error_name(int32_t err) { + switch (err) { + case android::NO_ERROR: // also android::OK + return "NO_ERROR"; + case android::UNKNOWN_ERROR: + return "UNKNOWN_ERROR"; + case android::NO_MEMORY: + return "NO_MEMORY"; + case android::INVALID_OPERATION: + return "INVALID_OPERATION"; + case android::BAD_VALUE: + return "BAD_VALUE"; + case android::BAD_TYPE: + return "BAD_TYPE"; + case android::NAME_NOT_FOUND: + return "NAME_NOT_FOUND"; + case android::PERMISSION_DENIED: + return "PERMISSION_DENIED"; + case android::NO_INIT: + return "NO_INIT"; + case android::ALREADY_EXISTS: + return "ALREADY_EXISTS"; + case android::DEAD_OBJECT: // also android::JPARKS_BROKE_IT + return "DEAD_OBJECT"; + case android::FAILED_TRANSACTION: + return "FAILED_TRANSACTION"; + case android::BAD_INDEX: + return "BAD_INDEX"; + case android::NOT_ENOUGH_DATA: + return "NOT_ENOUGH_DATA"; + case android::WOULD_BLOCK: + return "WOULD_BLOCK"; + case android::TIMED_OUT: + return "TIMED_OUT"; + case android::UNKNOWN_TRANSACTION: + return "UNKNOWN_TRANSACTION"; + case android::FDS_NOT_ALLOWED: + return "FDS_NOT_ALLOWED"; + default: + return "UNMAPPED_ERROR"; + } +} + +class FrameProxy: public android::ConsumerBase::FrameAvailableListener { +public: + FrameProxy(Minicap::FrameAvailableListener* listener): mUserListener(listener) { + } + + virtual void + onFrameAvailable(const android::BufferItem& /* item */) { + mUserListener->onFrameAvailable(); + } + +private: + Minicap::FrameAvailableListener* mUserListener; +}; + +class MinicapImpl: public Minicap +{ +public: + MinicapImpl(int32_t displayId) + : mDisplayId(displayId), + mRealWidth(0), + mRealHeight(0), + mDesiredWidth(0), + mDesiredHeight(0), + mDesiredOrientation(0), + mHaveBuffer(false), + mHaveRunningDisplay(false) { + } + + virtual + ~MinicapImpl() { + release(); + } + + virtual int + applyConfigChanges() { + if (mHaveRunningDisplay) { + destroyVirtualDisplay(); + } + + return createVirtualDisplay(); + } + + virtual int + consumePendingFrame(Minicap::Frame* frame) { + android::status_t err; + + if ((err = mConsumer->lockNextBuffer(&mBuffer)) != android::NO_ERROR) { + if (err == -EINTR) { + return err; + } + else { + MCERROR("Unable to lock next buffer %s (%d)", error_name(err), err); + return err; + } + } + + frame->data = mBuffer.data; + frame->format = convertFormat(mBuffer.format); + frame->width = mBuffer.width; + frame->height = mBuffer.height; + frame->stride = mBuffer.stride; + frame->bpp = android::bytesPerPixel(mBuffer.format); + frame->size = mBuffer.stride * mBuffer.height * frame->bpp; + + mHaveBuffer = true; + + return 0; + } + + virtual Minicap::CaptureMethod + getCaptureMethod() { + return METHOD_VIRTUAL_DISPLAY; + } + + virtual int32_t + getDisplayId() { + return mDisplayId; + } + + virtual void + release() { + destroyVirtualDisplay(); + } + + virtual void + releaseConsumedFrame(Minicap::Frame* /* frame */) { + if (mHaveBuffer) { + mConsumer->unlockBuffer(mBuffer); + mHaveBuffer = false; + } + } + + virtual int + setDesiredInfo(const Minicap::DisplayInfo& info) { + mDesiredWidth = info.width; + mDesiredHeight = info.height; + mDesiredOrientation = info.orientation; + return 0; + } + + virtual void + setFrameAvailableListener(Minicap::FrameAvailableListener* listener) { + mUserFrameAvailableListener = listener; + } + + virtual int + setRealInfo(const Minicap::DisplayInfo& info) { + mRealWidth = info.width; + mRealHeight = info.height; + return 0; + } + +private: + int32_t mDisplayId; + uint32_t mRealWidth; + uint32_t mRealHeight; + uint32_t mDesiredWidth; + uint32_t mDesiredHeight; + uint8_t mDesiredOrientation; + android::sp mBufferProducer; + android::sp mBufferConsumer; + android::sp mConsumer; + android::sp mVirtualDisplay; + android::sp mFrameProxy; + Minicap::FrameAvailableListener* mUserFrameAvailableListener; + bool mHaveBuffer; + bool mHaveRunningDisplay; + android::CpuConsumer::LockedBuffer mBuffer; + + int + createVirtualDisplay() { + uint32_t sourceWidth, sourceHeight; + uint32_t targetWidth, targetHeight; + android::status_t err; + + switch (mDesiredOrientation) { + case Minicap::ORIENTATION_90: + sourceWidth = mRealHeight; + sourceHeight = mRealWidth; + targetWidth = mDesiredHeight; + targetHeight = mDesiredWidth; + break; + case Minicap::ORIENTATION_270: + sourceWidth = mRealHeight; + sourceHeight = mRealWidth; + targetWidth = mDesiredHeight; + targetHeight = mDesiredWidth; + break; + case Minicap::ORIENTATION_180: + sourceWidth = mRealWidth; + sourceHeight = mRealHeight; + targetWidth = mDesiredWidth; + targetHeight = mDesiredHeight; + break; + case Minicap::ORIENTATION_0: + default: + sourceWidth = mRealWidth; + sourceHeight = mRealHeight; + targetWidth = mDesiredWidth; + targetHeight = mDesiredHeight; + break; + } + + // Set up virtual display size. + android::Rect layerStackRect(sourceWidth, sourceHeight); + android::Rect visibleRect(targetWidth, targetHeight); + + // Create a Surface for the virtual display to write to. + MCINFO("Creating SurfaceComposerClient"); + android::sp sc = new android::SurfaceComposerClient(); + + MCINFO("Performing SurfaceComposerClient init check"); + if ((err = sc->initCheck()) != android::NO_ERROR) { + MCERROR("Unable to initialize SurfaceComposerClient"); + return err; + } + + // This is now REQUIRED in O Developer Preview 1 or there's a segfault + // when the sp goes out of scope. + sc = NULL; + + // Create virtual display. + MCINFO("Creating virtual display"); + mVirtualDisplay = android::SurfaceComposerClient::createDisplay( + /* const String8& displayName */ android::String8("minicap"), + /* bool secure */ true + ); + + MCINFO("Creating buffer queue"); + android::BufferQueue::createBufferQueue(&mBufferProducer, &mBufferConsumer, false); + + MCINFO("Setting buffer options"); + mBufferConsumer->setDefaultBufferSize(targetWidth, targetHeight); + mBufferConsumer->setDefaultBufferFormat(android::PIXEL_FORMAT_RGBA_8888); + + MCINFO("Creating CPU consumer"); + mConsumer = new android::CpuConsumer(mBufferConsumer, 3, false); + mConsumer->setName(android::String8("minicap")); + + MCINFO("Creating frame waiter"); + mFrameProxy = new FrameProxy(mUserFrameAvailableListener); + mConsumer->setFrameAvailableListener(mFrameProxy); + + MCINFO("Publishing virtual display"); + android::SurfaceComposerClient::Transaction t; + t.setDisplaySurface(mVirtualDisplay, mBufferProducer); + t.setDisplayProjection(mVirtualDisplay, + android::DISPLAY_ORIENTATION_0, layerStackRect, visibleRect); + t.setDisplayLayerStack(mVirtualDisplay, 0); // default stack + t.apply(); + + mHaveRunningDisplay = true; + + return 0; + } + + void + destroyVirtualDisplay() { + MCINFO("Destroying virtual display"); + android::SurfaceComposerClient::destroyDisplay(mVirtualDisplay); + + if (mHaveBuffer) { + mConsumer->unlockBuffer(mBuffer); + mHaveBuffer = false; + } + + mBufferProducer = NULL; + mBufferConsumer = NULL; + mConsumer = NULL; + mFrameProxy = NULL; + mVirtualDisplay = NULL; + + mHaveRunningDisplay = false; + } + + static Minicap::Format + convertFormat(android::PixelFormat format) { + switch (format) { + case android::PIXEL_FORMAT_NONE: + return FORMAT_NONE; + case android::PIXEL_FORMAT_CUSTOM: + return FORMAT_CUSTOM; + case android::PIXEL_FORMAT_TRANSLUCENT: + return FORMAT_TRANSLUCENT; + case android::PIXEL_FORMAT_TRANSPARENT: + return FORMAT_TRANSPARENT; + case android::PIXEL_FORMAT_OPAQUE: + return FORMAT_OPAQUE; + case android::PIXEL_FORMAT_RGBA_8888: + return FORMAT_RGBA_8888; + case android::PIXEL_FORMAT_RGBX_8888: + return FORMAT_RGBX_8888; + case android::PIXEL_FORMAT_RGB_888: + return FORMAT_RGB_888; + case android::PIXEL_FORMAT_RGB_565: + return FORMAT_RGB_565; + case android::PIXEL_FORMAT_BGRA_8888: + return FORMAT_BGRA_8888; + case android::PIXEL_FORMAT_RGBA_5551: + return FORMAT_RGBA_5551; + case android::PIXEL_FORMAT_RGBA_4444: + return FORMAT_RGBA_4444; + default: + return FORMAT_UNKNOWN; + } + } +}; + +int +minicap_try_get_display_info(int32_t displayId, Minicap::DisplayInfo* info) { + android::sp dpy = android::SurfaceComposerClient::getBuiltInDisplay(displayId); + + android::Vector configs; + android::status_t err = android::SurfaceComposerClient::getDisplayConfigs(dpy, &configs); + + if (err != android::NO_ERROR) { + MCERROR("SurfaceComposerClient::getDisplayInfo() failed: %s (%d)\n", error_name(err), err); + return err; + } + + int activeConfig = android::SurfaceComposerClient::getActiveConfig(dpy); + if(static_cast(activeConfig) >= configs.size()) { + MCERROR("Active config %d not inside configs (size %zu)\n", activeConfig, configs.size()); + return android::BAD_VALUE; + } + android::DisplayInfo dinfo = configs[activeConfig]; + + info->width = dinfo.w; + info->height = dinfo.h; + info->orientation = dinfo.orientation; + info->fps = dinfo.fps; + info->density = dinfo.density; + info->xdpi = dinfo.xdpi; + info->ydpi = dinfo.ydpi; + info->secure = dinfo.secure; + info->size = sqrt(pow(dinfo.w / dinfo.xdpi, 2) + pow(dinfo.h / dinfo.ydpi, 2)); + + return 0; +} + +Minicap* +minicap_create(int32_t displayId) { + return new MinicapImpl(displayId); +} + +void +minicap_free(Minicap* mc) { + delete mc; +} + +void +minicap_start_thread_pool() { + android::ProcessState::self()->startThreadPool(); +} From 3bcec4234ddd6981212c9304f273780747384baa Mon Sep 17 00:00:00 2001 From: Crepieux Pierre Date: Wed, 4 Sep 2019 16:42:53 +0200 Subject: [PATCH 2/7] To cope with API changes in the SurfaceComposer we can replace getBuiltInDisplay (which has been removed) with getPhysicalDisplayToken. --- jni/minicap-shared/aosp/Android.mk | 2 ++ jni/minicap-shared/aosp/Makefile | 10 ++++++++++ .../aosp/libs/android-29/arm64-v8a/minicap.so | Bin 0 -> 29080 bytes jni/minicap-shared/aosp/src/minicap_29.cpp | 2 +- 4 files changed, 13 insertions(+), 1 deletion(-) create mode 100755 jni/minicap-shared/aosp/libs/android-29/arm64-v8a/minicap.so diff --git a/jni/minicap-shared/aosp/Android.mk b/jni/minicap-shared/aosp/Android.mk index 9be0f59f..40a4981b 100644 --- a/jni/minicap-shared/aosp/Android.mk +++ b/jni/minicap-shared/aosp/Android.mk @@ -7,6 +7,8 @@ LOCAL_MODULE_TAGS := optional ifneq ($(OVERRIDE_PLATFORM_SDK_VERSION),) LOCAL_SRC_FILES += src/minicap_$(OVERRIDE_PLATFORM_SDK_VERSION).cpp +else ifeq ($(PLATFORM_SDK_VERSION),29) +LOCAL_SRC_FILES += src/minicap_29.cpp else ifeq ($(PLATFORM_SDK_VERSION),28) LOCAL_SRC_FILES += src/minicap_28.cpp else ifeq ($(PLATFORM_SDK_VERSION),27) diff --git a/jni/minicap-shared/aosp/Makefile b/jni/minicap-shared/aosp/Makefile index dc6b8e27..0dd853dc 100644 --- a/jni/minicap-shared/aosp/Makefile +++ b/jni/minicap-shared/aosp/Makefile @@ -48,6 +48,7 @@ all: \ libs/android-28/arm64-v8a/minicap.so \ libs/android-28/x86/minicap.so \ libs/android-28/x86_64/minicap.so \ + libs/android-29/arm64-v8a/minicap.so \ libs/android-9/armeabi-v7a/minicap.so: $(SOURCES) src/minicap_9.cpp mkdir -p $(@D) @@ -606,3 +607,12 @@ libs/android-28/mips64/minicap.so: $(SOURCES) src/minicap_28.cpp -v $(this_dir):/app \ -v $(this_dir)$(@D):/artifacts \ openstf/aosp:jdk8 /aosp.sh build aosp_mips64-eng minicap + +libs/android-29/arm64-v8a/minicap.so: $(SOURCES) src/minicap_29.cpp + mkdir -p $(@D) + docker run --rm \ + -a stdout -a stderr \ + -v /media/aosp/android-10.0.0_r2:/aosp \ + -v $(this_dir):/app \ + -v $(this_dir)$(@D):/artifacts \ + openstf/aosp:jdk8 /aosp.sh build aosp_arm64-eng minicap diff --git a/jni/minicap-shared/aosp/libs/android-29/arm64-v8a/minicap.so b/jni/minicap-shared/aosp/libs/android-29/arm64-v8a/minicap.so new file mode 100755 index 0000000000000000000000000000000000000000..ecddadae3283ab5dcca851618c858f12b92bd4e3 GIT binary patch literal 29080 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 z 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 literal 0 HcmV?d00001 diff --git a/jni/minicap-shared/aosp/src/minicap_29.cpp b/jni/minicap-shared/aosp/src/minicap_29.cpp index c5a04d39..fc4bea20 100644 --- a/jni/minicap-shared/aosp/src/minicap_29.cpp +++ b/jni/minicap-shared/aosp/src/minicap_29.cpp @@ -340,7 +340,7 @@ class MinicapImpl: public Minicap int minicap_try_get_display_info(int32_t displayId, Minicap::DisplayInfo* info) { - android::sp dpy = android::SurfaceComposerClient::getBuiltInDisplay(displayId); + android::sp dpy = android::SurfaceComposerClient::getPhysicalDisplayToken(displayId); android::Vector configs; android::status_t err = android::SurfaceComposerClient::getDisplayConfigs(dpy, &configs); From 57299f0002be7720feedbf51ab0433d674f0ee00 Mon Sep 17 00:00:00 2001 From: Crepieux Pierre Date: Wed, 15 Jan 2020 16:40:16 +0100 Subject: [PATCH 3/7] Fallback to getInternalDisplayToken if displayId is an unsupported value Display ids management changed : 0/1 are not internal/external ids like they previously were. --- jni/minicap-shared/aosp/src/minicap_29.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/jni/minicap-shared/aosp/src/minicap_29.cpp b/jni/minicap-shared/aosp/src/minicap_29.cpp index fc4bea20..01e39089 100644 --- a/jni/minicap-shared/aosp/src/minicap_29.cpp +++ b/jni/minicap-shared/aosp/src/minicap_29.cpp @@ -341,6 +341,10 @@ class MinicapImpl: public Minicap int minicap_try_get_display_info(int32_t displayId, Minicap::DisplayInfo* info) { android::sp dpy = android::SurfaceComposerClient::getPhysicalDisplayToken(displayId); + if(!dpy) { + MCINFO("could not get display for id: %d, using internal display", displayId); + dpy = android::SurfaceComposerClient::getInternalDisplayToken(); + } android::Vector configs; android::status_t err = android::SurfaceComposerClient::getDisplayConfigs(dpy, &configs); From 65284e68eb7cb3ccef1ee62f5e3122f2393f1c64 Mon Sep 17 00:00:00 2001 From: Crepieux Pierre Date: Fri, 17 Jan 2020 14:05:45 +0100 Subject: [PATCH 4/7] Prepare release with x86 support and latest fixes --- Makefile | 4 ++++ .../aosp/libs/android-29/arm64-v8a/minicap.so | Bin 29080 -> 29088 bytes .../libs/android-29/armeabi-v7a/minicap.so | Bin 0 -> 28888 bytes .../aosp/libs/android-29/x86/minicap.so | Bin 0 -> 31868 bytes .../aosp/libs/android-29/x86_64/minicap.so | Bin 0 -> 37272 bytes package.json | 18 ++++++++++-------- 6 files changed, 14 insertions(+), 8 deletions(-) create mode 100755 jni/minicap-shared/aosp/libs/android-29/armeabi-v7a/minicap.so create mode 100755 jni/minicap-shared/aosp/libs/android-29/x86/minicap.so create mode 100755 jni/minicap-shared/aosp/libs/android-29/x86_64/minicap.so diff --git a/Makefile b/Makefile index 8f41cbbf..63dd8681 100644 --- a/Makefile +++ b/Makefile @@ -41,6 +41,7 @@ prebuilt: \ prebuilt/armeabi-v7a/lib/android-26/minicap.so \ prebuilt/armeabi-v7a/lib/android-27/minicap.so \ prebuilt/armeabi-v7a/lib/android-28/minicap.so \ + prebuilt/armeabi-v7a/lib/android-29/minicap.so \ prebuilt/arm64-v8a/bin/minicap \ prebuilt/arm64-v8a/bin/minicap-nopie \ prebuilt/arm64-v8a/lib/android-21/minicap.so \ @@ -51,6 +52,7 @@ prebuilt: \ prebuilt/arm64-v8a/lib/android-26/minicap.so \ prebuilt/arm64-v8a/lib/android-27/minicap.so \ prebuilt/arm64-v8a/lib/android-28/minicap.so \ + prebuilt/arm64-v8a/lib/android-29/minicap.so \ prebuilt/x86/bin/minicap \ prebuilt/x86/bin/minicap-nopie \ prebuilt/x86/lib/android-14/minicap.so \ @@ -67,6 +69,7 @@ prebuilt: \ prebuilt/x86/lib/android-26/minicap.so \ prebuilt/x86/lib/android-27/minicap.so \ prebuilt/x86/lib/android-28/minicap.so \ + prebuilt/x86/lib/android-29/minicap.so \ prebuilt/x86_64/bin/minicap \ prebuilt/x86_64/bin/minicap-nopie \ prebuilt/x86_64/lib/android-21/minicap.so \ @@ -77,6 +80,7 @@ prebuilt: \ prebuilt/x86_64/lib/android-26/minicap.so \ prebuilt/x86_64/lib/android-27/minicap.so \ prebuilt/x86_64/lib/android-28/minicap.so \ + prebuilt/x86_64/lib/android-29/minicap.so \ prebuilt/%/bin/minicap: libs/%/minicap mkdir -p $(@D) diff --git a/jni/minicap-shared/aosp/libs/android-29/arm64-v8a/minicap.so b/jni/minicap-shared/aosp/libs/android-29/arm64-v8a/minicap.so index ecddadae3283ab5dcca851618c858f12b92bd4e3..f242d0a9ddd70bb3469f95bafb2d48c87b88880c 100755 GIT binary patch delta 7590 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�%5KHyzM2Y!6vWZ0>4+;Z)=HPBxfgd=u?NAdd;XSv|EQ4nB zr3O;r!ArD|U7}f0q;Xb$^(hN!1{5ef$YZchkwouB3JEEMPQ^5Or&4;5;ZUMnNjd>H z&I8}t{NgIeC(wXn9W=)cAOU#s9%MO$#uwsexIOU_@_RTNKY$z$oj4u|t_gWTA*3l6 z6A|f*Infz&#*AUb(HToaUe!}!sKT)T*E$l8CQ#%MxSrriN0KmF=EHdKGWRf3X;9B3 zjUGIpU@+fnI!d!XQyR+9k1ADZNS|)2okDXbQzDDDbG2Cn5vGb$8U#=?SnT=;4^h<@ z9BomYjdmWbH9aZPsPRr==s|0cH-Sv_l%=DLzLRfg{Wxpw1iV&#Yr2=J?S$b4q$GNf z7a%v$N0fpx+zjxL?&CcK$8^=v8j5<=yh+WJx*t71ED!lOl|^0 zqS$o}qa$CH)Ug|NxcExoh4-EyxfK-eS7@w^m#T8?K{c4 zFRxA+HF4kp-SQ(v-G8TZ@h%WDx*@pF)bzJkuKN5tKs`U*ZeUWz zucEIOgodV<&QaDcdp>;d#WSq<$`LqG@@?hmlVGZZR`S_VL{TDTifAX{4%1J7R zsn*X6oBD->|9I-cy|Zs$2YhuR)CX)D)K|X$ZBF{K7uzl`+Iw?MQ|jIL&OVis0?MU}pGKJn^Bob$mu$2jS^h0it#$BlU0f5D~=Ti2aVx{zGIEcNk)+GB33 z`EG(*!cH|KC~t??E%v5cn-`aCty66|dfmC9P9eHcwP`@xxV}wygp)Q@5JLv`o3?Jv zD*N0b^&;htD__38x~c0@XzGH7Z}`jmKDqlHr%!Ed|EHz*t2RdTEIe6Qz4LwQ4fku+ zpXb<5syOnW>W<-OY-TO!s9Z2+sCM?rFz2T+BbJ=G**IsWqWN)y-DjaQuC1CH(>AiU z{PsP;znZq(dDb!^uepz1*5%$O1~-m9_o}*h|KpCxS&9tx3bm;B%JM63w-*e{G^Ey@ zW<72=JysxIJluKZ&wn%>FIKQ3`}pq@hB=L?s3mu=Fl6~}DGzTFmPCjKvAzB6-xXCf zpVTOiv!;cs;6E9%J&(`tR4iR=H#N>Zt(Wdp+1Jk#zq(DIp}20f1ll6?76yaTl2()TQ!R-!+tusO?_bO(A(o) z5_Nz4L3thuEzF(wL;f%P+oPtO9C3YT;--kSyE_ujHZFRaCSm!rOa?UfL8VKD{HhbBy$`%0Im>Q=JxY$w}{|A1$~M_}+8eguH$8 z4}Qt>g~QJVec#)CQOBB$jFrBzb2ewLUA&jNxR^iwRP(5dvsu=Etlqa2<|T}%ad_%J zZ{_>m(f6}vPlA|>zaE$=SmYkrGU0jIQ?*0CvenTS&%Ljj*Li0Azd|R!DbKzy?mJ(w zr}Mg>K~fgcX>;o8=e+~l%1<6y&HW57) z+<9Qd^lk0yrRr_R{+xAqjWYCI?11*g3-7_qj)~-m-1lt1Eh~?W_t`(^pnlos6VF7g z-f(YO$?6wTFX|s%y}Ih=vw99u-RYZ++_I?x?EsNhcdgX=d zR-4u?si>H$n;le~-(*MZo@SjI{>9LxkA9F`3?JC`D&Q2ge6#v+UBa3k@2%F(t4nc; zp6&d*WVA2^|0#KE!!XCXUzZ($#yK7MR?(32>D1{yeKvz3CxAPdIjSZ@P;NN4lDVpc zg52=l-KSYM`t^iEx&B=GyB*y$@G3X_<3ZScAZj3TZU9f`Zqn&S{MYE*09&(viSC~p wW*g{bQVR5f*K-qD(ISY-^XFNf0@AwTJT*yf1Ver}{);uJAQnFl6%=^>Kg8j2_y7O^ delta 7500 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 diff --git a/jni/minicap-shared/aosp/libs/android-29/armeabi-v7a/minicap.so b/jni/minicap-shared/aosp/libs/android-29/armeabi-v7a/minicap.so new file mode 100755 index 0000000000000000000000000000000000000000..38728b22444f57c0cf85c646d5105e8b61db4872 GIT binary patch literal 28888 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 I!Yu5+0Co8MHvj+t literal 0 HcmV?d00001 diff --git a/jni/minicap-shared/aosp/libs/android-29/x86/minicap.so b/jni/minicap-shared/aosp/libs/android-29/x86/minicap.so new file mode 100755 index 0000000000000000000000000000000000000000..f7f83828ca8919b6e8581dfa24fc7111ae95c609 GIT binary patch literal 31868 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 BeZl|$ literal 0 HcmV?d00001 diff --git a/jni/minicap-shared/aosp/libs/android-29/x86_64/minicap.so b/jni/minicap-shared/aosp/libs/android-29/x86_64/minicap.so new file mode 100755 index 0000000000000000000000000000000000000000..e34a95cbbf11c752957280960c0d5b6d0fec9245 GIT binary patch literal 37272 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 cL7WGe6W;3rBb8^X=@ Date: Wed, 5 Feb 2020 21:08:41 +0100 Subject: [PATCH 5/7] Recover proper url and description url and description from the fork that originated the PR (changed to avoid confusion between packages) unexpectedly ended up in the upstream repo. --- package.json | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 75bfe7dd..2d1569a8 100644 --- a/package.json +++ b/package.json @@ -1,26 +1,24 @@ { "name": "minicap-prebuilt", "version": "2.3.2", - "description": "Orange prebuilt binaries of minicap for OpenSTF.", + "description": "Prebuilt binaries of minicap.", "keywords": [ "minicap" ], "bugs": { - "url": "https://github.com/Orange-OpenSource/minicap/issues" + "url": "https://github.com/openstf/minicap/issues" }, "license": "Apache-2.0", "author": { - "name": "Orange", - "url": "https://opensource.orange.com/" + "name": "The OpenSTF Project", + "email": "contact@openstf.io", + "url": "https://openstf.io" }, "repository": { "type": "git", - "url": "https://github.com/Orange-OpenSource/minicap.git" + "url": "https://github.com/openstf/minicap.git" }, "scripts": { "prepublish": "make" - }, - "files": [ - "prebuilt" - ] + } } From 382da25a5e08fbcd2f47ba6aac1bfa9465335a0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20Wr=C3=B3tniak?= Date: Mon, 13 Jul 2020 20:58:57 +0200 Subject: [PATCH 6/7] Update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 39208734..8faaba85 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,9 @@ # minicap +# Warning + +This repository was superseded by https://github.com/DeviceFarmer/minicap + Minicap provides a socket interface for streaming realtime screen capture data out of Android devices. It is meant to be used as a component in a larger program and is therefore not immensely useful just by itself. For example, it is being used in [STF](https://github.com/openstf/stf) for remote control. Minicap works without root if started via [ADB](http://developer.android.com/tools/help/adb.html) on SDK 28 (Android 9.0) and lower. The lowest SDK level we build for is 9 (i.e. Android 2.3). Minicap also works on Android Wear. Developer previews are, in general, supported once Google releases the source code for that release. _Only the latest Developer Preview is supported, and only until there's a stable release._ Emulators are not supported. Note that Android 3.x is not supported since those versions were never open sourced. From 0ee92b4741e45660040c759fc63df75ce8c4c4b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20Wr=C3=B3tniak?= Date: Sat, 15 Aug 2020 15:57:08 +0200 Subject: [PATCH 7/7] Update README.md --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 8faaba85..c7d915b2 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,10 @@ -# minicap - # Warning -This repository was superseded by https://github.com/DeviceFarmer/minicap +# This project along with other ones in [OpenSTF](https://github.com/openstf) organisation is provided as is for community, without active development. +# You can check any other forks that may be actively developed and offer new/different features [here](https://github.com/openstf/stf/network). +# Active development has been moved to [DeviceFarmer](https://github.com/DeviceFarmer) organisation. + +# minicap Minicap provides a socket interface for streaming realtime screen capture data out of Android devices. It is meant to be used as a component in a larger program and is therefore not immensely useful just by itself. For example, it is being used in [STF](https://github.com/openstf/stf) for remote control.