diff options
author | Nipun Kwatra <nkwatra@google.com> | 2010-07-27 22:13:04 -0700 |
---|---|---|
committer | Nipun Kwatra <nkwatra@google.com> | 2010-07-29 12:15:57 -0700 |
commit | db205a1d75c1e9a7d0dbd8fa011335249ad6f4ac (patch) | |
tree | f9f88a1c59d5028e9b5fd5fa3a3c8fb959334c30 /include/media/stagefright/YUVCanvas.h | |
parent | ac36fde15b7bc14ba27cdb21a0aeb5d7356c47f4 (diff) | |
download | frameworks_av-db205a1d75c1e9a7d0dbd8fa011335249ad6f4ac.zip frameworks_av-db205a1d75c1e9a7d0dbd8fa011335249ad6f4ac.tar.gz frameworks_av-db205a1d75c1e9a7d0dbd8fa011335249ad6f4ac.tar.bz2 |
Adding YUVImage and YUVCanvas.
YUVImage is a container class to hold YUV data and provide
various utilities, e.g. to set/get pixel values for different
YUV formats, fast copying routines, etc.
Currently supported YUV420 Planar and YUV420 Semi Planar.
YUVCanvas holds a reference to a YUVImage on which it can do various
drawing operations.
Change-Id: I052a57b7fbc834efe1626914f76c04c091996cac
Diffstat (limited to 'include/media/stagefright/YUVCanvas.h')
-rw-r--r-- | include/media/stagefright/YUVCanvas.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/include/media/stagefright/YUVCanvas.h b/include/media/stagefright/YUVCanvas.h new file mode 100644 index 0000000..5e17046 --- /dev/null +++ b/include/media/stagefright/YUVCanvas.h @@ -0,0 +1,67 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// YUVCanvas holds a reference to a YUVImage on which it can do various +// drawing operations. It provides various utility functions for filling, +// cropping, etc. + + +#ifndef YUV_CANVAS_H_ + +#define YUV_CANVAS_H_ + +#include <stdint.h> + +namespace android { + +class YUVImage; +class Rect; + +class YUVCanvas { +public: + + // Constructor takes in reference to a yuvImage on which it can do + // various drawing opreations. + YUVCanvas(YUVImage &yuvImage); + ~YUVCanvas(); + + // Fills the entire image with the given YUV values. + void FillYUV(uint8_t yValue, uint8_t uValue, uint8_t vValue); + + // Fills the rectangular region [startX,endX]x[startY,endY] with the given YUV values. + void FillYUVRectangle(const Rect& rect, + uint8_t yValue, uint8_t uValue, uint8_t vValue); + + // Copies the region [startX,endX]x[startY,endY] from srcImage into the + // canvas' target image (mYUVImage) starting at + // (destinationStartX,destinationStartY). + // Note that undefined behavior may occur if srcImage is same as the canvas' + // target image. + void CopyImageRect( + const Rect& srcRect, + int32_t destStartX, int32_t destStartY, + const YUVImage &srcImage); + +private: + YUVImage& mYUVImage; + + YUVCanvas(const YUVCanvas &); + YUVCanvas &operator=(const YUVCanvas &); +}; + +} // namespace android + +#endif // YUV_CANVAS_H_ |