* add callbacks to AVFormatContext
* lavd: add opengl device

OpenGL is a "virtual" device.
It can render to OpenGL context provided from outside (by AVFormatContext callbacks)
or create default window with OpenGL context on certain platforms (Windows, Linux, MacOS)
opengl probe device dummy
callbacks
set pulse buffer to 100ms
add API to pause clocks
Pause clocks on pause
callback on pause status
partial seek api
opengl cosmetics
avengine_is_media_opened function
read thread start/finish logs
wait for audio device before decoding
produce pts and dts for device packet
lavf/mux: allow muxing non monotonic timestamps

This is required by devices to avoid error when stream is seeked backward.

Signed-off-by: Lukasz Marek <lukasz.m.luki@gmail.com>
lavd/pulse_audio_enc: allow non monotonic streams

Signed-off-by: Lukasz Marek <lukasz.m.luki@gmail.com>

Conflicts:
	libavdevice/pulse_audio_enc.c
remove wrong comment
remove pts from packet list
lavd/opengl_enc: allow non monotonic streams
fix seeking