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