यह सबसे निश्चित रूप से सार्थक सीखने ओपन ES2.0 shaders है:
- आप लोड संतुलन कर सकते हैं GPU और सीपीयू (बाद के फ्रेम के जैसे वीडियो डिकोडिंग GPU वर्तमान फ्रेम renders जबकि) के बीच।
- वीडियो फ्रेम किसी भी मामले में GPU जाने की जरूरत:
YCbCr
का उपयोग कर आप 25% बस बैंडविड्थ की बचत होती है अगर आपके वीडियो 4 है: 2: 0 नमूना क्रोमिनेंस।
- आपको GPU हार्डवेयर इंटरपोलेटर के साथ, 4: 2: 0 क्रोमिनेंस अप-नमूनाकरण मुफ्त में मिलता है।
- iOS5 पर GPU को
YCbCr
बनावट धक्का (आपका शेडर ही शिखर एक ही क्षेत्र से अधिक क्रोमिनेंस बनावट सामान्य से अधिक समय दोनों Y
और C{b,r}
बनावट के लिए निर्देशांक, प्रभाव में उपयोग करने के लिए कॉन्फ़िगर किया जाना चाहिए।) तेजी से होता है (कोई डेटा कॉपी या swizzling) बनावट कैश के साथ (CVOpenGLESTextureCache*
एपीआई कार्यों देखें)। आप NEON की तुलना में 1-2 डेटा-प्रतियां सहेज लेंगे।
मैं इन तकनीकों का शानदार प्रभाव in my super-fast iPhone camera app, SnappyCam पर उपयोग कर रहा हूं।
आप लागू करने के लिए सही रास्ते पर हैं: Y
और GL_LUMINANCE_ALPHA
के लिए एक GL_LUMINANCE
बनावट का उपयोग करता है, तो अपने CbCr
interleaved है। अन्यथाबनावट का उपयोग करें यदि आपके सभी YCbCr
घटक noninterleaved हैं।
4 के लिए दो बनावट बनाना: 2: 0 द्वि-प्लानर YCbCr
(जहां CbCr
interleaved है) स्पष्ट है:
glBindTexture(GL_TEXTURE_2D, texture_y);
glTexImage2D(
GL_TEXTURE_2D,
0,
GL_LUMINANCE, // Texture format (8bit)
width,
height,
0, // No border
GL_LUMINANCE, // Source format (8bit)
GL_UNSIGNED_BYTE, // Source data format
NULL
);
glBindTexture(GL_TEXTURE_2D, texture_cbcr);
glTexImage2D(
GL_TEXTURE_2D,
0,
GL_LUMINANCE_ALPHA, // Texture format (16-bit)
width/2,
height/2,
0, // No border
GL_LUMINANCE_ALPHA, // Source format (16-bits)
GL_UNSIGNED_BYTE, // Source data format
NULL
);
जहां तो glTexSubImage2D()
या iOS5 बनावट कैश का प्रयोग करेंगे इन बनावट अद्यतन करने के लिए।
मैं 2 डी varying
का उपयोग करने की भी सिफारिश करता हूं जो बनावट समन्वय अंतरिक्ष (x: [0,1], y: [0,1])
फैलाता है ताकि आप अपने टुकड़े टुकड़े में किसी भी निर्भर बनावट को पढ़ सकें। अंतिम परिणाम सुपर-फास्ट है और मेरे अनुभव में जीपीयू लोड नहीं करता है।
आपको बहुत धन्यवाद, मैं वास्तव में आपके जैसा वर्णन किया गया था, लेकिन मैं आईओएस 5 में नई सुविधाओं के बारे में नहीं जानता था। इसे आजमाएं। – pawlowski
आपके उत्तर के लिए धन्यवाद। आईओएस पर देशी डिकोड पिक्सेल प्रारूप के बारे में मैं और कहां से जान सकता हूं (आपकी पीटी # 2 के जवाब में)? – fionbio