Skip to content

Instantly share code, notes, and snippets.

@john-evangelist
Created February 7, 2021 14:53
Show Gist options
  • Save john-evangelist/b1083fd0833f605d9d792ea1ecc4c71f to your computer and use it in GitHub Desktop.
Save john-evangelist/b1083fd0833f605d9d792ea1ecc4c71f to your computer and use it in GitHub Desktop.
import java.lang.IllegalArgumentException
class Video(private val data: Array<Byte>, private val encoding: VideoEncoding) {
fun compress(compressor: VideoCompressor): Sequence<Byte> {
if (compressor.supports(encoding)) {
compressor.compress(data)
}
throw IllegalArgumentException("compressor does not support encoding $encoding")
}
}
enum class VideoEncoding {
H264, MP4, Webm
}
interface VideoCompressor {
fun compress(data: Array<Byte>): Sequence<Byte>
fun supports(encoding: VideoEncoding): Boolean
}
class H264VideoCompressor : VideoCompressor {
override fun compress(data: Array<Byte>): Sequence<Byte> {
TODO("Not yet implemented")
}
override fun supports(encoding: VideoEncoding) = encoding == VideoEncoding.H264
}
class WebmVideoCompressor : VideoCompressor {
override fun compress(data: Array<Byte>): Sequence<Byte> {
TODO("Not yet implemented")
}
override fun supports(encoding: VideoEncoding) = encoding == VideoEncoding.Webm
}
class MP4VideoCompressor : VideoCompressor {
override fun compress(data: Array<Byte>): Sequence<Byte> {
TODO("Not yet implemented")
}
override fun supports(encoding: VideoEncoding) = encoding == VideoEncoding.MP4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment