Loading media/codec2/sfplugin/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -55,6 +55,7 @@ cc_library_shared { "libSurfaceFlingerProperties", "aconfig_mediacodec_flags_c_lib", "android.media.codec-aconfig-cc", "android.media.tv.flags-aconfig-cc", ], shared_libs: [ Loading media/codec2/sfplugin/CCodecBufferChannel.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ #include <chrono> #include <android_media_codec.h> #include <android_media_tv_flags.h> #include <C2AllocatorGralloc.h> #include <C2PlatformSupport.h> Loading Loading @@ -61,6 +62,7 @@ #include <mediadrm/ICrypto.h> #include <server_configurable_flags/get_flags.h> #include <system/window.h> #include <ui/PictureProfileHandle.h> #include "CCodecBufferChannel.h" #include "Codec2Buffer.h" Loading Loading @@ -1456,6 +1458,14 @@ status_t CCodecBufferChannel::renderOutputBuffer( qbi.setSurfaceDamage(Region::INVALID_REGION); // we don't have dirty regions qbi.getFrameTimestamps = true; // we need to know when a frame is rendered int64_t pictureProfileHandle; if (android::media::tv::flags::apply_picture_profiles() && buffer->format()->findInt64(KEY_PICTURE_PROFILE_HANDLE, &pictureProfileHandle)) { PictureProfileHandle handle(static_cast<PictureProfileId>(pictureProfileHandle)); qbi.setPictureProfileHandle(handle); } IGraphicBufferProducer::QueueBufferOutput qbo; status_t result = std::atomic_load(&mComponent)->queueToOutputSurface(block, qbi, &qbo); if (result != OK) { Loading media/codec2/sfplugin/CCodecConfig.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ #include <initializer_list> #include <android_media_codec.h> #include <android_media_tv_flags.h> #include <cutils/properties.h> #include <log/log.h> Loading Loading @@ -1047,6 +1048,11 @@ void CCodecConfig::initializeStandardParams() { return C2Value(); })); if (android::media::tv::flags::apply_picture_profiles()) { add(ConfigMapper(KEY_PICTURE_PROFILE_HANDLE, C2_PARAMKEY_DISPLAY_PROCESSING_TOKEN, "value") .limitTo(D::VIDEO & D::RAW & D::DECODER)); } /* still to do not yet used by MediaCodec, but defined as MediaFormat KEY_AUDIO_SESSION_ID // we use "audio-hw-sync" Loading media/libstagefright/include/media/stagefright/MediaCodecConstants.h +1 −0 Original line number Diff line number Diff line Loading @@ -1022,6 +1022,7 @@ inline constexpr char KEY_VIDEO_QP_MIN[] = "video-qp-min"; inline constexpr char KEY_VIDEO_QP_P_MAX[] = "video-qp-p-max"; inline constexpr char KEY_VIDEO_QP_P_MIN[] = "video-qp-p-min"; inline constexpr char KEY_WIDTH[] = "width"; inline constexpr char KEY_PICTURE_PROFILE_HANDLE[] = "picture-profile-handle"; // from MediaCodec.java inline constexpr int32_t ERROR_INSUFFICIENT_OUTPUT_PROTECTION = 4; Loading Loading
media/codec2/sfplugin/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -55,6 +55,7 @@ cc_library_shared { "libSurfaceFlingerProperties", "aconfig_mediacodec_flags_c_lib", "android.media.codec-aconfig-cc", "android.media.tv.flags-aconfig-cc", ], shared_libs: [ Loading
media/codec2/sfplugin/CCodecBufferChannel.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ #include <chrono> #include <android_media_codec.h> #include <android_media_tv_flags.h> #include <C2AllocatorGralloc.h> #include <C2PlatformSupport.h> Loading Loading @@ -61,6 +62,7 @@ #include <mediadrm/ICrypto.h> #include <server_configurable_flags/get_flags.h> #include <system/window.h> #include <ui/PictureProfileHandle.h> #include "CCodecBufferChannel.h" #include "Codec2Buffer.h" Loading Loading @@ -1456,6 +1458,14 @@ status_t CCodecBufferChannel::renderOutputBuffer( qbi.setSurfaceDamage(Region::INVALID_REGION); // we don't have dirty regions qbi.getFrameTimestamps = true; // we need to know when a frame is rendered int64_t pictureProfileHandle; if (android::media::tv::flags::apply_picture_profiles() && buffer->format()->findInt64(KEY_PICTURE_PROFILE_HANDLE, &pictureProfileHandle)) { PictureProfileHandle handle(static_cast<PictureProfileId>(pictureProfileHandle)); qbi.setPictureProfileHandle(handle); } IGraphicBufferProducer::QueueBufferOutput qbo; status_t result = std::atomic_load(&mComponent)->queueToOutputSurface(block, qbi, &qbo); if (result != OK) { Loading
media/codec2/sfplugin/CCodecConfig.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ #include <initializer_list> #include <android_media_codec.h> #include <android_media_tv_flags.h> #include <cutils/properties.h> #include <log/log.h> Loading Loading @@ -1047,6 +1048,11 @@ void CCodecConfig::initializeStandardParams() { return C2Value(); })); if (android::media::tv::flags::apply_picture_profiles()) { add(ConfigMapper(KEY_PICTURE_PROFILE_HANDLE, C2_PARAMKEY_DISPLAY_PROCESSING_TOKEN, "value") .limitTo(D::VIDEO & D::RAW & D::DECODER)); } /* still to do not yet used by MediaCodec, but defined as MediaFormat KEY_AUDIO_SESSION_ID // we use "audio-hw-sync" Loading
media/libstagefright/include/media/stagefright/MediaCodecConstants.h +1 −0 Original line number Diff line number Diff line Loading @@ -1022,6 +1022,7 @@ inline constexpr char KEY_VIDEO_QP_MIN[] = "video-qp-min"; inline constexpr char KEY_VIDEO_QP_P_MAX[] = "video-qp-p-max"; inline constexpr char KEY_VIDEO_QP_P_MIN[] = "video-qp-p-min"; inline constexpr char KEY_WIDTH[] = "width"; inline constexpr char KEY_PICTURE_PROFILE_HANDLE[] = "picture-profile-handle"; // from MediaCodec.java inline constexpr int32_t ERROR_INSUFFICIENT_OUTPUT_PROTECTION = 4; Loading