ColorConverter.h revision 1c8ed2e906576fd8d7fa03f577bdec518cbe13d7
12a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber/* 22a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber * Copyright (C) 2009 The Android Open Source Project 32a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber * 42a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 52a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber * you may not use this file except in compliance with the License. 62a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber * You may obtain a copy of the License at 72a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber * 82a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber * http://www.apache.org/licenses/LICENSE-2.0 92a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber * 102a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber * Unless required by applicable law or agreed to in writing, software 112a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 122a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber * See the License for the specific language governing permissions and 142a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber * limitations under the License. 152a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber */ 162a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber 172a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber#ifndef COLOR_CONVERTER_H_ 182a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber 192a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber#define COLOR_CONVERTER_H_ 202a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber 212a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber#include <sys/types.h> 222a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber 23d3eaeefb1bac68bc1fee91b794be2c2c3bea6d94Andreas Huber#include <stdint.h> 24d3eaeefb1bac68bc1fee91b794be2c2c3bea6d94Andreas Huber 252a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber#include <OMX_Video.h> 262a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber 272a4a7d5af053a17586a262a1267ba993e31790f1Andreas Hubernamespace android { 282a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber 292a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huberstruct ColorConverter { 302a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber ColorConverter(OMX_COLOR_FORMATTYPE from, OMX_COLOR_FORMATTYPE to); 312a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber ~ColorConverter(); 322a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber 332a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber bool isValid() const; 342a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber 352a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber void convert( 362a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber size_t width, size_t height, 372a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber const void *srcBits, size_t srcSkip, 382a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber void *dstBits, size_t dstSkip); 392a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber 402a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huberprivate: 412a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber OMX_COLOR_FORMATTYPE mSrcFormat, mDstFormat; 422a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber uint8_t *mClip; 432a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber 442a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber uint8_t *initClip(); 452a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber 462a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber void convertCbYCrY( 472a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber size_t width, size_t height, 482a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber const void *srcBits, size_t srcSkip, 492a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber void *dstBits, size_t dstSkip); 502a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber 512a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber void convertYUV420Planar( 522a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber size_t width, size_t height, 532a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber const void *srcBits, size_t srcSkip, 542a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber void *dstBits, size_t dstSkip); 552a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber 562a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber void convertQCOMYUV420SemiPlanar( 572a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber size_t width, size_t height, 582a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber const void *srcBits, size_t srcSkip, 592a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber void *dstBits, size_t dstSkip); 602a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber 611c8ed2e906576fd8d7fa03f577bdec518cbe13d7Andreas Huber void convertYUV420SemiPlanar( 621c8ed2e906576fd8d7fa03f577bdec518cbe13d7Andreas Huber size_t width, size_t height, 631c8ed2e906576fd8d7fa03f577bdec518cbe13d7Andreas Huber const void *srcBits, size_t srcSkip, 641c8ed2e906576fd8d7fa03f577bdec518cbe13d7Andreas Huber void *dstBits, size_t dstSkip); 651c8ed2e906576fd8d7fa03f577bdec518cbe13d7Andreas Huber 662a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber ColorConverter(const ColorConverter &); 672a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber ColorConverter &operator=(const ColorConverter &); 682a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber}; 692a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber 702a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber} // namespace android 712a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber 722a4a7d5af053a17586a262a1267ba993e31790f1Andreas Huber#endif // COLOR_CONVERTER_H_ 73