From 01068d617a51dca66b01bcaefd27cfc16806487b Mon Sep 17 00:00:00 2001 From: Alex Brown Date: Thu, 9 May 2024 14:37:39 +1000 Subject: [PATCH] virtio-snd: docs: use svg instead of png Signed-off-by: Alex Brown --- examples/virtio-snd/docs/SOUND.md | 4 ++-- examples/virtio-snd/docs/sound-structure.png | Bin 22425 -> 0 bytes examples/virtio-snd/docs/sound-structure.svg | 1 + examples/virtio-snd/docs/virtio-snd.png | Bin 13916 -> 0 bytes examples/virtio-snd/docs/virtio-snd.svg | 1 + 5 files changed, 4 insertions(+), 2 deletions(-) delete mode 100644 examples/virtio-snd/docs/sound-structure.png create mode 100644 examples/virtio-snd/docs/sound-structure.svg delete mode 100644 examples/virtio-snd/docs/virtio-snd.png create mode 100644 examples/virtio-snd/docs/virtio-snd.svg diff --git a/examples/virtio-snd/docs/SOUND.md b/examples/virtio-snd/docs/SOUND.md index 4922a3a38..44ab983ed 100644 --- a/examples/virtio-snd/docs/SOUND.md +++ b/examples/virtio-snd/docs/SOUND.md @@ -61,7 +61,7 @@ aplay rec.wav # 2. Design & Implementation ## 2.1 System Structure -![image](sound-structure.png) +![image](sound-structure.svg) From left to right: 1. A client Linux process plays sound through ALSA. 2. The Linux kernel sends this sound to a VirtIO sound device that has been @@ -162,7 +162,7 @@ The VirtIO sound queue structure is shown below. A request appears in the available queue, containing request info and a number of data buffers. When this request has been fulfilled (i.e., the PCM data has been played), the status is written and it is moved into the used queue. -![image](virtio-snd.png) +![image](virtio-snd.svg) ## 2.5 UIO driver implementation ### 2.5.1 Communication with native protection domains diff --git a/examples/virtio-snd/docs/sound-structure.png b/examples/virtio-snd/docs/sound-structure.png deleted file mode 100644 index 964d6833a03e35f926048db774e1d2016eff0f0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22425 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 O&h)00VWYll;(q~f7w3Ec diff --git a/examples/virtio-snd/docs/sound-structure.svg b/examples/virtio-snd/docs/sound-structure.svg new file mode 100644 index 000000000..41e54bfe3 --- /dev/null +++ b/examples/virtio-snd/docs/sound-structure.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/examples/virtio-snd/docs/virtio-snd.png b/examples/virtio-snd/docs/virtio-snd.png deleted file mode 100644 index af1c1a581ae4661544fdabcd7bb950a97683128b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13916 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 V16xu!{nZ#iRY~( \ No newline at end of file