X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=vpu.mdwn;h=a646c8609fb9202acae21c6c8d6f9e07c8487c9a;hb=2af9622e16e4664f4769eb72f70619ef1d132526;hp=6781866c36c0639a43fec8f001dbfca08382ebda;hpb=435ae220865a48a9c96bfb452d4f4d95d8c9b603;p=libreriscv.git
diff --git a/vpu.mdwn b/vpu.mdwn
index 6781866c3..a646c8609 100644
--- a/vpu.mdwn
+++ b/vpu.mdwn
@@ -1,3 +1,48 @@
# Video Processing and Acceleration
-TODO
+Here's some preliminary planning for the video part. Top-level headings.
+Any actual work will need to know the ISA.
+
+Decoding is prioritized over encoding. In general, faster decoding
+speeds up a part of encoding.
+
+Codecs to target:
+
+* Audio: MP3, AC3, Vorbis, Opus
+* Video: MPEG1/2, MPEG4 ASP (xvid), H.264, H.265, VP8, VP9, AV1
+
+YUV-RGB conversion for the most common formats (there may be a hw block for this, if so skip):
+
+* rgb/bgr24,
+* rgbx/bgrx/xrgb/xbgr32,
+* nv12,
+* nv21
+
+Most of these are DCT-based, meaning the instructions will likely
+benefit image formats like JPEG as well. However image formats are not
+a part of this project, though MJPEG could be considered a video codec?
+Should we include it and thus speed up JPEG decoding?
+
+Audio was not explicitly mentioned in the proposal, but fast audio
+decoding is necessary for smooth video playback. Otherwise a 300MHz
+chip may not even play Opus in realtime.
+
+The entropy part of codecs similarly has overlap with general
+compression.
+
+Any speedups should really be compared to C (what gcc generates), not a
+hand-made simple asm implementation. Both for no use in trying to match
+the compiler for simple loops, and for potential new instructions
+possibly needing entirely different approaches. We'll also need some
+guideline on what parallelism to target in the simulator (how many ops
+we can assume will be completed at once).
+
+The software part will be ffmpeg and binutils forks until the standards
+are set and hw exists; then submission; then other projects
+(gstreamer, lib*).
+
+# Links
+
+* Cocotb co-simulation of JPEG
+* Top level bugreport:
+* [[nlnet_2019_video]]