xref: /aosp_15_r20/frameworks/av/media/libmediaplayerservice/fuzzer/README.md (revision ec779b8e0859a360c3d303172224686826e6e0e1)
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