diff options
-rw-r--r-- | spuencoder.c | 24 | ||||
-rw-r--r-- | spuencoder.h | 1 |
2 files changed, 18 insertions, 7 deletions
diff --git a/spuencoder.c b/spuencoder.c index 7c1125c..a3b3395 100644 --- a/spuencoder.c +++ b/spuencoder.c @@ -93,15 +93,21 @@ void cSpuEncoder::encode(cBitmap *bmap, int top, int left) // generate and upload color palette generateColorPalette(); - // add one region - cSpuRegion *reg = new cSpuRegion(0); - - for (int i = 0; i < numColors; i++) { - reg->addIndex(bitmap->Index(colors[i])); + // if the bitmap uses only 4 colors, we can + // simply define a region, else we need to + // calculate the reginos and do some remapping. + if (numColors <= 4) { + // add one region + cSpuRegion *reg = new cSpuRegion(0); + + for (int i = 0; i < numColors; i++) { + reg->addIndex(bitmap->Index(colors[i])); + } + regions.push_back(reg); + } else { + calculateRegions(); } - regions.push_back(reg); - dsyslog("[dxr3-spuencoder] rle data"); // encode whole bitmap with rle and store top and bottom lines @@ -324,6 +330,10 @@ void cSpuEncoder::clearRegions() regions.clear(); } +void cSpuEncoder::calculateRegions() +{ +} + void cSpuEncoder::rle4colors() { int len; diff --git a/spuencoder.h b/spuencoder.h index b218edf..05acbf0 100644 --- a/spuencoder.h +++ b/spuencoder.h @@ -73,6 +73,7 @@ private: void generateSpuData(bool topAndBottom) throw (char const* ); void clearRegions(); + void calculateRegions(); void rle4colors(); }; |