2012-03-28 9 views
20

के साथ संयोजन में सतह के मिश्रण का उपयोग करना मैं एंड्रॉइड पर जीपीयू पर कैमरा छवि प्रसंस्करण करना चाहता हूं।रेंडरस्क्रिप्ट

मेरे वर्तमान सेट-अप में मैं कैमरा छवि स्ट्रीम से ओपनजीएल ईएस बनावट के रूप में फ्रेम को कैप्चर करने के लिए एक सतहफलक का उपयोग करता हूं। कैमरे स्ट्रीम को मेरे शेडर्स में एक्सेसिबल करने का यह एक प्रभावी तरीका है। (http://developer.android.com/reference/android/graphics/SurfaceTexture.html)

अब मैं सीधे ओएनजीएल ES उपयोग के बजाय नए रेंडरस्क्रिप्ट एपीआई का उपयोग शुरू करना चाहता हूं। (http://developer.android.com/guide/topics/renderscript/index.html)

लेकिन सतह का निर्माण करने के लिए, मुझे निर्माता को ओपनजीएल बनावट आईडी पास करने की आवश्यकता है। दुर्भाग्य से बनावट आईडी उपलब्ध नहीं है (रेंडरस्क्रिप्ट बनावट लोड करने के लिए आवंटन वर्ग का उपयोग करता है, जो बनावट आईडी का पर्दाफाश नहीं करता है)। तो मैं रेंडरस्क्रिप्ट का उपयोग करते समय एक भूतल मिश्रण बनाने में सक्षम नहीं हूं।

मैंने रेन्डरस्क्रिप्ट पर सभी दस्तावेज पढ़े हैं (जो अभी भी बहुत दुर्लभ है) और नमूने को देखा, लेकिन उनके पास इस विषय पर कोई जानकारी नहीं है।

तो मेरा प्रश्न है: क्या रेंडरस्क्रिप्ट के साथ संयोजन में सतह के मिश्रण का उपयोग करना संभव है, या क्या रेंडरस्क्रिप्ट ग्राफिक्स स्क्रिप्ट में लाइव कैमरा स्ट्रीम का उपयोग करने का कोई अन्य कारगर तरीका है?

उत्तर

1

यदि मैं सही ढंग से समझता हूं, तो आप पहले से ही SurfaceTexture का उपयोग कर सकते हैं। फिर आप setOnFrameAvailableListener के साथ कॉलबैक पंजीकृत कर सकते हैं।

मैं दो समाधान देखें:

  1. इम्प्लीमेन्ट्स आप ही RSTextureView, जो SurfaceTexture.OnFrameAvailableListener से विरासत। SurfaceTexture कॉलबैक के रूप में अपना दृश्य पंजीकृत करें। हर बार जब आपका सतह दृश्य कैमरा स्ट्रीम द्वारा अपडेट किया जाता है, तो आपके RSTextureView को अधिसूचित किया जाएगा और आप इसे जिस तरह से चाहते हैं उसे संभाल सकते हैं।

  2. एक और समाधान आपके RenderScriptGL को लागू करना होगा (अभी भी SurfaceTexture.OnFrameAvailableListener से विरासत में है) और कॉलबैक कहलाते समय setSurfaceTexture पर कॉल करें।

आप इन दो समाधान के कम से कम एक के साथ एक SurfaceTexture साथ RenderScript गठबंधन करने के लिए सक्षम होना चाहिए।

+0

मैं उत्तर की सराहना करता हूं, लेकिन इस प्रश्न को पोस्ट करने के बाद से मैंने अपने आवेदन के लिए जीएलएसएल का उपयोग करने का फैसला किया। ऐसा इसलिए है क्योंकि मुझे इसे काम करने का एक आसान तरीका नहीं मिला, और हाल ही में क्योंकि रेंडरस्क्रिप्ट ग्राफिक्स अनुभाग को 4.1 (जेली बीन) में गिरा दिया जाएगा। इसलिए मैंने इस एवर का परीक्षण नहीं किया। तो इस धागे के अन्य अनुयायियों के लिए: मैं इस जवाब को स्वीकार करता हूं क्योंकि यह उचित है, लेकिन मैंने लागू नहीं किया। – Arjan