मैं समझने की कोशिश कर रहा हूं कि हार्डवेयर डिकोडिंग के लिए मीडियाकोडैक का उपयोग कैसे किया जाता है।कैसे मीडियाकोडैक एंड्रॉइड में ढांचे के अंदर कोडेक पाता है?
एंड्रॉइड आंतरिक में मेरा ज्ञान बहुत सीमित है।
एक xml फ़ाइल जो एंड्रॉयड प्रणाली में कोडेक विवरण का प्रतिनिधित्व करता है:
यहाँ मेरी निष्कर्ष है।
device/ti/omap3evm/media_codecs.xml for an example.
इसका मतलब है कि हम मीडिया कोडेक के साथ जावा आवेदन से एक कोडेक बनाते हैं
MediaCodec codec = MediaCodec.createDecoderByType(type);
यह xml फ़ाइल की मदद से संबंधित सांकेतिक शब्दों में बदलनेवाला जानने की जानी चाहिए।
मैं क्या कर रहा हूं?
मैं यह समझने की कोशिश कर रहा हूं कि कोड का कौन सा हिस्सा एक्सएमएल पढ़ रहा है और दिए गए 'प्रकार' के आधार पर कोडेक ढूंढ रहा है।
1) आवेदन परत:
MediaCodec codec = MediaCodec.createDecoderByType(type);
2) MediaCodec.java -> [चौखटे/आधार/मीडिया/जावा/एंड्रॉयड/मीडिया/MediaCodec.java]
public static MediaCodec createDecoderByType(String type) {
return new MediaCodec(type, true /* nameIsType */, false /* encoder */);
}
3)
private MediaCodec(
String name, boolean nameIsType, boolean encoder) {
native_setup(name, nameIsType, encoder); --> JNI Call.
}
4) JNI कार्यान्वयन -> [चौखटे/आधार/मीडिया/JNI/android_media_MediaCodec.cpp]
static void android_media_MediaCodec_native_setup (..) {
.......
const char *tmp = env->GetStringUTFChars(name, NULL);
sp<JMediaCodec> codec = new JMediaCodec(env, thiz, tmp, nameIsType, encoder); ---> Here
}
से चौखटे/आधार/मीडिया/JNI /android_media_MediaCodec.cpp
JMediaCodec::JMediaCodec(..) {
....
mCodec = MediaCodec::CreateByType(mLooper, name, encoder); //Call goes to libstagefright
.... }
sp<MediaCodec> MediaCodec::CreateByType(
const sp<ALooper> &looper, const char *mime, bool encoder) {
sp<MediaCodec> codec = new MediaCodec(looper);
if (codec->init(mime, true /* nameIsType */, encoder) != OK) { --> HERE.
return NULL;
}
return codec;
}
status_t MediaCodec::init(const char *name, bool nameIsType, bool encoder) {
// MediaCodec
}
मैं इस प्रवाह के साथ मारा हूँ। अगर कोई इसे आगे ले जाने के बारे में बताता है तो बहुत मदद मिलेगी।
धन्यवाद।
प्रभावशाली गणेश !! मदद के लिए धन्यवाद। – Whoami