* @file trackrenderer_capi.h
* @brief Plusplayer trackrenderer api c version.
* @interfacetype Platform
+ * @platform_porting_interface
* @privlevel None-privilege
* @privilege None
* @product TV, AV, B2B
#endif
/**
- * @brief
+ * @brief Player app id, version, type information
*/
typedef struct {
/**
- * @description
+ * @description App id for controlling resource.
+ */
+ char* id;
+ /**
+ * @description When there is playback market issue, KPI logger will
+ * send the version.
+ */
+ char* version;
+ /**
+ * @description RunningApps.InformationTicker will use this type to show
+ * stream information. ex) "MSE", "HTML5", etc..
+ */
+ char* type;
+} TrackRendererAppInfo;
+
+/**
+ * @brief Event message
+ */
+typedef struct {
+ /**
+ * @description event message data
+ * eg) kTrackRendererEventTypeResolutionChanged : "1920x1080"
*/
char* data;
/**
- * @description
+ * @description the length of event message data
*/
uint64_t len;
} TrackrendererEventMsg;
/**
- * @brief
+ * @brief Enumerations for event message types
*/
enum TrackRendererEventType {
kTrackRendererEventTypeNone,
* trackrenderer_set_error_cb in advance.
* @post User will handle the posted error according to error code.
* @see trackrenderer_set_error_cb()
+ * @see trackrenderer_error_msg_cb() if a detailed error message is
+ * required
*/
typedef void (*trackrenderer_error_cb)(const TrackRendererErrorType error_code,
void* userdata);
typedef void (*trackrenderer_eos_cb)(void* userdata);
/**
- * @description When resolution is changed, this function will be
- * called to notify that resolution has been changed changed.
- * @param [in] event_type : Resolution change event type.
- * @param [in] msg_data : Resolution info.
+ * @description When a specific event occurs, this function will be called to
+ * notify it.
+ * @param [in] event_type : event type that occured
+ * @param [in] msg_data : event information
* @param [in] userdata : userdata of trackrenderer_event_cb callback
* function.
* @pre The callback function should be set by
* trackrenderer_set_event_cb, in advance.
- * @post User can handle functionality referencing resolution info.
+ * @post User can get the information of the event that occured
* @see trackrenderer_set_event_cb()
*/
typedef void (*trackrenderer_event_cb)(const TrackRendererEventType event_type,
* @brief return libtrackrenderer.so lib version as string
* @param None
* @return version info - major.minor.micro - as string
+ * @code
+ * //your logic
+ * const char* version;
+ * version = trackrenderer_get_version();
+ * //your logic
+ * @endcode
* @pre None
* @post None
* @exception None
* @brief return libtrackrenderer.so lib version as constant int.
* @param None
* @return version info - major.minor.micro - as unsigned int
+ * @code
+ * //your logic
+ * uint32_t version = 0;
+ * version = trackrenderer_get_version_int();
+ * //your logic
+ * @endcode
* @pre None
* @post None
* @exception None
* related job ex) display setting, decoding, rendering, etc..
* @param [out] handle : Get trackrenderer handle ptr.
* @return 0 on success, otherwise -1 failed.
+ * @code
+ * TrackRendererHandle handle = nullptr;
+ * trackrenderer_create(&handle);
+ * //your logic
+ * trackrenderer_destroy(handle);
+ * @endcode
* @pre None
* @post None
* @exception None
* @description Remove and dealloc trackrenderer object and handle.
* @param [in] handle : trackrenderer handle
* @return 0 on success, otherwise -1 failed.
+ * @code
+ * refer to the sample code of trackrenderer_create()
+ * @endcode
* @pre None
* @post None
* @exception None
+ * @see trackrenderer_create()
*/
int trackrenderer_destroy(TrackRendererHandle handle);
* @return Return 0 if no problem.
* Otherwise -1 if the trackrenderer is not even set up.
* @pre The trackrenderer must be at least created and set up.
- * trackrenderer_create()
- * trackrenderer_prepare()
* @post The contents is playing.
* @exception None
* @code
- * TrackRendererHandle handle = nullptr;
- * trackrenderer_create(&handle)
- * TrackRendererDisplayType type = kTrackRendererDisplayTypeOverlay;
- * ...
- * ...
- * TrackRendererTrack tracks[] = {videotrack, audiotrack};
- * int tracksize = 2;
- * trackrenderer_set_track(handle, tracks, tracksize);
- * trackrenderer_prepare(handle);
- * trackrenderer_start(handle);
+ * //prepare trackrenderer hanle
+ * trackrenderer_start(handle);
+ * //your logic
+ * trackrenderer_pause(handle);
+ * //your logic
+ * trackrenderer_resume(handle);
+ * //your logic
+ * trackrenderer_stop(handle);
* @endcode
* @remark None
+ * @see trackrenderer_create() \n
+ * trackrenderer_prepare()
*/
int trackrenderer_start(TrackRendererHandle handle);
* @return Return 0 if the trackrenderer is not even setup or release the
* resource successfully.
* Otherwise -1.
+ * @code
+ * refer to the sample code of trackrenderer_start()
+ * @endcode
* @pre After trackrenderer object is created, this can be called.
- * trackrenderer_create()
* @post Trackrenderer release the decoder and display resource.
* @exception None
+ * @see trackrenderer_create() \n
+ * trackrenderer_prepare() \n
+ * trackrenderer_start()
*/
int trackrenderer_stop(TrackRendererHandle handle);
* @return Return 0 if all valid tracks playback is successfully prepared,
* succeed to update display 1 decoded frame media contents.
* Otherwise -1.
+ * @code
+ * trackrenderer_create(&handle);
+ * //set tracks if needed
+ * trackrenderer_prepare(handle);
+ * //your logic
+ * trackrenderer_destroy(handle);
+ * @endcode
* @pre Active tracks informations for playing need to be set up.
- * trackrenderer_create()
- * trackrenderer_set_track()
* The media contents data must be delivered as mush as
* trackrenderer can parse data type.
* @post 1 decoded frame media contents is displayed. The necessary TV
* resource is prepared to use.
* @exception None
* @remark None
+ * @see trackrenderer_create() \n
+ * trackrenderer_set_track()
*/
int trackrenderer_prepare(TrackRendererHandle handle);
* @return Return 0 if trackrenderer is successfully paused.
* Otherwise return -1 if trackrenderer already release the
* resource.
+ * @code
+ * refer to the sample code of trackrenderer_start()
+ * @endcode
* @pre The trackrenderer must be at least created and set up.
- * trackrenderer_create()
- * trackrenderer_prepare()
* @post The trackrenderer pause playback and displaying 1 decoded frame
* data.
* @exception None
* @remark None
+ * @see trackrenderer_create() \n
+ * trackrenderer_prepare() \n
+ * trackrenderer_start()
*/
int trackrenderer_pause(TrackRendererHandle handle);
* @return Return 0 if trackrenderer is successfully resume media
* contents.
* Otherwise -1.
+ * @code
+ * refer to the sample code of trackrenderer_start()
+ * @endcode
* @pre The trackrenderer must be at least created and set up.
- * trackrenderer_create()
- * trackrenderer_prepare()
* @post The contents is playing.
* @exception None
* @remark None
+ * @see trackrenderer_create() \n
+ * trackrenderer_prepare() \n
+ * trackrenderer_start() \n
+ * trackrenderer_pause()
*/
int trackrenderer_resume(TrackRendererHandle handle);
* subtitle and successfully set the track info to trackrenderer.
* Otherwise -1 if there is not any active tracks or already set
* tracks info.
+ * @code
+ * TrackRendererHandle handle = nullptr;
+ * trackrenderer_create(&handle)
+ * TrackRendererTrack tracks[] = {videotrack, audiotrack};
+ * int tracksize = 2;
+ * trackrenderer_set_track(handle, tracks, tracksize);
+ * //your logic
+ * trackrenderer_destroy(handle);
+ * @endcode
* @pre Get active tracks list for playing.
* @post Set up left of other properties to trackrenderer with using
* trackrenderer_prepare().
* @exception None
* @remark None
+ * @see trackrenderer_create()
*/
int trackrenderer_set_track(TrackRendererHandle handle,
const TrackRendererTrack* track, const int size);
* @param [in] handle : trackrenderer handle ptr.
* @param [in] properties : Setting properties got from property file.
* @param [in] property_size : Number of properties for parsing.
+ * @code
+ * trackrenderer_create(&handle)
+ * TrackRendererIniProperty properties[2];
+ * properties[0].key = "use_new_hls_mpegts_demuxer";
+ * properties[0].value = true;
+ * properties[1].key = "use_new_dash_tiny_demuxer";
+ * properties[1].value = false;
+ * trackrenderer_set_ini_property(handle, properties, 2)
+ * //your logic
+ * trackrenderer_destroy(handle);
+ * @endcode
* @pre Load property file and get informations.
* @post Trackrenderer set the parsed properties.
* @exception None
* @remark None
+ * @see trackrenderer_create()
*/
void trackrenderer_set_ini_property(TrackRendererHandle handle,
TrackRendererIniProperty* properties,
* @description In this function, trackrenderer seek playback position to
* specific position and can set playback rate.
* @param [in] handle : trackrenderer handle ptr.
- * @param [in] time_millisecond : the absolute position(playingtime) of
- * the stream in milliseconds
+ * @param [in] time : the absolute position(playingtime) of
+ * the stream , default in milliseconds,according to the timeunit type.
* @param [in] playback_rate : For trick play playback rate.
* @return Return 0 if he trackrenderer can seek the position or set
* playback rate successfully. Playback rate 0 is not acceptable
* Otherwise -1 if the trackrenderer is not even setup,
* trackrenderer fail to seek playback position or fail to set
* playback rate.
+ * @code
+ * static void SeekDoneCb(UserData userdata) {
+ * //do something you want when seek done
+ * }
+ * static void SeekDataCb(const TrackRendererTrackType type,
+ * const unsigned long long offset, UserData userdata) {
+ * //do something you want when trackrenderer is ready
+ * to get new seeked position segment data
+ * }
+ * trackrenderer_create(&handle);
+ * trackrenderer_set_seekdone_cb(handle, SeekDoneCb, nullptr);
+ * trackrenderer_set_seekdata_cb(handle, SeekDataCb, nullptr);
+ * trackrenderer_prepare(handle);
+ * trackrenderer_start(handle);
+ * //your logic
+ * trackrenderer_seek(handle,10,1.0);
+ * //your logic
+ * trackrenderer_stop(handle);
+ * @endcode
* @pre The trackrenderer must be at least created and set up.
- * trackrenderer_create()
- * trackrenderer_prepare()
* @post Release the buffered data and start buffering seeked position
* segment data.
* @exception None
* called when seek operation is finished.
* The acceptable playback rate is different for each streaming
* source type.
+ * @see trackrenderer_create() \n
+ * trackrenderer_prepare() \n
+ * trackrenderer_start() \n
+ * trackrenderer_set_seekdone_cb()
*/
-int trackrenderer_seek(TrackRendererHandle handle,
- unsigned long long time_millisecond,
+int trackrenderer_seek(TrackRendererHandle handle, unsigned long long time,
double playback_rate);
/**
* @brief Seek trackrenderer playback position, asynchronously.
* specific position and can set playback rate with audio mute
* on/off.
* @param [in] handle : trackrenderer handle ptr.
- * @param [in] time_millisecond : the absolute position(playingtime) of
- * the stream in milliseconds
+ * @param [in] time : the absolute position(playingtime) of
+ * the stream, default in milliseconds,according to the timeunit type.
* @param [in] playback_rate : For trick play playback rate.
* @param [in] audio_mute : audio is mute on/off when seek to target
- * position.
+ * position.
* @return Return 0 if he trackrenderer can seek the position or set
- * playback rate successfully. Playback rate 0 is not acceptable
- * even though return value is 0.
+ * playback rate successfully. Playback rate 0 is not accecptable
+ * eventhough return value is 0.
* Otherwise -1 if the trackrenderer is not even setup,
* trackrenderer fail to seek playback position or fail to set
* playback rate.
+ * @code
+ * //prepare trackrenderer hanle
+ * //your logic
+ * trackrenderer_start(handle);
+ * //your logic
+ * trackrenderer_seek2(handle,10,1.0,true);
+ * //your logic
+ * trackrenderer_stop(handle);
+ * @endcode
* @pre The trackrenderer must be at least created and set up.
- * trackrenderer_create()
- * trackrenderer_prepare()
* @post Release the buffered data and start buffering seeked position
* segment data.
* @exception None
* called when seek operation is finished.
* The acceptable playback rate is different for each streaming
* source type.
+ * @see trackrenderer_create() \n
+ * trackrenderer_prepare() \n
+ * trackrenderer_start()
*/
-int trackrenderer_seek2(TrackRendererHandle handle,
- unsigned long long time_millisecond,
+int trackrenderer_seek2(TrackRendererHandle handle, unsigned long long time,
double playback_rate, bool audio_mute);
/**
* @brief Set trackrenderer playback rate, asynchronously.
* @description In this function, trackrenderer set playback rate and audio
- * mute on/off.
+ * mute on/off.
* @param [in] handle : trackrenderer handle ptr.
* @param [in] playback_rate : For trick play playback rate.
* @param [in] audio_mute : For trick play audio mute on/off, true: mute
- * on, false: mute off.
+ * on, false: mute off.
* @return Return 0 if he trackrenderer can set playback rate
- * successfully. Playback rate 0 is not accecptable
+ * successfully. Playback rate 0 is not accecptable
* even though return value is 0.
* Otherwise -1 if the trackrenderer is not even setup,
* trackrenderer fail to set playback rate.
+ * @code
+ * //prepare trackrenderer hanle
+ * //your logic
+ * trackrenderer_set_playback_rate(handle, 2.0, true);
+ * //your logic
+ * trackrenderer_stop(handle);
+ * @endcode
* @pre The trackrenderer must be at least created and set up.
- * trackrenderer_create()
- * trackrenderer_prepare()
* @post Release the buffered data and start buffering current playing
* position
* @exception None
- * @version 2.0
+ * @version 2.0
* @remark Setting playback rate is asynchronous operation.
* The acceptable playback rate is different for each streaming
* source type.
+ * @see trackrenderer_create() \n
+ * trackrenderer_prepare()
*/
int trackrenderer_set_playback_rate(TrackRendererHandle handle,
double playback_rate, bool audio_mute);
* contents position. This is used when change playback rate from
* current position.
* @param [in] handle : trackrenderer handle ptr.
- * @param [out] time_millisecond : current playing time in milliseconds
+ * @param [out] time : current playing time (default milliseconds)
* @return Return 0 if trackrenderer successfully get currently rendering
* contents position.
* Otherwise -1.
+ * @code
+ * //prepare trackrenderer hanle
+ * //your logic
+ * uint64_t time_millisecond = 0;
+ * trackrenderer_get_playing_time(handle, &time_millisecond));
+ * //your logic
+ * trackrenderer_stop(handle);
+ * @endcode
* @pre The trackrenderer must be at least created and set up.
- * trackrenderer_create()
- * trackrenderer_prepare()
* @post None
* @exception None.
* @remark None
+ * @see trackrenderer_create() \n
+ * trackrenderer_prepare()
*/
int trackrenderer_get_playing_time(TrackRendererHandle handle,
- uint64_t* time_millisecond);
-
+ unsigned long long* time);
/**
* @brief Get dropped frame counts in videosink
* @description In this function trackrenderer get currently dropped frames in
* @pre The trackrenderer must be at least created and set up.
* @post None
* @exception None.
- * @version 3.0
+ * @version 2.7
* @remark None
* @see trackrenderer_create() \n
* trackrenderer_prepare()
/**
* @brief Flush buffers for a trackrenderer.
* @description In this function trackrenderer will flush data in
- * appsrc,decoder,sink.
+ * appsrc,decoder,sink.
* @param [in] handle : trackrenderer handle ptr.
* @param [in] type : type of track which need to be flush.
* @return Return 0 if flushing buffer for a track successfully.
* Otherwise -1.
+ * @code
+ * static void FlushDoneCb(UserData userdata) {
+ * //do something you want to do when flush done
+ * }
+
+ * trackrenderer_create(&handle);
+ * trackrenderer_flushdone_cb(handle, FlushDoneCb, nullptr);
+ * trackrenderer_prepare(handle);
+ * //your logic
+ * trackrenderer_flush(handle, kTrackRendererTrackTypeAudio);
+ * //your logic
+ * trackrenderer_stop(handle);
+ * @endcode
* @pre The trackrenderer must be at least created and set up.
- * trackrenderer_create()
- * trackrenderer_prepare()
* @post None
* @exception None.
- * @version 2.0
+ * @version 2.0
* @remark trackrenderer_flushdone_cb() is called when flush operation is
- * fininshed
+ * fininshed
+ * @see trackrenderer_create() \n
+ * trackrenderer_prepare() \n
+ * trackrenderer_flushdone_cb()
*/
int trackrenderer_flush(TrackRendererHandle handle,
TrackRendererTrackType type);
* the TV resources.
* Otherwise -1 if the trackrenderer is not even set up or fail to
* release the resources.
+ * @code
+ * //prepare trackrenderer hanle
+ * //your logic
+ * trackrenderer_deactivate(handle, kTrackRendererTrackTypeVideo)
+ * //your logic
+ * trackrenderer_activate(handle,
+ * kTrackRendererTrackTypeVideo,nullptr));
+ * //your logic
+ * trackrenderer_stop(handle);
+ * @endcode
* @pre The trackrenderer must be at least created and set up.
- * trackrenderer_create()
- * trackrenderer_prepare()
* @post trackrenderer_activate() should be called if new data stream
* need to be inserted and get new TV resource for decoding and
* rendering.
* @exception None
* @remark None
- *
+ * @see trackrenderer_create() \n
+ * trackrenderer_prepare()
*/
int trackrenderer_deactivate(TrackRendererHandle handle,
TrackRendererTrackType type);
* @return Return 0 if trackrenderer is successfully rebuilt with using
* new data stream. Otherwise -1 if the trackrenderer is not even
* set up or fail to get resources.
+ * @code
+ * refer to the sample code of trackrenderer_deactivate()
+ * @endcode
* @pre The trackrenderer must be at least created and set up.
- * trackrenderer_create()
- * trackrenderer_prepare()
* @post None
* @exception None
* @remark None
+ * @see trackrenderer_create() \n
+ * trackrenderer_prepare() \n
+ * trackrenderer_deactivate()
*/
int trackrenderer_activate(TrackRendererHandle handle,
TrackRendererTrackType type,
* @param [in] handle : trackrenderer handle ptr.
* @param [in] data : the data user want to add to the trackrenderer
buffer
- * @param [out] retval : the result of submission.
+ * @param [out] retval : the result of submition.
* @return Return 0 if trackrenderer successfully add the buffer to queue
* or the EOS data.
* Otherwise -1 if the trackrenderer is not even set up, queue is
* already full or the data is unusable.
+ * @code
+ * static void BufferStatusCb(const TrackRendererTrackType type,
+ * const TrackRendererBufferStatus status,UserData userdata) {
+ * if (type == kTrackRendererTrackTypeAudio) {
+ * if (status == kTrackRendererBufferStatusUnderrun)
+ * // do something when feed Audio is possible
+ * else
+ * //do something when feed Audio is impossible
+ * } else if(type == kTrackRendererTrackTypeVideo) {
+ * if (status == kTrackRendererBufferStatusUnderrun)
+ * //do something when feed Video is possible
+ * else
+ * //do something when feed Video is impossible
+ * } else if(type == kTrackRendererTrackTypeSubtitle) {
+ * if (status == kTrackRendererBufferStatusUnderrun)
+ * //do something when feed Subtitle is possible
+ * else
+ * //do something when feed Subtitle is impossible
+ * }
+ * }
+ * void FeedPacket(const TrackRendererHandle& handle,
+ * const TrackRendererDecoderInputBufferPtr& buffer,...) {
+ * //your logic
+ * SubmitStatus status=kTrackRendererSubmitStatusNotPrepared;
+ * trackrenderer_submit_packet(handle, buffer.get(),&status);
+ * //your logic
+ * }
+ * trackrenderer_create(&handle);
+ * trackrenderer_set_bufferstatus_cb(handle,BufferStatusCb,nullptr);
+ * trackrenderer_prepare(handle);
+ * //your logic
+ * //execute FeedPacket() when feed is possible.
+ * (call a new thread to do this)
+ * //your logic
+ * trackrenderer_stop(handle);
+ * @endcode
* @pre The trackrenderer must be at least created and set up.
- * trackrenderer_create()
- * trackrenderer_prepare()
* @post If EOS is submitted to buffer, trackrenderer_eos_cb will be
* called.
* @exception None
* @remark The buffered tracksource data is submitted to trackrenderer by
* feeder.
- *
- *
- * this is data copy
+ * @see trackrenderer_create() \n
+ * trackrenderer_prepare() \n
+ * trackrenderer_set_bufferstatus_cb()
*/
int trackrenderer_submit_packet(TrackRendererHandle handle,
TrackRendererDecoderInputBuffer* data,
* @param [in] data : the data user want to add to the trackrenderer
* buffer
* @param [out] retval : the result of submission.
+ * @code
+ refer to the sample code of trackrenderer_submit_packet()
+ * @endcode
* @return Return 0 if trackrenderer successfully add the buffer to queue
* or the EOS data.
* Otherwise -1 if the trackrenderer is not even set up, queue is
* already full or the data is unusable.
* @pre The trackrenderer must be at least created and set up.
- * trackrenderer_create()
- * trackrenderer_prepare()
* @post If EOS is submitted to buffer, trackrenderer_eos_cb will be
* called.
* @exception None
* @remark The buffered tracksource data is submitted to trackrenderer by
* feeder.
- *
- * this is data move
+ * @see trackrenderer_create() \n
+ * trackrenderer_prepare() \n
+ * trackrenderer_set_bufferstatus_cb()
*/
int trackrenderer_submit_packet2(TrackRendererHandle handle,
TrackRendererDecoderInputBuffer* data,
* process itself.
* @param [in] handle : trackrenderer handle ptr.
* @param [in] drm_property : drm property
- * @pre None
+ * @code
+ * trackrenderer_create(&handle);
+ * TrackRendererDrmProperty_64bit trackrenderer_drm_property{
+ * kTrackRendererDrmTypePlayready,
+ * 0, 1, nullptr, nullptr};
+ * trackrenderer_set_drm(handle,&trackrenderer_drm_property);
+ * //your logic
+ * trackrenderer_destroy(handle);
+ * @endcode
+ * @pre The trackrenderer must be at least created.
* @post None
* @exception None
* @remark Set drm property directly
* process itself.
* @param [in] handle : trackrenderer handle ptr.
* @param [in] type : which type of track drm license was acquired
+ * @code
+ * //prepare trackrenderer hanle
+ * //your logic
+ * trackrenderer_drm_license_acquired_done(handle,
+ * kTrackRendererTrackTypeMax);
+ * //your logic
+ * trackrenderer_stop(handle);
+ * @endcode
* @pre The trackrenderer must be at least created and set up.
- * trackrenderer_create()
- * trackrenderer_prepare()
* @post None
* @exception None
+ * @see trackrenderer_create() \n
+ * trackrenderer_prepare()
*/
void trackrenderer_drm_license_acquired_done(TrackRendererHandle handle,
TrackRendererTrackType type);
* @return Return 0 if rendering mode is successfully applied or stored
* for future displaying.
* Otherwise -1 if the trackrenderer is not even setup.
+ * @code
+ * trackrenderer_create(&handle);
+ * trackrenderer_set_display_mode(
+ * handle, kTrackRendererDisplayModeOriginSize));
+ * //your logic
+ * TrackRendererDisplayMode display_mode =
+ * static_cast<TrackRendererDisplayMode>(-1);
+ * trackrenderer_get_display_mode(handle, &display_mode);
+ * //your logic
+ * trackrenderer_destroy(handle);
+ * @endcode
* @pre The trackrenderer must be at least created.
- * trackrenderer_create()
* @post None
* @exception None
* @remark None
+ * @see trackrenderer_create()
*/
int trackrenderer_set_display_mode(TrackRendererHandle handle,
TrackRendererDisplayMode mode);
* @brief Set the video display rotate angle.
* @description In this function will set the video display rotate. If the
* trackrenderer is not prepared to update the display rotate yet,
- * the
- * trackrenderer stored the rotate and update it after
+ * the trackrenderer stored the rotate and update it after
* trackrenderer is ready to update display.
* @param [in] handle : trackrenderer handle ptr.
* @param [in] rotate : display rotate angle
* @return Return 0 if rendering mode is successfully applied or stored
* for future displaying.
* Otherwise -1 if the trackrenderer is not even setup.
+ * @code
+ * trackrenderer_create(&handle);
+ * trackrenderer_set_display_rotate(handle,kTrackRendererDisplayRotate90);
+ * //your logic
+ * trackrenderer_destroy(handle);
+ * @endcode
* @pre The trackrenderer must be at least created.
- * trackrenderer_create()
* @post None
* @exception None
- * @version 2.0
+ * @version 2.0
* @remark None
+ * @see trackrenderer_create()
*/
int trackrenderer_set_display_rotate(TrackRendererHandle handle,
TrackRendererDisplayRotate rotate);
* @param [out] rotate : store the display rotate angle
* @return Return 0 if get rotate value success.
* Otherwise -1 if the trackrenderer is not even setup.
+ * @code
+ * trackrenderer_create(&handle);
+ * //your logic
+ * TrackRendererDisplayRotate gtype =
+ * kTrackRendererDisplayRotateNone;
+ * rackrenderer_get_display_rotate(handle, >ype);
+ * //your logic
+ * trackrenderer_destroy(handle);
+ * @endcode
* @pre The trackrenderer must be at least created.
- * trackrenderer_create()
* @post None
* @exception None
- * @version 2.0
+ * @version 2.0
* @remark None
+ * @see trackrenderer_create()
*/
int trackrenderer_get_display_rotate(TrackRendererHandle handle,
TrackRendererDisplayRotate* rotate);
* @return Return 0 if rendering properties are successfully applied for
* displaying contents or stored for future displaying.
* Otherwise -1 if the trackrenderer is not even setup.
+ * @code
+ * trackrenderer_create(&handle);
+ * trackrenderer_set_display_surface(handle,
+ * kTrackRendererDisplayTypeOverlay, 3, 100, 100, 100, 100);
+ * //your logic
+ * TrackRendererDisplayType type = kTrackRendererDisplayTypeNone;
+ * TrackRendererGeometry area = {-1, -1, -1, -1};
+ * trackrenderer_get_display(handle, &type, &area);
+ * //your logic
+ * trackrenderer_destroy(handle);
+ * @endcode
* @pre The trackrenderer must be at least created.
- * trackrenderer_create()
* @post None
* @exception None
* @remark None
+ * @see trackrenderer_create()
*/
int trackrenderer_set_display_surface(TrackRendererHandle handle,
TrackRendererDisplayType type,
* @return Return 0 if rendering object is successfully applied for
* displaying contents or stored for future displaying.
* Otherwise -1 if the trackrenderer is not even setup.
+ * @code
+ * trackrenderer_create(&handle);
+ * Environment* env = new Environment();
+ * TrackRendererDisplayType type =
+ * kTrackRendererDisplayTypeOverlay;
+ * trackrenderer_set_display(handle,type,env->Window());
+ * //your logic
+ * delete env;
+ * trackrenderer_destroy(handle);
+ * @endcode
* @pre The trackrenderer must be at least created.
- * trackrenderer_create()
* @post None
* @exception None
* @remark None
+ * @see trackrenderer_create()
*/
int trackrenderer_set_display(TrackRendererHandle handle,
TrackRendererDisplayType type, void* obj);
* applied for displaying contents or stored for future
* displaying.
* Otherwise -1 if the trackrenderer is not even setup.
+ * @code
+ * trackrenderer_create(&handle);
+ * trackrenderer_set_display_ecore_wl2_window(
+ * handle,kTrackRendererDisplayTypeOverlay,NULL,
+ * 0,0,1920,1080));
+ * //your logic
+ * trackrenderer_destroy(handle);
+ * @endcode
* @pre The trackrenderer must be at least created.
- * trackrenderer_create()
* @post None
* @exception None
* @remark None
+ * @see trackrenderer_create()
*/
int trackrenderer_set_display_ecore_wl2_window(TrackRendererHandle handle,
TrackRendererDisplayType type,
* @return Return 0 if rendering range is successfully set or
* rendering range is stored for future displaying.
* Otherwise -1 if the trackrenderer is not even setup.
+ * @code
+ * trackrenderer_create(&handle);
+ * trackrenderer_set_display_mode(
+ * handle, kTrackRendererDisplayModeDstRoi));
+ * TrackRendererGeometry roi = {0, 0, 1920, 1080};
+ * trackrenderer_set_display_roi(handle, &roi);
+ * //your logic
+ * trackrenderer_destroy(handle);
+ * @endcode
* @pre The trackrenderer must be at least created.
- * trackrenderer_create()
* The display mode should be set to
* kTrackRendererDisplayModeDstRoi.
- * trackrenderer_set_display_mode()
* @post None
* @exception None
* @remark The minimum value of width and height are 1.
+ * @see trackrenderer_create() \n
+ * trackrenderer_set_display_mode()
*/
int trackrenderer_set_display_roi(TrackRendererHandle handle,
TrackRendererGeometry* roi);
/**
- * @brief Set the Crop Area(Region Of Src ratio) area of display.
- * @param [in] handle : esplusplayer handle.
- * @param [in] crop: x y label , height, width crop ratio in src video area.
- * @return @c true on success, otherwise @c false.
- * @pre The player state can be all of #esplusplayer_state except
- * #ESPLUSPLAYER_STATE_NONE. \n
- * @post None
- * @exception None
- * @version 2.0
- * @remark The minimum value of input are 0,maximum value is 1.
- * @see esplusplayer_set_display() \n
- * esplusplayer_set_display_visible()
+ * @brief Set the Crop Area(Region Of Src ratio) area of display.
+ * @param [in] handle : esplusplayer handle.
+ * @param [in] crop: x y label , height, width crop ratio in src video area.
+ * @return @c true on success, otherwise @c false.
+ * @code
+ * trackrenderer_create(&handle);
+ * trackrenderer_set_display_mode(
+ * handle, kTrackRendererDisplayModeDstRoi));
+ * TrackRendererCropArea roi = {0.2, 0.2, 0.5, 0.5};
+ * trackrenderer_set_video_roi(handle, &roi));
+ * //your logic
+ * trackrenderer_destroy(handle);
+ * @endcode
+ * @pre The trackrenderer must be at least created and
+ * The player state can be all of #esplusplayer_state except
+ * #ESPLUSPLAYER_STATE_NONE.
+ * @post None
+ * @exception None
+ * @version 2.0
+ * @remark The minimum value of input are 0,maximun value is 1.
+ * @see trackrenderer_create() \n
+ * esplusplayer_set_display() \n
+ * esplusplayer_set_display_visible()
*/
int trackrenderer_set_video_roi(TrackRendererHandle handle,
TrackRendererCropArea* crop);
* @return Return 0 if visibility is updated or stored for future
* displaying.
* Otherwise -1 if the trackrenderer is not even setup.
+ * @code
+ * trackrenderer_create(&handle);
+ * trackrenderer_set_display_visible(handle, true);
+ * //your logic
+ * trackrenderer_destroy(handle);
+ * @endcode
* @pre The trackrenderer must be at least created.
- * trackrenderer_create()
* @post None
* @exception None
* @remark None
* @see This is similar to trackrenderer_set_audio_mute() for audio
+ * @see trackrenderer_create()
*/
int trackrenderer_set_display_visible(TrackRendererHandle handle,
bool is_visible);
* @param [in] handle : trackrenderer handle ptr.
* @param [out] type : display type
* @param [out] area : Roi Geometry
- * @pre None
+ * @code
+ * please refer to the sample code of
+ * trackrenderer_set_display_surface
+ * @endcode
+ * @pre The trackrenderer must be at least created.
* @post None
* @exception None
+ * @see trackrenderer_create() \n
+ * trackrenderer_set_display_surface()
*/
void trackrenderer_get_display(TrackRendererHandle handle,
TrackRendererDisplayType* type,
* contents.
* @param [in] handle : trackrenderer handle ptr.
* @param [out] mode : display mode
- * @pre None
+ * @code
+ * please refer to the sample code of
+ * trackrenderer_set_display_mode
+ * @endcode
+ * @pre The trackrenderer must be at least created.
* @post None
* @exception None
+ * @see trackrenderer_create() \n
+ * trackrenderer_set_display_mode()
*/
void trackrenderer_get_display_mode(TrackRendererHandle handle,
TrackRendererDisplayMode* mode);
* @return Return 0 if audio mute successfully turn into or stored for
* future playing.
* Otherwise -1 failed if the trackrenderer not even set up.
+ * @code
+ * trackrenderer_create(&handle);
+ * trackrenderer_set_audio_mute(handle, true);
+ * //your logic
+ * trackrenderer_destroy(handle);
+ * @endcode
* @pre The trackrenderer must be at least created.
- * trackrenderer_create()
* @post None
* @exception None
* @remark None
- * @see This is similar to trackrenderer_set_display_visible() for
- * video.
+ * @see trackrenderer_create()
*/
int trackrenderer_set_audio_mute(TrackRendererHandle handle, bool is_mute);
/**
- * (This is need to be checked whether it is using or not)
- * @brief Set trackrenderer video still mode
- * @param [in] handle : trackrenderer handle ptr.
- * @param [in] type : trackrenderer still mode on, off or non
- * @pre None
- * @post None
- * @exception None
+ * @brief Set trackrenderer video still mode
+ * @param [in] handle : trackrenderer handle ptr.
+ * @param [in] type : trackrenderer still mode on, off or non
+ * @code
+ * trackrenderer_create(&handle);
+ * trackrenderer_set_video_still_mode(handle,
+ * kTrackRendererStillModeOn);
+ * //your logic
+ * trackrenderer_destroy(handle);
+ * @endcode
+ * @pre The trackrenderer must be at least created.
+ * @post None
+ * @exception None
+ * @see trackrenderer_create()
*/
void trackrenderer_set_video_still_mode(TrackRendererHandle handle,
TrackRendererStillMode type);
* @brief Get trackrenderer current state
* @param [in] handle : trackrenderer handle ptr.
* @return Returns TrackRendererState.
- * @pre None
+ * @code
+ * trackrenderer_create(&handle);
+ * //your logic
+ * TrackRendererState state = trackrenderer_get_state(handle);
+ * //your logic
+ * trackrenderer_destroy(handle);
+ * @endcode
+ * @pre The trackrenderer must be at least created.
* @post None
* @exception None
+ * @see trackrenderer_create()
*/
TrackRendererState trackrenderer_get_state(TrackRendererHandle handle);
* @param [in] attr_name : name of first property to set.
* @param [in] ... : value for the first property, followed optionally by
* more name/value pairs, followed by NULL.
- * @pre None
- * @post None
- * @exception None
* @code
- * unsigned long long video_queue_size = 2 * 1024 * 1024; // 2MB
- * unsigned long long audio_queue_size = 100 * 1024; // 100KB
- * trackrenderer_set_attribute(handle,
- * "video-queue-max-byte", video_queue_byte,
- * "audio-queue-max-byte", audio_queue_byte,
- * NULL);
+ * trackrenderer_create(&handle);
+ * unsigned long long video_queue_size = 2 * 1024 * 1024; // 2MB
+ * unsigned long long audio_queue_size = 100 * 1024; // 100KB
+ * trackrenderer_set_attribute(handle,
+ * "video-queue-max-byte", video_queue_byte,
+ * "audio-queue-max-byte", audio_queue_byte,
+ * NULL);
+ * //your logic
+ * trackrenderer_destroy(handle);
* @endcode
+ * @pre The trackrenderer must be at least created.
+ * @post None
+ * @exception None
* @remark a name of attribute and a type of value must be paired. \n
* if you set wrong type of attribute, unknown error can occur.
* \n if trackrenderer can't parse attr_name, assertion
* will be failed.
- * @see If you want to know what kinds of attribute are there, please
+ * @see trackrenderer_create() \n
+ * If you want to know what kinds of attribute are there, please
* refer this link: \n
* http://wiki.vd.sec.samsung.net/display/plusplayer/TrackRenderer+Attribute
*/
* @param [in] attr_name : name of first property to set.
* @param [in] ... : value for the first property, followed optionally by
* more name/value pairs, followed by NULL.
+ * @code
+ * trackrenderer_create(&handle);
+ * unsigned long long video_current_byte;
+ * unsigned long long audio_current_byte;
+ * trackrenderer_get_attribute(handle,
+ * "video-current-level-byte", &video_current_byte,
+ * "audio-current-level-byte", &audio_current_byte,
+ * NULL);
+ * //your logic
+ * trackrenderer_destroy(handle);
+ * @endcode
* @pre None
* @post None
* @exception None
- * @version 2.0
- * @code
- * unsigned long long video_current_byte;
- * unsigned long long audio_current_byte;
- * trackrenderer_get_attribute(handle,
- * "video-current-level-byte", &video_current_byte,
- * "audio-current-level-byte", &audio_current_byte,
- * NULL);
- * @endcode
+ * @version 2.0
* @remark a name of attribute and a type of value must be paired. \n
* if you set wrong type of attribute, unknown error can occur.
* \n if trackrenderer can't parse attr_name, assertion
* will be failed.
- * @see If you want to know what kinds of attribute are there, please
+ * @see trackrenderer_create() \n
+ * If you want to know what kinds of attribute are there, please
* refer this link: \n
* http://wiki.vd.sec.samsung.net/display/plusplayer/TrackRenderer+Attribute
*/
* @param [in] color_info : matroska color info
* @return Return 0 if no problem.
* Otherwise -1 if the trackrenderer is not even set up.
+ * @code
+ * //prepare trackrenderer hanle
+ * //your logic
+ * std::string color = "red";
+ * trackrenderer_set_matroska_color_info(handle, color.c_str());
+ * //your logic
+ * trackrenderer_stop(handle);
+ * @endcode
* @pre The trackrenderer must be at least created and set up.
- * trackrenderer_create()
- * trackrenderer_prepare()
* @post None
* @exception None
+ * @see trackrenderer_create() \n
+ * trackrenderer_prepare()
*/
int trackrenderer_set_matroska_color_info(TrackRendererHandle handle,
const char* color_info);
/**
- * @brief Set decoded video frame buffer type.
+ * @brief Set decoded video frame buffer type.
* @param [in] handle : trackrenderer handle ptr.
* @param [in] type : one of the video decoded buffer type to set .
- * @pre The trackrenderer must be at least created but before prepare.
- * trackrenderer_create()
- * @post None
- * @exception None
- * @version 2.0
+ * @pre The trackrenderer must be at least created, but before prepare
+ * if type is not equal to be
+ * kTrackRendererDecodedVideoFrameBufferScale.
+ * @code
+ * trackrenderer_create(&handle);
+ * trackrenderer_set_video_frame_buffer_type(handle,
+ * kTrackRendererDecodedVideoFrameBufferReference);
+ * //your logic
+ * trackrenderer_prepare(handle);
+ * //your logic
+ * @endcode
+ * @pre The trackrenderer must be at least created and set up.
+ * @post None
+ * @exception None
+ * @version 2.0
+ * @see trackrenderer_create()
*/
void trackrenderer_set_video_frame_buffer_type(
TrackRendererHandle handle, TrackRendererDecodedVideoFrameBufferType type);
* @param [in] volume : volume level(0 ~ 100)
* @return Return 0 if no problem.
* Otherwise -1 if the trackrenderer is not created.
+ * @code
+ * trackrenderer_create(&handle);
+ * int volume = 65;
+ * trackrenderer_set_volume(handle, volume));
+ * //your logic
+ * trackrenderer_destroy(handle);
+ * @endcode
* @pre The trackrenderer must be at least created.
- * trackrenderer_create()
* @post None
- * @version 2.0
+ * @version 2.0
* @exception None
+ * @see trackrenderer_create()
*/
int trackrenderer_set_volume(TrackRendererHandle handle, const int volume);
* @param [out] volume : volume ptr
* @return Return 0 if no problem.
* Otherwise -1 if the trackrenderer is not created.
+ * @code
+ * trackrenderer_create(&handle);
+ * //your logic
+ * int volume = 0;
+ * trackrenderer_get_volume(handle, &volume));
+ * //your logic
+ * trackrenderer_destroy(handle);
+ * @endcode
* @pre The trackrenderer must be at least created.
- * trackrenderer_create()
* @post None
- * @version 2.0
+ * @version 2.0
* @exception None
+ * @see trackrenderer_create()
*/
int trackrenderer_get_volume(TrackRendererHandle handle, int* volume);
* @param [in] callback : trackrenderer_error_cb function
* @param [in] userdata : userdata of trackrenderer_error_cb callback
* function.
- * @pre None
+ * @code
+ * static void ErrorCb(const TrackRendererErrorType error_code,
+ * UserData userdata) {
+ * //Something you want to do when Receive error
+ * printf("Receive error\n");
+ * }
+ * trackrenderer_create(&handle);
+ * trackrenderer_set_error_cb(handle, ErrorCb, nullptr);
+ * //your logic
+ * trackrenderer_destroy(handle);
+ * @endcode
+ * @pre The trackrenderer must be at least created
* @post When there is error event, trackrenderer_error_cb() is called.
* @exception None
* @remark trackrenderer_error_cb \n
* [in] error_code : enum TrackRendererErrorType\n
* [in] userdata : userdata of trackrenderer_error_cb
* callback function.
+ * @see trackrenderer_create() \n
+ * trackrenderer_error_cb
*/
void trackrenderer_set_error_cb(TrackRendererHandle handle,
trackrenderer_error_cb callback,
* @param [in] callback : trackrenderer_resource_conflicted_cb ptr.
* @param [in] userdata : userdata of
* trackrenderer_resource_conflicted_cb callback function.
- * @pre None
+ * @code
+ * static void ResourceConflictCb(UserData userdata) {
+ * //Something you want to do when Resource Conflict
+ * printf("Receive Resource Conflict message\n");
+ * }
+ * trackrenderer_create(&handle);
+ * trackrenderer_set_resourceconflict_cb(handle,
+ * ResourceConflictCb, nullptr);
+ * //your logic
+ * trackrenderer_destroy(handle);
+ * @endcode
+ * @pre The trackrenderer must be at least created
* @post When there is resource conflict, the
* trackrenderer_resource_conflicted_cb will notify the resource
* conflict message to manage the resource.
* @remark trackrenderer_resource_conflicted_cb \n
* [in] userdata : userdata of
* trackrenderer_resource_conflicted_cb callback function.
+ * @see trackrenderer_create() \n
+ * trackrenderer_resource_conflicted_cb
*/
void trackrenderer_set_resourceconflict_cb(
TrackRendererHandle handle, trackrenderer_resource_conflicted_cb callback,
* @param [in] callback : trackrenderer_seekdone_cb ptr.
* @param [in] userdata : userdata of trackrenderer_seekdone_cb callback
* function.
- * @pre None
+ * @code
+ * refer to the sample code of trackrenderer_seek()
+ * @endcode
+ * @pre The trackrenderer must be at least created
* @post When seek done, app will handle the trackrenderer_seekdone_cb
* to decide next operation.
* @exception None
* @remark trackrenderer_seekdone_cb \n
* [in] userdata : userdata of trackrenderer_seekdone_cb callback
* function.
+ * @see trackrenderer_create() \n
+ * trackrenderer_seekdone_cb
*/
void trackrenderer_set_seekdone_cb(TrackRendererHandle handle,
trackrenderer_seekdone_cb callback,
* @param [in] callback : trackrenderer_flushdone_cb ptr.
* @param [in] userdata : userdata of trackrenderer_flushdone_cb callback
* function.
- * @pre None
+ * @code
+ * refer to the sample code of trackrenderer_flush()
+ * @endcode
+ * @pre The trackrenderer must be at least created
* @post When flush done, app will handle the trackrenderer_flushdone_cb
* to decide next operation.
* @exception None
- * @version 2.0
+ * @version 2.0
* @remark trackrenderer_flushdone_cb \n
* [in] userdata : userdata of trackrenderer_flushdone_cb callback
* function.
+ * @see trackrenderer_create() \n
+ * trackrenderer_flushdone_cb
*/
void trackrenderer_set_flushdone_cb(TrackRendererHandle handle,
trackrenderer_flushdone_cb callback,
void* userdata);
-
/**
- * @brief Set resolution change event callback function
- * @description In this function set resolution change event callback to
- * handle the event. If there is resolution change event,
- * trackrenderer_event_cb will be called to notify resolution is
- changed.
- * The resolution info will be shared.
+ * @brief Set event callback function
+ * @description In this function set event callback to get event information.
+ * If a specific event occurs, trackrenderer_event_cb will be
+ * called to notify it with event information.
* @param [in] handle : trackrenderer handle ptr.
* @param [in] callback : trackrenderer_event_cb ptr.
- * @param [in] userdata : userdata of trackrenderer_event_cb callback
- function.
- * @pre None
- * @post When resolution is changed, call trackrenderer_event_cb to
- notice that
- * resolution has been changed.
+ * @param [in] userdata : userdata of trackrenderer_event_cb
+ * callback function.
+ * @code
+ * static void OnEventCb(const TrackRendererEventType event_type,
+ * const TrackrendererEventMsg msg_data,UserData userdata) {
+ * //Something you want to do when the event occurs
+ * }
+ * trackrenderer_create(&handle);
+ * trackrenderer_set_event_cb(handle,OnEventCb, nullptr);
+ * //your logic
+ * trackrenderer_destroy(handle);
+ * @endcode
+ * @pre The trackrenderer must be at least created
+ * @post App can get the information of the event that occured.
* @version 2.0
* @exception None
* @remark trackrenderer_event_cb
- [in] event_type : Resolution change event type.
- [in] msg_data : Resolution info.
- [in] userdata : userdata of trackrenderer_event_cb callback
+ * [in] event_type : event type that occured.
+ * [in] msg_data : event message data.
+ * [in] userdata : userdata of trackrenderer_event_cb callback
* function.
+ * @see trackrenderer_create() \n
+ * trackrenderer_event_cb
*/
void trackrenderer_set_event_cb(TrackRendererHandle handle,
trackrenderer_event_cb callback,
void* userdata);
/**
* @brief Set subtitle callback function
- * @description In this function set subtitle callback to handle the
- * subtitle. If there is subtitle to display
- * trackrenderer_subtitle_rawdata_cb will be called to notify there is subtitle
- * to display. The subtitle whole raw data will be shared. If user get this
- * callback and want to display the subtitle, user should get subtitle
- * informations from shared raw data.
+ * @description In this function set subtitle callback to handle the subtitle.
+ * If there is subtitle to display trackrenderer_subtitle_rawdata_cb
+ * will be called to notify there is subtitle to display.
+ * The subtitle whole raw data will be shared. If user get this
+ * callback and want to display the subtitle, user should get
+ * subtitle informations from shared raw data.
* @param [in] handle : trackrenderer handle ptr.
* @param [in] callback : trackrenderer_subtitle_rawdata_cb ptr.
* @param [in] userdata : userdata of
* trackrenderer_subtitle_rawdata_cb callback function.
- * @pre None
+ * @code
+ * static void SubtitleRawDataCb(TrackRendererDecoderInputBuffer* buf,
+ * const TrackRendererSubtitleType type,
+ * UserData userdata) {
+ * //Something you want to do when there is subtitle data
+ * }
+ * trackrenderer_create(&handle);
+ * trackrenderer_set_subtitle_rawdata_cb(handle,SubtitleRawDataCb,nullptr);
+ * //your logic
+ * trackrenderer_destroy(handle);
+ * @endcode
+ * @pre The trackrenderer must be at least created
* @post When there is subtitledata, call
* trackrenderer_subtitle_rawdata_cb to notice that there is
* subtitle needed to be displayed.
* [in] type : subtitle type (text or picture) \n
* [in] userdata : userdata of
* trackrenderer_subtitle_rawdata_cb callback function.
+ * @see trackrenderer_create() \n
+ * trackrenderer_subtitle_rawdata_cb
*/
void trackrenderer_set_subtitle_rawdata_cb(
TrackRendererHandle handle, trackrenderer_subtitle_rawdata_cb callback,
* @description (deprecated) In this function set subtitle callback to handle
* the subtitle. If there is subtitle to display
* trackrenderer_subtitledata_cb will be called to notify there
- * is subtitle to display. If user get this callback and want to display the
- * subtitle, user can use the shared subtitle informations.
+ * is subtitle to display. If user get this callback and want to display the
+ * subtitle, user can use the shared subtitle informations.
* @param [in] handle : trackrenderer handle ptr.
* @param [in] callback : trackrenderer_subtitledata_cb ptr.
* @param [in] userdata : userdata of trackrenderer_subtitledata_cb
* callback function.
- * @pre None
+ * @code
+ * static void SubtitleDataCb(const char* data, const int size,
+ * const TrackRendererSubtitleType type,
+ * const unsigned long long duration,
+ * TrackRendererSubtitleAttr* attr_list,
+ * int attr_list_size, UserData userdata) {
+ * //Something you want to do when there is subtitle data
+ * }
+ * trackrenderer_create(&handle);
+ * trackrenderer_set_subtitledata_cb(handle,SubtitleDataCb,nullptr);
+ * //your logic
+ * trackrenderer_destroy(handle);
+ * @endcode
+ * @pre The trackrenderer must be at least created
* @post When there is subtitledata, call
- * trackrenderer_subtitledata_cb to notice that there is subtitle needed to be
- * displayed.
+ * trackrenderer_subtitledata_cb to notice that there is subtitle needed to be
+ * displayed.
* @exception None
* @remark trackrenderer_subtitledata_cb \n
* [in] data : subtitle data \n
* [in] type : subtitle type (text or picture) \n
* [in] duration : subtitle duration (ms) \n
* [in] attr_list : list of subtitle attribute \n
- * [in] attr_list_size : length of subtitle attribute \n
+ * [in] attr_list_size : length of subtite attribute \n
* [in] userdata : userdata of trackrenderer_subtitledata_cb
* callback function.
+ * @see trackrenderer_create() \n
+ * trackrenderer_subtitledata_cb
*/
void trackrenderer_set_subtitledata_cb(TrackRendererHandle handle,
trackrenderer_subtitledata_cb callback,
/**
* @brief Set EOS callback function
* @description In this function set EOS callback to handle EOS. If the
- * playing contents meet EOS, trackrenderer_eos_cb will be called to notify
- * the contents end.
+ * playing contents meet EOS, trackrenderer_eos_cb will be called
+ * to notify the contents end.
* @param [in] handle : trackrenderer handle ptr.
* @param [in] callback : trackrenderer_eos_cb ptr.
* @param [in] userdata : userdata of trackrenderer_eos_cb callback
* function.
- * @pre None
- * @post When contents meet EOS, the trackrenderer_eos_cb will be
+ * @code
+ * static void EosCb(UserData userdata) {
+ * //Something you want to do when contents meet EOS
+ * printf("EOS received\n");
+ * }
+ * trackrenderer_create(&handle);
+ * trackrenderer_set_eos_cb(handle,EosCb,nullptr);
+ * //your logic
+ * trackrenderer_destroy(handle);
+ * @endcode
+ * @pre The trackrenderer must be at least created
+ * @post When contents meet EOS, the trackrenderer_eos_cb will be
* called
* @exception None
* @remark trackrenderer_eos_cb \n
* [in] userdata : userdata of trackrenderer_eos_cb callback
* function.
+ * @see trackrenderer_create() \n
+ * trackrenderer_eos_cb
*/
void trackrenderer_set_eos_cb(TrackRendererHandle handle,
trackrenderer_eos_cb callback, void* userdata);
* @param [in] callback : trackrenderer_closedcaption_cb ptr.
* @param [in] userdata : userdata of trackrenderer_closedcaption_cb
* callback function.
- * @pre None
+ * @code
+ * static void ClosedCaptionDataCb(const char* data,
+ * const int size, UserData userdata) {
+ * //Something you want to do when there is closed
+ * caption needed to be displayed
+ * }
+ * trackrenderer_create(&handle);
+ * trackrenderer_set_closedcaption_cb(handle,ClosedCaptionDataCb,nullptr);
+ * //your logic
+ * trackrenderer_destroy(handle);
+ * @endcode
+ * @pre The trackrenderer must be at least created
* @post When there is closed caption data, call
- * trackrenderer_closedcaption_cb to notify that there is closed
+ * trackrenderer_closedcaption_cb to nofity that there is closed
* caption needed to be displayed.
* @exception None
* @remark trackrenderer_closedcaption_cb \n
* [in] size : length of closedcaption data \n
* [in] userdata : userdata of trackrenderer_closedcaption_cb
* callback function.
+ * @see trackrenderer_create() \n
+ * trackrenderer_closedcaption_cb
*/
void trackrenderer_set_closedcaption_cb(TrackRendererHandle handle,
trackrenderer_closedcaption_cb callback,
* @brief Set drm initialize data callback function.
* @description In this function set drm initialize data callback. If
* trackrenderer detected any informations which need to
- * initiate drm, the trackrenderer_drminitdata_cb is called to share the drm
- * informations for decryption.
+ * initiate drm, the trackrenderer_drminitdata_cb is called to
+ * share the drm informations for dectyption.
* @param [in] handle : trackrenderer handle ptr.
* @param [in] callback : trackrenderer_drminitdata_cb ptr.
* @param [in] userdata : userdata of trackrenderer_drminitdata_cb
* callback function.
- * @pre None
+ * @code
+ * static void DrmInitDataCb(int* drmhandle,unsigned int len,
+ * unsigned char* psshdata, TrackRendererTrackType type,
+ * UserData userdata) {
+ * //Something you want to do when detect any drm data
+ * printf("drm data received\n");
+ * }
+ * trackrenderer_create(&handle);
+ * trackrenderer_set_drminitdata_cb(handle,DrmInitDataCb,nullptr);
+ * //your logic
+ * trackrenderer_destroy(handle);
+ * @endcode
+ * @pre The trackrenderer must be at least created
* @post When the trackrenderer detect any drm data, call
* trackrenderer_drminitdata_cb function to share the init data.
- * @exception None
+ * @exception The trackrenderer must be at least created
* @remark trackrenderer_drminitdata_cb \n
* [in] drmhandle : drm handle \n
* [in] len : pssh data length \n
* [in] type : track type \n
* [in] userdata : userdata of trackrenderer_drminitdata_cb
* callback function.
+ * @see trackrenderer_create() \n
+ * trackrenderer_set_drminitdata_cb
*/
void trackrenderer_set_drminitdata_cb(TrackRendererHandle handle,
trackrenderer_drminitdata_cb callback,
* @brief Set current buffer status call back function
* @description In this function set buffer status callback function. If
* trackrenderer detected that there is not enough data or full
- * at trackrenderer buffer, call trackrenderer_bufferstatus_cb to let user
- * know what current buffer status is.
+ * at trackrenderer buffer, call trackrenderer_bufferstatus_cb
+ * to let user know what current buffer status is.
* @param [in] handle : trackrenderer handle ptr.
* @param [in] callback : trackrenderer_bufferstatus_cb ptr.
* @param [in] userdata : userdata of trackrenderer_bufferstatus_cb
* callback function.
- * @pre None
+ * @code
+ * refer to the sample code of trackrenderer_submit_packet()
+ * @endcode
+ * @pre The trackrenderer must be at least created
* @post When trackrenderer buffer status has changed to not enough or
* full, call trackrenderer_bufferstatus_cb()
* @exception None
* @remark trackrenderer_bufferstatus_cb \n
* [in] type : track type \n
* [in] status : trackrenderer buffer status \n
+ * @see trackrenderer_create() \n
+ * trackrenderer_bufferstatus_cb
*/
void trackrenderer_set_bufferstatus_cb(TrackRendererHandle handle,
trackrenderer_bufferstatus_cb callback,
* @brief Set seek data callback function
* @description In this function set seek data callback function. After
* flushing currently buffered data and trackrenderer is ready
- * to get new seeked position segment data, the trackrenderer_seekdata_cb is
- * called. If get this callback, user can know the time to push new segment
- * data.
+ * to get new seeked position segment data, the
+ * trackrenderer_seekdata_cb is called. If get this callback,
+ * user can know the time to push new segment data.
* @param [in] handle : trackrenderer handle ptr.
* @param [in] callback : trackrenderer_seekdata_cb ptr.
* @param [in] userdata : userdata of trackrenderer_seekdata_cb
- * callback function.
- * @pre None
+ * callback function.
+ * @code
+ * please refer to the sample code of trackrenderer_seek()
+ * @endcode
+ * @pre The trackrenderer must be at least created
* @post When trackrenderer finish to flush the buffered data for seek
* operation, call trackrenderer_seekdata_cb .
* @exception None
* @remark trackrenderer_seekdata_cb \n
* [in] type : track type \n
* [in] offset : the new seeked position \n
+ * @see trackrenderer_create() \n
+ * trackrenderer_seekdata_cb
*/
void trackrenderer_set_seekdata_cb(TrackRendererHandle handle,
trackrenderer_seekdata_cb callback,
* callback.
* @param [in] handle : trackrenderer handle ptr.
* @param [in] media_packet_video_decoded_cb :
- * trackrenderer_media_packet_video_decoded_cb ptr.
+ * trackrenderer_media_packet_video_decoded_cb ptr.
* @param [in] userdata : userdata of media_packet_video_decoded_cb
* callback function.
- * @pre None
- * @version 2.0
+ * @pre The trackrenderer must be at least created
+ * @version 2.0
* @post When trackrenderer decoded video buffer, call
- * trackrenderer_media_packet_video_decoded_cb .
+ * trackrenderer_media_packet_video_decoded_cb .
* @exception None
* @remark trackrenderer_media_packet_video_decoded_cb \n
* [in] packet : packet including decoded buffer \n
+ * @see trackrenderer_create() \n
+ * trackrenderer_media_packet_video_decoded_cb
*/
void trackrenderer_set_media_packet_video_decoded_cb(
TrackRendererHandle handle,