tests: Add visual tests for basic video decoding and color conversion
Including source files and notes on how the SWFs were made.
This commit is contained in:
parent
b661e16927
commit
b87fe2d335
|
@ -0,0 +1,42 @@
|
|||
Creating the H.263 test SWF was straightforward:
|
||||
$ ffmpeg -i testcard.png -vcodec flv1 test.swf
|
||||
|
||||
|
||||
The VP6 one was a bit more involved:
|
||||
|
||||
$ ffmpeg -i testcard.png -pix_fmt yuv420p testcard.y4m
|
||||
$ nihav-encoder --input testcard.y4m --output testcard.avi \
|
||||
--ostream0 encoder=vp6,key_int=1,quant=50
|
||||
$ ffmpeg -i testcard.avi -vcodec copy testcard.flv
|
||||
$ ffmpeg -i testcard.flv -vcodec copy -r 1 test.swf
|
||||
|
||||
The dance through the FLV container is only needed to get over
|
||||
some VP6/VP60/VP6F codec ID mismatch, and the -r argument was
|
||||
probably because framerate as such was not entered anywhere
|
||||
before that, and the SWF muxer needs it.
|
||||
Also note that the output will be flipped vertically.
|
||||
|
||||
|
||||
The VP6A was even more complicated:
|
||||
|
||||
First, a premultiplied version of the color frame was exported
|
||||
from GIMP (via a simple layer blending operation).
|
||||
Then both the premultiplied color and the alpha frames were
|
||||
encoded to SWFs with the method described above. Finally, the
|
||||
alpha frame was merged into the premultiplied color one using
|
||||
JPEXS ffdec and a regular hex editor, like this:
|
||||
- The raw encoded data of the alpha frame was exported
|
||||
- It was inserted after the encoded data of the premultiplied
|
||||
color frame
|
||||
- Three bytes were inserted before the color frame data,
|
||||
encoding the length of just the color frame data as a 24-bit
|
||||
big-endian number
|
||||
- Both the tag length and the overall file length were increased
|
||||
by 3 plus the length of the alpha frame data
|
||||
- Finally, a background color tag was added at the beginning
|
||||
in ffdec to better show transparency
|
||||
|
||||
While this works fine for single frames, for longer sequences
|
||||
one has to make sure to uphold the restriction that for every
|
||||
color frame coded as a keyframe, the corresponding alpha frame
|
||||
also has to be a keyframe. Otherwise: artifacts when seeking.
|
Binary file not shown.
After Width: | Height: | Size: 91 KiB |
Binary file not shown.
After Width: | Height: | Size: 103 KiB |
Binary file not shown.
|
@ -0,0 +1,8 @@
|
|||
num_frames = 1
|
||||
|
||||
[image_comparison]
|
||||
tolerance = 0
|
||||
|
||||
[player_options]
|
||||
with_renderer = { optional = false, sample_count = 1 }
|
||||
with_video = true
|
Binary file not shown.
After Width: | Height: | Size: 40 KiB |
Binary file not shown.
After Width: | Height: | Size: 146 KiB |
Binary file not shown.
After Width: | Height: | Size: 97 KiB |
Binary file not shown.
|
@ -0,0 +1,8 @@
|
|||
num_frames = 1
|
||||
|
||||
[image_comparison]
|
||||
tolerance = 0
|
||||
|
||||
[player_options]
|
||||
with_renderer = { optional = false, sample_count = 1 }
|
||||
with_video = true
|
Binary file not shown.
After Width: | Height: | Size: 230 KiB |
Binary file not shown.
|
@ -0,0 +1,8 @@
|
|||
num_frames = 1
|
||||
|
||||
[image_comparison]
|
||||
tolerance = 1
|
||||
|
||||
[player_options]
|
||||
with_renderer = { optional = false, sample_count = 1 }
|
||||
with_video = true
|
Loading…
Reference in New Issue