Skip to content
RC3 edited this page Nov 16, 2013 · 1 revision

Nexus 7 2012 Miracast Source and Sink come back in KitKat

Source

Officialy supported devices

grep

    <bool name="config_enableWifiDisplay">true</bool>
  • Nexus 4 - /android-4.4_r1/device/lge/mako/overlay/frameworks/base/core/res/res/values/config.xml
  • Nexus 5 - /android-4.4_r1/device/lge/hammerhead/overlay/frameworks/base/core/res/res/values/config.xml
  • Nexus 7 2013 Wi-Fi - /android-4.4_r1/device/asus/flo/overlay/frameworks/base/core/res/res/values/config.xml
  • Nexus 7 2013 Mobile - /android-4.4_r1/device/asus/deb/overlay/frameworks/base/core/res/res/values/config.xml
  • Nexus 10 - /android-4.4_r1/device/samsung/manta/overlay/frameworks/base/core/res/res/values/config.xml

Sink

Sink implementation Source Code Deleted Again!

Hi, Mr.Huber, WHY ARE YOU DELETING SINK SOURCE CODE BEFORE AOSP RELEASE?

Commit log said,

Remove now unused wfd commandline tool. (also unbreaks the build)
Remove obsolete miracast sink code and friends.

Download Source Code with Sink implementation

 $ mkdir android-4.4_r1
 $ cd android-4.4_r1
 $ repo init -u https://android.googlesource.com/platform/manifest -b android-4.4_r1
 $ repo sync -j8
 $ git revert a306ee6bc1aef463f8984be26b8a4214490b6c55
 $ git revert 6ea551fa13b69e5ce359a7dba7485d857a005304

(*) repo init trouble - Android Source Repo GPG public key not found http://stackoverflow.com/questions/19126603/

Patches

mostly same patches both 4.2.2 and 4.4.

(prepared gist patches)

Summary

  • /build/target/product/generic_no_telephony.mk
    • add Mira4U
  • /frameworks/base/core/res/res/values/config.xml
    • change config_enableWifiDisplay = true
  • /frameworks/base/services/java/com/android/server/display/WifiDisplayController.java
    • Source - extend RTSP connection timeout
    • Sink - wfdInfo.setDeviceType(WifiP2pWfdInfo.SOURCE_OR_PRIMARY_SINK);
  • /frameworks/av/media/libstagefright/ACodec.cpp
    • Source - SKIP!! intra-refresh-mode
  • /frameworks/av/include/media/stagefright/foundation/ANetworkSession.h
  • /frameworks/av/media/libstagefright/foundation/ANetworkSession.cpp
    • Source - add debug log
  • /frameworks/av/media/libstagefright/wifi-display/source/PlaybackSession.h
  • /frameworks/av/media/libstagefright/wifi-display/source/PlaybackSession.cpp
    • Source - change resolution
  • /frameworks/av/media/libstagefright/wifi-display/source/WifiDisplaySource.cpp
    • Source - misc
  • /frameworks/native/include/gui/GLConsumer.h
  • /frameworks/native/libs/gui/GLConsumer.cpp
    • Sink - control rotation
  • /packages/apps/Mira4U
    • Source - add option
    • Sink - Sink Daemon Activity

Updated files for flashable zip

 (full pure build)
 (apply patches)
 (rebuild)
 (correct update files)

All

~/src/android-4.4_r1.update/out/target/product/tilapia/system$ find -cmin -500 | sort
./app / all-apps
./app/Mira4U.apk

./bin/mediaserver
./bin/screenrecord
./bin/nettest
./bin/rtptest
./bin/udptest
./bin/wfd

./framework / all-jars

./lib/libMira4U.so
./lib/libOpenMAXAL.so
./lib/libOpenSLES.so
./lib/libmedia_jni.so
./lib/libmediaplayerservice.so
./lib/libstagefright.so
./lib/libstagefright_chromium_http.so
./lib/libstagefright_foundation.so
./lib/libstagefright_httplive.so
./lib/libstagefright_soft_flacenc.so
./lib/libstagefright_soft_g711dec.so
./lib/libstagefright_soft_gsmdec.so
./lib/libstagefright_soft_h264dec.so
./lib/libstagefright_soft_h264enc.so
./lib/libstagefright_soft_mp3dec.so
./lib/libstagefright_soft_mpeg4dec.so
./lib/libstagefright_soft_mpeg4enc.so
./lib/libstagefright_soft_vorbisdec.so
./lib/libstagefright_soft_vpxdec.so
./lib/libstagefright_soft_vpxenc.so
./lib/libstagefright_wfd.so
./lib/libvariablespeed.so
./lib/libvideoeditor_core.so
./lib/libvideoeditor_jni.so
./lib/libvideoeditorplayer.so
./lib/libwebviewchromium.so
./lib/libwilhelm.so

./priv-app / all-apps

for Miracast Source

/system/app/Mira4U.apk
/system/lib/libMira4U.so
/system/lib/libstagefright.so
/system/lib/libstagefright_foundation.so
/system/lib/libstagefright_wfd.so

for Miracast Sink

require jar files
framework.jar?, services.jar?
/frameworks/base/services/java/com/android/server/display/WifiDisplayController.java

Create flashable zip

 (edit /META-INF/com/google/android/updater-script)
 $ zip -r ../update-mira.zip *
 $ cd ../Auto-sign
 $ java -jar signapk.jar testkey.x509.pem testkey.pk8 ../update-mira.zip ../update-mira_signed.zip
 $ adb push ../update-mira_signed.zip /sdcard/
 $ adb reboot recovery
 (flash update-mira_signed.zip)