2012-07-10 5 views
19

के लिए GPUimage पोर्ट क्या किसी ने इसे अभी तक android पर पोर्ट किया है? शेडर्स से अधिक ढांचा। कैमरा डेटा को openGL में लाने की तरह सामग्री। मैंने iOS पर इसके साथ काम किया है और यह बहुत तेज़ है। किसी भी प्रकार की मदद की बेहद सराहना की जाती है। के लिए Android आइडिया सेएंड्रॉइड

+2

इससे पहले कि आप पूछें, मैं जल्द ही किसी भी एंड्रॉइड संस्करण पर काम नहीं कर रहा हूं। हालांकि, किसी ने कुछ महीने पहले AS3 को इसकी मूल बातें पोर्ट की थीं: https://github.com/inspirit/GPUImage। टुकड़े के टुकड़े ज्यादातर छेड़छाड़ में आ सकते हैं, लेकिन शेष को एंड्रॉइड के कैमरे के लिए एक पूर्ण पुनर्लेखन और ओपनजीएल ईएस आर्किटेक्चर का समर्थन करने की आवश्यकता होगी। इसके अलावा, इसे उस प्लेटफ़ॉर्म के लिए डिवाइस हार्डवेयर की विस्तृत विविधता से निपटने की आवश्यकता होगी, जहां मैं आईओएस डिवाइस और उनके पावरवीआर हार्डवेयर के बारे में कुछ अनुमान लगा सकता हूं। –

+1

मैं वर्तमान में GPUImage के त्वरित C ​​++ पोर्ट के साथ प्रयोग कर रहा हूं जो यहां जिथब पर पाया जा सकता है: https://github.com/Dexterp37/GPUImage। फिलहाल यह फ़ाइल और एंड्रॉइड (एनडीके के माध्यम से) से लोड करके ग्रेस्केल फ़िल्टर का उपयोग करने की अनुमति देता है, अभी तक समर्थन नहीं है, लेकिन मैं जितनी जल्दी हो सके उस पर काम करना शुरू करने की योजना बना रहा हूं। – Dexter

+1

आरंभ करने से पहले आप [रेन्डर्सक्रिप्ट] (http://developer.android.com/guide/topics/renderscript/compute.html) में थोड़ा सा पढ़ना चाहेंगे। एपीआई में छवि प्रसंस्करण के लिए अंतर्निहित हैं। – eternalmatt

उत्तर

8

GPUImage: आईओएस GPUImage ढांचे

लक्ष्य के रूप में संभव के रूप में GPUImage को कुछ इसी तरह है। Vertex और टुकड़े टुकड़े बिल्कुल वही हैं। इस तरह से यह GPUImage आईओएस से एंड्रॉइड तक पोर्ट फ़िल्टर करना आसान बनाता है।

लिंक नीचे है:

This lib is implemented using Android OpenGL ES 2.0

+0

ऐसा लगता है कि एंड्रॉइड लाइब्रेरी केवल छवियों (कोई वीडियो नहीं) पर काम करती है? –

+0

हाँ, केवल छवियाँ – vanloi999

+0

क्या कोई अन्य लाइब्रेरी छवि और वीडियो दोनों करने में सक्षम है? –

0

आप वीडियो पूर्वावलोकन के लिए Gpuimage उपयोग कर सकते हैं और चित्र भी ले, बस NDK साथ gpuimage पुस्तकालय में JNI फ़ाइल संकलन और विधि डाल YuvtoRgb GPUImageNativeLibrary में परिवर्तित करने के लिए। एंड्रॉइड के लिए GPUImageLibrary में जावा क्लास।

public static void YUVtoRBGA(byte[] yuv, int width, int height, int[] rgb) { 



final int frameSize = width * height; 
    int r, g, b, y1192, y, i, uvp, u, v; 
    for (int j = 0, yp = 0; j < height; j++) { 
     uvp = frameSize + (j >> 1) * width; 
     u = 0; 
     v = 0; 
     for (i = 0; i < width; i++, yp++) { 
      y = (0xff & ((int) yuv[yp])) - 16; 
      if (y < 0) 
       y = 0; 
      if ((i & 1) == 0) { 
       v = (0xff & yuv[uvp++]) - 128; 
       u = (0xff & yuv[uvp++]) - 128; 
      } 

      y1192 = 1192 * y; 
      r = (y1192 + 1634 * v); 
      g = (y1192 - 833 * v - 400 * u); 
      b = (y1192 + 2066 * u); 

      // Java's functions are faster then 'IFs' 
      r = Math.max(0, Math.min(r, 262143)); 
      g = Math.max(0, Math.min(g, 262143)); 
      b = Math.max(0, Math.min(b, 262143)); 

      rgb[yp] = 0xff000000 | ((r << 6) & 0xff0000) 
        | ((g >> 2) & 0xff00) | ((b >> 10) & 0xff); 
      // rgba, divide 2^10 (>> 10) 
      /* 
      * rgb[yp] = 0xff000000 |((r << 14) & 0xff000000) | ((g << 6) & 
      * 0xff0000) | ((b >> 2) | 0xff00); 
      */ 
     } 
    } 
} 

इस के साथ GPUImageNativeLibrary.java वर्ग के सार्वजनिक स्थिर मूल निवासी YUVtoRBGA में विधि की जगह है, और आप किया है।

+0

क्या यह वीडियो को फ़िल्टर करने और उन्हें सहेजने के लिए काम करता है? –

+0

हाँ मैंने इसे किया, बस GPUImageNativeLibrary.java कक्षा में निम्न को बदलें, लेकिन यह marshmallow के लिए अंतराल होगा। अगर आप कुछ और कर सकते हैं, तो कृपया मुझे बताएं। –