254 lines
13 KiB
C
254 lines
13 KiB
C
|
/*
|
||
|
* Copyright 2018 Rockchip Electronics Co. LTD
|
||
|
*
|
||
|
* 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.
|
||
|
*
|
||
|
* author: martin.cheng@rock-chips.com
|
||
|
* date: 20181226
|
||
|
* Module: audio/video/subtitle track's kKeys for metadata.
|
||
|
*/
|
||
|
|
||
|
#ifndef INCLUDE_RT_MEDIA_RTMEDIAMETAKEYS_H_
|
||
|
#define INCLUDE_RT_MEDIA_RTMEDIAMETAKEYS_H_
|
||
|
|
||
|
enum {
|
||
|
/* media format features */
|
||
|
kKeyFormatDuration = MKTAG('f', 'd', 'u', 'r'), // UINT64
|
||
|
kKeyFormatEOS = MKTAG('f', 'e', 'o', 's'),
|
||
|
kKeyFormatUri = MKTAG('f', 'u', 'r', 'i'),
|
||
|
kKeyUriHeaders = MKTAG('u', 'r', 'h', 'd'),
|
||
|
kKeyProtocol = MKTAG('p', 't', 'c', 'l'),
|
||
|
kKeyTimeBaseNum = MKTAG('t', 'i', 'b', 'n'),
|
||
|
kKeyTimeBaseDen = MKTAG('t', 'i', 'b', 'd'),
|
||
|
kKeyPlaySpeed = MKTAG('p', 'l', 's', 'p'), // float
|
||
|
kKeyStartTime = MKTAG('s', 't', 't', 'm'), // INT64
|
||
|
|
||
|
/* common track features*/
|
||
|
kKeyCodecType = MKTAG('c', 't', 'y', 'p'),
|
||
|
kKeyCodecID = MKTAG('c', 'c', 'i', 'd'),
|
||
|
kKeyCodecOriginID = MKTAG('c', 'o', 'i', 'd'),
|
||
|
kKeyCodecProfile = MKTAG('c', 'p', 'r', 'o'),
|
||
|
kKeyCodecLevel = MKTAG('c', 'l', 'e', 'v'),
|
||
|
kKeyCodecFormat = MKTAG('c', 'f', 'o', 'r'),
|
||
|
kKeyCodecTag = MKTAG('c', 't', 'a', 'g'),
|
||
|
kKeyCodecBitrate = MKTAG('c', 'b', 'i', 't'), // INT64
|
||
|
kKeyCodecExtraData = MKTAG('v', 'd', 'a', 't'), // void *
|
||
|
kKeyCodecExtraSize = MKTAG('v', 's', 'i', 'z'), // INT32
|
||
|
kKeyCodecError = MKTAG('c', 'e', 'r', 'r'),
|
||
|
|
||
|
/* video track features*/
|
||
|
kKeyVCodecWidth = MKTAG('v', 'w', 'i', 'd'),
|
||
|
kKeyVCodecHeight = MKTAG('v', 'h', 'e', 'i'),
|
||
|
kKeyVCodecVideoDelay = MKTAG('v', 'v', 'd', 'e'), // INT32
|
||
|
kKeyVCodecFrameRate = MKTAG('v', 'f', 'r', 'a'), // INT32 23.976 x 1000
|
||
|
kKeyVCodecFieldOrder = MKTAG('v', 'f', 'i', 'e'), // INT32
|
||
|
kKeyVCodecColorRange = MKTAG('v', 'c', 'r', 'a'), // INT32
|
||
|
kKeyVCodecColorPrimary = MKTAG('v', 'c', 'p', 'r'), // INT32
|
||
|
kKeyVCodecColorTransfer = MKTAG('v', 'c', 't', 'r'), // INT32
|
||
|
kKeyVCodecColorSpace = MKTAG('v', 'c', 's', 'p'), // INT32
|
||
|
kKeyVCodecChromaLocation = MKTAG('v', 'c', 'l', 'o'), // INT32
|
||
|
kKeyVCodecBufferCount = MKTAG('v', 'c', 'b', 'c'), // INT32
|
||
|
kKeyVCodecBufferSize = MKTAG('v', 'c', 'b', 's'), // INT32
|
||
|
|
||
|
/* video extra features*/
|
||
|
kKeyVCodecGopSize = MKTAG('g', 'p', 's', 'z'), // INT32 encoder feature
|
||
|
kKeyVCodecMaxBFrames = MKTAG('m', 'b', 'f', 'm'), // INT32 encoder feature
|
||
|
kKeyVCodecRCMode = MKTAG('v', 'r', 'c', 'm'), // INT32 encoder feature
|
||
|
kKeyVCodecQP = MKTAG('v', 'c', 'q', 'p'), // INT32 encoder feature
|
||
|
kKeyVCodecSurfaceCB = MKTAG('v', 'c', 's', 'b'), // void *
|
||
|
kKeyVCodecRotation = MKTAG('v', 'r', 't', 'e'), // INT32
|
||
|
kKeyVCodecFlagExtractor = MKTAG('v', 'c', 'f', 'e'), // INT32
|
||
|
kKeyVMaxInputBufferCnt = MKTAG('v', 'x', 'i', 'b'), // INT32
|
||
|
kKeyVMaxOutputBufferCnt = MKTAG('v', 'x', 'o', 'b'), // INT32
|
||
|
kKeyVMinOutputBufferCnt = MKTAG('v', 'n', 'o', 'b'), // INT32
|
||
|
|
||
|
/* audio track features*/
|
||
|
kKeyACodecChanneLayout = MKTAG('a', 'c', 'l', 't'),
|
||
|
kKeyACodecChannels = MKTAG('a', 'd', 'h', 's'),
|
||
|
kKeyACodecSampleRate = MKTAG('a', 's', 'r', 'e'),
|
||
|
kKeyACodecBlockAlign = MKTAG('a', 'e', 'b', 'n'),
|
||
|
kKeyACodecFrameSize = MKTAG('a', 'd', 'f', 'e'),
|
||
|
kKeyACodecInitialPadding = MKTAG('a', 's', 'r', 'g'),
|
||
|
kKeyACodecTrailinglPadding = MKTAG('a', 'e', 't', 'p'),
|
||
|
kKeyACodecBitPerCodedSample = MKTAG('a', 'b', 'p', 'c'),
|
||
|
kKeyAUseSoftVol = MKTAG('a', 'u', 's', 'd'),
|
||
|
kKeyAudioFormat = MKTAG('a', 'f', 'm', 't'),
|
||
|
kkeyAudioAECTrans = MKTAG('a', 'a', 't', 's'),
|
||
|
|
||
|
/* subtitle track features */
|
||
|
kKeySCodecLanguage = MKTAG('s', 'l', 'a', 'n'), // char*
|
||
|
kKeySCodecEncoding = MKTAG('s', 'e', 'n', 'g'), // INT32
|
||
|
kKeyCharsetName = MKTAG('s', 'c', 's', 'n'), // char*
|
||
|
kKeySSourceFrom = MKTAG('s', 'f', 'r', 'm'), // INT32
|
||
|
kKeySubVisible = MKTAG('s', 'v', 'b', 'l'), // INT32
|
||
|
|
||
|
/* RTFrame */
|
||
|
kKeyFrameType = MKTAG('f', 't', 'y', 'e'), // INT32
|
||
|
kKeyFieldOrder = MKTAG('f', 'f', 'o', 'r'), // INT32
|
||
|
kKeyFrameW = MKTAG('f', 'w', 'i', 'd'), // INT32
|
||
|
kKeyFrameH = MKTAG('f', 'h', 'e', 'i'), // INT32
|
||
|
kKeyFramePts = MKTAG('f', 'p', 't', 's'), // INT64 AVPacket pts
|
||
|
kKeyFrameDts = MKTAG('f', 'd', 't', 's'), // INT64 AVPacket dts
|
||
|
kKeyFrameEOS = MKTAG('p', 'e', 'o', 's'), // INT32 EOS
|
||
|
kKeyFrameDuration = MKTAG('d', 'u', 'r', 't'), // INT32
|
||
|
kKeyFrameError = MKTAG('f', 'e', 'r', 'r'), // INT32 Frame Error
|
||
|
kKeyFrameSequence = MKTAG('f', 's', 'e', 'q'), // INT32 Frame Sequence
|
||
|
kKeyDisplayW = MKTAG('d', 'w', 'i', 'd'), // INT32
|
||
|
kKeyDisplayH = MKTAG('d', 'h', 'e', 'i'), // INT32
|
||
|
|
||
|
/* RTPacket */
|
||
|
kKeyPacketPtr = MKTAG('a', 'v', 'p', 't'), // AVPacket
|
||
|
kKeyPacketPts = MKTAG('p', 'p', 't', 's'), // INT64 AVPacket dts
|
||
|
kKeyPacketDts = MKTAG('p', 'd', 't', 's'), // INT64 AVPacket pts
|
||
|
kKeyPacketPos = MKTAG('p', 'p', 'o', 's'), // INT64 AVPacket pos
|
||
|
kKeyPacketSize = MKTAG('p', 's', 'i', 'z'), // INT32 AVPacket size
|
||
|
kKeyPacketFlag = MKTAG('p', 'f', 'l', 'g'), // INT32 AVPacket flag
|
||
|
kKeyPacketIndex = MKTAG('p', 'i', 'd', 'x'), // INT32 AVPacket index
|
||
|
kKeyPacketData = MKTAG('p', 'd', 'a', 't'), // AVPacket data
|
||
|
kKeyPacketEOS = MKTAG('p', 'e', 'o', 's'), // INT32 EOS
|
||
|
kKeyPacketIsExtra = MKTAG('p', 'i', 'e', 'e'), // INT32 is extradata
|
||
|
kKeyPacketSerial = MKTAG('p', 's', 'e', 'r'), // INT32 AVPacket serial
|
||
|
kKeyPacketDuration = MKTAG('p', 'd', 'u', 'r'), // INT32 AVPacket duration
|
||
|
// memory features
|
||
|
kKeyMemAlign = MKTAG('m', 'e', 'a', 'l'), // INT32
|
||
|
kKeyMemMapFlags = MKTAG('m', 'm', 'f', 'g'), // INT32
|
||
|
kKeyMemHeapFlags = MKTAG('m', 'h', 'f', 'g'), // INT32
|
||
|
kKeyMemUsage = MKTAG('m', 'e', 'u', 's'), // INT32
|
||
|
|
||
|
/* command options */
|
||
|
kKeySeekTimeUs = MKTAG('s', 't', 'u', 's'), // INT64
|
||
|
kKeySeekMode = MKTAG('s', 'm', 'o', 'd'), // INT32
|
||
|
|
||
|
/* media cache options */
|
||
|
kKeyMaxCacheSize = MKTAG('m', 'c', 's', 'z'), // INT32
|
||
|
kKeyHighCacheUs = MKTAG('h', 'c', 'u', 's'), // INT64
|
||
|
kKeyLowCacheUs = MKTAG('l', 'c', 'u', 's'), // INT64
|
||
|
kKeyResumeCacheUs = MKTAG('r', 'c', 'u', 's'), // INT64
|
||
|
kKeyAudioBitrate = MKTAG('a', 'b', 't', 'r'), // INT32
|
||
|
kKeyVideoBitrate = MKTAG('v', 'b', 't', 'r'), // INT32
|
||
|
|
||
|
/*audio setting features*/
|
||
|
kKeyASettingDecoderPtr = MKTAG('a', 's', 'd', 'p'), // void *
|
||
|
kKeyASettingBistreamPtr = MKTAG('a', 's', 'b', 'r'), // void *
|
||
|
kKeyACodecOutputMode = MKTAG('a', 'c', 'o', 'm'), // INT32
|
||
|
kKeyACodecBufferDelay = MKTAG('a', 'c', 'd', 't'), // INT32
|
||
|
|
||
|
/*video setting features*/
|
||
|
kKeyVSettingResolutionPtr = MKTAG('v', 's', 'r', 'p'), // void *
|
||
|
kKeyVSettingBitdepth = MKTAG('v', 's', 'b', 'h'), // INT32
|
||
|
kKeyVSettingHdr = MKTAG('v', 's', 'h', 'r'), // INT32
|
||
|
kKeyVSettingCodecPtr = MKTAG('v', 's', 'c', 't'), // void *
|
||
|
|
||
|
/* tracks infor for cache features*/
|
||
|
kKeyTrackNum = MKTAG('t', 'n', 'u', 'm'), // INT32 the default number of tracks
|
||
|
kKeyTrackCacheSize = MKTAG('t', 'c', 's', 'z'), // INT32 the max cache size of every track
|
||
|
|
||
|
/* user's invoke/getparameter/setparameter command*/
|
||
|
kUserInvokeCmd = MKTAG('u', 'c', 'm', 'd'),
|
||
|
kUserInvokeTracksCount = MKTAG('t', 'c', 'n', 't'),
|
||
|
kUserInvokeTracksInfor = MKTAG('t', 'i', 'n', 'f'),
|
||
|
kUserInvokeTracksIdx = MKTAG('t', 'i', 'd', 'x'),
|
||
|
kUserInvokeGetSelectTrack = MKTAG('t', 's', 'l', 'e'),
|
||
|
kUserInvokeVideoScallingMode = MKTAG('v', 's', 'm', 'd'),
|
||
|
kUserInvokeSetPlaybackRate = MKTAG('i', 'p', 'b', 'r'), // float
|
||
|
|
||
|
/* user's notify command*/
|
||
|
kUserNotifyPts = MKTAG('u', 'n', 'p', 's'),
|
||
|
kUserNotifySize = MKTAG('u', 'n', 's', 'e'),
|
||
|
kUserNotifyData = MKTAG('u', 'n', 'd', 'a'),
|
||
|
kKeyDataSource = MKTAG('v', 'd', 's', 'c'),
|
||
|
/* post-processing */
|
||
|
kKeyIepI4O2 = MKTAG('f', 'i', 'i', 't'), // INT32 is iep I4O2
|
||
|
|
||
|
/* for android media */
|
||
|
kKeyFrameIndex = MKTAG('f', 'i', 'd', 'x'), // INT32
|
||
|
|
||
|
/* setting command */
|
||
|
kKeySettingQueryCmd = MKTAG('s', 'q', 'u', 'y'),
|
||
|
|
||
|
/* meta data retriever*/
|
||
|
kRetrieverKey = MKTAG('r', 'k', 'e', 'y'),
|
||
|
kRetrieverFrameAtTime = MKTAG('r', 'f', 'a', 't'),
|
||
|
kRetrieverFrameOption = MKTAG('r', 'f', 'f', 'o'),
|
||
|
kRetrieverDstColorFormat = MKTAG('r', 'd', 'c', 'f'),
|
||
|
kRetrieverFrameMetaOnly = MKTAG('r', 'f', 'm', 'o'),
|
||
|
kRetrieverFrameNumber = MKTAG('r', 'f', 'n', 'u'),
|
||
|
kRetrieverReadMaxTime = MKTAG('r', 'r', 'm', 't'),
|
||
|
kRetrieverAlbumArtData = MKTAG('r', 'a', 'a', 'd'),
|
||
|
kRetrieverAlbumArtDataSize = MKTAG('r', 'a', 'a', 's'),
|
||
|
kRetrieverCallbackContext = MKTAG('r', 'c', 'b', 'c'),
|
||
|
kRetrieverBufferAddress = MKTAG('r', 'b', 'a', 'r'),
|
||
|
|
||
|
kRetrieverKeyMIMEType = MKTAG('r', 'm', 'i', 't'),
|
||
|
kRetrieverKeyCDTrackNumber = MKTAG('r', 'c', 't', 'n'),
|
||
|
kRetrieverKeyDiscNumber = MKTAG('r', 'd', 'i', 'n'),
|
||
|
kRetrieverKeyAlbum = MKTAG('r', 'a', 'l', 'b'),
|
||
|
kRetrieverKeyArtist = MKTAG('r', 'a', 'r', 't'),
|
||
|
kRetrieverKeyAlbumArtist = MKTAG('r', 'a', 'a', 't'),
|
||
|
kRetrieverKeyAuthor = MKTAG('r', 'a', 'u', 't'),
|
||
|
kRetrieverKeyComposer = MKTAG('r', 'c', 'o', 'm'),
|
||
|
kRetrieverKeyDate = MKTAG('r', 'd', 'a', 't'),
|
||
|
kRetrieverKeyGenre = MKTAG('r', 'g', 'e', 'n'),
|
||
|
kRetrieverKeyTitle = MKTAG('r', 't', 'i', 't'),
|
||
|
kRetrieverKeyYear = MKTAG('r', 'y', 'e', 'r'),
|
||
|
kRetrieverKeyWriter = MKTAG('r', 'w', 'r', 'i'),
|
||
|
kRetrieverKeyCompilation = MKTAG('r', 'c', 'p', 'l'),
|
||
|
kRetrieverKeyLocation = MKTAG('r', 'l', 'o', 'c'),
|
||
|
kRetrieverKeyDuration = MKTAG('r', 'd', 'u', 'r'),
|
||
|
|
||
|
/* for new pipeline */
|
||
|
kKeyPipeInvokeCmd = MKTAG('p', 'c', 'm', 'd'), // const char *
|
||
|
kKeyTaskNodeId = MKTAG('t', 'n', 'i', 'd'), // INT32
|
||
|
kKeyMediaConfig = MKTAG('m', 'c', 'f', 'g'), // INT32
|
||
|
};
|
||
|
|
||
|
enum {
|
||
|
/* user-level configuration for Media(AV) development and debugging */
|
||
|
kKeyUserMediaSync = MKTAG('u', 'r', 'm', 's'), // UINT32
|
||
|
kKeyUserMediaLastFrame = MKTAG('u', 'm', 'l', 'f'), // UINT32
|
||
|
kKeyUserMediaSyncNone = MKTAG('u', 'm', 's', 'n'), // UINT32
|
||
|
|
||
|
/* user-level configuration for audio development and debugging */
|
||
|
kKeyUserAudioCodecNone = MKTAG('u', 'a', 'c', 'n'), // UINT32
|
||
|
|
||
|
/* user-level configuration for video development and debugging */
|
||
|
kKeyUserVideoCodecPrior = MKTAG('u', 'v', 'c', 'p'), // UINT32
|
||
|
kKeyUserVideoCodecNone = MKTAG('u', 'v', 'h', 'n'), // UINT32
|
||
|
kKeyUserVideoRefFrameMIN = MKTAG('u', 'v', 'r', 'f'), // UINT32
|
||
|
kKeyUserVideoRefFrameIN = MKTAG('u', 'v', 'f', 'i'), // UINT32
|
||
|
kKeyUserVideoRefFrameNum = MKTAG('u', 'v', 'f', 'o'), // UINT32
|
||
|
|
||
|
/* system-level persistent configuration */
|
||
|
kKeySysVideoDecoderSupport = MKTAG('s', 'v', 'd', 's'), // UINT32
|
||
|
kKeySysVideoEncoderSupport = MKTAG('s', 'v', 'e', 's'), // UINT32
|
||
|
kKeySysAudioOutputMode = MKTAG('s', 'a', 'o', 'm'), // UINT32
|
||
|
kKeySysChipName = MKTAG('s', 'c', 'p', 'n'), // UINT32
|
||
|
};
|
||
|
|
||
|
enum {
|
||
|
kKeyReadSize = MKTAG('r', 'd', 's', 'z'),
|
||
|
};
|
||
|
|
||
|
enum {
|
||
|
kKeyTestInt32 = MKTAG('t', 'i', '3', '2'),
|
||
|
kKeyTestInt64 = MKTAG('t', 'i', '6', '4'),
|
||
|
kKeyTestString = MKTAG('t', 's', 't', 'r'),
|
||
|
kKeyTestFloat = MKTAG('t', 'f', 'l', 't'),
|
||
|
kKeyTestPtr = MKTAG('t', 'p', 't', 'r'),
|
||
|
kKeyTestNone = MKTAG('t', 'n', 'o', 'e'),
|
||
|
};
|
||
|
|
||
|
#endif // INCLUDE_RT_MEDIA_RTMEDIAMETAKEYS_H_
|
||
|
|
||
|
|