[FFmpeg-devel] a64 encoder 5th round

Bitbreaker/METALVOTZE bitbreaker
Sat Jan 24 11:02:45 CET 2009


>> +                row1 <<= 2;
>> +                if (prep_dither_patterns[dither][y & 3][x & 3])
>> +                    row1 |= vals[index2];
>> +                else
>> +                    row1 |= vals[index1];
>> +            }
>> +            charset[y] = row1;
>>     
>
> could be simplified slightly with put_bits()
>   
Yes, that would indeed look nice here, but can only do so as long as the 
pointer for charset stays untouched by put_bits (as i might do this part 
of code twice in 5col mode, see charpos-- a few lines below that). I'll 
figure out and change it if applicable.
> besides the way you do dithering is uncommon ...
> i assume you have a reason why you dont use ordered dither, or one of the
> error diffusion dithers? last should be vastly better except maybe some
> flickering between frames and the need to consider already set patterns
> of neighborin blocks ...
>   
On the one hand, pixels have a aspect ratio of 2:1 in that mode. Also 
those dither patterns i use are more or less best practice on c64 
regarding doing for e.g. handpixeled graphics. Error diffusion dither 
can look good in hi resolution modes at times when i can make use of 
full 320x200. As you mentioned already as well, i face additional 
problems regarding neighbour blocks when using that kind of dither. So 
worse case is to have a 4:1 big pixel. In that way, the fixed patterns i 
use might have the smaller footprint regarding complexity and codesize?
Flickering is not too much of a problem in this mode, but on the 
upcoming ecmh mode (but let's finish this first :-) ) where i interlace 
the symbols and place the same amount of pixels on each frame of the 
interlace to avoid a change in luminance areawise. Also c64 displays 
things in PAL (at least in Europe, NTSC versions are also available) and 
some other "nice" features are added to the resulting pic (for e.g. 
pixels nearly vanishing after a black pixel). So that are things that 
can only be seen on the real machine, they don't appear in the 
Emulators, though there is PAL emulation available for output.

> A muxer cannot access the private contxt of the encoder

I'll strip the muxer of as suggested, however this issue can be fixed 
anyway, as i can get the needed values also from quality set in 
AVCodecContext.

Thanks for the further advices and hints so far!

Kindest regards,

Toby




More information about the ffmpeg-devel mailing list