Hopefully fix yasm build breakage on 32bit
Fix qplayvid build for older ffmpeg APIs

Allow qplayvid to continue to build with pre-version 56 ffmpeg (libav) APIs.

Fixes regression introduced by: 3fd071e Update qplayvid to newer ffmpeg APIs

Signed-off-by: Kamal Mostafa <kamal@whence.com>
Revert "Add non-executable stack markings to imgproc_sse2.asm"

This reverts commit 871f85159a88ed5f6c528c81462d8bfd0ab8fc21.

These declarations already exist in libol/x86inc.asm, so 871f851 has no useful
effect but yields this new warning:

    libol/imgproc_sse2.asm:42: warning: section flags ignored on section redeclaration

Signed-off-by: Kamal Mostafa <kamal@whence.com>
Build without [q]playvid if no libavresample available

Allow the build to complete (without playvid and qplayvid) on pre-libav9
distros which do not provide libavresample.

Signed-off-by: Kamal Mostafa <kamal@whence.com>
Add install targets

... for everything except the python stuff.

Signed-off-by: Kamal Mostafa <kamal@whence.com>
olGetCharWidth() now takes a 'height' scalar arg

... same as the rest of font routines do.

Signed-off-by: Kamal Mostafa <kamal@whence.com>
Dynamic font types: olGetFont(), olFreeFont() framework

This framework allows for the implementation of different font types including
dynamically loaded fonts.  Fonts are allocated and loaded via e.g.:

	Font *font = olGetFont(OL_FONT_SOMETHING, "somefontname");

Only OL_FONT_DEFAULT is currently implemented, hence:
	olGetFont(OL_FONT_DEFAULT, "unused")
is equivalent to:
	olGetDefaultFont()

olFreeFont(font) should be called to free fonts returned by olGetFont(),
though freeing the default font is unnecessary (but harmless).

No functional change (until some future type is implemented).

Signed-off-by: Kamal Mostafa <kamal@whence.com>
olGetStringWidth() cleanup

No functional change.

Signed-off-by: Kamal Mostafa <kamal@whence.com>
olDrawChar() refactor

No functional change.

Signed-off-by: Kamal Mostafa <kamal@whence.com>
Hershey fonts support via libhersheyfont

If the libhersheyfont library is installed, build with support for
Hershey vector fonts.  Adds new olFontType OL_HERSHEY_FONT, e.g.:

    Font *olGetFont(OL_HERSHEY_FONT, fontname);
    ...
    olFreeFont(font);

Signed-off-by: Kamal Mostafa <kamal@whence.com>
spin-text: an OpenLase example app

Demo app for the font engine -- supports the 'default' font and Hershey fonts.

Signed-off-by: Kamal Mostafa <kamal@whence.com>
show-text: simple text display app (default or Hershey fonts)

Signed-off-by: Kamal Mostafa <kamal@whence.com>
libol: C_INTEROBJECT_BLACK visual debugging aid (disabled)

Handy developer debugging aid; No functional change.

Signed-off-by: Kamal Mostafa <kamal@whence.com>
libol: olRender(0) means no FPS limiting

Signed-off-by: Kamal Mostafa <kamal@whence.com>
libol: eliminate first_frame_full, but do generate dummy frames as needed

Allows rendering of a single static frame, i.e. just one call to olRender()
instead of an olRender()-loop.

Allows for olRender() of empty frames containing no objects.

Signed-off-by: Kamal Mostafa <kamal@whence.com>
libol: fix static display frames ("duplicate" frames)

Improve the handling of "duplicate" frames to allow them to be used
intentionally as successive static display frames, i.e. with arbitrary
asynchronous calls to olRender() instead of an olRender()-loop.

Before this change, each duplicate/static frame included an undesirable
laser-off traversal back to the last-rendered point of the previous frame,
since that traversal gets pre-rendered into the first object.  This change
fixes the undesirable traversal.

Implementation notes:

 - Keep track of the first "real" point and the first "wait" point of the
   first object in each frame (i.e. not including the laser-off traversal
   from the previous frame's last-rendered point).

 - Whenever the process() callback notes that no new frame is available and
   is therefore about to re-output a "duplicate" frame, it now:

     - Computes and outputs a new laser-off traversal from last output
       point to the recorded first real or wait point of the frame (taking
       into account whether a wait is still needed).

     - Skips past (does not output) the old pre-rendered laser-off traversal.

     - disables the audio-passthrough channel output for the duplicate frame.

Signed-off-by: Kamal Mostafa <kamal@whence.com>
test-static-frames: test app with no olRender() loop

Signed-off-by: Kamal Mostafa <kamal@whence.com>