2012-10-18 16 views
7

हमारे पास एक ऐसा एप्लिकेशन है जो एक गीग वाईयूवी वीडियो स्ट्रीम पढ़ता है और इसे स्क्रीन पर प्रदर्शित करता है। प्रोफाइलिंग करके, हमने सीखा है कि प्रत्येक फ्रेम को वाईयूवी (यूवायवीवाई) से आरजीबी 24 में कनवर्ट करने वाला फ़ंक्शन हमारे कैमरे से स्क्रीन पाइपलाइन के किसी भी अन्य टुकड़े की तुलना में कम से कम समय और सीपीयू का आयाम ले रहा है।क्या यूयूवी -> आरजीबी रूपांतरण हार्डवेयर तेज हो सकता है?

रूपांतरण समारोह हम प्रयोग कर रहे हैं GigE सॉफ़्टवेयर विक्रेता (Pleora) द्वारा प्रदान की और हमारे अपने 'अनुभवहीन' (गैर अनुकूलित) कार्यान्वयन की तुलना में थोड़ा तेज है। हम अपनी बाकी पाइपलाइन के लिए डायरेक्टशो का उपयोग कर रहे हैं। 'कार्य-प्रबंधक बेंचमार्किंग' हमारे 1080 पी 30 एफपीएस स्ट्रीम के लिए दिखाता है, जब हम रूपांतरण को कॉल करते हैं तो रूपांतरण को छोड़ते समय (और पाठ्यक्रम की गड़बड़ी वाली छवि प्राप्त करें), और 15-19% सीपीयू उपयोग को 4-5% का सीपीयू उपयोग करते हैं।

सवाल हम कर रहे हैं है

  1. वहाँ एक डायरेक्टशो फिल्टर कि हमारे लिए इस रूपांतरण करना होगा है, उम्मीद है कि एक अधिक performant ढंग से, बल्कि एक 3 पार्टी एसडीके या अपने स्वयं के (CPU- पर भरोसा करने की बजाय आधारित, धारावाहिक) रूपांतरण समारोह?
  2. क्या यह रूपांतरण सीपीयू पर किया जाना चाहिए, या क्या यह किसी भी तरह से समानांतर प्रसंस्करण के लिए जीपीयू में ऑफलोड किया जा सकता है?

धन्यवाद! एरिक।

+0

लागत छवि में प्रत्येक बाइट पढ़ने और लिखने से आता है जिससे स्मृति बैंडविड्थ संतृप्त हो जाता है। जीपीयू प्रसंस्करण कम बैंडविड्थ अनुपात में उच्च कम्प्यूटेशनल ओवरहेड के लिए फायदेमंद है। यूयूवी ओवरले लेने वाले वीडियो कार्ड के लिए यह लाभों में से एक है। –

उत्तर

3

रूपांतरण शायद GPU प्रसंस्करण के लिए एक अच्छा उम्मीदवार है, हालांकि आप परिवर्तित डेटा के साथ क्या करने जा रहे हैं? यदि आपको सॉफ़्टवेयर में आगे की प्रक्रिया के लिए इसकी आवश्यकता है, तो वीडियो एडेप्टर से वापस पढ़ने से जीपीयू को ऑफलोडिंग प्रसंस्करण द्वारा प्राप्त किए गए सभी लाभों को बर्बाद कर दिया जा सकता है। यदि आपको केवल प्रस्तुति उद्देश्यों के लिए इसकी आवश्यकता है, तो आपको कनवर्ट करने की आवश्यकता नहीं है, आप वीडियो एडाप्टर के लिए वाईयूवी छवि वितरित कर सकते हैं और इसे इस तरह पेश कर सकते हैं (जो पाइपलाइन का आदर्श कॉन्फ़िगरेशन है, क्योंकि आपके पास नहीं है कोई भी रूपांतरण)।

सॉफ्टवेयर रूपांतरण के बारे में बात करते हुए मैं, रूपांतरण आप अभी उपयोग कर रहे हैं की गुणवत्ता के बारे में निश्चित नहीं हूँ लेकिन वहाँ अत्यधिक अनुकूलित कर रहे हैं (SIMD-सक्षम) उपलब्ध रूपांतरण:

  1. स्टैंडर्ड Windows Vista + DMO
  2. FFmpeg के libswscale
  3. इंटेल IPP प्रिमिटिव

तीनों कम या ज्यादा आसानी से डायरेक्टशो पाइपलाइन में प्लगेबल हैं। इसके अतिरिक्त उच्च रिज़ॉल्यूशन छवियां समानांतर सॉफ्टवेयर प्रोसेसिंग के लिए भी अच्छे उम्मीदवार हैं।

+0

धन्यवाद! उत्कृष्ट और स्पष्ट उत्तर। अंतिम आउटपुट एक WPF D3DImage के लिए होगा, जैसा कि मुझे लगता है कि इसे डायरेक्ट 3 डी आरजीबी 32 सतह होना चाहिए, इसलिए वीडियो कार्ड को इसे प्रदर्शित करने के लिए कहें क्योंकि यूयूवी एक विकल्प नहीं होगा। मैं आपके द्वारा अनुशंसित तीन libs पर एक नज़र डालेगा और इसे सबसे अच्छा संभव समाधान के रूप में ले जाऊंगा। – user1757226

संबंधित मुद्दे