It's free media player that aiming at supporting Iot device or embedded in other software
- process graph framework
- split demux to demuxer + stream + decode
- demuxer prefetch
- bootstrap & close gracefully
audio ouput demodoc support(use doxygen)error codeevent handlerdispatch Stream to Outputresamplesupport packed audio format- cache
- rate limiter
- bit rate control
- video sync with audio
- serializer
- config
- object pool
- REPL
- osd
- ao & vo ReConfig
- seek
- network streaming
- cache
- p2p support?
-
audio mixed with next entry
- CAUSE: Buffer(for ) is read with fixed size but bytes in Buffer is not enough
- HOW TO FIX: at last frame we should make up audio callback buffer
-
resample need flush
-
sdl audio driver
- there is not sound if callback stuck for a period
- correction of function
- correction of context
- multiple driver
- multiple hardware
the source files are organized by different usage in different folder and designed by traditional OOP that the src code that impl one feature should not cross too many files, the dst code can though. Anyway, we should consider where to Put the src code and to fix it in.
- audio: audio output and audio driver
- common: some high level data structure like Config that is used by other module
- core: what make player different from demuxer
- demux: split stream from container
- exception: define err code
- input: define input code and the
- misc: some low level help util and function
- osal: operating system abstraction layer
- video: video output and video driver
you can guess what it is aimed for when you see name in src code first time
- xxxContext: it mean that it can be accessed by many other class, it must always be in the right state
- how to support different demuxer
- WHY: because we should support a lot of format in the future
- HOW: the first sight is to use default ffmpeg demuxer by default but allow user to override their own. user should define their own codec though.