95 lines
3.7 KiB
C
95 lines
3.7 KiB
C
|
/*
|
||
|
* 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 METADATA_BUFFER_TYPE_H
|
||
|
#define METADATA_BUFFER_TYPE_H
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
namespace android {
|
||
|
#endif
|
||
|
|
||
|
/*
|
||
|
* MetadataBufferType defines the type of the metadata buffers that
|
||
|
* can be passed to video encoder component for encoding, via Stagefright
|
||
|
* media recording framework. To see how to work with the metadata buffers
|
||
|
* in media recording framework, please consult HardwareAPI.h
|
||
|
*
|
||
|
* The creator of metadata buffers and video encoder share common knowledge
|
||
|
* on what is actually being stored in these metadata buffers, and
|
||
|
* how the information can be used by the video encoder component
|
||
|
* to locate the actual pixel data as the source input for video
|
||
|
* encoder, plus whatever other information that is necessary. Stagefright
|
||
|
* media recording framework does not need to know anything specific about the
|
||
|
* metadata buffers, except for receving each individual metadata buffer
|
||
|
* as the source input, making a copy of the metadata buffer, and passing the
|
||
|
* copy via OpenMAX API to the video encoder component.
|
||
|
*
|
||
|
* The creator of the metadata buffers must ensure that the first
|
||
|
* 4 bytes in every metadata buffer indicates its buffer type,
|
||
|
* and the rest of the metadata buffer contains the
|
||
|
* actual metadata information. When a video encoder component receives
|
||
|
* a metadata buffer, it uses the first 4 bytes in that buffer to find
|
||
|
* out the type of the metadata buffer, and takes action appropriate
|
||
|
* to that type of metadata buffers (for instance, locate the actual
|
||
|
* pixel data input and then encoding the input data to produce a
|
||
|
* compressed output buffer).
|
||
|
*
|
||
|
* The following shows the layout of a metadata buffer,
|
||
|
* where buffer type is a 4-byte field of MetadataBufferType,
|
||
|
* and the payload is the metadata information.
|
||
|
*
|
||
|
* --------------------------------------------------------------
|
||
|
* | buffer type | payload |
|
||
|
* --------------------------------------------------------------
|
||
|
*
|
||
|
*/
|
||
|
typedef enum {
|
||
|
|
||
|
/*
|
||
|
* kMetadataBufferTypeCameraSource is used to indicate that
|
||
|
* the source of the metadata buffer is the camera component.
|
||
|
*/
|
||
|
kMetadataBufferTypeCameraSource = 0,
|
||
|
|
||
|
/*
|
||
|
* kMetadataBufferTypeGrallocSource is used to indicate that
|
||
|
* the payload of the metadata buffers can be interpreted as
|
||
|
* a buffer_handle_t.
|
||
|
* So in this case,the metadata that the encoder receives
|
||
|
* will have a byte stream that consists of two parts:
|
||
|
* 1. First, there is an integer indicating that it is a GRAlloc
|
||
|
* source (kMetadataBufferTypeGrallocSource)
|
||
|
* 2. This is followed by the buffer_handle_t that is a handle to the
|
||
|
* GRalloc buffer. The encoder needs to interpret this GRalloc handle
|
||
|
* and encode the frames.
|
||
|
* --------------------------------------------------------------
|
||
|
* | kMetadataBufferTypeGrallocSource | sizeof(buffer_handle_t) |
|
||
|
* --------------------------------------------------------------
|
||
|
*/
|
||
|
kMetadataBufferTypeGrallocSource = 1,
|
||
|
|
||
|
// Add more here...
|
||
|
|
||
|
} MetadataBufferType;
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
} // namespace android
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif // METADATA_BUFFER_TYPE_H
|