*
*/
#define MM_PLAYER_VIDEO_HEIGHT "content_video_height"
+
+/**
+ * MM_PLAYER_VIDEO_FPS:
+ */
+#define MM_PLAYER_VIDEO_FPS "content_video_fps"
+
+/**
+ * MM_PLAYER_VIDEO_BITRATE:
+ */
+#define MM_PLAYER_VIDEO_BITRATE "content_video_bitrate"
+
/**
* MM_PLAYER_VIDEO_EVAS_SURFACE_SINK:
*
*/
#define MM_PLAYER_TAG_DATE "tag_date"
/**
- * MM_PLAYER_TAG_DESCRIPRION
+ * MM_PLAYER_TAG_DESCRIPTION
*
* short text describing the content of the data (string)
*/
-#define MM_PLAYER_TAG_DESCRIPRION "tag_description"
+#define MM_PLAYER_TAG_DESCRIPTION "tag_description"
/**
* MM_PLAYER_TAG_TRACK_NUM
*
* track number inside a collection (int)
*/
#define MM_PLAYER_TAG_TRACK_NUM "tag_track_num"
-/**
- * MM_PLAYER_PD_MODE
- *
- * progressive download mode (int)
- */
-#define MM_PLAYER_PD_MODE "pd_mode"
/**
* MM_PLAYER_DRC_MODE
*/
#define MM_PLAYER_AUDIO_CODEC_TYPE "audio_codec_type"
-#define BUFFER_MAX_PLANE_NUM (4)
+/**
+ * MM_PLAYER_VIDEO_BUFFER_TOTAL_SIZE (int)
+ */
+#define MM_PLAYER_VIDEO_BUFFER_TOTAL_SIZE "video_buffer_total_size"
-typedef struct {
- MMPixelFormatType format; /**< image format */
- int width; /**< width of video buffer */
- int height; /**< height of video buffer */
- unsigned int timestamp; /**< timestamp of stream buffer (msec)*/
- unsigned int length_total; /**< total length of stream buffer (in byte)*/
- void *data[BUFFER_MAX_PLANE_NUM];
- void *bo[BUFFER_MAX_PLANE_NUM]; /**< TBM buffer object */
- void *internal_buffer; /**< Internal buffer pointer */
- int stride[BUFFER_MAX_PLANE_NUM]; /**< stride of plane */
- int elevation[BUFFER_MAX_PLANE_NUM]; /**< elevation of plane */
- int orientation; /**< orientation */
- int bo_size; /**< TBM buffer object size */
-} MMPlayerVideoStreamDataType;
+/**
+ * MM_PLAYER_VIDEO_BUFFER_EXTRA_SIZE (int)
+ */
+#define MM_PLAYER_VIDEO_BUFFER_EXTRA_SIZE "video_buffer_extra_size"
+
+/**
+ * MM_PLAYER_PREBUFFER_MS
+ *
+ * prebuffer ms (int)
+ */
+#define MM_PLAYER_PREBUFFER_MS "prebuffer_ms"
+
+/**
+ * MM_PLAYER_REBUFFER_MS
+ *
+ * rebuffer ms (int)
+ */
+#define MM_PLAYER_REBUFFER_MS "rebuffer_ms"
+
+/**
+ * MM_PLAYER_AUDIO_OFFLOAD (int)
+ */
+#define MM_PLAYER_AUDIO_OFFLOAD "audio_offload"
+
+/**
+ * MM_PLAYER_AUDIO_OFFLOAD_FORMAT (int array)
+ */
+#define MM_PLAYER_AUDIO_OFFLOAD_FORMAT "audio_offload_format"
+
+/**
+ * MM_PLAYER_PITCH_CONTROL (int)
+ */
+#define MM_PLAYER_PITCH_CONTROL "pitch_control"
+
+/**
+ * MM_PLAYER_PITCH_VALUE (double)
+ */
+#define MM_PLAYER_PITCH_VALUE "pitch_value"
+
+/**
+ * MM_PLAYER_PCM_EXT_FORMAT (string)
+ */
+#define MM_PLAYER_PCM_EXT_FORMAT "pcm_extraction_format"
+
+/**
+ * MM_PLAYER_PCM_EXT_CHANNELS (int)
+ */
+#define MM_PLAYER_PCM_EXT_CHANNELS "pcm_extraction_channels"
+
+/**
+ * MM_PLAYER_PCM_EXT_SAMPLERATE (int)
+ */
+#define MM_PLAYER_PCM_EXT_SAMPLERATE "pcm_extraction_samplerate"
+
+/**
+ * MM_PLAYER_MEDIA_STREAM_INPUT_FORMAT (int array)
+ */
+#define MM_PLAYER_MEDIA_STREAM_INPUT_FORMAT "media_stream_input_format"
+
+/**
+ * MM_PLAYER_AUDIO_ONLY (int)
+ */
+#define MM_PLAYER_AUDIO_ONLY "audio_only"
+
+#define BUFFER_MAX_PLANE_NUM (4)
/**
* Enumerations of player state.
MM_PLAYER_STATE_PAUSED, /**< Player is paused while playing media */
MM_PLAYER_STATE_NONE, /**< Player is not created yet */
MM_PLAYER_STATE_NUM, /**< Number of player states */
-} MMPlayerStateType;
-
-/**
- * Enumerations of position formats.
- */
-typedef enum {
- MM_PLAYER_POS_FORMAT_TIME, /**< Format for time based */
- MM_PLAYER_POS_FORMAT_PERCENT, /**< Format for percentage */
- MM_PLAYER_POS_FORMAT_NUM, /**< Number of position formats */
-} MMPlayerPosFormatType;
+} mmplayer_state_e;
/**
* Enumeration for attribute values types.
MM_PLAYER_ATTRS_TYPE_ARRAY, /**< Array type */
MM_PLAYER_ATTRS_TYPE_RANGE, /**< Range type */
MM_PLAYER_ATTRS_TYPE_NUM, /**< Number of attribute type */
-} MMPlayerAttrsType;
+} mmplayer_attrs_type_e;
/**
* Enumeration for attribute validation type.
MM_PLAYER_ATTRS_VALID_TYPE_INT_RANGE, /**< validity checking type of integer range */
MM_PLAYER_ATTRS_VALID_TYPE_DOUBLE_ARRAY, /**< validity checking type of double array */
MM_PLAYER_ATTRS_VALID_TYPE_DOUBLE_RANGE, /**< validity checking type of double range */
-} MMPlayerAttrsValidType;
+} mmplayer_attrs_valid_type_e;
/**
* Enumeration for attribute access flag.
MM_PLAYER_ATTRS_FLAG_MODIFIED = 1 << 2, /**< Modified */
MM_PLAYER_ATTRS_FLAG_RW = MM_PLAYER_ATTRS_FLAG_READABLE | MM_PLAYER_ATTRS_FLAG_WRITABLE, /**< Readable and Writable */
-} MMPlayerAttrsFlag;
-
-/**
- * Enumeration for progressive download
- */
-typedef enum {
- MM_PLAYER_PD_MODE_NONE,
- MM_PLAYER_PD_MODE_URI,
- MM_PLAYER_PD_MODE_FILE // not tested yet, because of no fixed scenario
-} MMPlayerPDMode;
+} mmplayer_attrs_flag_e;
/**
* Enumeration of track types
MM_PLAYER_TRACK_TYPE_VIDEO,
MM_PLAYER_TRACK_TYPE_TEXT,
MM_PLAYER_TRACK_TYPE_MAX
-} MMPlayerTrackType;
+} mmplayer_track_type_e;
/**
* Enumeration of runtime buffering mode
MM_PLAYER_BUFFERING_MODE_ADAPTIVE = 0, /**< default, If buffering is occurred, player will consider the bandwidth to adjust buffer setting. */
MM_PLAYER_BUFFERING_MODE_FIXED, /**< player will set buffer size with this fixed size value. */
MM_PLAYER_BUFFERING_MODE_MAX,
-} MMPlayerBufferingMode;
-
-/**
- * Edge Properties of the text.
- */
-typedef enum {
- MM_PLAYER_EDGE_NO,
- MM_PLAYER_EDGE_RAISED,
- MM_PLAYER_EDGE_DEPRESSED,
- MM_PLAYER_EDGE_UNIFORM,
- MM_PLAYER_EDGE_DROPSHADOW
-} MMPlayerSubtitleEdge;
+} mmplayer_buffering_mode_e;
/**
* Enumeration of media stream buffer status
typedef enum {
MM_PLAYER_MEDIA_STREAM_BUFFER_UNDERRUN,
MM_PLAYER_MEDIA_STREAM_BUFFER_OVERFLOW,
-} MMPlayerMediaStreamBufferStatus;
+} mmplayer_media_stream_buffer_status_e;
/**
* Enumeration for stream type.
MM_PLAYER_STREAM_TYPE_VIDEO, /**< Video element stream type */
MM_PLAYER_STREAM_TYPE_TEXT, /**< Text type */
MM_PLAYER_STREAM_TYPE_MAX,
-} MMPlayerStreamType;
+} mmplayer_stream_type_e;
typedef enum {
- MM_PLAYER_CODEC_TYPE_DEFAULT = 0, /**< codec is selected by the priority */
MM_PLAYER_CODEC_TYPE_HW, /**< HW codec can only be selected */
MM_PLAYER_CODEC_TYPE_SW, /**< SW codec can only be selected */
-} MMPlayerVideoCodecType;
+ MM_PLAYER_CODEC_TYPE_DEFAULT, /**< codec is selected by the priority */
+} mmplayer_codec_type_e;
+
+typedef enum {
+ MM_PLAYER_AUDIO_CONTROL_OPT_EFFECT,
+ MM_PLAYER_AUDIO_CONTROL_OPT_REPLAYGAIN,
+ MM_PLAYER_AUDIO_CONTROL_OPT_PITCH,
+ MM_PLAYER_AUDIO_CONTROL_OPT_PCM_EXPORTING,
+} mmplayer_audio_control_opt_e;
+
+typedef enum {
+ MM_PLAYER_AUDIO_EXTRACT_DEFAULT = 0x00, /**< Sync with the playback clock and multichannel audio stream */
+ MM_PLAYER_AUDIO_EXTRACT_NO_SYNC_WITH_CLOCK = 0x01, /**< No sync with the playback clock */
+ MM_PLAYER_AUDIO_EXTRACT_DEINTERLEAVE = 0x02, /**< Splits one interleaved multichannel audio stream into many mono audio streams */
+ MM_PLAYER_AUDIO_EXTRACT_NO_SYNC_AND_DEINTERLEAVE = MM_PLAYER_AUDIO_EXTRACT_NO_SYNC_WITH_CLOCK | MM_PLAYER_AUDIO_EXTRACT_DEINTERLEAVE,
+ MM_PLAYER_AUDIO_EXTRACT_WITH_PLAYBACK = 0x04, /**< With audio playback synchronously (experimental) */
+ MM_PLAYER_AUDIO_EXTRACT_DEINTERLEAVE_WITH_PLAYBACK = MM_PLAYER_AUDIO_EXTRACT_DEINTERLEAVE | MM_PLAYER_AUDIO_EXTRACT_WITH_PLAYBACK,
+} mmplayer_audio_extract_opt_e;
+
+/*
+ * Enumerations of video colorspace
+ */
+typedef enum {
+ MM_PLAYER_COLORSPACE_I420 = 0, /**< I420 format - planer */
+ MM_PLAYER_COLORSPACE_RGB888, /**< RGB888 pixel format */
+ MM_PLAYER_COLORSPACE_NV12_TILED, /**< Customized color format */
+ MM_PLAYER_COLORSPACE_NV12,
+ MM_PLAYER_COLORSPACE_BGRx, /**< BGRx pixel format */
+ MM_PLAYER_COLORSPACE_MAX = 0x7FFFFFFF
+} mmplayer_video_color_space_e;
/**
* Attribute validity structure
*/
typedef struct {
- MMPlayerAttrsType type;
- MMPlayerAttrsValidType validity_type;
- MMPlayerAttrsFlag flag;
+ mmplayer_attrs_type_e type;
+ mmplayer_attrs_valid_type_e validity_type;
+ mmplayer_attrs_flag_e flag;
/**
* a union that describes validity of the attribute.
* Only when type is 'MM_ATTRS_TYPE_INT' or 'MM_ATTRS_TYPE_DOUBLE',
* Validity structure for double array.
*/
struct {
- double * array; /**< a pointer of array */
- int count; /**< size of array */
+ double *array; /**< a pointer of array */
+ int count; /**< size of array */
double d_val;
} double_array;
/**
* Validity structure for double range.
*/
struct {
- double min; /**< minimum range */
- double max; /**< maximum range */
+ double min; /**< minimum range */
+ double max; /**< maximum range */
double d_val;
} double_range;
};
-} MMPlayerAttrsInfo;
+} mmplayer_attrs_info_t;
-/**
- * Volume type.
- *
- * @see mm_player_set_volume, mm_player_get_volume
- */
typedef struct {
- float level[MM_VOLUME_CHANNEL_NUM]; /**< Relative volume factor for each channels */
-} MMPlayerVolumeType;
+ MMPixelFormatType format; /**< image format */
+ int width; /**< width of video buffer */
+ int height; /**< height of video buffer */
+ unsigned int timestamp; /**< timestamp of stream buffer (msec)*/
+ unsigned int length_total; /**< total length of stream buffer (in byte)*/
+ void *data[BUFFER_MAX_PLANE_NUM];
+ void *bo[BUFFER_MAX_PLANE_NUM]; /**< TBM buffer object */
+ void *internal_buffer; /**< Internal buffer pointer */
+ int stride[BUFFER_MAX_PLANE_NUM]; /**< stride of plane */
+ int elevation[BUFFER_MAX_PLANE_NUM]; /**< elevation of plane */
+ int orientation; /**< orientation */
+ int bo_size; /**< TBM buffer object size */
+ int plane_num; /**< number of Plane */
+} mmplayer_video_decoded_data_info_t;
+
+typedef struct {
+ void *data;
+ int data_size;
+ int channel;
+ int bitrate;
+ guint64 channel_mask;
+ media_format_mimetype_e pcm_format;
+} mmplayer_audio_decoded_data_info_t;
+
+typedef struct {
+ unsigned char *data; /* capture image buffer */
+ int size; /* capture image size */
+ mmplayer_video_color_space_e fmt; /* color space type */
+ unsigned int width; /* width of captured image */
+ unsigned int height; /* height of captured image */
+ unsigned int orientation; /* content orientation */
+} mmplayer_video_capture_t;
/**
* Video stream info in external demux case
*
**/
-typedef struct _VideoStreamInfo {
+typedef struct {
const char *mime;
unsigned int framerate_num;
unsigned int framerate_den;
unsigned char *codec_extradata;
unsigned int extradata_size;
unsigned int version;
-} MMPlayerVideoStreamInfo;
+} mmplayer_video_stream_info_t;
/**
* Audio stream info in external demux case
*
**/
-typedef struct _AudioStreamInfo {
+typedef struct {
const char *mime;
unsigned int channels;
unsigned int sample_rate;
// unsigned int depth;
// unsigned int endianness;
// bool signedness;
-} MMPlayerAudioStreamInfo;
+} mmplayer_audio_stream_info_t;
/**
* Subtitle stream info in external demux case
const char *mime;
unsigned int codec_tag;
void *context; //for smpte text
-} MMPlayerSubtitleStreamInfo;
+} mmplayer_subtitle_stream_info_t;
/**
- * selected subtitle track number callback function type.
- *
- * @param track_num [in] Track number of subtitle
- * @param user_param [in] User defined parameter
- *
- *
- * @return This callback function have to return MM_ERROR_NONE.
+ * Called to notify the stream changed.
*/
-typedef bool (*mm_player_track_selected_subtitle_language_callback)(int track_num, void *user_param);
+typedef bool (*mm_player_stream_changed_callback)(void *user_param);
/**
- * Buffer underrun / overflow data callback function type.
- *
- * @param status [in] buffer status
- * @param user_param [in] User defined parameter which is passed when set
- * to enough data callback or need data callback
- *
- * @return This callback function have to return MM_ERROR_NONE.
+ * Video decoded callback function type.
*/
-typedef bool (*mm_player_media_stream_buffer_status_callback) (MMPlayerStreamType type, MMPlayerMediaStreamBufferStatus status, unsigned long long bytes, void *user_param);
+typedef bool (*mm_player_video_decoded_callback)(void *stream, void *user_param);
/**
- * Buffer seek data callback function type.
- *
- * @param offset [in] offset for the buffer playback
- * @param user_param [in] User defined parameter which is passed when set
- * to seek data callback
- *
- * @return This callback function have to return MM_ERROR_NONE.
+ * Audio stream callback function type.
*/
-typedef bool (*mm_player_media_stream_seek_data_callback) (MMPlayerStreamType type, unsigned long long offset, void *user_param);
+typedef bool (*mm_player_video_capture_callback)(void *stream, int stream_size, void *user_param);
/**
- * Called to notify the stream changed.
- *
- * @param user_data [in] The user data passed from the callback registration function
- *
- * @return This callback function have to return MM_ERROR_NONE.
+ * Audio stream callback function type.
*/
-typedef bool (*mm_player_stream_changed_callback) (void *user_param);
-
+typedef bool (*mm_player_audio_decoded_callback)(void *stream, void *user_param);
/*===========================================================================================
| |
if (mm_player_set_attribute(g_player,
&g_err_attr_name,
"profile_uri", filename, strlen(filename),
- "display_overlay", (void*)&g_win.xid, sizeof(g_win.xid),
+ "display_overlay", (void *)&g_win.xid, sizeof(g_win.xid),
NULL) != MM_ERROR_NONE) {
LOGE("failed to set %s attribute\n", g_err_attr_name);
free(g_err_attr_name);
}
-mm_player_set_message_callback(g_player, msg_callback, (void*)g_player);
+mm_player_set_message_callback(g_player, msg_callback, (void *)g_player);
* @endcode
*/
int mm_player_create(MMHandleType *player);
*
* @return This function returns zero on success, or negative value with error code.
*
- * @see MMPlayerStateType
+ * @see mmplayer_state_e
* @remark None
* @par Example
* @code
}
* @endcode
*/
-int mm_player_get_state(MMHandleType player, MMPlayerStateType *state);
+int mm_player_get_state(MMHandleType player, mmplayer_state_e *state);
/**
- * This function is to set relative volume of player. \n
- * So, It controls logical volume value. \n
- * But, if developer want to change system volume, mm sound api should be used.
- *
- * @param player [in] Handle of player
- * @param volume [in] Volume factor of each channel
- *
- * @return This function returns zero on success, or negative value with error code.
- * @see MMPlayerVolumeType, mm_player_get_volume
- * @remark The range of factor range is from 0 to 1.0. (1.0 = 100%) And, default value is 1.0.
- * @par Example
- * @code
-MMPlayerVolumeType volume;
-int i = 0;
-
-for (i = 0; i < MM_VOLUME_CHANNEL_NUM; i++)
- volume.level[i] = MM_VOLUME_LEVEL_MAX;
-
-if (mm_player_set_volume(g_player, &volume) != MM_ERROR_NONE)
-{
- LOGE("failed to set volume\n");
-}
- * @endcode
+ * This function is to control logical volume.
*/
-int mm_player_set_volume(MMHandleType player, MMPlayerVolumeType *volume);
+int mm_player_set_volume(MMHandleType player, float volume);
/**
* This function is to get current volume factor of player.
- *
- * @param player [in] Handle of player.
- * @param volume [out] Volume factor of each channel.
- *
- * @return This function returns zero on success, or negative value with error code.
- *
- * @see MMPlayerVolumeType, mm_player_set_volume
- * @remark None
- * @par Example
- * @code
-MMPlayerVolumeType volume;
-int i;
-
-if (mm_player_get_volume(g_player, &volume) != MM_ERROR_NONE)
-{
- LOGW("failed to get volume\n");
-}
-
-for (i = 0; i < MM_VOLUME_CHANNEL_NUM; i++)
- LOGD("channel[%d] = %d \n", i, volume.level[i]);
- * @endcode
*/
-int mm_player_get_volume(MMHandleType player, MMPlayerVolumeType *volume);
+int mm_player_get_volume(MMHandleType player, float *volume);
/**
* This function is to start playing media contents. Demux(parser), codec and related plugins are decided \n
* @param stop_pos [out] contains buffer current position on success or zero in case of failure.
*
* @return This function returns zero on success, or negative value with errors
- * @see MMPlayerPosFormatType, mm_player_set_position
+ * @see mm_player_set_position
* @remark the unit of time-based format is millisecond and other case is percent.
* @par Example
* @code
int start_pos = 0, stop_pos = 0;
-mm_player_get_buffer_position(g_player, MM_PLAYER_POS_FORMAT_PERCENT, &start_pos, &stop_pos );
+mm_player_get_buffer_position(g_player, &start_pos, &end_pos );
-LOGD("buffer position: [%d] ~ [%d] \%\n", start_pos, stop_pos );
+LOGD("buffer position: [%d] ~ [%d] \%\n", start_pos, end_pos );
* @endcode
*/
-int mm_player_get_buffer_position(MMHandleType player, MMPlayerPosFormatType format, unsigned long *start_pos, unsigned long *stop_pos);
+int mm_player_get_buffer_position(MMHandleType player, int *start_pos, int *end_pos);
/**
* This function sets callback function for receiving messages from player.
return TRUE;
}
-mm_player_set_message_callback(g_player, msg_callback, (void*)g_player);
+mm_player_set_message_callback(g_player, msg_callback, (void *)g_player);
* @endcode
*/
int mm_player_set_message_callback(MMHandleType player, MMMessageCallback callback, void *user_param);
* This function is to mute volume of player
*
* @param player [in] Handle of player
- * @param mute [in] Mute(1) or not mute(0)
+ * @param mute [in] mute value
*
* @return This function returns zero on success, or negative value with error code
* @see mm_player_get_mute
* @remark None
- * @par Example
- * @code
-if (mm_player_set_mute(g_player, TRUE) != MM_ERROR_NONE)
-{
- LOGW("failed to set mute\n");
-}
- * @endcode
*/
-int mm_player_set_mute(MMHandleType player, int mute);
+int mm_player_set_mute(MMHandleType player, bool mute);
/**
* This function is to get mute value of player
* @return This function returns zero on success, or negative value with error code
* @see mm_player_set_mute
* @remark None
- * @par Example
- * @code
-int mute;
-
-if (mm_player_get_mute(g_player, &mute) != MM_ERROR_NONE)
-{
- LOGW("failed to get mute\n");
-}
-
-LOGD("mute status:%d\n", mute);
- * @endcode
*/
-int mm_player_get_mute(MMHandleType player, int *mute);
+int mm_player_get_mute(MMHandleType player, bool *mute);
/**
- * This function is to adjust subtitle postion. So, subtitle can show at the adjusted position. \n
+ * This function is to adjust subtitle position. So, subtitle can show at the adjusted position. \n
* If pos is negative, subtitle will be displayed previous time, the other hand forward time. \n
*
* @param player [in] Handle of player
- * @param pos [in] postion to be adjusted
+ * @param pos [in] position to be adjusted
*
* @return This function returns zero on success, or negative value with error
* code
int pos;
pos = 5000;
-if (mm_player_adjust_subtitle_position(g_player, MM_PLAYER_POS_FORMAT_TIME, pos) != MM_ERROR_NONE)
+if (mm_player_adjust_subtitle_position(g_player, pos) != MM_ERROR_NONE)
{
- LOGW("failed to adjust subtitle postion.\n");
+ LOGW("failed to adjust subtitle position.\n");
}
* @endcode
*/
-int mm_player_adjust_subtitle_position(MMHandleType player, MMPlayerPosFormatType format, int pos);
+int mm_player_adjust_subtitle_position(MMHandleType player, int pos);
/**
* This function is to set subtitle silent status. So, subtitle can show or hide during playback \n
* by this value. But, one subtitle file should be set with "subtitle_uri" attribute before calling mm_player_realize(); \n
* Player FW parses subtitle file and send text data including timestamp to application \n
* through message callback with MM_MESSAGE_UPDATE_SUBTITLE will be. \n
- * So, application have to render it. And, subtitle can be supported only in a seprate file. \n
+ * So, application have to render it. And, subtitle can be supported only in a separate file. \n
* So, it's not supported for embedded case.
*
* @param player [in] Handle of player
*
* @param player [in] Handle of player.
* @param attribute_name [in] Name of the attribute to get
- * @param info [out] Attribute infomation
+ * @param info [out] Attribute information
*
* @return This function returns zero on success, or negative value with error
* code.
}
* @endcode
*/
-int mm_player_get_attribute_info(MMHandleType player, const char *attribute_name, MMPlayerAttrsInfo *info);
-
-/**
- * This function is to get download position and total size of progressive download
- *
- * @param player [in] Handle of player.
- * @param current_pos [in] Download position currently (bytes)
- * @param total_size [in] Total size of file (bytes)
- *
- * @return This function returns zero on success, or negative value with error code.
- * @par Example
- * @code
-guint64 current_pos = 0LLU;
-guint64 total_size = 0LLU;
-
-if (mm_player_get_pd_status(g_player, ¤t_pos, &total_size, NULL) != MM_ERROR_NONE)
-{
- LOGD("current download pos = %llu, total size = %llu\n", current_pos, total_size);
-}
- * @endcode
- */
-int mm_player_get_pd_status(MMHandleType player, guint64 *current_pos, guint64 *total_size);
-
-/**
- * This function sets callback function for receiving messages of PD downloader.
- *
- * @param player [in] Handle of player.
- * @param callback [in] Message callback function.
- * @param user_param [in] User parameter which is passed to callback function.
- *
- * @return This function returns zero on success, or negative value with error code.
- * @see
- * @remark None
- * @par Example
- * @code
-int msg_callback(int message, MMMessageParamType *param, void *user_param)
-{
- switch (message)
- {
- case MM_MESSAGE_PD_DOWNLOADER_START:
- LOGD("Progressive download is started...\n");
- break;
- case MM_MESSAGE_PD_DOWNLOADER_END:
- LOGD("Progressive download is ended...\n");
- break;
- default:
- break;
- }
- return TRUE;
-}
-
-mm_player_set_pd_message_callback(g_player, msg_callback, NULL);
- * @endcode
- */
-int mm_player_set_pd_message_callback(MMHandleType player, MMMessageCallback callback, void *user_param);
+int mm_player_get_attribute_info(MMHandleType player, const char *attribute_name, mmplayer_attrs_info_t *info);
/**
* This function is to get the track count
LOGD("audio track count : %d \n", audio_count);
* @endcode
*/
-int mm_player_get_track_count(MMHandleType player, MMPlayerTrackType type, int *count);
+int mm_player_get_track_count(MMHandleType player, mmplayer_track_type_e type, int *count);
/**
* This function is to select the track
* @return This function returns zero on success, or negative value with error
* code.
*/
-int mm_player_select_track(MMHandleType player, MMPlayerTrackType type, int index);
+int mm_player_select_track(MMHandleType player, mmplayer_track_type_e type, int index);
/**
* This function is to get the track language
* @return This function returns zero on success, or negative value with error
* code.
*/
-int mm_player_get_track_language_code(MMHandleType player, MMPlayerTrackType type, int index, char **code);
+int mm_player_get_track_language_code(MMHandleType player, mmplayer_track_type_e type, int index, char **code);
/**
* This function is to get the current running track
* code.
*/
-int mm_player_get_current_track(MMHandleType hplayer, MMPlayerTrackType type, int *index);
+int mm_player_get_current_track(MMHandleType hplayer, mmplayer_track_type_e type, int *index);
/**
* This function is to set the subtitle path
*
* @return This function returns zero on success, or negative value with error code.
*/
-int mm_player_set_external_subtitle_path(MMHandleType player, const char* path);
+int mm_player_set_external_subtitle_path(MMHandleType player, const char *path);
/**
* This function is to set uri.
* @param subtitle_stream_info [in] Subtitle stream info.
* @return This function returns zero on success, or negative value with error code.
*/
-int mm_player_set_subtitle_info(MMHandleType player, MMPlayerSubtitleStreamInfo *info);
-
-/**
- * This function set callback function for receiving need or enough data message from player.
- *
- * @param player [in] Handle of player.
- * @param type [in] stream type
- * @param callback [in] data callback function for stream type.
- * @param user_param [in] User parameter.
- *
- * @return This function returns zero on success, or negative value with error
- * code.
- */
-int mm_player_set_media_stream_buffer_status_callback(MMHandleType player, MMPlayerStreamType type, mm_player_media_stream_buffer_status_callback callback, void * user_param);
-
-/**
- * This function set callback function for receiving seek data message from player.
- *
- * @param player [in] Handle of player.
- * @param type [in] stream type
- * @param callback [in] Seek data callback function for stream type.
- * @param user_param [in] User parameter.
- *
- * @return This function returns zero on success, or negative value with error
- * code.
- */
-int mm_player_set_media_stream_seek_data_callback(MMHandleType player, MMPlayerStreamType type, mm_player_media_stream_seek_data_callback callback, void * user_param);
+int mm_player_set_subtitle_info(MMHandleType player, mmplayer_subtitle_stream_info_t *info);
/**
* This function is to set max size of buffer(appsrc).
* @return This function returns zero on success, or negative value with error
* code.
*/
-int mm_player_set_media_stream_buffer_max_size(MMHandleType player, MMPlayerStreamType type, unsigned long long max_size);
+int mm_player_set_media_stream_buffer_max_size(MMHandleType player, mmplayer_stream_type_e type, unsigned long long max_size);
/**
* This function is to get max size of buffer(appsrc).
* @return This function returns zero on success, or negative value with error
* code.
*/
-int mm_player_get_media_stream_buffer_max_size(MMHandleType player, MMPlayerStreamType type, unsigned long long *max_size);
+int mm_player_get_media_stream_buffer_max_size(MMHandleType player, mmplayer_stream_type_e type, unsigned long long *max_size);
/**
* This function is to set min percent of buffer(appsrc).
* @return This function returns zero on success, or negative value with error
* code.
*/
-int mm_player_set_media_stream_buffer_min_percent(MMHandleType player, MMPlayerStreamType type, unsigned min_percent);
+int mm_player_set_media_stream_buffer_min_percent(MMHandleType player, mmplayer_stream_type_e type, unsigned min_percent);
/**
* This function is to get min percent of buffer(appsrc).
* @return This function returns zero on success, or negative value with error
* code.
*/
-int mm_player_get_media_stream_buffer_min_percent(MMHandleType player, MMPlayerStreamType type, unsigned int *min_percent);
+int mm_player_get_media_stream_buffer_min_percent(MMHandleType player, mmplayer_stream_type_e type, unsigned int *min_percent);
/**
* This function set callback function for changing audio stream from player. \n
int mm_player_set_audio_stream_changed_callback(MMHandleType player, mm_player_stream_changed_callback callback, void *user_param);
/**
- * This function set callback function for changing video stream from player. \n
- * It's only supported when video stream is included in file. \n
- *
- * @param player [in] Handle of player.
- * @param callback [in] Video stream changed callback function.
- * @param user_param [in] User parameter.
- *
- * @return This function returns zero on success, or negative value with error
- * code.
- * @see mm_player_stream_changed_callback
- */
-int mm_player_set_video_stream_changed_callback(MMHandleType player, mm_player_stream_changed_callback callback, void *user_param);
-
-/**
* This function is to get timeout value according to the content type for muse. \n
* It's only supported when video stream is included in file. \n
*
int mm_player_get_timeout(MMHandleType player, int *timeout);
/**
- * This function is to get the number of video output buffers. \n
- * It's only supported when video stream is included in file. \n
- *
- * @param player [in] Handle of player.
- * @param num [out] num of buffers.
- * @param extra_num [out] extra num of buffers.
- *
- * @return This function returns zero on success, or negative value with error
- * code.
- * @since 3.0
- */
-int mm_player_get_num_of_video_out_buffers(MMHandleType player, int *num, int *extra_num);
-
-/**
* This function is to set the dynamic resolution information. \n
* It's only supported when video stream is included in file. \n
*
* code.
* @since 3.0
*/
-int mm_player_release_video_stream_bo(MMHandleType player, void* bo);
-
-/**
- * This function is to set http file buffering path
- *
- * @param player [in] handle of player
- * @param file_path [in] file path
- * @return This function returns zero on success, or negative value with error code.
- */
-int mm_player_set_file_buffering_path(MMHandleType player, const char *file_path);
+int mm_player_release_video_stream_bo(MMHandleType player, void *bo);
/**
* This function is to set sound stream info
* These functions are to set/get the audio only mode
*/
int mm_player_set_audio_only(MMHandleType player, bool audio_only);
-int mm_player_get_audio_only(MMHandleType player, bool *audio_only);
/**
- * These functions are to set/get the streaming bufferint time
+ * These functions are to get the streaming buffering time
*/
-int mm_player_set_streaming_buffering_time(MMHandleType player, int buffer_ms, int rebuffer_ms);
-int mm_player_get_streaming_buffering_time(MMHandleType player, int *buffer_ms, int *rebuffer_ms);
+int mm_player_get_streaming_buffering_time(MMHandleType player, int *prebuffer_ms, int *rebuffer_ms);
/**
* These functions are to display the 360 video content
/**
* This function is to set codec type
*/
-int mm_player_set_codec_type(MMHandleType player, MMPlayerStreamType stream_type, MMPlayerVideoCodecType codec_type);
+int mm_player_set_codec_type(MMHandleType player, mmplayer_stream_type_e stream_type, mmplayer_codec_type_e codec_type);
/**
* These functions are to apply the replaygain
int mm_player_get_video_roi_area(MMHandleType player, double *scale_x, double *scale_y, double *scale_width, double *scale_height);
/**
+ * This function is to set play speed for playback.
+ *
+ * @param player [in] Handle of player.
+ * @param ratio [in] Speed for playback.
+ * @param streaming [in] If @c true, rate value can be set even if it is streaming playback.
+ * @return This function returns zero on success, or negative value with error
+ * code
+ * @remark The current supported range is from -64x to 64x.
+ * But, the quality is dependent on codec performance.
+ * And, the sound is muted under normal speed and more than double speed.
+ * @see
+ * @since
+ */
+int mm_player_set_play_speed(MMHandleType player, float rate, bool streaming);
+
+/**
+ * This function set callback function for receiving video stream from player.
+ *
+ * @param player [in] Handle of player.
+ * @param callback [in] Video stream callback function.
+ * @param user_param [in] User parameter.
+ *
+ * @return This function returns zero on success, or negative value with error
+ * code.
+ * @remark
+ * @since
+ */
+int mm_player_set_video_decoded_callback(MMHandleType player, mm_player_video_decoded_callback callback, void *user_param);
+
+/**
+ * This function set callback function for receiving audio stream from player.
+ *
+ * @param player [in] Handle of player.
+ * @param opt [in] audio extract option.
+ * @param callback [in] audio stream callback function.
+ * @param user_param [in] User parameter.
+ *
+ * @return This function returns zero on success, or negative value with error
+ * code.
+ * @remark
+ * @see mm_player_audio_decoded_callback
+ * @since
+ */
+int mm_player_set_audio_decoded_callback(MMHandleType player, mmplayer_audio_extract_opt_e opt, mm_player_audio_decoded_callback callback, void *user_param);
+
+/**
+ * This function is to capture video frame.
+ *
+ * @param player [in] Handle of player.
+ *
+ * @return This function returns zero on success, or negative value with error
+ * code.
+ *
+ * @remark Captured buffer is sent asynchronously through message callback with MM_MESSAGE_VIDEO_CAPTURED.
+ * And, application should free the captured buffer directly.
+ * @see MM_MESSAGE_VIDEO_CAPTURED
+ * @since
+ */
+int mm_player_do_video_capture(MMHandleType player);
+
+/**
+ * This function changes the previous videosink plugin for a new one
+ *
+ * @param player [in] Handle of player.
+ * @param display_surface_type [in] display surface type to set
+ * @param wl_surface_id [in] wayland surface id to set
+ *
+ * @return This function returns zero on success, or negative value with error
+ * code.
+ * @remark
+ * @see
+ * @since
+ */
+int mm_player_change_videosink(MMHandleType player, MMDisplaySurfaceType display_surface_type, int wl_surface_id);
+
+/**
+ * This function set the application PID.
+ *
+ * @param player [in] Handle of player
+ * @param pid [in] application PID
+ *
+ * @return This function returns zero on success, or negative value with error code.
+ *
+ * @pre Player state should be MM_PLAYER_STATE_NULL.
+ * @remark None
+ */
+int mm_player_set_client_pid(MMHandleType player, int pid);
+
+/**
+ * This function gets the activation status of audio offload.
+ */
+int mm_player_audio_offload_is_activated(MMHandleType player, bool *activated);
+
+/**
+ * This function checks whether the controlling audio with opt is available or not.
+ */
+int mm_player_is_audio_control_available(MMHandleType player, mmplayer_audio_control_opt_e opt, bool *available);
+
+/**
@}
*/