[FFmpeg-devel] a64 encoder
Bitbreaker/METALVOTZE
bitbreaker
Sat Jan 17 10:45:40 CET 2009
> Is there any advantage of Petscii in comparison with ecmh?
>
Petscii can be displayed in 25fps, ecmh in only 12.5 fps.
>> So having several ways for encoding is part of the idea.
>>
>
> Isn't it possible to have a single file format for all the ways of
> encoding?
Well, that is why i made the .a64 muxer wit ha small header with basic
parameters and all teh frames with a fixed size. Changing framesize (or
charset lifetime) is code overhead on c64 side that means slowing down
things. Thre is just 0.981 MHz available on the 6502, so i need to keep
things simple :-) For e.g. i could compress the colorram, as only 4 bits
are used, by simply putting 2 nibbles together , thus saving 0x200
bytes on a frame. But in fact it is faster to load additional 0x200
bytes than letting teh c64 shift things back with half loading time.
ldx $de00
txa
lsr
lsr
lsr
lsr
sta dest,y
iny
txa
sta dest,y
...
4+2+2+2+2+2+5+2+2+5 = 28 cycles
versus:
lda $de00
sta dest,y
iny
lda $de01
sta dest,5
iny
4+5+2+4+5+2 = 22 cycles
> Maybe you could even encode in a way to permit files with
> non-constant lifetime like the following example:
>
> CHARSET, FRAME, FRAME, CHARSET, FRAME, CHARSET, FRAME, FRAME, FRAME,
> FRAME, CHARSET, ...
>
>
Theoretically a good idea too have a variable bitrate, but that would
mean that loading times for a frame can vary and thus a fps of 25 could
not be held if too many charsets are trasnferred. a lifetime of 1 means
an average framesize of $0c00, with a lifetie of 4 it is just $0600
(that is where i reach 25 fps, comapred to 12.5 else).
Kindest regards,
Toby
More information about the ffmpeg-devel
mailing list