1*ec779b8eSAndroid Build Coastguard Worker# Fuzzer for libmediaplayerservice 2*ec779b8eSAndroid Build Coastguard Worker## Table of contents 3*ec779b8eSAndroid Build Coastguard Worker+ [StagefrightMediaRecorder](#StagefrightMediaRecorder) 4*ec779b8eSAndroid Build Coastguard Worker+ [StagefrightMetadataRetriever](#StagefrightMetadataRetriever) 5*ec779b8eSAndroid Build Coastguard Worker+ [MediaPlayer](#MediaPlayer) 6*ec779b8eSAndroid Build Coastguard Worker 7*ec779b8eSAndroid Build Coastguard Worker# <a name="StagefrightMediaRecorder"></a> Fuzzer for StagefrightMediaRecorder 8*ec779b8eSAndroid Build Coastguard Worker 9*ec779b8eSAndroid Build Coastguard WorkerStagefrightMediaRecorder supports the following parameters: 10*ec779b8eSAndroid Build Coastguard Worker1. Output Formats (parameter name: `setOutputFormat`) 11*ec779b8eSAndroid Build Coastguard Worker2. Audio Encoders (parameter name: `setAudioEncoder`) 12*ec779b8eSAndroid Build Coastguard Worker3. Video Encoders (parameter name: `setVideoEncoder`) 13*ec779b8eSAndroid Build Coastguard Worker4. Audio Sources (parameter name: `setAudioSource`) 14*ec779b8eSAndroid Build Coastguard Worker5. Video Sources (parameter name: `setVideoSource`) 15*ec779b8eSAndroid Build Coastguard Worker6. Microphone Direction (parameter name: `setMicrophoneDirection`) 16*ec779b8eSAndroid Build Coastguard Worker 17*ec779b8eSAndroid Build Coastguard WorkerYou can find the possible values in the fuzzer's source code. 18*ec779b8eSAndroid Build Coastguard Worker 19*ec779b8eSAndroid Build Coastguard Worker#### Steps to run 20*ec779b8eSAndroid Build Coastguard Worker1. Build the fuzzer 21*ec779b8eSAndroid Build Coastguard Worker``` 22*ec779b8eSAndroid Build Coastguard Worker $ mm -j$(nproc) mediarecorder_fuzzer 23*ec779b8eSAndroid Build Coastguard Worker``` 24*ec779b8eSAndroid Build Coastguard Worker2. Run on device 25*ec779b8eSAndroid Build Coastguard Worker``` 26*ec779b8eSAndroid Build Coastguard Worker $ adb sync data 27*ec779b8eSAndroid Build Coastguard Worker $ adb shell /data/fuzz/arm64/mediarecorder_fuzzer/mediarecorder_fuzzer 28*ec779b8eSAndroid Build Coastguard Worker``` 29*ec779b8eSAndroid Build Coastguard Worker 30*ec779b8eSAndroid Build Coastguard Worker# <a name="StagefrightMetadataRetriever"></a> Fuzzer for StagefrightMetadataRetriever 31*ec779b8eSAndroid Build Coastguard Worker 32*ec779b8eSAndroid Build Coastguard WorkerStagefrightMetadataRetriever supports the following data sources: 33*ec779b8eSAndroid Build Coastguard Worker1. Url (parameter name: `url`) 34*ec779b8eSAndroid Build Coastguard Worker2. File descriptor (parameter name: `fd`) 35*ec779b8eSAndroid Build Coastguard Worker3. DataSource (parameter name: `source`) 36*ec779b8eSAndroid Build Coastguard Worker 37*ec779b8eSAndroid Build Coastguard Worker| Parameter| Valid Values| Configured Value| 38*ec779b8eSAndroid Build Coastguard Worker|------------- |-------------| ----- | 39*ec779b8eSAndroid Build Coastguard Worker| `url` | Url of data source | Value obtained from FuzzedDataProvider | 40*ec779b8eSAndroid Build Coastguard Worker| `fd` | File descriptor value of input file | Value obtained from FuzzedDataProvider | 41*ec779b8eSAndroid Build Coastguard Worker| `source` | DataSource object | Data obtained from FuzzedDataProvider | 42*ec779b8eSAndroid Build Coastguard Worker 43*ec779b8eSAndroid Build Coastguard Worker#### Steps to run 44*ec779b8eSAndroid Build Coastguard Worker1. Build the fuzzer 45*ec779b8eSAndroid Build Coastguard Worker``` 46*ec779b8eSAndroid Build Coastguard Worker $ mm -j$(nproc) metadataretriever_fuzzer 47*ec779b8eSAndroid Build Coastguard Worker``` 48*ec779b8eSAndroid Build Coastguard Worker2. To run on device 49*ec779b8eSAndroid Build Coastguard Worker``` 50*ec779b8eSAndroid Build Coastguard Worker $ adb sync data 51*ec779b8eSAndroid Build Coastguard Worker $ adb shell /data/fuzz/arm64/metadataretriever_fuzzer/metadataretriever_fuzzer 52*ec779b8eSAndroid Build Coastguard Worker``` 53*ec779b8eSAndroid Build Coastguard Worker 54*ec779b8eSAndroid Build Coastguard Worker# <a name="MediaPlayer"></a> Fuzzer for MediaPlayer 55*ec779b8eSAndroid Build Coastguard Worker 56*ec779b8eSAndroid Build Coastguard WorkerMediaPlayerService supports the following data sources: 57*ec779b8eSAndroid Build Coastguard Worker1. Url (parameter name: `url`) 58*ec779b8eSAndroid Build Coastguard Worker2. File descriptor (parameter name: `fd`) 59*ec779b8eSAndroid Build Coastguard Worker3. IStreamSource (parameter name: `source`) 60*ec779b8eSAndroid Build Coastguard Worker4. IDataSource (parameter name: `source`) 61*ec779b8eSAndroid Build Coastguard Worker5. RTP Parameters (parameter name: `rtpParams`) 62*ec779b8eSAndroid Build Coastguard Worker 63*ec779b8eSAndroid Build Coastguard WorkerMediaPlayerService supports the following parameters: 64*ec779b8eSAndroid Build Coastguard Worker1. Audio sessions (parameter name: `audioSessionId`) 65*ec779b8eSAndroid Build Coastguard Worker2. Audio stretch modes (parameter name: `mStretchMode`) 66*ec779b8eSAndroid Build Coastguard Worker3. Audio fallback modes (parameter name: `mFallbackMode`) 67*ec779b8eSAndroid Build Coastguard Worker4. Media parameter keys (parameter name: `key`) 68*ec779b8eSAndroid Build Coastguard Worker5. Audio Stream Types (parameter name: `streamType`) 69*ec779b8eSAndroid Build Coastguard Worker6. Media Event Types (parameter name: `msg`) 70*ec779b8eSAndroid Build Coastguard Worker7. Media Info Types (parameter name: `ext1`) 71*ec779b8eSAndroid Build Coastguard Worker 72*ec779b8eSAndroid Build Coastguard WorkerYou can find the possible values in the fuzzer's source code. 73*ec779b8eSAndroid Build Coastguard Worker 74*ec779b8eSAndroid Build Coastguard Worker#### Steps to run 75*ec779b8eSAndroid Build Coastguard Worker1. Build the fuzzer 76*ec779b8eSAndroid Build Coastguard Worker``` 77*ec779b8eSAndroid Build Coastguard Worker $ mm -j$(nproc) mediaplayer_fuzzer 78*ec779b8eSAndroid Build Coastguard Worker``` 79*ec779b8eSAndroid Build Coastguard Worker2. To run on device 80*ec779b8eSAndroid Build Coastguard Worker``` 81*ec779b8eSAndroid Build Coastguard Worker $ adb sync data 82*ec779b8eSAndroid Build Coastguard Worker $ adb shell /data/fuzz/arm64/mediaplayer_fuzzer/mediaplayer_fuzzer 83*ec779b8eSAndroid Build Coastguard Worker``` 84