summaryrefslogtreecommitdiffstats
path: root/media/omx-plugin/include/ics/II420ColorConverter.h
diff options
context:
space:
mode:
authorMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
committerMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
commit5f8de423f190bbb79a62f804151bc24824fa32d8 (patch)
tree10027f336435511475e392454359edea8e25895d /media/omx-plugin/include/ics/II420ColorConverter.h
parent49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff)
downloadUXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip
Add m-esr52 at 52.6.0
Diffstat (limited to 'media/omx-plugin/include/ics/II420ColorConverter.h')
-rw-r--r--media/omx-plugin/include/ics/II420ColorConverter.h127
1 files changed, 127 insertions, 0 deletions
diff --git a/media/omx-plugin/include/ics/II420ColorConverter.h b/media/omx-plugin/include/ics/II420ColorConverter.h
new file mode 100644
index 000000000..0e3fe8285
--- /dev/null
+++ b/media/omx-plugin/include/ics/II420ColorConverter.h
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) 2011 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.
+ */
+
+#ifndef II420_COLOR_CONVERTER_H
+
+#define II420_COLOR_CONVERTER_H
+
+#include <stdint.h>
+#include <android/rect.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct II420ColorConverter {
+
+ /*
+ * getDecoderOutputFormat
+ * Returns the color format (OMX_COLOR_FORMATTYPE) of the decoder output.
+ * If it is I420 (OMX_COLOR_FormatYUV420Planar), no conversion is needed,
+ * and convertDecoderOutputToI420() can be a no-op.
+ */
+ int (*getDecoderOutputFormat)();
+
+ /*
+ * convertDecoderOutputToI420
+ * @Desc Converts from the decoder output format to I420 format.
+ * @note Caller (e.g. VideoEditor) owns the buffers
+ * @param decoderBits (IN) Pointer to the buffer contains decoder output
+ * @param decoderWidth (IN) Buffer width, as reported by the decoder
+ * metadata (kKeyWidth)
+ * @param decoderHeight (IN) Buffer height, as reported by the decoder
+ * metadata (kKeyHeight)
+ * @param decoderRect (IN) The rectangle of the actual frame, as
+ * reported by decoder metadata (kKeyCropRect)
+ * @param dstBits (OUT) Pointer to the output I420 buffer
+ * @return -1 Any error
+ * @return 0 No Error
+ */
+ int (*convertDecoderOutputToI420)(
+ void* decoderBits, int decoderWidth, int decoderHeight,
+ ARect decoderRect, void* dstBits);
+
+ /*
+ * getEncoderIntputFormat
+ * Returns the color format (OMX_COLOR_FORMATTYPE) of the encoder input.
+ * If it is I420 (OMX_COLOR_FormatYUV420Planar), no conversion is needed,
+ * and convertI420ToEncoderInput() and getEncoderInputBufferInfo() can
+ * be no-ops.
+ */
+ int (*getEncoderInputFormat)();
+
+ /* convertI420ToEncoderInput
+ * @Desc This function converts from I420 to the encoder input format
+ * @note Caller (e.g. VideoEditor) owns the buffers
+ * @param srcBits (IN) Pointer to the input I420 buffer
+ * @param srcWidth (IN) Width of the I420 frame
+ * @param srcHeight (IN) Height of the I420 frame
+ * @param encoderWidth (IN) Encoder buffer width, as calculated by
+ * getEncoderBufferInfo()
+ * @param encoderHeight (IN) Encoder buffer height, as calculated by
+ * getEncoderBufferInfo()
+ * @param encoderRect (IN) Rect coordinates of the actual frame inside
+ * the encoder buffer, as calculated by
+ * getEncoderBufferInfo().
+ * @param encoderBits (OUT) Pointer to the output buffer. The size of
+ * this buffer is calculated by
+ * getEncoderBufferInfo()
+ * @return -1 Any error
+ * @return 0 No Error
+ */
+ int (*convertI420ToEncoderInput)(
+ void* srcBits, int srcWidth, int srcHeight,
+ int encoderWidth, int encoderHeight, ARect encoderRect,
+ void* encoderBits);
+
+ /* getEncoderInputBufferInfo
+ * @Desc This function returns metadata for the encoder input buffer
+ * based on the actual I420 frame width and height.
+ * @note This API should be be used to obtain the necessary information
+ * before calling convertI420ToEncoderInput().
+ * VideoEditor knows only the width and height of the I420 buffer,
+ * but it also needs know the width, height, and size of the
+ * encoder input buffer. The encoder input buffer width and height
+ * are used to set the metadata for the encoder.
+ * @param srcWidth (IN) Width of the I420 frame
+ * @param srcHeight (IN) Height of the I420 frame
+ * @param encoderWidth (OUT) Encoder buffer width needed
+ * @param encoderHeight (OUT) Encoder buffer height needed
+ * @param encoderRect (OUT) Rect coordinates of the actual frame inside
+ * the encoder buffer
+ * @param encoderBufferSize (OUT) The size of the buffer that need to be
+ * allocated by the caller before invoking
+ * convertI420ToEncoderInput().
+ * @return -1 Any error
+ * @return 0 No Error
+ */
+ int (*getEncoderInputBufferInfo)(
+ int srcWidth, int srcHeight,
+ int* encoderWidth, int* encoderHeight,
+ ARect* encoderRect, int* encoderBufferSize);
+
+} II420ColorConverter;
+
+/* The only function that the shared library needs to expose: It fills the
+ function pointers in II420ColorConverter */
+void getI420ColorConverter(II420ColorConverter *converter);
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif // II420_COLOR_CONVERTER_H
+