[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