NdkMediaFormat.h revision 34d497283c66b5ef0f8855c007eaa20d7ac8b96d
10c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen/*
20c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen * Copyright (C) 2014 The Android Open Source Project
30c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen *
40c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen * Licensed under the Apache License, Version 2.0 (the "License");
50c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen * you may not use this file except in compliance with the License.
60c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen * You may obtain a copy of the License at
70c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen *
80c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen *      http://www.apache.org/licenses/LICENSE-2.0
90c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen *
100c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen * Unless required by applicable law or agreed to in writing, software
110c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen * distributed under the License is distributed on an "AS IS" BASIS,
120c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen * See the License for the specific language governing permissions and
140c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen * limitations under the License.
150c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen */
160c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen
170c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen/*
180c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen * This file defines an NDK API.
190c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen * Do not remove methods.
200c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen * Do not change method signatures.
210c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen * Do not change the value of constants.
220c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen * Do not change the size of any of the classes defined in here.
230c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen * Do not reference types that are not part of the NDK.
240c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen * Do not #include files that aren't part of the NDK.
250c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen */
260c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen
270c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen#ifndef _NDK_MEDIA_FORMAT_H
280c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen#define _NDK_MEDIA_FORMAT_H
290c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen
300c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen#include <sys/types.h>
310c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen
320c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen#ifdef __cplusplus
330c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissenextern "C" {
340c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen#endif
350c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen
360c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissenstruct AMediaFormat;
370c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissentypedef struct AMediaFormat AMediaFormat;
380c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen
390c3be875376adaee8d8e8dd917c64926e1513b29Marco NelissenAMediaFormat *AMediaFormat_new();
400c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissenint AMediaFormat_delete(AMediaFormat*);
410c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen
420c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen/**
437c9b141d551fde406f199f0dd21582f8551aea23Marco Nelissen * Human readable representation of the format. The returned string is owned by the format,
447c9b141d551fde406f199f0dd21582f8551aea23Marco Nelissen * and remains valid until the next call to toString, or until the format is deleted.
450c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen */
460c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissenconst char* AMediaFormat_toString(AMediaFormat*);
470c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen
480c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissenbool AMediaFormat_getInt32(AMediaFormat*, const char *name, int32_t *out);
490c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissenbool AMediaFormat_getInt64(AMediaFormat*, const char *name, int64_t *out);
500c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissenbool AMediaFormat_getFloat(AMediaFormat*, const char *name, float *out);
5134d497283c66b5ef0f8855c007eaa20d7ac8b96dMarco Nelissen/**
5234d497283c66b5ef0f8855c007eaa20d7ac8b96dMarco Nelissen * The returned data is owned by the format and remains valid as long as the named entry
5334d497283c66b5ef0f8855c007eaa20d7ac8b96dMarco Nelissen * is part of the format.
5434d497283c66b5ef0f8855c007eaa20d7ac8b96dMarco Nelissen */
5534d497283c66b5ef0f8855c007eaa20d7ac8b96dMarco Nelissenbool AMediaFormat_getBuffer(AMediaFormat*, const char *name, void** data, size_t *size);
560c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen/**
577c9b141d551fde406f199f0dd21582f8551aea23Marco Nelissen * The returned string is owned by the format, and remains valid until the next call to getString,
587c9b141d551fde406f199f0dd21582f8551aea23Marco Nelissen * or until the format is deleted.
590c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen */
600c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissenbool AMediaFormat_getString(AMediaFormat*, const char *name, const char **out);
610c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen
6234d497283c66b5ef0f8855c007eaa20d7ac8b96dMarco Nelissen
6334d497283c66b5ef0f8855c007eaa20d7ac8b96dMarco Nelissenvoid AMediaFormat_setInt32(AMediaFormat*, const char* name, int32_t value);
6434d497283c66b5ef0f8855c007eaa20d7ac8b96dMarco Nelissenvoid AMediaFormat_setInt64(AMediaFormat*, const char* name, int64_t value);
6534d497283c66b5ef0f8855c007eaa20d7ac8b96dMarco Nelissenvoid AMediaFormat_setFloat(AMediaFormat*, const char* name, float value);
6634d497283c66b5ef0f8855c007eaa20d7ac8b96dMarco Nelissen/**
6734d497283c66b5ef0f8855c007eaa20d7ac8b96dMarco Nelissen * The provided string is copied into the format.
6834d497283c66b5ef0f8855c007eaa20d7ac8b96dMarco Nelissen */
6934d497283c66b5ef0f8855c007eaa20d7ac8b96dMarco Nelissenvoid AMediaFormat_setString(AMediaFormat*, const char* name, const char* value);
7034d497283c66b5ef0f8855c007eaa20d7ac8b96dMarco Nelissen/**
7134d497283c66b5ef0f8855c007eaa20d7ac8b96dMarco Nelissen * The provided data is copied into the format.
7234d497283c66b5ef0f8855c007eaa20d7ac8b96dMarco Nelissen */
7334d497283c66b5ef0f8855c007eaa20d7ac8b96dMarco Nelissenvoid AMediaFormat_setBuffer(AMediaFormat*, const char* name, void* data, size_t size);
7434d497283c66b5ef0f8855c007eaa20d7ac8b96dMarco Nelissen
7534d497283c66b5ef0f8855c007eaa20d7ac8b96dMarco Nelissen
7634d497283c66b5ef0f8855c007eaa20d7ac8b96dMarco Nelissen
770c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen/**
780c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen * XXX should these be ints/enums that we look up in a table as needed?
790c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen */
800c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissenextern const char* AMEDIAFORMAT_KEY_AAC_PROFILE;
810c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissenextern const char* AMEDIAFORMAT_KEY_BIT_RATE;
820c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissenextern const char* AMEDIAFORMAT_KEY_CHANNEL_COUNT;
830c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissenextern const char* AMEDIAFORMAT_KEY_CHANNEL_MASK;
840c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissenextern const char* AMEDIAFORMAT_KEY_COLOR_FORMAT;
850c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissenextern const char* AMEDIAFORMAT_KEY_DURATION;
860c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissenextern const char* AMEDIAFORMAT_KEY_FLAC_COMPRESSION_LEVEL;
870c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissenextern const char* AMEDIAFORMAT_KEY_FRAME_RATE;
880c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissenextern const char* AMEDIAFORMAT_KEY_HEIGHT;
890c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissenextern const char* AMEDIAFORMAT_KEY_IS_ADTS;
900c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissenextern const char* AMEDIAFORMAT_KEY_IS_AUTOSELECT;
910c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissenextern const char* AMEDIAFORMAT_KEY_IS_DEFAULT;
920c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissenextern const char* AMEDIAFORMAT_KEY_IS_FORCED_SUBTITLE;
930c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissenextern const char* AMEDIAFORMAT_KEY_I_FRAME_INTERVAL;
940c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissenextern const char* AMEDIAFORMAT_KEY_LANGUAGE;
950c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissenextern const char* AMEDIAFORMAT_KEY_MAX_HEIGHT;
960c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissenextern const char* AMEDIAFORMAT_KEY_MAX_INPUT_SIZE;
970c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissenextern const char* AMEDIAFORMAT_KEY_MAX_WIDTH;
980c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissenextern const char* AMEDIAFORMAT_KEY_MIME;
990c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissenextern const char* AMEDIAFORMAT_KEY_PUSH_BLANK_BUFFERS_ON_STOP;
1000c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissenextern const char* AMEDIAFORMAT_KEY_REPEAT_PREVIOUS_FRAME_AFTER;
1010c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissenextern const char* AMEDIAFORMAT_KEY_SAMPLE_RATE;
1020c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissenextern const char* AMEDIAFORMAT_KEY_WIDTH;
1030c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissenextern const char* AMEDIAFORMAT_KEY_STRIDE;
1040c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen
1050c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen#ifdef __cplusplus
1060c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen} // extern "C"
1070c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen#endif
1080c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen
1090c3be875376adaee8d8e8dd917c64926e1513b29Marco Nelissen#endif // _NDK_MEDIA_FORMAT_H
110