Loading media/libmedia/IMediaPlayer.cpp +0 −48 Original line number Diff line number Diff line Loading @@ -35,54 +35,6 @@ namespace android { using media::VolumeShaper; enum { DISCONNECT = IBinder::FIRST_CALL_TRANSACTION, SET_DATA_SOURCE_URL, SET_DATA_SOURCE_FD, SET_DATA_SOURCE_STREAM, SET_DATA_SOURCE_CALLBACK, SET_DATA_SOURCE_RTP, SET_BUFFERING_SETTINGS, GET_BUFFERING_SETTINGS, PREPARE_ASYNC, START, STOP, IS_PLAYING, SET_PLAYBACK_SETTINGS, GET_PLAYBACK_SETTINGS, SET_SYNC_SETTINGS, GET_SYNC_SETTINGS, PAUSE, SEEK_TO, GET_CURRENT_POSITION, GET_DURATION, RESET, NOTIFY_AT, SET_AUDIO_STREAM_TYPE, SET_LOOPING, SET_VOLUME, INVOKE, SET_METADATA_FILTER, GET_METADATA, SET_AUX_EFFECT_SEND_LEVEL, ATTACH_AUX_EFFECT, SET_VIDEO_SURFACETEXTURE, SET_PARAMETER, GET_PARAMETER, SET_RETRANSMIT_ENDPOINT, GET_RETRANSMIT_ENDPOINT, SET_NEXT_PLAYER, APPLY_VOLUME_SHAPER, GET_VOLUME_SHAPER_STATE, // Modular DRM PREPARE_DRM, RELEASE_DRM, // AudioRouting SET_OUTPUT_DEVICE, GET_ROUTED_DEVICE_ID, ENABLE_AUDIO_DEVICE_CALLBACK, }; // ModDrm helpers static status_t readVector(const Parcel& reply, Vector<uint8_t>& vector) { uint32_t size = 0; Loading media/libmedia/include/media/IMediaPlayer.h +50 −0 Original line number Diff line number Diff line Loading @@ -137,6 +137,56 @@ public: virtual status_t setOutputDevice(audio_port_handle_t deviceId) = 0; virtual status_t getRoutedDeviceId(audio_port_handle_t *deviceId) = 0; virtual status_t enableAudioDeviceCallback(bool enabled) = 0; protected: friend class IMediaPlayerTest; enum { DISCONNECT = IBinder::FIRST_CALL_TRANSACTION, SET_DATA_SOURCE_URL, SET_DATA_SOURCE_FD, SET_DATA_SOURCE_STREAM, SET_DATA_SOURCE_CALLBACK, SET_DATA_SOURCE_RTP, SET_BUFFERING_SETTINGS, GET_BUFFERING_SETTINGS, PREPARE_ASYNC, START, STOP, IS_PLAYING, SET_PLAYBACK_SETTINGS, GET_PLAYBACK_SETTINGS, SET_SYNC_SETTINGS, GET_SYNC_SETTINGS, PAUSE, SEEK_TO, GET_CURRENT_POSITION, GET_DURATION, RESET, NOTIFY_AT, SET_AUDIO_STREAM_TYPE, SET_LOOPING, SET_VOLUME, INVOKE, SET_METADATA_FILTER, GET_METADATA, SET_AUX_EFFECT_SEND_LEVEL, ATTACH_AUX_EFFECT, SET_VIDEO_SURFACETEXTURE, SET_PARAMETER, GET_PARAMETER, SET_RETRANSMIT_ENDPOINT, GET_RETRANSMIT_ENDPOINT, SET_NEXT_PLAYER, APPLY_VOLUME_SHAPER, GET_VOLUME_SHAPER_STATE, // Modular DRM PREPARE_DRM, RELEASE_DRM, // AudioRouting SET_OUTPUT_DEVICE, GET_ROUTED_DEVICE_ID, ENABLE_AUDIO_DEVICE_CALLBACK, }; }; // ---------------------------------------------------------------------------- Loading media/libmedia/tests/mediaplayer/Android.bp 0 → 100644 +39 −0 Original line number Diff line number Diff line /* * Copyright 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ cc_test { name: "IMediaPlayerTest", test_suites: ["device-tests", "mts"], gtest: true, srcs: [ "IMediaPlayerTest.cpp", ], shared_libs: [ "libbinder", "liblog", "libmedia", "libstagefright", "libstagefright_foundation", "libutils", ], compile_multilib: "first", cflags: [ "-Werror", "-Wall", ], } media/libmedia/tests/mediaplayer/IMediaPlayerTest.cpp 0 → 100644 +73 −0 Original line number Diff line number Diff line /* * Copyright 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include <binder/IServiceManager.h> #include <binder/Parcel.h> #include <gtest/gtest.h> #include <media/stagefright/foundation/ABuffer.h> #include <media/IMediaPlayer.h> #include <media/IMediaPlayerService.h> #include <media/mediaplayer.h> namespace android { constexpr uint8_t kMockByteArray[16] = {}; class IMediaPlayerTest : public testing::Test { protected: static constexpr uint32_t PREPARE_DRM = IMediaPlayer::PREPARE_DRM; void SetUp() override { mediaPlayer_ = new MediaPlayer(); sp<IServiceManager> serviceManager = defaultServiceManager(); sp<IBinder> mediaPlayerService = serviceManager->getService(String16("media.player")); sp<IMediaPlayerService> iMediaPlayerService = IMediaPlayerService::asInterface(mediaPlayerService); iMediaPlayer_ = iMediaPlayerService->create(mediaPlayer_); } sp<MediaPlayer> mediaPlayer_; sp<IMediaPlayer> iMediaPlayer_; }; TEST_F(IMediaPlayerTest, PrepareDrmInvalidTransaction) { Parcel data, reply; data.writeInterfaceToken(iMediaPlayer_->getInterfaceDescriptor()); data.write(kMockByteArray, 16); // We write a length greater than the following session id array. Should be discarded. data.writeUint32(2); data.writeUnpadded(kMockByteArray, 1); status_t result = IMediaPlayer::asBinder(iMediaPlayer_) ->transact(PREPARE_DRM, data, &reply); ASSERT_EQ(result, BAD_VALUE); } TEST_F(IMediaPlayerTest, PrepareDrmValidTransaction) { Parcel data, reply; data.writeInterfaceToken(iMediaPlayer_->getInterfaceDescriptor()); data.write(kMockByteArray, 16); // We write a length equal to the length of the following data. The transaction should be valid. data.writeUint32(1); data.write(kMockByteArray, 1); status_t result = IMediaPlayer::asBinder(iMediaPlayer_) ->transact(PREPARE_DRM, data, &reply); ASSERT_EQ(result, OK); } } // namespace android Loading
media/libmedia/IMediaPlayer.cpp +0 −48 Original line number Diff line number Diff line Loading @@ -35,54 +35,6 @@ namespace android { using media::VolumeShaper; enum { DISCONNECT = IBinder::FIRST_CALL_TRANSACTION, SET_DATA_SOURCE_URL, SET_DATA_SOURCE_FD, SET_DATA_SOURCE_STREAM, SET_DATA_SOURCE_CALLBACK, SET_DATA_SOURCE_RTP, SET_BUFFERING_SETTINGS, GET_BUFFERING_SETTINGS, PREPARE_ASYNC, START, STOP, IS_PLAYING, SET_PLAYBACK_SETTINGS, GET_PLAYBACK_SETTINGS, SET_SYNC_SETTINGS, GET_SYNC_SETTINGS, PAUSE, SEEK_TO, GET_CURRENT_POSITION, GET_DURATION, RESET, NOTIFY_AT, SET_AUDIO_STREAM_TYPE, SET_LOOPING, SET_VOLUME, INVOKE, SET_METADATA_FILTER, GET_METADATA, SET_AUX_EFFECT_SEND_LEVEL, ATTACH_AUX_EFFECT, SET_VIDEO_SURFACETEXTURE, SET_PARAMETER, GET_PARAMETER, SET_RETRANSMIT_ENDPOINT, GET_RETRANSMIT_ENDPOINT, SET_NEXT_PLAYER, APPLY_VOLUME_SHAPER, GET_VOLUME_SHAPER_STATE, // Modular DRM PREPARE_DRM, RELEASE_DRM, // AudioRouting SET_OUTPUT_DEVICE, GET_ROUTED_DEVICE_ID, ENABLE_AUDIO_DEVICE_CALLBACK, }; // ModDrm helpers static status_t readVector(const Parcel& reply, Vector<uint8_t>& vector) { uint32_t size = 0; Loading
media/libmedia/include/media/IMediaPlayer.h +50 −0 Original line number Diff line number Diff line Loading @@ -137,6 +137,56 @@ public: virtual status_t setOutputDevice(audio_port_handle_t deviceId) = 0; virtual status_t getRoutedDeviceId(audio_port_handle_t *deviceId) = 0; virtual status_t enableAudioDeviceCallback(bool enabled) = 0; protected: friend class IMediaPlayerTest; enum { DISCONNECT = IBinder::FIRST_CALL_TRANSACTION, SET_DATA_SOURCE_URL, SET_DATA_SOURCE_FD, SET_DATA_SOURCE_STREAM, SET_DATA_SOURCE_CALLBACK, SET_DATA_SOURCE_RTP, SET_BUFFERING_SETTINGS, GET_BUFFERING_SETTINGS, PREPARE_ASYNC, START, STOP, IS_PLAYING, SET_PLAYBACK_SETTINGS, GET_PLAYBACK_SETTINGS, SET_SYNC_SETTINGS, GET_SYNC_SETTINGS, PAUSE, SEEK_TO, GET_CURRENT_POSITION, GET_DURATION, RESET, NOTIFY_AT, SET_AUDIO_STREAM_TYPE, SET_LOOPING, SET_VOLUME, INVOKE, SET_METADATA_FILTER, GET_METADATA, SET_AUX_EFFECT_SEND_LEVEL, ATTACH_AUX_EFFECT, SET_VIDEO_SURFACETEXTURE, SET_PARAMETER, GET_PARAMETER, SET_RETRANSMIT_ENDPOINT, GET_RETRANSMIT_ENDPOINT, SET_NEXT_PLAYER, APPLY_VOLUME_SHAPER, GET_VOLUME_SHAPER_STATE, // Modular DRM PREPARE_DRM, RELEASE_DRM, // AudioRouting SET_OUTPUT_DEVICE, GET_ROUTED_DEVICE_ID, ENABLE_AUDIO_DEVICE_CALLBACK, }; }; // ---------------------------------------------------------------------------- Loading
media/libmedia/tests/mediaplayer/Android.bp 0 → 100644 +39 −0 Original line number Diff line number Diff line /* * Copyright 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ cc_test { name: "IMediaPlayerTest", test_suites: ["device-tests", "mts"], gtest: true, srcs: [ "IMediaPlayerTest.cpp", ], shared_libs: [ "libbinder", "liblog", "libmedia", "libstagefright", "libstagefright_foundation", "libutils", ], compile_multilib: "first", cflags: [ "-Werror", "-Wall", ], }
media/libmedia/tests/mediaplayer/IMediaPlayerTest.cpp 0 → 100644 +73 −0 Original line number Diff line number Diff line /* * Copyright 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include <binder/IServiceManager.h> #include <binder/Parcel.h> #include <gtest/gtest.h> #include <media/stagefright/foundation/ABuffer.h> #include <media/IMediaPlayer.h> #include <media/IMediaPlayerService.h> #include <media/mediaplayer.h> namespace android { constexpr uint8_t kMockByteArray[16] = {}; class IMediaPlayerTest : public testing::Test { protected: static constexpr uint32_t PREPARE_DRM = IMediaPlayer::PREPARE_DRM; void SetUp() override { mediaPlayer_ = new MediaPlayer(); sp<IServiceManager> serviceManager = defaultServiceManager(); sp<IBinder> mediaPlayerService = serviceManager->getService(String16("media.player")); sp<IMediaPlayerService> iMediaPlayerService = IMediaPlayerService::asInterface(mediaPlayerService); iMediaPlayer_ = iMediaPlayerService->create(mediaPlayer_); } sp<MediaPlayer> mediaPlayer_; sp<IMediaPlayer> iMediaPlayer_; }; TEST_F(IMediaPlayerTest, PrepareDrmInvalidTransaction) { Parcel data, reply; data.writeInterfaceToken(iMediaPlayer_->getInterfaceDescriptor()); data.write(kMockByteArray, 16); // We write a length greater than the following session id array. Should be discarded. data.writeUint32(2); data.writeUnpadded(kMockByteArray, 1); status_t result = IMediaPlayer::asBinder(iMediaPlayer_) ->transact(PREPARE_DRM, data, &reply); ASSERT_EQ(result, BAD_VALUE); } TEST_F(IMediaPlayerTest, PrepareDrmValidTransaction) { Parcel data, reply; data.writeInterfaceToken(iMediaPlayer_->getInterfaceDescriptor()); data.write(kMockByteArray, 16); // We write a length equal to the length of the following data. The transaction should be valid. data.writeUint32(1); data.write(kMockByteArray, 1); status_t result = IMediaPlayer::asBinder(iMediaPlayer_) ->transact(PREPARE_DRM, data, &reply); ASSERT_EQ(result, OK); } } // namespace android