Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e72cbd0e authored by Vikas Reddy Pachika's avatar Vikas Reddy Pachika Committed by Steve Kondik
Browse files

EncoderCapabilities: Adding HFR entry in EncoderCapabilities and JNI

--Adding HFR entries like max HFR mode, max HFR width & max HFR height
  in the EncoderCapabilities.java and android_media_MediaProfiles.cpp

Change-Id: I544a17e32ddd7ddccb0c48cf07b3199d2c485e09
CRs-Fixed: 589983
parent 392ca055
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -48,13 +48,17 @@ public class EncoderCapabilities
        public final int mMinFrameRate, mMaxFrameRate;           // min and max frame rate (fps)
        public final int mMinFrameWidth, mMaxFrameWidth;         // min and max frame width (pixel)
        public final int mMinFrameHeight, mMaxFrameHeight;       // minn and max frame height (pixel)
        public final int mMaxHFRFrameWidth, mMaxHFRFrameHeight;  // max HFR size (pixel)
        public final int mMaxHFRMode;                            // max HFR mode

        // Private constructor called by JNI
        private VideoEncoderCap(int codec,
                                int minBitRate, int maxBitRate,
                                int minFrameRate, int maxFrameRate,
                                int minFrameWidth, int maxFrameWidth,
                                int minFrameHeight, int maxFrameHeight) {
                                int minFrameHeight, int maxFrameHeight,
                                int maxHFRFrameWidth, int maxHFRFrameHeight,
                                int maxHFRMode) {
            mCodec = codec;
            mMinBitRate = minBitRate;
            mMaxBitRate = maxBitRate;
@@ -64,6 +68,9 @@ public class EncoderCapabilities
            mMaxFrameWidth = maxFrameWidth;
            mMinFrameHeight = minFrameHeight;
            mMaxFrameHeight = maxFrameHeight;
            mMaxHFRFrameWidth = maxHFRFrameWidth;
            mMaxHFRFrameHeight = maxHFRFrameHeight;
            mMaxHFRMode = maxHFRMode;
        }
    };

+10 −3
Original line number Diff line number Diff line
@@ -91,12 +91,17 @@ android_media_MediaProfiles_native_get_video_encoder_cap(JNIEnv *env, jobject th
    int maxFrameWidth = sProfiles->getVideoEncoderParamByName("enc.vid.width.max", encoder);
    int minFrameHeight = sProfiles->getVideoEncoderParamByName("enc.vid.height.min", encoder);
    int maxFrameHeight = sProfiles->getVideoEncoderParamByName("enc.vid.height.max", encoder);
    int maxHFRFrameWidth = sProfiles->getVideoEncoderParamByName("enc.vid.hfr.width.max", encoder);
    int maxHFRFrameHeight = sProfiles->getVideoEncoderParamByName("enc.vid.hfr.height.max", encoder);
    int maxHFRMode = sProfiles->getVideoEncoderParamByName("enc.vid.hfr.mode.max", encoder);

    // Check on the values retrieved
    if ((minBitRate == -1 || maxBitRate == -1) ||
        (minFrameRate == -1 || maxFrameRate == -1) ||
        (minFrameWidth == -1 || maxFrameWidth == -1) ||
        (minFrameHeight == -1 || maxFrameHeight == -1)) {
        (minFrameHeight == -1 || maxFrameHeight == -1) ||
        (maxHFRFrameWidth == -1 || maxHFRFrameHeight == -1) ||
        (maxHFRMode == -1)) {

        jniThrowException(env, "java/lang/RuntimeException", "Error retrieving video encoder capability params");
        return NULL;
@@ -104,14 +109,16 @@ android_media_MediaProfiles_native_get_video_encoder_cap(JNIEnv *env, jobject th

    // Construct an instance of the VideoEncoderCap and set its member variables
    jclass videoEncoderCapClazz = env->FindClass("android/media/EncoderCapabilities$VideoEncoderCap");
    jmethodID videoEncoderCapConstructorMethodID = env->GetMethodID(videoEncoderCapClazz, "<init>", "(IIIIIIIII)V");
    jmethodID videoEncoderCapConstructorMethodID = env->GetMethodID(videoEncoderCapClazz, "<init>", "(IIIIIIIIIIII)V");
    jobject cap = env->NewObject(videoEncoderCapClazz,
                                 videoEncoderCapConstructorMethodID,
                                 static_cast<int>(encoder),
                                 minBitRate, maxBitRate,
                                 minFrameRate, maxFrameRate,
                                 minFrameWidth, maxFrameWidth,
                                 minFrameHeight, maxFrameHeight);
                                 minFrameHeight, maxFrameHeight,
                                 maxHFRFrameWidth, maxHFRFrameHeight,
                                 maxHFRMode);
    return cap;
}