Skip to content

Commit

Permalink
[droidmedia] Implement droid_media_codec_set_video_encoder_bitrate().…
Browse files Browse the repository at this point in the history
… JB#57149
  • Loading branch information
d-grigorev committed Feb 8, 2022
1 parent d8c3e4b commit f67927f
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 1 deletion.
8 changes: 8 additions & 0 deletions AsyncDecodingSource.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -416,3 +416,11 @@ void AsyncDecodingSource::onMessageReceived(const sp<AMessage> &msg) {
ALOGE("Decoder (%s) unhandled callback id : 0x%d", mComponentName.c_str(), cbID);
}
}

status_t AsyncDecodingSource::setParameters(const sp<AMessage> &params)
{
if (mState == STARTED && mCodec.get()) {
return mCodec->setParameters(params);
}
return android::DEAD_OBJECT;
}
2 changes: 1 addition & 1 deletion AsyncDecodingSource.h
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ class AsyncDecodingSource : public MediaSource {
// unsupported methods
virtual status_t pause() { return INVALID_OPERATION; }


status_t setParameters(const sp<AMessage> &params);
private:
// Construct this using a codec, source and looper.
AsyncDecodingSource(
Expand Down
15 changes: 15 additions & 0 deletions droidmediacodec.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1170,4 +1170,19 @@ void droid_media_codec_get_output_info(DroidMediaCodec *codec,
}
}

bool droid_media_codec_set_video_encoder_bitrate(DroidMediaCodec *codec, int32_t bitrate)
{
#if ANDROID_MAJOR >= 7
ALOGI("Setting video encoder bitrate to %d bps", bitrate);
android::sp<android::AMessage> params = new android::AMessage();
params->setInt32("video-bitrate", bitrate);
android::sp<android::AsyncDecodingSource> src =
static_cast<android::AsyncDecodingSource*>(codec->m_codec.get());
android::status_t err = src->setParameters(params);
return err == android::NO_ERROR;
#else
return false;
#endif
}

};
2 changes: 2 additions & 0 deletions droidmediacodec.h
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,8 @@ void droid_media_codec_drain(DroidMediaCodec *codec);
DroidMediaCodecLoopReturn droid_media_codec_loop(DroidMediaCodec *codec);
void droid_media_codec_get_output_info(DroidMediaCodec *codec, DroidMediaCodecMetaData *info, DroidMediaRect *crop);

bool droid_media_codec_set_video_encoder_bitrate(DroidMediaCodec *codec, int32_t bitrate);

#ifdef __cplusplus
};
#endif
Expand Down
1 change: 1 addition & 0 deletions hybris.c
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,7 @@ HYBRIS_WRAPPER_0_1(DroidMediaCodec *, droid_media_codec_flush);
HYBRIS_WRAPPER_0_1(DroidMediaCodec *, droid_media_codec_drain);
HYBRIS_WRAPPER_1_1(DroidMediaCodecLoopReturn,DroidMediaCodec*,droid_media_codec_loop);
HYBRIS_WRAPPER_0_3(DroidMediaCodec*,DroidMediaCodecMetaData*,DroidMediaRect*,droid_media_codec_get_output_info);
HYBRIS_WRAPPER_1_2(bool,DroidMediaCodec*,int32_t,droid_media_codec_set_video_encoder_bitrate);
HYBRIS_WRAPPER_0_0(_droid_media_init)
HYBRIS_WRAPPER_0_0(droid_media_deinit)
HYBRIS_WRAPPER_1_2(DroidMediaBuffer*,DroidMediaBufferQueue*,DroidMediaBufferCallbacks*,droid_media_buffer_queue_acquire_buffer)
Expand Down

0 comments on commit f67927f

Please sign in to comment.