diff options
author | Pawit Pornkitprasan <p.pawit@gmail.com> | 2011-12-06 14:45:41 +0700 |
---|---|---|
committer | Pawit Pornkitprasan <p.pawit@gmail.com> | 2011-12-06 14:45:54 +0700 |
commit | cdf27513762c3313f8ef8e606bb31533e5f25087 (patch) | |
tree | 56fcffba956b8305ded2e104758a2f744cfb2285 /tvouthack | |
parent | 71012e283db265ba0d4b93400ea802e2a84c46bf (diff) | |
download | device_samsung_aries-common-cdf27513762c3313f8ef8e606bb31533e5f25087.zip device_samsung_aries-common-cdf27513762c3313f8ef8e606bb31533e5f25087.tar.gz device_samsung_aries-common-cdf27513762c3313f8ef8e606bb31533e5f25087.tar.bz2 |
Add TV Out support
Diffstat (limited to 'tvouthack')
-rw-r--r-- | tvouthack/Android.mk | 27 | ||||
-rw-r--r-- | tvouthack/README.txt | 5 | ||||
-rw-r--r-- | tvouthack/main.cpp | 49 |
3 files changed, 81 insertions, 0 deletions
diff --git a/tvouthack/Android.mk b/tvouthack/Android.mk new file mode 100644 index 0000000..a38be88 --- /dev/null +++ b/tvouthack/Android.mk @@ -0,0 +1,27 @@ +# Copyright (C) 2011 Pawit Pornkitprasan +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_MODULE_TAGS := optional + +LOCAL_SRC_FILES := main.cpp + +LOCAL_SHARED_LIBRARIES := libutils libbinder + +LOCAL_MODULE := tvouthack + +include $(BUILD_EXECUTABLE) + diff --git a/tvouthack/README.txt b/tvouthack/README.txt new file mode 100644 index 0000000..bea0307 --- /dev/null +++ b/tvouthack/README.txt @@ -0,0 +1,5 @@ +The proprietary daemon "tvoutserver" expects the system to tell it +when the frames should be refreshed. Samsung implemented this by +integrating TV Out in surfaceflinger and other graphic services. +However, we will just run a daemon that brute sends the signal every +150 ms.
\ No newline at end of file diff --git a/tvouthack/main.cpp b/tvouthack/main.cpp new file mode 100644 index 0000000..85005c7 --- /dev/null +++ b/tvouthack/main.cpp @@ -0,0 +1,49 @@ +#include <stdio.h> +#include <binder/IPCThreadState.h> +#include <binder/ProcessState.h> +#include <binder/IServiceManager.h> +#include <utils/Log.h> + +using namespace android; + +int main() { + sp<IServiceManager> sm = defaultServiceManager(); + sp<IBinder> binder; + + do { + binder = sm->getService(String16("tvout")); + if (binder != 0) break; + usleep(500000); // 0.5 s + } while(true); + + int ret; + + Parcel s2, r2; + s2.writeInterfaceToken(String16("android.hardware.ITvOutService")); + binder->transact(1, s2, &r2); + sp<IBinder> binder2 = r2.readStrongBinder(); + + while (true) { + { + Parcel send, reply; + int code = 4; + send.writeInterfaceToken(String16("android.hardware.ITvOut")); + int ret = binder2->transact(code, send, &reply); + } + { + Parcel send, reply; + int code = 27; + send.writeInterfaceToken(String16("android.hardware.ITvOut")); + int ret = binder2->transact(code, send, &reply); + } + { + Parcel send, reply; + int code = 13; + send.writeInterfaceToken(String16("android.hardware.ITvOut")); + send.writeInt32(0); + int ret = binder2->transact(code, send, &reply); + } + usleep(15000); // Should give ~60 fps + } + return 0; +}
\ No newline at end of file |