static void getMeasureBitrate(const sp<MediaCodecInfo::Capabilities> &caps, int32_t *bitrate) { // Until have native MediaCodecInfo, we cannot get bitrates based on profile/levels. // We use 200000 as default value for our measurement. *bitrate = 200000; AString bitrateRange; if (!caps->getDetails()->findString("bitrate-range", &bitrateRange)) { return; } AString minBitrate; AString maxBitrate; if (!splitString(bitrateRange, "-", &minBitrate, &maxBitrate)) { return; } *bitrate = strtol(minBitrate.c_str(), NULL, 10); }
// TODO: move MediaCodecInfo to C++. Until then, some temp methods to parse out info. static bool getMeasureSize(const sp<MediaCodecInfo::Capabilities> &caps, int32_t *width, int32_t *height) { AString sizeRange; if (!caps->getDetails()->findString("size-range", &sizeRange)) { return false; } AString minSize; AString maxSize; if (!splitString(sizeRange, "-", &minSize, &maxSize)) { return false; } AString sWidth; AString sHeight; if (!splitString(minSize, "x", &sWidth, &sHeight)) { if (!splitString(minSize, "*", &sWidth, &sHeight)) { return false; } } *width = strtol(sWidth.c_str(), NULL, 10); *height = strtol(sHeight.c_str(), NULL, 10); return (*width > 0) && (*height > 0); }