The cl-video Reference Manual

Next: , Previous: , Up: (dir)   [Contents][Index]

The cl-video Reference Manual

This is the cl-video Reference Manual, version 1.5, generated automatically by Declt version 4.0 beta 2 "William Riker" on Mon Aug 15 04:08:21 2022 GMT+0.

Table of Contents


1 Introduction

Video file decoding in Common Lisp

Simple video decoder written in Common Lisp. AVI/MJPEG playback leverages CL-JPEG for frame processing and CL-RIFF for container format handling. It also supports GIF playback via Skippy.

A primitive CLX media player is included. Playback of PCM encoded audio streams is supported.

Has only lightly tested on SBCL 13.x/Linux x86-64, CCL 1.11 and Mezzano. CL-JPEG version 2.8 or higher is required.

Some sample files can be found here (the toy plane AVI) and here.

Known Limitations

TODO:


2 Systems

The main system appears first, followed by any subsystem dependency.


Previous: , Up: Systems   [Contents][Index]

2.1 cl-video

Video decoder core implemented in Common Lisp

Author

Eugene Zaikonnikov

License

BSD

Version

1.5

Dependency

bordeaux-threads (system).

Source

cl-video.asd.

Child Components

3 Files

Files are sorted by type and then listed depth-first from the systems components trees.


Previous: , Up: Files   [Contents][Index]

3.1 Lisp


Next: , Previous: , Up: Lisp   [Contents][Index]

3.1.1 cl-video/cl-video.asd

Source

cl-video.asd.

Parent Component

cl-video (system).

ASDF Systems

cl-video.


3.1.2 cl-video/package.lisp

Source

cl-video.asd.

Parent Component

cl-video (system).

Packages

cl-video.


Previous: , Up: Lisp   [Contents][Index]

3.1.3 cl-video/cl-video.lisp

Dependency

package.lisp (file).

Source

cl-video.asd.

Parent Component

cl-video (system).

Public Interface
Internals

4 Packages

Packages are listed by definition order.


Previous: , Up: Packages   [Contents][Index]

4.1 cl-video

Source

package.lisp.

Use List
  • alexandria.
  • common-lisp.
Public Interface
Internals

5 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


Next: , Previous: , Up: Definitions   [Contents][Index]

5.1 Public Interface


5.1.1 Generic functions

Generic Reader: audio-out (object)
Package

cl-video.

Methods
Reader Method: audio-out ((av-container av-container))

automatically generated reader method

Source

cl-video.lisp.

Target Slot

audio-out.

Generic Writer: (setf audio-out) (object)
Package

cl-video.

Methods
Writer Method: (setf audio-out) ((av-container av-container))

automatically generated writer method

Source

cl-video.lisp.

Target Slot

audio-out.

Generic Reader: audio-rec (object)
Package

cl-video.

Methods
Reader Method: audio-rec ((audio-output audio-output))

automatically generated reader method

Source

cl-video.lisp.

Target Slot

audio-rec.

Generic Writer: (setf audio-rec) (object)
Package

cl-video.

Methods
Writer Method: (setf audio-rec) ((audio-output audio-output))

automatically generated writer method

Source

cl-video.lisp.

Target Slot

audio-rec.

Generic Reader: buffer (object)
Package

cl-video.

Methods
Reader Method: buffer ((stream-record stream-record))

automatically generated reader method

Source

cl-video.lisp.

Target Slot

buffer.

Generic Writer: (setf buffer) (object)
Package

cl-video.

Methods
Writer Method: (setf buffer) ((stream-record stream-record))

automatically generated writer method

Source

cl-video.lisp.

Target Slot

buffer.

Generic Function: close-sink (audio-output)

Close output stream

Package

cl-video.

Source

cl-video.lisp.

Generic Function: decode (stream)

Decodes the video stream

Package

cl-video.

Source

cl-video.lisp.

Generic Function: decode-media-stream (record fsize input-stream)
Package

cl-video.

Source

cl-video.lisp.

Methods
Method: decode-media-stream ((rec stream-record) fsize input-stream)
Generic Reader: filename (object)
Package

cl-video.

Methods
Reader Method: filename ((av-container av-container))

automatically generated reader method

Source

cl-video.lisp.

Target Slot

filename.

Generic Writer: (setf filename) (object)
Package

cl-video.

Methods
Writer Method: (setf filename) ((av-container av-container))

automatically generated writer method

Source

cl-video.lisp.

Target Slot

filename.

Generic Reader: final (object)
Package

cl-video.

Methods
Reader Method: final ((stream-record stream-record))

automatically generated reader method

Source

cl-video.lisp.

Target Slot

final.

Generic Writer: (setf final) (object)
Package

cl-video.

Methods
Writer Method: (setf final) ((stream-record stream-record))

automatically generated writer method

Source

cl-video.lisp.

Target Slot

final.

Generic Function: find-video-stream-record (c)
Package

cl-video.

Methods
Method: find-video-stream-record ((c av-container))
Source

cl-video.lisp.

Generic Reader: finish (object)
Package

cl-video.

Methods
Reader Method: finish ((av-container av-container))

automatically generated reader method

Source

cl-video.lisp.

Target Slot

finish.

Generic Writer: (setf finish) (object)
Package

cl-video.

Methods
Writer Method: (setf finish) ((av-container av-container))

automatically generated writer method

Source

cl-video.lisp.

Target Slot

finish.

Generic Reader: frame (object)
Package

cl-video.

Methods
Reader Method: frame ((chunk chunk))

automatically generated reader method

Source

cl-video.lisp.

Target Slot

frame.

Generic Writer: (setf frame) (object)
Package

cl-video.

Methods
Writer Method: (setf frame) ((chunk chunk))

automatically generated writer method

Source

cl-video.lisp.

Target Slot

frame.

Generic Function: frame-delay (record)
Package

cl-video.

Source

cl-video.lisp.

Generic Reader: height (object)
Package

cl-video.

Methods
Reader Method: height ((av-container av-container))

automatically generated reader method

Source

cl-video.lisp.

Target Slot

height.

Generic Writer: (setf height) (object)
Package

cl-video.

Methods
Writer Method: (setf height) ((av-container av-container))

automatically generated writer method

Source

cl-video.lisp.

Target Slot

height.

Generic Function: initialize-ring (rec ring-length &optional frame-size element-type)
Package

cl-video.

Methods
Method: initialize-ring ((rec stream-record) ring-length &optional frame-size element-type)
Source

cl-video.lisp.

Generic Function: initialize-sink (audio-output)

Initialize output stream

Package

cl-video.

Source

cl-video.lisp.

Generic Reader: pause (object)
Package

cl-video.

Methods
Reader Method: pause ((av-container av-container))

automatically generated reader method

Source

cl-video.lisp.

Target Slot

pause.

Generic Writer: (setf pause) (object)
Package

cl-video.

Methods
Writer Method: (setf pause) ((av-container av-container))

automatically generated writer method

Source

cl-video.lisp.

Target Slot

pause.

Generic Reader: pause-lock (object)
Package

cl-video.

Methods
Reader Method: pause-lock ((av-container av-container))

automatically generated reader method

Source

cl-video.lisp.

Target Slot

pause-lock.

Generic Writer: (setf pause-lock) (object)
Package

cl-video.

Methods
Writer Method: (setf pause-lock) ((av-container av-container))

automatically generated writer method

Source

cl-video.lisp.

Target Slot

pause-lock.

Generic Function: pop-chunk-rcursor (rec)
Package

cl-video.

Methods
Method: pop-chunk-rcursor ((rec stream-record))
Source

cl-video.lisp.

Generic Function: prime-all-streams (c)
Package

cl-video.

Methods
Method: prime-all-streams ((c av-container))
Source

cl-video.lisp.

Generic Reader: rcursor (object)
Package

cl-video.

Methods
Reader Method: rcursor ((stream-record stream-record))

automatically generated reader method

Source

cl-video.lisp.

Target Slot

rcursor.

Generic Writer: (setf rcursor) (object)
Package

cl-video.

Methods
Writer Method: (setf rcursor) ((stream-record stream-record))

automatically generated writer method

Source

cl-video.lisp.

Target Slot

rcursor.

Generic Function: sink-frame (audio-output frame)

Play back the frame

Package

cl-video.

Source

cl-video.lisp.

Generic Function: sink-frame-element-type (audio-output)

Data type for the output records used when creating frames in a ring buffer

Package

cl-video.

Source

cl-video.lisp.

Generic Function: stream-playback-start (stream-record)
Package

cl-video.

Source

cl-video.lisp.

Methods
Method: stream-playback-start ((rec stream-record))
Generic Function: stream-playback-stop (stream-record)
Package

cl-video.

Source

cl-video.lisp.

Methods
Method: stream-playback-stop ((rec stream-record))
Generic Reader: stream-records (object)
Package

cl-video.

Methods
Reader Method: stream-records ((av-container av-container))

automatically generated reader method

Source

cl-video.lisp.

Target Slot

stream-records.

Generic Writer: (setf stream-records) (object)
Package

cl-video.

Methods
Writer Method: (setf stream-records) ((av-container av-container))

automatically generated writer method

Source

cl-video.lisp.

Target Slot

stream-records.

Generic Reader: suggested-buffer-size (object)
Package

cl-video.

Methods
Reader Method: suggested-buffer-size ((stream-record stream-record))

automatically generated reader method

Source

cl-video.lisp.

Target Slot

suggested-buffer-size.

Generic Writer: (setf suggested-buffer-size) (object)
Package

cl-video.

Methods
Writer Method: (setf suggested-buffer-size) ((stream-record stream-record))

automatically generated writer method

Source

cl-video.lisp.

Target Slot

suggested-buffer-size.

Generic Function: translate-source-frame (audio-output frame)

Transcribe uint8 frame into someting playable by the output

Package

cl-video.

Source

cl-video.lisp.

Generic Reader: vacancy-lock (object)
Package

cl-video.

Methods
Reader Method: vacancy-lock ((chunk chunk))

automatically generated reader method

Source

cl-video.lisp.

Target Slot

lock.

Generic Reader: wcursor (object)
Package

cl-video.

Methods
Reader Method: wcursor ((stream-record stream-record))

automatically generated reader method

Source

cl-video.lisp.

Target Slot

wcursor.

Generic Writer: (setf wcursor) (object)
Package

cl-video.

Methods
Writer Method: (setf wcursor) ((stream-record stream-record))

automatically generated writer method

Source

cl-video.lisp.

Target Slot

wcursor.

Generic Reader: width (object)
Package

cl-video.

Methods
Reader Method: width ((av-container av-container))

automatically generated reader method

Source

cl-video.lisp.

Target Slot

width.

Generic Writer: (setf width) (object)
Package

cl-video.

Methods
Writer Method: (setf width) ((av-container av-container))

automatically generated writer method

Source

cl-video.lisp.

Target Slot

width.


5.1.2 Conditions

Condition: media-decoder-error
Package

cl-video.

Source

cl-video.lisp.

Direct superclasses

error.

Direct subclasses

unrecognized-file-format.

Condition: unrecognized-file-format
Package

cl-video.

Source

cl-video.lisp.

Direct superclasses

media-decoder-error.


Previous: , Up: Public Interface   [Contents][Index]

5.1.3 Classes

Class: audio-output
Package

cl-video.

Source

cl-video.lisp.

Direct methods
Direct slots
Slot: audio-rec
Readers

audio-rec.

Writers

(setf audio-rec).

Class: av-container
Package

cl-video.

Source

cl-video.lisp.

Direct methods
Direct slots
Slot: filename
Initargs

:filename

Readers

filename.

Writers

(setf filename).

Slot: audio-out
Type

(quote cl-video:audio-output)

Initargs

:audio-out

Readers

audio-out.

Writers

(setf audio-out).

Slot: player-callback
Initargs

:player-callback

Readers

player-callback.

Writers

(setf player-callback).

Slot: width
Initform

640

Initargs

:width

Readers

width.

Writers

(setf width).

Slot: height
Initform

480

Initargs

:height

Readers

height.

Writers

(setf height).

Slot: stream-records
Initform

(quote nil)

Readers

stream-records.

Writers

(setf stream-records).

Slot: finish
Readers

finish.

Writers

(setf finish).

Slot: pause
Readers

pause.

Writers

(setf pause).

Slot: pause-lock
Initform

(bordeaux-threads:make-lock "pause")

Readers

pause-lock.

Writers

(setf pause-lock).

Class: chunk
Package

cl-video.

Source

cl-video.lisp.

Direct methods
Direct slots
Slot: lock
Initform

(bordeaux-threads:make-lock "vacancy")

Readers

vacancy-lock.

Writers

This slot is read-only.

Slot: frame
Initargs

:frame

Readers

frame.

Writers

(setf frame).

Class: video-stream-record
Package

cl-video.

Source

cl-video.lisp.

Direct superclasses

stream-record.


5.2 Internals


Next: , Previous: , Up: Internals   [Contents][Index]

5.2.1 Special variables

Special Variable: *debug*
Package

cl-video.

Source

cl-video.lisp.


5.2.2 Ordinary functions

Function: debug-log (string)
Package

cl-video.

Source

cl-video.lisp.


Next: , Previous: , Up: Internals   [Contents][Index]

5.2.3 Generic functions

Generic Reader: chunk-queue (object)
Package

cl-video.

Methods
Reader Method: chunk-queue ((stream-record stream-record))

automatically generated reader method

Source

cl-video.lisp.

Target Slot

chunk-queue.

Generic Writer: (setf chunk-queue) (object)
Package

cl-video.

Methods
Writer Method: (setf chunk-queue) ((stream-record stream-record))

automatically generated writer method

Source

cl-video.lisp.

Target Slot

chunk-queue.

Generic Reader: container (object)
Package

cl-video.

Methods
Reader Method: container ((stream-record stream-record))

automatically generated reader method

Source

cl-video.lisp.

Target Slot

container.

Generic Writer: (setf container) (object)
Package

cl-video.

Methods
Writer Method: (setf container) ((stream-record stream-record))

automatically generated writer method

Source

cl-video.lisp.

Target Slot

container.

Generic Reader: player-callback (object)
Package

cl-video.

Methods
Reader Method: player-callback ((av-container av-container))

automatically generated reader method

Source

cl-video.lisp.

Target Slot

player-callback.

Generic Writer: (setf player-callback) (object)
Package

cl-video.

Methods
Writer Method: (setf player-callback) ((av-container av-container))

automatically generated writer method

Source

cl-video.lisp.

Target Slot

player-callback.


Previous: , Up: Internals   [Contents][Index]

5.2.4 Classes

Class: stream-record
Package

cl-video.

Source

cl-video.lisp.

Direct subclasses

video-stream-record.

Direct methods
Direct slots
Slot: chunk-queue
Readers

chunk-queue.

Writers

(setf chunk-queue).

Slot: rcursor
Readers

rcursor.

Writers

(setf rcursor).

Slot: wcursor
Readers

wcursor.

Writers

(setf wcursor).

Slot: final
Readers

final.

Writers

(setf final).

Slot: buffer
Type

(quote (simple-array (unsigned-byte 8)))

Readers

buffer.

Writers

(setf buffer).

Slot: suggested-buffer-size
Readers

suggested-buffer-size.

Writers

(setf suggested-buffer-size).

Slot: container
Initargs

:container

Readers

container.

Writers

(setf container).


Appendix A Indexes


Next: , Previous: , Up: Indexes   [Contents][Index]

A.1 Concepts


Next: , Previous: , Up: Indexes   [Contents][Index]

A.2 Functions

Jump to:   (  
A   B   C   D   F   G   H   I   M   P   R   S   T   V   W  
Index Entry  Section

(
(setf audio-out): Public generic functions
(setf audio-out): Public generic functions
(setf audio-rec): Public generic functions
(setf audio-rec): Public generic functions
(setf buffer): Public generic functions
(setf buffer): Public generic functions
(setf chunk-queue): Private generic functions
(setf chunk-queue): Private generic functions
(setf container): Private generic functions
(setf container): Private generic functions
(setf filename): Public generic functions
(setf filename): Public generic functions
(setf final): Public generic functions
(setf final): Public generic functions
(setf finish): Public generic functions
(setf finish): Public generic functions
(setf frame): Public generic functions
(setf frame): Public generic functions
(setf height): Public generic functions
(setf height): Public generic functions
(setf pause): Public generic functions
(setf pause): Public generic functions
(setf pause-lock): Public generic functions
(setf pause-lock): Public generic functions
(setf player-callback): Private generic functions
(setf player-callback): Private generic functions
(setf rcursor): Public generic functions
(setf rcursor): Public generic functions
(setf stream-records): Public generic functions
(setf stream-records): Public generic functions
(setf suggested-buffer-size): Public generic functions
(setf suggested-buffer-size): Public generic functions
(setf wcursor): Public generic functions
(setf wcursor): Public generic functions
(setf width): Public generic functions
(setf width): Public generic functions

A
audio-out: Public generic functions
audio-out: Public generic functions
audio-rec: Public generic functions
audio-rec: Public generic functions

B
buffer: Public generic functions
buffer: Public generic functions

C
chunk-queue: Private generic functions
chunk-queue: Private generic functions
close-sink: Public generic functions
container: Private generic functions
container: Private generic functions

D
debug-log: Private ordinary functions
decode: Public generic functions
decode-media-stream: Public generic functions
decode-media-stream: Public generic functions

F
filename: Public generic functions
filename: Public generic functions
final: Public generic functions
final: Public generic functions
find-video-stream-record: Public generic functions
find-video-stream-record: Public generic functions
finish: Public generic functions
finish: Public generic functions
frame: Public generic functions
frame: Public generic functions
frame-delay: Public generic functions
Function, debug-log: Private ordinary functions

G
Generic Function, (setf audio-out): Public generic functions
Generic Function, (setf audio-rec): Public generic functions
Generic Function, (setf buffer): Public generic functions
Generic Function, (setf chunk-queue): Private generic functions
Generic Function, (setf container): Private generic functions
Generic Function, (setf filename): Public generic functions
Generic Function, (setf final): Public generic functions
Generic Function, (setf finish): Public generic functions
Generic Function, (setf frame): Public generic functions
Generic Function, (setf height): Public generic functions
Generic Function, (setf pause): Public generic functions
Generic Function, (setf pause-lock): Public generic functions
Generic Function, (setf player-callback): Private generic functions
Generic Function, (setf rcursor): Public generic functions
Generic Function, (setf stream-records): Public generic functions
Generic Function, (setf suggested-buffer-size): Public generic functions
Generic Function, (setf wcursor): Public generic functions
Generic Function, (setf width): Public generic functions
Generic Function, audio-out: Public generic functions
Generic Function, audio-rec: Public generic functions
Generic Function, buffer: Public generic functions
Generic Function, chunk-queue: Private generic functions
Generic Function, close-sink: Public generic functions
Generic Function, container: Private generic functions
Generic Function, decode: Public generic functions
Generic Function, decode-media-stream: Public generic functions
Generic Function, filename: Public generic functions
Generic Function, final: Public generic functions
Generic Function, find-video-stream-record: Public generic functions
Generic Function, finish: Public generic functions
Generic Function, frame: Public generic functions
Generic Function, frame-delay: Public generic functions
Generic Function, height: Public generic functions
Generic Function, initialize-ring: Public generic functions
Generic Function, initialize-sink: Public generic functions
Generic Function, pause: Public generic functions
Generic Function, pause-lock: Public generic functions
Generic Function, player-callback: Private generic functions
Generic Function, pop-chunk-rcursor: Public generic functions
Generic Function, prime-all-streams: Public generic functions
Generic Function, rcursor: Public generic functions
Generic Function, sink-frame: Public generic functions
Generic Function, sink-frame-element-type: Public generic functions
Generic Function, stream-playback-start: Public generic functions
Generic Function, stream-playback-stop: Public generic functions
Generic Function, stream-records: Public generic functions
Generic Function, suggested-buffer-size: Public generic functions
Generic Function, translate-source-frame: Public generic functions
Generic Function, vacancy-lock: Public generic functions
Generic Function, wcursor: Public generic functions
Generic Function, width: Public generic functions

H
height: Public generic functions
height: Public generic functions

I
initialize-ring: Public generic functions
initialize-ring: Public generic functions
initialize-sink: Public generic functions

M
Method, (setf audio-out): Public generic functions
Method, (setf audio-rec): Public generic functions
Method, (setf buffer): Public generic functions
Method, (setf chunk-queue): Private generic functions
Method, (setf container): Private generic functions
Method, (setf filename): Public generic functions
Method, (setf final): Public generic functions
Method, (setf finish): Public generic functions
Method, (setf frame): Public generic functions
Method, (setf height): Public generic functions
Method, (setf pause): Public generic functions
Method, (setf pause-lock): Public generic functions
Method, (setf player-callback): Private generic functions
Method, (setf rcursor): Public generic functions
Method, (setf stream-records): Public generic functions
Method, (setf suggested-buffer-size): Public generic functions
Method, (setf wcursor): Public generic functions
Method, (setf width): Public generic functions
Method, audio-out: Public generic functions
Method, audio-rec: Public generic functions
Method, buffer: Public generic functions
Method, chunk-queue: Private generic functions
Method, container: Private generic functions
Method, decode-media-stream: Public generic functions
Method, filename: Public generic functions
Method, final: Public generic functions
Method, find-video-stream-record: Public generic functions
Method, finish: Public generic functions
Method, frame: Public generic functions
Method, height: Public generic functions
Method, initialize-ring: Public generic functions
Method, pause: Public generic functions
Method, pause-lock: Public generic functions
Method, player-callback: Private generic functions
Method, pop-chunk-rcursor: Public generic functions
Method, prime-all-streams: Public generic functions
Method, rcursor: Public generic functions
Method, stream-playback-start: Public generic functions
Method, stream-playback-stop: Public generic functions
Method, stream-records: Public generic functions
Method, suggested-buffer-size: Public generic functions
Method, vacancy-lock: Public generic functions
Method, wcursor: Public generic functions
Method, width: Public generic functions

P
pause: Public generic functions
pause: Public generic functions
pause-lock: Public generic functions
pause-lock: Public generic functions
player-callback: Private generic functions
player-callback: Private generic functions
pop-chunk-rcursor: Public generic functions
pop-chunk-rcursor: Public generic functions
prime-all-streams: Public generic functions
prime-all-streams: Public generic functions

R
rcursor: Public generic functions
rcursor: Public generic functions

S
sink-frame: Public generic functions
sink-frame-element-type: Public generic functions
stream-playback-start: Public generic functions
stream-playback-start: Public generic functions
stream-playback-stop: Public generic functions
stream-playback-stop: Public generic functions
stream-records: Public generic functions
stream-records: Public generic functions
suggested-buffer-size: Public generic functions
suggested-buffer-size: Public generic functions

T
translate-source-frame: Public generic functions

V
vacancy-lock: Public generic functions
vacancy-lock: Public generic functions

W
wcursor: Public generic functions
wcursor: Public generic functions
width: Public generic functions
width: Public generic functions

Jump to:   (  
A   B   C   D   F   G   H   I   M   P   R   S   T   V   W