• Matthew Fearnley's avatar
    libavcodec/zmbvenc: Add support for RGB formats · 03213706
    Matthew Fearnley authored
    This consists mostly of the following changes:
    - add newly supported pixel formats (RGB555LE, RGB565LE, BGR0)
    - select the ZMBV format (c->fmt) and bytes per pixel (c->bypp) based on
      avctx->pix_fmt
    - multiply widths/x-values by c->bypp, in places where bytes, not pixels, are
      expected
    - disable palette-writing code for non-palette pix_fmts
    - make a note about histogram[]'s datatype (it could need increasing if
      ZMBV_BLOCK is increased)
    - adjust the c->score_tab length to take up to (and including) 4 times the
      number of pixels in a block
    - initialise c->score_tab up to c->bypp * the number of pixels
    
    Note: the ZmbvFormat enum allows for additional bit depths:
    - 1,2,4-bit (palette)
    - 24-bit (RGB)
    
    At time of writing the specifics of these (e.g. channel order, bit alignment)
    are not currently defined, and DOSBox only implements support for 8/15/16/32
    bpp.
    One might expect the 24-bit format - if implemented - to be BGR24, to have the
    same channel order as BGR0.
    However, the decoder in zmbv.c has been guessed to use RGB24, so I have chosen
    to not contradict this, and omitted specific support for this format.
    03213706
zmbvenc.c 13.4 KB