/* * Copyright 2019 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: 2019/03/10 * Task: build player streamline with node bus. */ #ifndef SRC_RT_PLAYER_RTPLAYERDEF_H_ #define SRC_RT_PLAYER_RTPLAYERDEF_H_ #include "rt_type.h" // NOLINT #define DEBUG_LEVEL_HIGH 1 #define DEBUG_LEVEL_LOW 0 enum RTMediaState { RT_STATE_ERROR = 0, RT_STATE_IDLE = 1 << 0, RT_STATE_INITIALIZED = 1 << 1, RT_STATE_PREPARING = 1 << 2, RT_STATE_PREPARED = 1 << 3, RT_STATE_STARTED = 1 << 4, RT_STATE_PAUSED = 1 << 5, RT_STATE_STOPPED = 1 << 6, RT_STATE_COMPLETE = 1 << 7 }; enum RTMediaInfo { // 0xx RT_INFO_UNKNOWN = 1, // The player was started because it was used as the next player for another // player, which just completed playback RT_INFO_STARTED_AS_NEXT = 2, // The player just pushed the very first video frame for rendering RT_INFO_RENDERING_START = 3, // 7xx // The video is too complex for the decoder: it can't decode frames fast // enough. Possibly only the audio plays fine at this stage. RT_INFO_VIDEO_TRACK_LAGGING = 700, // pause playback internally in order to buffer more data. RT_INFO_BUFFERING_START = 701, // resume playback after filling enough buffers. RT_INFO_BUFFERING_END = 702, // Bandwidth in recent past RT_INFO_NETWORK_BANDWIDTH = 703, // buffering percent of demuxer RT_INFO_BUFFERING_PERCENT = 705, // loading percent of demuxer RT_INFO_LOADING_PERCENT = 706, // 8xx // Bad interleaving means that a media has been improperly interleaved or not // interleaved at all, e.g has all the video samples first then all the audio // ones. Video is playing but a lot of disk seek may be happening. RT_INFO_BAD_INTERLEAVING = 800, // The media is not seekable (e.g live stream). RT_INFO_NOT_SEEKABLE = 801, // New media metadata is available. RT_INFO_METADATA_UPDATE = 802, // 9xx RT_INFO_TIMED_TEXT_ERROR = 900, RT_INFO_PLAYING_START = 901, }; enum RTMediaError { // 0xx RT_MEDIA_ERROR_UNKNOWN = 1, // 1xx RT_MEDIA_ERROR_SERVER_DIED = 100, // 2xx RT_MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK = 200, // 3xx }; enum RTSeekType { RT_SEEK_NO = 0, RT_SEEK_DOING, RT_SEEK_VIDEO_ONLY, RT_SEEK_DONE, RT_SEEK_MAX, }; typedef struct _RTMediaUri { char *mUri; INT32 mUriLength; char mHeaders[4096]; char mVersion[32]; void *mDataSource; } RTMediaUri; enum RTWriteDataType { RT_WRITEDATA_PCM = 0, RT_WRITEDATA_TS, RT_WRITEDATA_ES, }; typedef enum _RTInvokeIds { RT_INVOKE_ID_GET_TRACK_INFO = 1, RT_INVOKE_ID_ADD_EXTERNAL_SOURCE = 2, RT_INVOKE_ID_ADD_EXTERNAL_SOURCE_FD = 3, RT_INVOKE_ID_SELECT_TRACK = 4, RT_INVOKE_ID_UNSELECT_TRACK = 5, RT_INVOKE_ID_SET_VIDEO_SCALING_MODE = 6, RT_INVOKE_ID_GET_SELECTED_TRACK = 7, // rockit private key, must keep sync with rockit client RT_INVOKE_PRIVATE_KEY = 10000, RT_INVOKE_SET_PLAY_SPEED = RT_INVOKE_PRIVATE_KEY, RT_INVOKE_GET_PLAY_SPEED, RT_INVOKE_SET_SUB_VISIBLE, } RTInvokeIds; class RTPlayerUtil { public: static const char* getStateName(UINT32 player_state); static void dumpStateError(UINT32 state, const char* caller); }; #endif // SRC_RT_PLAYER_RTPLAYERDEF_H_