Qt::AspectRatioMode QXAVideoWindowControl::aspectRatioMode() const
{
    QT_TRACE_FUNCTION_ENTRY;
    RET_s_IF_p_IS_NULL(mSession, Qt::IgnoreAspectRatio);
    QT_TRACE_FUNCTION_EXIT;
    return mSession->getAspectRatioMode();
}
QMediaContent QXAMediaPlayerControl::media() const
{
    QT_TRACE_FUNCTION_ENTRY;
    QMediaContent retVal;
    RET_s_IF_p_IS_NULL(mSession, retVal);
    retVal = mSession->media();
    QT_TRACE_FUNCTION_EXIT;
    return retVal;
}
QVariant QXAMetaDataControl::extendedMetaData(const QString & key ) const
{
    QVariant var;
    RET_s_IF_p_IS_NULL(mSession, var);
    QT_TRACE_FUNCTION_ENTRY;
    var = mSession->extendedMetaData(key);
    QT_TRACE_FUNCTION_EXIT;
    return var;
}
QStringList QXAMetaDataControl::availableExtendedMetaData ()const
{    
    QStringList list;
    RET_s_IF_p_IS_NULL(mSession, list);
    QT_TRACE_FUNCTION_ENTRY;
    list = mSession->availableExtendedMetaData();
    QT_TRACE_FUNCTION_EXIT;
    return list;
}
QList<QtMultimediaKit::MetaData>  QXAMetaDataControl::availableMetaData () const
{
    QList<QtMultimediaKit::MetaData> list;
    RET_s_IF_p_IS_NULL(mSession, list);
    QT_TRACE_FUNCTION_ENTRY;
    list = mSession->availableMetaData();
    QT_TRACE_FUNCTION_EXIT;
    return list;
}
QMediaPlayer::MediaStatus QXAMediaPlayerControl::mediaStatus() const
{
    QT_TRACE_FUNCTION_ENTRY;
    QMediaPlayer::MediaStatus retVal = QMediaPlayer::NoMedia;
    RET_s_IF_p_IS_NULL(mSession, retVal);
    retVal = mSession->mediaStatus();
    QT_TRACE_FUNCTION_EXIT;
    return retVal;
}
QVariant QXAMetaDataControl::metaData( QtMultimediaKit::MetaData key ) const
{
    QVariant var;
    RET_s_IF_p_IS_NULL(mSession, var);
    QT_TRACE_FUNCTION_ENTRY;
    var = mSession->metaData(key);
    QT_TRACE_FUNCTION_ENTRY_EXIT;
    return var;
}
QVariant  QXAMediaStreamsControl::metaData (int stream, QtMultimediaKit::MetaData key)
{
    QVariant var;
    RET_s_IF_p_IS_NULL(mSession, var);
    QT_TRACE_FUNCTION_ENTRY;
    var = mSession->metaData(stream, key);
    QT_TRACE_FUNCTION_EXIT;
    return var;
}
bool QXAMediaPlayerControl::isSeekable() const
{
    QT_TRACE_FUNCTION_ENTRY;
    bool retVal = false;
    RET_s_IF_p_IS_NULL(mSession, retVal);
    retVal = mSession->isSeekable();
    QT_TRACE_FUNCTION_EXIT;
    return retVal;
}
float QXAMediaPlayerControl::playbackRate() const
{
    QT_TRACE_FUNCTION_ENTRY;
    float retVal = 0;
    RET_s_IF_p_IS_NULL(mSession, retVal);
    retVal = mSession->playbackRate();
    QT_TRACE_FUNCTION_EXIT;
    return retVal;
}
int QXAMediaPlayerControl::bufferStatus() const
{
    QT_TRACE_FUNCTION_ENTRY;
    int retVal = 0;
    RET_s_IF_p_IS_NULL(mSession, retVal);
    retVal = mSession->bufferStatus();
    QT_TRACE_FUNCTION_EXIT;
    return retVal;
}
qint64 QXAMediaPlayerControl::position() const
{
    QT_TRACE_FUNCTION_ENTRY;
    qint64 retVal = 0;
    RET_s_IF_p_IS_NULL(mSession, retVal);
    retVal = mSession->position();
    QT_TRACE_FUNCTION_EXIT;
    return retVal;
}
QMediaPlayer::State QXAMediaPlayerControl::state() const
{
    QT_TRACE_FUNCTION_ENTRY;
    QMediaPlayer::State retVal = QMediaPlayer::StoppedState;
    RET_s_IF_p_IS_NULL(mSession, retVal);
    retVal = mSession->state();
    QT_TRACE_FUNCTION_EXIT;
    return retVal;
}
QMediaTimeRange QXAMediaPlayerControl::availablePlaybackRanges() const
{
    QT_TRACE_FUNCTION_ENTRY;
    QMediaTimeRange retVal;
    RET_s_IF_p_IS_NULL(mSession, retVal);
    if (mSession->isSeekable())
        retVal.addInterval(0, mSession->duration());
    QT_TRACE_FUNCTION_EXIT;
    return retVal;
}
QSize QXAVideoWindowControl::nativeSize() const
{
    QT_TRACE_FUNCTION_ENTRY;    
    QSize size(0, 0);
    RET_s_IF_p_IS_NULL(mSession, size);
    QVariant sizeBundle = mSession->metaData(QtMultimediaKit::Resolution);
    QString metadata = sizeBundle.toString();
    if (!metadata.isNull() && !metadata.isEmpty()) {
        int xIndex = metadata.indexOf('x');
        if (xIndex > 0) {
            size.setWidth(metadata.left(xIndex).toInt());
            xIndex = metadata.length() - (xIndex + 1);
            if (xIndex > 0)
                size.setHeight(metadata.right(xIndex).toInt());
        }
    }    
    QT_TRACE_FUNCTION_EXIT;
    return size;
}
bool QXAMetaDataControl::isMetaDataAvailable() const
{
    RET_s_IF_p_IS_NULL(mSession, false);
    QT_TRACE_FUNCTION_ENTRY_EXIT;
    return mSession->isMetaDataAvailable();
}
QMediaStreamsControl::StreamType QXAMediaStreamsControl::streamType (int stream)
{
    RET_s_IF_p_IS_NULL(mSession, QMediaStreamsControl::UnknownStream);
    return mSession->streamType(stream);
}
bool  QXAMediaStreamsControl::isActive (int stream)
{
    RET_s_IF_p_IS_NULL(mSession, false);
    return mSession->isStreamActive(stream);
}
int  QXAMediaStreamsControl::streamCount()
{
    RET_s_IF_p_IS_NULL(mSession, 0);
    return mSession->streamCount();
}