// Return the name of the shared library that implements Omx based decoding. This varies // depending on libstagefright version installed on the device and whether it is B2G vs Android. // nullptr is returned if Omx decoding is not supported on the device, static const char* GetOmxLibraryName() { #if defined(ANDROID) && !defined(MOZ_WIDGET_GONK) nsCOMPtr<nsIPropertyBag2> infoService = do_GetService("@mozilla.org/system-info;1"); NS_ASSERTION(infoService, "Could not find a system info service"); int32_t version; nsresult rv = infoService->GetPropertyAsInt32(NS_LITERAL_STRING("version"), &version); if (NS_SUCCEEDED(rv)) { ALOG("Android Version is: %d", version); } nsAutoString release_version; rv = infoService->GetPropertyAsAString(NS_LITERAL_STRING("release_version"), release_version); if (NS_SUCCEEDED(rv)) { ALOG("Android Release Version is: %s", NS_LossyConvertUTF16toASCII(release_version).get()); } nsAutoString device; rv = infoService->GetPropertyAsAString(NS_LITERAL_STRING("device"), device); if (NS_SUCCEEDED(rv)) { ALOG("Android Device is: %s", NS_LossyConvertUTF16toASCII(device).get()); } nsAutoString manufacturer; rv = infoService->GetPropertyAsAString(NS_LITERAL_STRING("manufacturer"), manufacturer); if (NS_SUCCEEDED(rv)) { ALOG("Android Manufacturer is: %s", NS_LossyConvertUTF16toASCII(manufacturer).get()); } nsAutoString hardware; rv = infoService->GetPropertyAsAString(NS_LITERAL_STRING("hardware"), hardware); if (NS_SUCCEEDED(rv)) { ALOG("Android Hardware is: %s", NS_LossyConvertUTF16toASCII(hardware).get()); } #endif if (!IsOmxSupported()) return nullptr; #if defined(ANDROID) && !defined(MOZ_WIDGET_GONK) if (version >= 17) { return "libomxpluginkk.so"; } else if (version < 14) { // Below Honeycomb not supported return nullptr; } // Ice Cream Sandwich and Jellybean return "libomxplugin.so"; #elif defined(ANDROID) && defined(MOZ_WIDGET_GONK) return "libomxplugin.so"; #else return nullptr; #endif }
// Return the name of the shared library that implements Omx based decoding. This varies // depending on libstagefright version installed on the device and whether it is B2G vs Android. // nullptr is returned if Omx decoding is not supported on the device, static const char* GetOmxLibraryName() { if (!IsOmxSupported()) return nullptr; #if defined(ANDROID) && !defined(MOZ_WIDGET_GONK) nsCOMPtr<nsIPropertyBag2> infoService = do_GetService("@mozilla.org/system-info;1"); NS_ASSERTION(infoService, "Could not find a system info service"); int32_t version; nsresult rv = infoService->GetPropertyAsInt32(NS_LITERAL_STRING("version"), &version); if (NS_SUCCEEDED(rv)) { ALOG("Android Version is: %d", version); } nsAutoString release_version; rv = infoService->GetPropertyAsAString(NS_LITERAL_STRING("release_version"), release_version); if (NS_SUCCEEDED(rv)) { ALOG("Android Release Version is: %s", NS_LossyConvertUTF16toASCII(release_version).get()); } nsAutoString device; rv = infoService->GetPropertyAsAString(NS_LITERAL_STRING("device"), device); if (NS_SUCCEEDED(rv)) { ALOG("Android Device is: %s", NS_LossyConvertUTF16toASCII(device).get()); } if (version == 15 && (device.Find("LT28", false) == 0 || device.Find("LT26", false) == 0 || device.Find("LT22", false) == 0 || device.Find("IS12", false) == 0 || device.Find("MT27", false) == 0)) { // Sony Ericsson devices running ICS return "libomxpluginsony.so"; } else if (version == 13 || version == 12 || version == 11) { return "libomxpluginhc.so"; } else if (version == 10 && release_version >= NS_LITERAL_STRING("2.3.6")) { // Gingerbread versions from 2.3.6 and above have a different DataSource // layout to those on 2.3.5 and below. return "libomxplugingb.so"; } else if (version == 10 && release_version >= NS_LITERAL_STRING("2.3.4") && device.Find("HTC") == 0) { // HTC devices running Gingerbread 2.3.4+ (HTC Desire HD, HTC Evo Design, etc) seem to // use a newer version of Gingerbread libstagefright than other 2.3.4 devices. return "libomxplugingb.so"; } else if (version == 9 || (version == 10 && release_version <= NS_LITERAL_STRING("2.3.5"))) { // Gingerbread versions from 2.3.5 and below have a different DataSource // than 2.3.6 and above. return "libomxplugingb235.so"; } else if (version == 8) { // Froyo return "libomxpluginfroyo.so"; } else if (version < 8) { // Below Froyo not supported return nullptr; } // Default libomxplugin for non-gingerbread devices return "libomxplugin.so"; #elif defined(ANDROID) && defined(MOZ_WIDGET_GONK) return "libomxplugin.so"; #else return nullptr; #endif }
// Return the name of the shared library that implements Omx based decoding. This varies // depending on libstagefright version installed on the device and whether it is B2G vs Android. // nullptr is returned if Omx decoding is not supported on the device, static const char* GetOmxLibraryName() { #if defined(ANDROID) && !defined(MOZ_WIDGET_GONK) nsCOMPtr<nsIPropertyBag2> infoService = do_GetService("@mozilla.org/system-info;1"); NS_ASSERTION(infoService, "Could not find a system info service"); int32_t version; nsresult rv = infoService->GetPropertyAsInt32(NS_LITERAL_STRING("version"), &version); if (NS_SUCCEEDED(rv)) { ALOG("Android Version is: %d", version); } nsAutoString release_version; rv = infoService->GetPropertyAsAString(NS_LITERAL_STRING("release_version"), release_version); if (NS_SUCCEEDED(rv)) { ALOG("Android Release Version is: %s", NS_LossyConvertUTF16toASCII(release_version).get()); } nsAutoString device; rv = infoService->GetPropertyAsAString(NS_LITERAL_STRING("device"), device); if (NS_SUCCEEDED(rv)) { ALOG("Android Device is: %s", NS_LossyConvertUTF16toASCII(device).get()); } nsAutoString manufacturer; rv = infoService->GetPropertyAsAString(NS_LITERAL_STRING("manufacturer"), manufacturer); if (NS_SUCCEEDED(rv)) { ALOG("Android Manufacturer is: %s", NS_LossyConvertUTF16toASCII(manufacturer).get()); } nsAutoString hardware; rv = infoService->GetPropertyAsAString(NS_LITERAL_STRING("hardware"), hardware); if (NS_SUCCEEDED(rv)) { ALOG("Android Hardware is: %s", NS_LossyConvertUTF16toASCII(hardware).get()); } #endif if (!IsOmxSupported()) return nullptr; #if defined(ANDROID) && !defined(MOZ_WIDGET_GONK) if (version >= 17) { return "libomxpluginkk.so"; } else if (version == 13 || version == 12 || version == 11) { return "libomxpluginhc.so"; } else if (version == 10 && release_version >= NS_LITERAL_STRING("2.3.6")) { // Gingerbread versions from 2.3.6 and above have a different DataSource // layout to those on 2.3.5 and below. return "libomxplugingb.so"; } else if (version == 10 && release_version >= NS_LITERAL_STRING("2.3.4") && device.Find("HTC") == 0) { // HTC devices running Gingerbread 2.3.4+ (HTC Desire HD, HTC Evo Design, etc) seem to // use a newer version of Gingerbread libstagefright than other 2.3.4 devices. return "libomxplugingb.so"; } else if (version == 9 || (version == 10 && release_version <= NS_LITERAL_STRING("2.3.5"))) { // Gingerbread versions from 2.3.5 and below have a different DataSource // than 2.3.6 and above. return "libomxplugingb235.so"; } else if (version < 9) { // Below Gingerbread not supported return nullptr; } // Ice Cream Sandwich and Jellybean return "libomxplugin.so"; #elif defined(ANDROID) && defined(MOZ_WIDGET_GONK) return "libomxplugin.so"; #else return nullptr; #endif }