Added documentation for the convenience Video element
Change-Id: I1963e312c65ec4cc91a54410e86f0606a285086c Reviewed-by: Angus Cummings <angus.cummings@nokia.com> Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
This commit is contained in:
@@ -42,37 +42,249 @@
|
|||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
import QtMultimedia 5.0
|
import QtMultimedia 5.0
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlclass Video
|
||||||
|
\inherits Item
|
||||||
|
\ingroup multimedia_qml
|
||||||
|
\brief A convenience element for showing a specified video
|
||||||
|
|
||||||
|
The \c Video element is a convenience element combining the functionality
|
||||||
|
of the \l MediaPlayer and \l VideoOutput elements into one. It provides
|
||||||
|
simple video playback functionality without having to specify multiple
|
||||||
|
elements.
|
||||||
|
|
||||||
|
\qml
|
||||||
|
import QtQuick 2.0
|
||||||
|
import QtMultimedia 5.0
|
||||||
|
|
||||||
|
Video {
|
||||||
|
id: video
|
||||||
|
width : 800
|
||||||
|
height : 600
|
||||||
|
source: "video.avi"
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
anchors.fill: parent
|
||||||
|
onClicked: {
|
||||||
|
video.play()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
focus: true
|
||||||
|
Keys.onSpacePressed: video.paused = !video.paused
|
||||||
|
Keys.onLeftPressed: video.position -= 5000
|
||||||
|
Keys.onRightPressed: video.position += 5000
|
||||||
|
}
|
||||||
|
\endqml
|
||||||
|
|
||||||
|
The Video element supports untransformed, stretched, and uniformly scaled
|
||||||
|
video presentation. For a description of stretched uniformly scaled
|
||||||
|
presentation, see the \l fillMode property description.
|
||||||
|
|
||||||
|
\sa MediaPlayer, VideoOutput
|
||||||
|
*/
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
id: video
|
id: video
|
||||||
|
|
||||||
/*** Properties of VideoOutput ***/
|
/*** Properties of VideoOutput ***/
|
||||||
|
/*!
|
||||||
|
\qmlproperty enumeration Video::fillMode
|
||||||
|
|
||||||
|
Set this property to define how the video is scaled to fit the target
|
||||||
|
area.
|
||||||
|
|
||||||
|
\list
|
||||||
|
\o stretch - the video is scaled to fit.
|
||||||
|
\o preserveAspectFit - the video is scaled uniformly to fit without
|
||||||
|
cropping
|
||||||
|
\o preserveAspectCrop - the video is scaled uniformly to fill, cropping
|
||||||
|
if necessary
|
||||||
|
\endlist
|
||||||
|
|
||||||
|
Because this element is a convenience element in QML, it does not
|
||||||
|
support enumerations directly. In contrast to \l VideoOutput and other
|
||||||
|
elements, the values to set for fillMode all start with lowercase
|
||||||
|
letters to work around this.
|
||||||
|
|
||||||
|
The default fill mode is preserveAspectFit.
|
||||||
|
*/
|
||||||
property alias fillMode: videoOut.fillMode
|
property alias fillMode: videoOut.fillMode
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty int Video::orientation
|
||||||
|
|
||||||
|
The orientation of the Video element in degrees. Only multiples of 90
|
||||||
|
degrees is supported, that is 0, 90, 180, 270, 360, etc.
|
||||||
|
*/
|
||||||
property alias orientation: videoOut.orientation
|
property alias orientation: videoOut.orientation
|
||||||
|
|
||||||
|
/* Properties to emulate enumeration for fillMode, documented above */
|
||||||
|
/*! \internal */
|
||||||
readonly property int stretch: VideoOutput.Stretch
|
readonly property int stretch: VideoOutput.Stretch
|
||||||
|
/*! \internal */
|
||||||
readonly property int preserveAspectFit: VideoOutput.PreserveAspectFit
|
readonly property int preserveAspectFit: VideoOutput.PreserveAspectFit
|
||||||
|
/*! \internal */
|
||||||
readonly property int preserveAspectCrop: VideoOutput.PreserveAspectCrop
|
readonly property int preserveAspectCrop: VideoOutput.PreserveAspectCrop
|
||||||
|
|
||||||
|
|
||||||
/*** Properties of MediaPlayer ***/
|
/*** Properties of MediaPlayer ***/
|
||||||
|
/*!
|
||||||
|
\qmlproperty url Video::autoLoad
|
||||||
|
|
||||||
|
This property indicates if loading of media should begin immediately.
|
||||||
|
|
||||||
|
Defaults to true, if false media will not be loaded until playback is
|
||||||
|
started.
|
||||||
|
*/
|
||||||
property alias autoLoad: player.autoLoad
|
property alias autoLoad: player.autoLoad
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty real Video::bufferProgress
|
||||||
|
|
||||||
|
This property holds how much of the data buffer is currently filled,
|
||||||
|
from 0.0 (empty) to 1.0
|
||||||
|
(full).
|
||||||
|
*/
|
||||||
property alias bufferProgress: player.bufferProgress
|
property alias bufferProgress: player.bufferProgress
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty int Video::duration
|
||||||
|
|
||||||
|
This property holds the duration of the media in milliseconds.
|
||||||
|
|
||||||
|
If the media doesn't have a fixed duration (a live stream for example)
|
||||||
|
this will be 0.
|
||||||
|
*/
|
||||||
property alias duration: player.duration
|
property alias duration: player.duration
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty enumeration Video::error
|
||||||
|
|
||||||
|
This property holds the error state of the video. It can be one of:
|
||||||
|
|
||||||
|
\list
|
||||||
|
\o NoError - there is no current error.
|
||||||
|
\o ResourceError - the video cannot be played due to a problem
|
||||||
|
allocating resources.
|
||||||
|
\o FormatError - the video format is not supported.
|
||||||
|
\o NetworkError - the video cannot be played due to network issues.
|
||||||
|
\o AccessDenied - the video cannot be played due to insufficient
|
||||||
|
permissions.
|
||||||
|
\o ServiceMissing - the video cannot be played because the media
|
||||||
|
service could not be
|
||||||
|
instantiated.
|
||||||
|
\endlist
|
||||||
|
*/
|
||||||
property alias error: player.error
|
property alias error: player.error
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty string Video::errorString
|
||||||
|
|
||||||
|
This property holds a string describing the current error condition in more detail.
|
||||||
|
*/
|
||||||
property alias errorString: player.errorString
|
property alias errorString: player.errorString
|
||||||
|
|
||||||
|
/* documented below due to length of metaData documentation */
|
||||||
property alias metaData: player.metaData
|
property alias metaData: player.metaData
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty bool Video::muted
|
||||||
|
|
||||||
|
This property holds whether the audio output is muted.
|
||||||
|
*/
|
||||||
property alias muted: player.muted
|
property alias muted: player.muted
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty bool Video::paused
|
||||||
|
|
||||||
|
This property holds whether the media is paused.
|
||||||
|
|
||||||
|
Defaults to false, and can be set to true to pause playback.
|
||||||
|
*/
|
||||||
property alias paused: player.paused
|
property alias paused: player.paused
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty real Video::playbackRate
|
||||||
|
|
||||||
|
This property holds the rate at which video is played at as a multiple
|
||||||
|
of the normal rate.
|
||||||
|
*/
|
||||||
property alias playbackRate: player.playbackRate
|
property alias playbackRate: player.playbackRate
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty bool Video::playing
|
||||||
|
|
||||||
|
This property holds whether the media is playing.
|
||||||
|
|
||||||
|
Defaults to false, and can be set to true to start playback.
|
||||||
|
*/
|
||||||
property alias playing: player.playing
|
property alias playing: player.playing
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty int Video::position
|
||||||
|
|
||||||
|
This property holds the current playback position in milliseconds.
|
||||||
|
*/
|
||||||
property alias position: player.position
|
property alias position: player.position
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty bool Video::seekable
|
||||||
|
|
||||||
|
This property holds whether the playback position of the video can be
|
||||||
|
changed.
|
||||||
|
*/
|
||||||
property alias seekable: player.seekable
|
property alias seekable: player.seekable
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty url Video::source
|
||||||
|
|
||||||
|
This property holds the source URL of the media.
|
||||||
|
*/
|
||||||
property alias source: player.source
|
property alias source: player.source
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty enumeration Video::status
|
||||||
|
|
||||||
|
This property holds the status of media loading. It can be one of:
|
||||||
|
|
||||||
|
\list
|
||||||
|
\o NoMedia - no media has been set.
|
||||||
|
\o Loading - the media is currently being loaded.
|
||||||
|
\o Loaded - the media has been loaded.
|
||||||
|
\o Buffering - the media is buffering data.
|
||||||
|
\o Stalled - playback has been interrupted while the media is buffering data.
|
||||||
|
\o Buffered - the media has buffered data.
|
||||||
|
\o EndOfMedia - the media has played to the end.
|
||||||
|
\o InvalidMedia - the media cannot be played.
|
||||||
|
\o UnknownStatus - the status of the media cannot be determined.
|
||||||
|
\endlist
|
||||||
|
*/
|
||||||
property alias status: player.status
|
property alias status: player.status
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty real Video::volume
|
||||||
|
|
||||||
|
This property holds the volume of the audio output, from 0.0 (silent) to 1.0 (maximum volume).
|
||||||
|
*/
|
||||||
property alias volume: player.volume
|
property alias volume: player.volume
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlsignal Video::resumed()
|
||||||
|
|
||||||
|
This signal is emitted when playback is resumed from the paused state.
|
||||||
|
*/
|
||||||
signal resumed
|
signal resumed
|
||||||
|
/*!
|
||||||
|
\qmlsignal Video::started()
|
||||||
|
|
||||||
|
This signal is emitted when playback is started.
|
||||||
|
*/
|
||||||
signal started
|
signal started
|
||||||
|
/*!
|
||||||
|
\qmlsignal Video::stopped()
|
||||||
|
|
||||||
|
This signal is emitted when playback is stopped.
|
||||||
|
*/
|
||||||
signal stopped
|
signal stopped
|
||||||
|
|
||||||
|
|
||||||
@@ -89,16 +301,566 @@ Item {
|
|||||||
onStopped: video.stopped()
|
onStopped: video.stopped()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod Video::play()
|
||||||
|
|
||||||
|
Starts playback of the media.
|
||||||
|
|
||||||
|
Sets the \l playing property to true, and the \l paused property to
|
||||||
|
false.
|
||||||
|
*/
|
||||||
function play() {
|
function play() {
|
||||||
player.play();
|
player.play();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod Video::pause()
|
||||||
|
|
||||||
|
Pauses playback of the media.
|
||||||
|
|
||||||
|
Sets the \l playing and \l paused properties to true.
|
||||||
|
*/
|
||||||
function pause() {
|
function pause() {
|
||||||
player.pause();
|
player.pause();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlmethod Video::stop()
|
||||||
|
|
||||||
|
Stops playback of the media.
|
||||||
|
|
||||||
|
Sets the \l playing and \l paused properties to false.
|
||||||
|
*/
|
||||||
function stop() {
|
function stop() {
|
||||||
player.stop();
|
player.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ***************************************
|
||||||
|
// Documentation for meta-data properties.
|
||||||
|
// ***************************************
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.title
|
||||||
|
|
||||||
|
This property holds the title of the media.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::Title}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.subTitle
|
||||||
|
|
||||||
|
This property holds the sub-title of the media.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::SubTitle}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.author
|
||||||
|
|
||||||
|
This property holds the author of the media.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::Author}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.comment
|
||||||
|
|
||||||
|
This property holds a user comment about the media.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::Comment}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.description
|
||||||
|
|
||||||
|
This property holds a description of the media.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::Description}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.category
|
||||||
|
|
||||||
|
This property holds the category of the media
|
||||||
|
|
||||||
|
\sa {QtMultimedia::Category}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.genre
|
||||||
|
|
||||||
|
This property holds the genre of the media.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::Genre}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.year
|
||||||
|
|
||||||
|
This property holds the year of release of the media.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::Year}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.date
|
||||||
|
|
||||||
|
This property holds the date of the media.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::Date}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.userRating
|
||||||
|
|
||||||
|
This property holds a user rating of the media in the range of 0 to 100.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::UserRating}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.keywords
|
||||||
|
|
||||||
|
This property holds a list of keywords describing the media.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::Keywords}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.language
|
||||||
|
|
||||||
|
This property holds the language of the media, as an ISO 639-2 code.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::Language}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.publisher
|
||||||
|
|
||||||
|
This property holds the publisher of the media.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::Publisher}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.copyright
|
||||||
|
|
||||||
|
This property holds the media's copyright notice.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::Copyright}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.parentalRating
|
||||||
|
|
||||||
|
This property holds the parental rating of the media.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::ParentalRating}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.ratingOrganization
|
||||||
|
|
||||||
|
This property holds the name of the rating organization responsible for the
|
||||||
|
parental rating of the media.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::RatingOrganization}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.size
|
||||||
|
|
||||||
|
This property property holds the size of the media in bytes.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::Size}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.mediaType
|
||||||
|
|
||||||
|
This property holds the type of the media.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::MediaType}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.audioBitRate
|
||||||
|
|
||||||
|
This property holds the bit rate of the media's audio stream in bits per
|
||||||
|
second.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::AudioBitRate}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.audioCodec
|
||||||
|
|
||||||
|
This property holds the encoding of the media audio stream.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::AudioCodec}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.averageLevel
|
||||||
|
|
||||||
|
This property holds the average volume level of the media.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::AverageLevel}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.channelCount
|
||||||
|
|
||||||
|
This property holds the number of channels in the media's audio stream.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::ChannelCount}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.peakValue
|
||||||
|
|
||||||
|
This property holds the peak volume of the media's audio stream.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::PeakValue}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.sampleRate
|
||||||
|
|
||||||
|
This property holds the sample rate of the media's audio stream in Hertz.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::SampleRate}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.albumTitle
|
||||||
|
|
||||||
|
This property holds the title of the album the media belongs to.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::AlbumTitle}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.albumArtist
|
||||||
|
|
||||||
|
This property holds the name of the principal artist of the album the media
|
||||||
|
belongs to.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::AlbumArtist}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.contributingArtist
|
||||||
|
|
||||||
|
This property holds the names of artists contributing to the media.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::ContributingArtist}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.composer
|
||||||
|
|
||||||
|
This property holds the composer of the media.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::Composer}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.conductor
|
||||||
|
|
||||||
|
This property holds the conductor of the media.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::Conductor}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.lyrics
|
||||||
|
|
||||||
|
This property holds the lyrics to the media.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::Lyrics}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.mood
|
||||||
|
|
||||||
|
This property holds the mood of the media.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::Mood}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.trackNumber
|
||||||
|
|
||||||
|
This property holds the track number of the media.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::TrackNumber}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.trackCount
|
||||||
|
|
||||||
|
This property holds the number of track on the album containing the media.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::TrackNumber}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.coverArtUrlSmall
|
||||||
|
|
||||||
|
This property holds the URL of a small cover art image.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::CoverArtUrlSmall}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.coverArtUrlLarge
|
||||||
|
|
||||||
|
This property holds the URL of a large cover art image.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::CoverArtUrlLarge}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.resolution
|
||||||
|
|
||||||
|
This property holds the dimension of an image or video.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::Resolution}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.pixelAspectRatio
|
||||||
|
|
||||||
|
This property holds the pixel aspect ratio of an image or video.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::PixelAspectRatio}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.videoFrameRate
|
||||||
|
|
||||||
|
This property holds the frame rate of the media's video stream.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::VideoFrameRate}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.videoBitRate
|
||||||
|
|
||||||
|
This property holds the bit rate of the media's video stream in bits per
|
||||||
|
second.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::VideoBitRate}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.videoCodec
|
||||||
|
|
||||||
|
This property holds the encoding of the media's video stream.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::VideoCodec}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.posterUrl
|
||||||
|
|
||||||
|
This property holds the URL of a poster image.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::PosterUrl}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.chapterNumber
|
||||||
|
|
||||||
|
This property holds the chapter number of the media.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::ChapterNumber}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.director
|
||||||
|
|
||||||
|
This property holds the director of the media.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::Director}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.leadPerformer
|
||||||
|
|
||||||
|
This property holds the lead performer in the media.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::LeadPerformer}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.writer
|
||||||
|
|
||||||
|
This property holds the writer of the media.
|
||||||
|
|
||||||
|
\sa {QtMultimedia::Writer}
|
||||||
|
*/
|
||||||
|
|
||||||
|
// The remaining properties are related to photos, and are technically
|
||||||
|
// available but will certainly never have values.
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.cameraManufacturer
|
||||||
|
|
||||||
|
\sa {QtMultimedia::CameraManufacturer}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.cameraModel
|
||||||
|
|
||||||
|
\sa {QtMultimedia::CameraModel}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.event
|
||||||
|
|
||||||
|
\sa {QtMultimedia::Event}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.subject
|
||||||
|
|
||||||
|
\sa {QtMultimedia::Subject}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.orientation
|
||||||
|
|
||||||
|
\sa {QtMultimedia::Orientation}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.exposureTime
|
||||||
|
|
||||||
|
\sa {QtMultimedia::ExposureTime}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.fNumber
|
||||||
|
|
||||||
|
\sa {QtMultimedia::FNumber}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.exposureProgram
|
||||||
|
|
||||||
|
\sa {QtMultimedia::ExposureProgram}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.isoSpeedRatings
|
||||||
|
|
||||||
|
\sa {QtMultimedia::ISOSpeedRatings}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.exposureBiasValue
|
||||||
|
|
||||||
|
\sa {QtMultimedia::ExposureBiasValue}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.dateTimeDigitized
|
||||||
|
|
||||||
|
\sa {QtMultimedia::DateTimeDigitized}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.subjectDistance
|
||||||
|
|
||||||
|
\sa {QtMultimedia::SubjectDistance}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.meteringMode
|
||||||
|
|
||||||
|
\sa {QtMultimedia::MeteringMode}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.lightSource
|
||||||
|
|
||||||
|
\sa {QtMultimedia::LightSource}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.flash
|
||||||
|
|
||||||
|
\sa {QtMultimedia::Flash}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.focalLength
|
||||||
|
|
||||||
|
\sa {QtMultimedia::FocalLength}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.exposureMode
|
||||||
|
|
||||||
|
\sa {QtMultimedia::ExposureMode}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.whiteBalance
|
||||||
|
|
||||||
|
\sa {QtMultimedia::WhiteBalance}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.DigitalZoomRatio
|
||||||
|
|
||||||
|
\sa {QtMultimedia::DigitalZoomRatio}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.focalLengthIn35mmFilm
|
||||||
|
|
||||||
|
\sa {QtMultimedia::FocalLengthIn35mmFile}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.sceneCaptureType
|
||||||
|
|
||||||
|
\sa {QtMultimedia::SceneCaptureType}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.gainControl
|
||||||
|
|
||||||
|
\sa {QtMultimedia::GainControl}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.contrast
|
||||||
|
|
||||||
|
\sa {QtMultimedia::contrast}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.saturation
|
||||||
|
|
||||||
|
\sa {QtMultimedia::Saturation}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.sharpness
|
||||||
|
|
||||||
|
\sa {QtMultimedia::Sharpness}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty variant Video::metaData.deviceSettingDescription
|
||||||
|
|
||||||
|
\sa {QtMultimedia::DeviceSettingDescription}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -48,16 +48,6 @@ SOURCES += \
|
|||||||
qdeclarativecameraimageprocessing.cpp \
|
qdeclarativecameraimageprocessing.cpp \
|
||||||
qdeclarativecamerapreviewprovider.cpp
|
qdeclarativecamerapreviewprovider.cpp
|
||||||
|
|
||||||
disabled {
|
|
||||||
HEADERS += \
|
|
||||||
qdeclarativevideo_p.h \
|
|
||||||
|
|
||||||
|
|
||||||
SOURCES += \
|
|
||||||
qdeclarativevideo.cpp \
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
OTHER_FILES += \
|
OTHER_FILES += \
|
||||||
Video.qml
|
Video.qml
|
||||||
|
|
||||||
|
|||||||
@@ -1,951 +0,0 @@
|
|||||||
/****************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
|
|
||||||
** All rights reserved.
|
|
||||||
** Contact: Nokia Corporation (qt-info@nokia.com)
|
|
||||||
**
|
|
||||||
** This file is part of the Qt Toolkit.
|
|
||||||
**
|
|
||||||
** $QT_BEGIN_LICENSE:LGPL$
|
|
||||||
** GNU Lesser General Public License Usage
|
|
||||||
** This file may be used under the terms of the GNU Lesser General Public
|
|
||||||
** License version 2.1 as published by the Free Software Foundation and
|
|
||||||
** appearing in the file LICENSE.LGPL included in the packaging of this
|
|
||||||
** file. Please review the following information to ensure the GNU Lesser
|
|
||||||
** General Public License version 2.1 requirements will be met:
|
|
||||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
|
||||||
**
|
|
||||||
** In addition, as a special exception, Nokia gives you certain additional
|
|
||||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
|
||||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
|
||||||
**
|
|
||||||
** GNU General Public License Usage
|
|
||||||
** Alternatively, this file may be used under the terms of the GNU General
|
|
||||||
** Public License version 3.0 as published by the Free Software Foundation
|
|
||||||
** and appearing in the file LICENSE.GPL included in the packaging of this
|
|
||||||
** file. Please review the following information to ensure the GNU General
|
|
||||||
** Public License version 3.0 requirements will be met:
|
|
||||||
** http://www.gnu.org/copyleft/gpl.html.
|
|
||||||
**
|
|
||||||
** Other Usage
|
|
||||||
** Alternatively, this file may be used in accordance with the terms and
|
|
||||||
** conditions contained in a signed written agreement between you and Nokia.
|
|
||||||
**
|
|
||||||
**
|
|
||||||
**
|
|
||||||
**
|
|
||||||
**
|
|
||||||
** $QT_END_LICENSE$
|
|
||||||
**
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
#include "qdeclarativevideo_p.h"
|
|
||||||
|
|
||||||
#include <qmediaplayercontrol.h>
|
|
||||||
#include <qmediaservice.h>
|
|
||||||
#include <private/qpaintervideosurface_p.h>
|
|
||||||
#include <qvideorenderercontrol.h>
|
|
||||||
|
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
|
||||||
|
|
||||||
|
|
||||||
void QDeclarativeVideo::_q_nativeSizeChanged(const QSizeF &size)
|
|
||||||
{
|
|
||||||
setImplicitWidth(size.width());
|
|
||||||
setImplicitHeight(size.height());
|
|
||||||
}
|
|
||||||
|
|
||||||
void QDeclarativeVideo::_q_error(int errorCode, const QString &errorString)
|
|
||||||
{
|
|
||||||
m_error = QMediaPlayer::Error(errorCode);
|
|
||||||
m_errorString = errorString;
|
|
||||||
|
|
||||||
emit error(Error(errorCode), errorString);
|
|
||||||
emit errorChanged();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlclass Video QDeclarativeVideo
|
|
||||||
\brief The Video element allows you to add videos to a scene.
|
|
||||||
\inherits Item
|
|
||||||
\ingroup multimedia_qml
|
|
||||||
|
|
||||||
This element is part of the \bold{QtMultimedia 5.0} module.
|
|
||||||
|
|
||||||
\qml
|
|
||||||
import QtQuick 2.0
|
|
||||||
import QtMultimedia 5.0
|
|
||||||
|
|
||||||
Video {
|
|
||||||
id: video
|
|
||||||
width : 800
|
|
||||||
height : 600
|
|
||||||
source: "video.avi"
|
|
||||||
|
|
||||||
MouseArea {
|
|
||||||
anchors.fill: parent
|
|
||||||
onClicked: {
|
|
||||||
video.play()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
focus: true
|
|
||||||
Keys.onSpacePressed: video.paused = !video.paused
|
|
||||||
Keys.onLeftPressed: video.position -= 5000
|
|
||||||
Keys.onRightPressed: video.position += 5000
|
|
||||||
}
|
|
||||||
\endqml
|
|
||||||
|
|
||||||
The Video item supports untransformed, stretched, and uniformly scaled video presentation.
|
|
||||||
For a description of stretched uniformly scaled presentation, see the \l fillMode property
|
|
||||||
description.
|
|
||||||
|
|
||||||
The Video item is only visible when the \l hasVideo property is true and the video is playing.
|
|
||||||
|
|
||||||
\sa Audio
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\internal
|
|
||||||
\class QDeclarativeVideo
|
|
||||||
\brief The QDeclarativeVideo class provides a video item that you can add to a QDeclarativeView.
|
|
||||||
*/
|
|
||||||
|
|
||||||
QDeclarativeVideo::QDeclarativeVideo(QDeclarativeItem *parent)
|
|
||||||
: QDeclarativeItem(parent)
|
|
||||||
, m_graphicsItem(0)
|
|
||||||
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
QDeclarativeVideo::~QDeclarativeVideo()
|
|
||||||
{
|
|
||||||
shutdown();
|
|
||||||
|
|
||||||
delete m_graphicsItem;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty url Video::source
|
|
||||||
|
|
||||||
This property holds the source URL of the media.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty url Video::autoLoad
|
|
||||||
|
|
||||||
This property indicates if loading of media should begin immediately.
|
|
||||||
|
|
||||||
Defaults to true, if false media will not be loaded until playback is started.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty bool Video::playing
|
|
||||||
|
|
||||||
This property holds whether the media is playing.
|
|
||||||
|
|
||||||
Defaults to false, and can be set to true to start playback.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty bool Video::paused
|
|
||||||
|
|
||||||
This property holds whether the media is paused.
|
|
||||||
|
|
||||||
Defaults to false, and can be set to true to pause playback.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlsignal Video::onStarted()
|
|
||||||
|
|
||||||
This handler is called when playback is started.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlsignal Video::onResumed()
|
|
||||||
|
|
||||||
This handler is called when playback is resumed from the paused state.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlsignal Video::onPaused()
|
|
||||||
|
|
||||||
This handler is called when playback is paused.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlsignal Video::onStopped()
|
|
||||||
|
|
||||||
This handler is called when playback is stopped.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty enumeration Video::status
|
|
||||||
|
|
||||||
This property holds the status of media loading. It can be one of:
|
|
||||||
|
|
||||||
\list
|
|
||||||
\o NoMedia - no media has been set.
|
|
||||||
\o Loading - the media is currently being loaded.
|
|
||||||
\o Loaded - the media has been loaded.
|
|
||||||
\o Buffering - the media is buffering data.
|
|
||||||
\o Stalled - playback has been interrupted while the media is buffering data.
|
|
||||||
\o Buffered - the media has buffered data.
|
|
||||||
\o EndOfMedia - the media has played to the end.
|
|
||||||
\o InvalidMedia - the media cannot be played.
|
|
||||||
\o UnknownStatus - the status of the media is cannot be determined.
|
|
||||||
\endlist
|
|
||||||
*/
|
|
||||||
|
|
||||||
QDeclarativeVideo::Status QDeclarativeVideo::status() const
|
|
||||||
{
|
|
||||||
return Status(m_status);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty int Video::duration
|
|
||||||
|
|
||||||
This property holds the duration of the media in milliseconds.
|
|
||||||
|
|
||||||
If the media doesn't have a fixed duration (a live stream for example) this will be 0.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty int Video::position
|
|
||||||
|
|
||||||
This property holds the current playback position in milliseconds.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty real Video::volume
|
|
||||||
|
|
||||||
This property holds the volume of the audio output, from 0.0 (silent) to 1.0 (maximum volume).
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty bool Video::muted
|
|
||||||
|
|
||||||
This property holds whether the audio output is muted.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty bool Video::hasAudio
|
|
||||||
|
|
||||||
This property holds whether the media contains audio.
|
|
||||||
*/
|
|
||||||
|
|
||||||
bool QDeclarativeVideo::hasAudio() const
|
|
||||||
{
|
|
||||||
return !m_complete ? false : m_playerControl->isAudioAvailable();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty bool Video::hasVideo
|
|
||||||
|
|
||||||
This property holds whether the media contains video.
|
|
||||||
*/
|
|
||||||
|
|
||||||
bool QDeclarativeVideo::hasVideo() const
|
|
||||||
{
|
|
||||||
return !m_complete ? false : m_playerControl->isVideoAvailable();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty real Video::bufferProgress
|
|
||||||
|
|
||||||
This property holds how much of the data buffer is currently filled, from 0.0 (empty) to 1.0
|
|
||||||
(full).
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty bool Video::seekable
|
|
||||||
|
|
||||||
This property holds whether position of the video can be changed.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty real Video::playbackRate
|
|
||||||
|
|
||||||
This property holds the rate at which video is played at as a multiple of the normal rate.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty enumeration Video::error
|
|
||||||
|
|
||||||
This property holds the error state of the video. It can be one of:
|
|
||||||
|
|
||||||
\list
|
|
||||||
\o NoError - there is no current error.
|
|
||||||
\o ResourceError - the video cannot be played due to a problem allocating resources.
|
|
||||||
\o FormatError - the video format is not supported.
|
|
||||||
\o NetworkError - the video cannot be played due to network issues.
|
|
||||||
\o AccessDenied - the video cannot be played due to insufficient permissions.
|
|
||||||
\o ServiceMissing - the video cannot be played because the media service could not be
|
|
||||||
instantiated.
|
|
||||||
\endlist
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
QDeclarativeVideo::Error QDeclarativeVideo::error() const
|
|
||||||
{
|
|
||||||
return Error(m_error);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty string Video::errorString
|
|
||||||
|
|
||||||
This property holds a string describing the current error condition in more detail.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlsignal Video::onError(error, errorString)
|
|
||||||
|
|
||||||
This handler is called when an \l {QMediaPlayer::Error}{error} has
|
|
||||||
occurred. The errorString parameter may contain more detailed
|
|
||||||
information about the error.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty enumeration Video::fillMode
|
|
||||||
|
|
||||||
Set this property to define how the video is scaled to fit the target area.
|
|
||||||
|
|
||||||
\list
|
|
||||||
\o Stretch - the video is scaled to fit.
|
|
||||||
\o PreserveAspectFit - the video is scaled uniformly to fit without cropping
|
|
||||||
\o PreserveAspectCrop - the video is scaled uniformly to fill, cropping if necessary
|
|
||||||
\endlist
|
|
||||||
|
|
||||||
The default fill mode is PreserveAspectFit.
|
|
||||||
*/
|
|
||||||
|
|
||||||
QDeclarativeVideo::FillMode QDeclarativeVideo::fillMode() const
|
|
||||||
{
|
|
||||||
return FillMode(m_graphicsItem->aspectRatioMode());
|
|
||||||
}
|
|
||||||
|
|
||||||
void QDeclarativeVideo::setFillMode(FillMode mode)
|
|
||||||
{
|
|
||||||
m_graphicsItem->setAspectRatioMode(Qt::AspectRatioMode(mode));
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlmethod Video::play()
|
|
||||||
|
|
||||||
Starts playback of the media.
|
|
||||||
|
|
||||||
Sets the \l playing property to true, and the \l paused property to false.
|
|
||||||
*/
|
|
||||||
|
|
||||||
void QDeclarativeVideo::play()
|
|
||||||
{
|
|
||||||
if (!m_complete)
|
|
||||||
return;
|
|
||||||
|
|
||||||
setPaused(false);
|
|
||||||
setPlaying(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlmethod Video::pause()
|
|
||||||
|
|
||||||
Pauses playback of the media.
|
|
||||||
|
|
||||||
Sets the \l playing and \l paused properties to true.
|
|
||||||
*/
|
|
||||||
|
|
||||||
void QDeclarativeVideo::pause()
|
|
||||||
{
|
|
||||||
if (!m_complete)
|
|
||||||
return;
|
|
||||||
|
|
||||||
setPaused(true);
|
|
||||||
setPlaying(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlmethod Video::stop()
|
|
||||||
|
|
||||||
Stops playback of the media.
|
|
||||||
|
|
||||||
Sets the \l playing and \l paused properties to false.
|
|
||||||
*/
|
|
||||||
|
|
||||||
void QDeclarativeVideo::stop()
|
|
||||||
{
|
|
||||||
if (!m_complete)
|
|
||||||
return;
|
|
||||||
|
|
||||||
setPlaying(false);
|
|
||||||
setPaused(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
void QDeclarativeVideo::paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void QDeclarativeVideo::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry)
|
|
||||||
{
|
|
||||||
m_graphicsItem->setSize(newGeometry.size());
|
|
||||||
|
|
||||||
QDeclarativeItem::geometryChanged(newGeometry, oldGeometry);
|
|
||||||
}
|
|
||||||
|
|
||||||
void QDeclarativeVideo::classBegin()
|
|
||||||
{
|
|
||||||
m_graphicsItem = new QGraphicsVideoItem(this);
|
|
||||||
connect(m_graphicsItem, SIGNAL(nativeSizeChanged(QSizeF)),
|
|
||||||
this, SLOT(_q_nativeSizeChanged(QSizeF)));
|
|
||||||
|
|
||||||
setObject(this);
|
|
||||||
|
|
||||||
if (m_mediaService) {
|
|
||||||
connect(m_playerControl, SIGNAL(audioAvailableChanged(bool)),
|
|
||||||
this, SIGNAL(hasAudioChanged()));
|
|
||||||
connect(m_playerControl, SIGNAL(videoAvailableChanged(bool)),
|
|
||||||
this, SIGNAL(hasVideoChanged()));
|
|
||||||
|
|
||||||
m_mediaObject->bind(m_graphicsItem);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void QDeclarativeVideo::componentComplete()
|
|
||||||
{
|
|
||||||
QDeclarativeMediaBase::componentComplete();
|
|
||||||
}
|
|
||||||
|
|
||||||
QT_END_NAMESPACE
|
|
||||||
|
|
||||||
// ***************************************
|
|
||||||
// Documentation for meta-data properties.
|
|
||||||
// ***************************************
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.title
|
|
||||||
|
|
||||||
This property holds the tile of the media.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::Title}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.subTitle
|
|
||||||
|
|
||||||
This property holds the sub-title of the media.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::SubTitle}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.author
|
|
||||||
|
|
||||||
This property holds the author of the media.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::Author}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.comment
|
|
||||||
|
|
||||||
This property holds a user comment about the media.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::Comment}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.description
|
|
||||||
|
|
||||||
This property holds a description of the media.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::Description}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.category
|
|
||||||
|
|
||||||
This property holds the category of the media
|
|
||||||
|
|
||||||
\sa {QtMultimedia::Category}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.genre
|
|
||||||
|
|
||||||
This property holds the genre of the media.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::Genre}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.year
|
|
||||||
|
|
||||||
This property holds the year of release of the media.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::Year}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.date
|
|
||||||
|
|
||||||
This property holds the date of the media.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::Date}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.userRating
|
|
||||||
|
|
||||||
This property holds a user rating of the media in the range of 0 to 100.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::UserRating}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.keywords
|
|
||||||
|
|
||||||
This property holds a list of keywords describing the media.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::Keywords}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.language
|
|
||||||
|
|
||||||
This property holds the language of the media, as an ISO 639-2 code.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::Language}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.publisher
|
|
||||||
|
|
||||||
This property holds the publisher of the media.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::Publisher}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.copyright
|
|
||||||
|
|
||||||
This property holds the media's copyright notice.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::Copyright}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.parentalRating
|
|
||||||
|
|
||||||
This property holds the parental rating of the media.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::ParentalRating}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.ratingOrganisation
|
|
||||||
|
|
||||||
This property holds the name of the rating organisation responsible for the
|
|
||||||
parental rating of the media.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::RatingOrganisation}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.size
|
|
||||||
|
|
||||||
This property property holds the size of the media in bytes.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::Size}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.mediaType
|
|
||||||
|
|
||||||
This property holds the type of the media.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::MediaType}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.audioBitRate
|
|
||||||
|
|
||||||
This property holds the bit rate of the media's audio stream ni bits per
|
|
||||||
second.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::AudioBitRate}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.audioCodec
|
|
||||||
|
|
||||||
This property holds the encoding of the media audio stream.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::AudioCodec}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.averageLevel
|
|
||||||
|
|
||||||
This property holds the average volume level of the media.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::AverageLevel}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.channelCount
|
|
||||||
|
|
||||||
This property holds the number of channels in the media's audio stream.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::ChannelCount}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.peakValue
|
|
||||||
|
|
||||||
This property holds the peak volume of media's audio stream.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::PeakValue}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.sampleRate
|
|
||||||
|
|
||||||
This property holds the sample rate of the media's audio stream in hertz.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::SampleRate}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.albumTitle
|
|
||||||
|
|
||||||
This property holds the title of the album the media belongs to.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::AlbumTitle}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.albumArtist
|
|
||||||
|
|
||||||
This property holds the name of the principal artist of the album the media
|
|
||||||
belongs to.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::AlbumArtist}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.contributingArtist
|
|
||||||
|
|
||||||
This property holds the names of artists contributing to the media.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::ContributingArtist}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.composer
|
|
||||||
|
|
||||||
This property holds the composer of the media.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::Composer}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.conductor
|
|
||||||
|
|
||||||
This property holds the conductor of the media.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::Conductor}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.lyrics
|
|
||||||
|
|
||||||
This property holds the lyrics to the media.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::Lyrics}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.mood
|
|
||||||
|
|
||||||
This property holds the mood of the media.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::Mood}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.trackNumber
|
|
||||||
|
|
||||||
This property holds the track number of the media.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::TrackNumber}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.trackCount
|
|
||||||
|
|
||||||
This property holds the number of track on the album containing the media.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::TrackNumber}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.coverArtUrlSmall
|
|
||||||
|
|
||||||
This property holds the URL of a small cover art image.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::CoverArtUrlSmall}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.coverArtUrlLarge
|
|
||||||
|
|
||||||
This property holds the URL of a large cover art image.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::CoverArtUrlLarge}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.resolution
|
|
||||||
|
|
||||||
This property holds the dimension of an image or video.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::Resolution}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.pixelAspectRatio
|
|
||||||
|
|
||||||
This property holds the pixel aspect ratio of an image or video.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::PixelAspectRatio}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.videoFrameRate
|
|
||||||
|
|
||||||
This property holds the frame rate of the media's video stream.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::VideoFrameRate}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.videoBitRate
|
|
||||||
|
|
||||||
This property holds the bit rate of the media's video stream in bits per
|
|
||||||
second.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::VideoBitRate}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.videoCodec
|
|
||||||
|
|
||||||
This property holds the encoding of the media's video stream.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::VideoCodec}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.posterUrl
|
|
||||||
|
|
||||||
This property holds the URL of a poster image.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::PosterUrl}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.chapterNumber
|
|
||||||
|
|
||||||
This property holds the chapter number of the media.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::ChapterNumber}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.director
|
|
||||||
|
|
||||||
This property holds the director of the media.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::Director}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.leadPerformer
|
|
||||||
|
|
||||||
This property holds the lead performer in the media.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::LeadPerformer}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.writer
|
|
||||||
|
|
||||||
This property holds the writer of the media.
|
|
||||||
|
|
||||||
\sa {QtMultimedia::Writer}
|
|
||||||
*/
|
|
||||||
|
|
||||||
// The remaining properties are related to photos, and are technically
|
|
||||||
// available but will certainly never have values.
|
|
||||||
#ifndef Q_QDOC
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.cameraManufacturer
|
|
||||||
|
|
||||||
\sa {QtMultimedia::CameraManufacturer}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.cameraModel
|
|
||||||
|
|
||||||
\sa {QtMultimedia::CameraModel}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.event
|
|
||||||
|
|
||||||
\sa {QtMultimedia::Event}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.subject
|
|
||||||
|
|
||||||
\sa {QtMultimedia::Subject}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.orientation
|
|
||||||
|
|
||||||
\sa {QtMultimedia::Orientation}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.exposureTime
|
|
||||||
|
|
||||||
\sa {QtMultimedia::ExposureTime}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.fNumber
|
|
||||||
|
|
||||||
\sa {QtMultimedia::FNumber}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.exposureProgram
|
|
||||||
|
|
||||||
\sa {QtMultimedia::ExposureProgram}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.isoSpeedRatings
|
|
||||||
|
|
||||||
\sa {QtMultimedia::ISOSpeedRatings}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.exposureBiasValue
|
|
||||||
|
|
||||||
\sa {QtMultimedia::ExposureBiasValue}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.dateTimeDigitized
|
|
||||||
|
|
||||||
\sa {QtMultimedia::DateTimeDigitized}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.subjectDistance
|
|
||||||
|
|
||||||
\sa {QtMultimedia::SubjectDistance}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.meteringMode
|
|
||||||
|
|
||||||
\sa {QtMultimedia::MeteringMode}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.lightSource
|
|
||||||
|
|
||||||
\sa {QtMultimedia::LightSource}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.flash
|
|
||||||
|
|
||||||
\sa {QtMultimedia::Flash}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.focalLength
|
|
||||||
|
|
||||||
\sa {QtMultimedia::FocalLength}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.exposureMode
|
|
||||||
|
|
||||||
\sa {QtMultimedia::ExposureMode}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.whiteBalance
|
|
||||||
|
|
||||||
\sa {QtMultimedia::WhiteBalance}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.DigitalZoomRatio
|
|
||||||
|
|
||||||
\sa {QtMultimedia::DigitalZoomRatio}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.focalLengthIn35mmFilm
|
|
||||||
|
|
||||||
\sa {QtMultimedia::FocalLengthIn35mmFile}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.sceneCaptureType
|
|
||||||
|
|
||||||
\sa {QtMultimedia::SceneCaptureType}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.gainControl
|
|
||||||
|
|
||||||
\sa {QtMultimedia::GainControl}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.contrast
|
|
||||||
|
|
||||||
\sa {QtMultimedia::contrast}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.saturation
|
|
||||||
|
|
||||||
\sa {QtMultimedia::Saturation}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.sharpness
|
|
||||||
|
|
||||||
\sa {QtMultimedia::Sharpness}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\qmlproperty variant Video::metaData.deviceSettingDescription
|
|
||||||
|
|
||||||
\sa {QtMultimedia::DeviceSettingDescription}
|
|
||||||
*/
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "moc_qdeclarativevideo_p.cpp"
|
|
||||||
@@ -1,202 +0,0 @@
|
|||||||
/****************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
|
|
||||||
** All rights reserved.
|
|
||||||
** Contact: Nokia Corporation (qt-info@nokia.com)
|
|
||||||
**
|
|
||||||
** This file is part of the Qt Toolkit.
|
|
||||||
**
|
|
||||||
** $QT_BEGIN_LICENSE:LGPL$
|
|
||||||
** GNU Lesser General Public License Usage
|
|
||||||
** This file may be used under the terms of the GNU Lesser General Public
|
|
||||||
** License version 2.1 as published by the Free Software Foundation and
|
|
||||||
** appearing in the file LICENSE.LGPL included in the packaging of this
|
|
||||||
** file. Please review the following information to ensure the GNU Lesser
|
|
||||||
** General Public License version 2.1 requirements will be met:
|
|
||||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
|
||||||
**
|
|
||||||
** In addition, as a special exception, Nokia gives you certain additional
|
|
||||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
|
||||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
|
||||||
**
|
|
||||||
** GNU General Public License Usage
|
|
||||||
** Alternatively, this file may be used under the terms of the GNU General
|
|
||||||
** Public License version 3.0 as published by the Free Software Foundation
|
|
||||||
** and appearing in the file LICENSE.GPL included in the packaging of this
|
|
||||||
** file. Please review the following information to ensure the GNU General
|
|
||||||
** Public License version 3.0 requirements will be met:
|
|
||||||
** http://www.gnu.org/copyleft/gpl.html.
|
|
||||||
**
|
|
||||||
** Other Usage
|
|
||||||
** Alternatively, this file may be used in accordance with the terms and
|
|
||||||
** conditions contained in a signed written agreement between you and Nokia.
|
|
||||||
**
|
|
||||||
**
|
|
||||||
**
|
|
||||||
**
|
|
||||||
**
|
|
||||||
** $QT_END_LICENSE$
|
|
||||||
**
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
#ifndef QDECLARATIVEVIDEO_H
|
|
||||||
#define QDECLARATIVEVIDEO_H
|
|
||||||
|
|
||||||
//
|
|
||||||
// W A R N I N G
|
|
||||||
// -------------
|
|
||||||
//
|
|
||||||
// This file is not part of the Qt API. It exists for the convenience
|
|
||||||
// of other Qt classes. This header file may change from version to
|
|
||||||
// version without notice, or even be removed.
|
|
||||||
//
|
|
||||||
// We mean it.
|
|
||||||
//
|
|
||||||
|
|
||||||
#include "qdeclarativemediabase_p.h"
|
|
||||||
|
|
||||||
#include <qgraphicsvideoitem.h>
|
|
||||||
|
|
||||||
#include <QtCore/qbasictimer.h>
|
|
||||||
#include <QtQuick1/qdeclarativeitem.h>
|
|
||||||
|
|
||||||
|
|
||||||
QT_BEGIN_HEADER
|
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
|
||||||
|
|
||||||
class QTimerEvent;
|
|
||||||
class QVideoSurfaceFormat;
|
|
||||||
|
|
||||||
|
|
||||||
class QDeclarativeVideo : public QDeclarativeItem, public QDeclarativeMediaBase
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged)
|
|
||||||
Q_PROPERTY(bool autoLoad READ isAutoLoad WRITE setAutoLoad NOTIFY autoLoadChanged)
|
|
||||||
Q_PROPERTY(bool playing READ isPlaying WRITE setPlaying NOTIFY playingChanged)
|
|
||||||
Q_PROPERTY(bool paused READ isPaused WRITE setPaused NOTIFY pausedChanged)
|
|
||||||
Q_PROPERTY(Status status READ status NOTIFY statusChanged)
|
|
||||||
Q_PROPERTY(int duration READ duration NOTIFY durationChanged)
|
|
||||||
Q_PROPERTY(int position READ position WRITE setPosition NOTIFY positionChanged)
|
|
||||||
Q_PROPERTY(qreal volume READ volume WRITE setVolume NOTIFY volumeChanged)
|
|
||||||
Q_PROPERTY(bool muted READ isMuted WRITE setMuted NOTIFY mutedChanged)
|
|
||||||
Q_PROPERTY(bool hasAudio READ hasAudio NOTIFY hasAudioChanged)
|
|
||||||
Q_PROPERTY(bool hasVideo READ hasVideo NOTIFY hasVideoChanged)
|
|
||||||
Q_PROPERTY(int bufferProgress READ bufferProgress NOTIFY bufferProgressChanged)
|
|
||||||
Q_PROPERTY(bool seekable READ isSeekable NOTIFY seekableChanged)
|
|
||||||
Q_PROPERTY(qreal playbackRate READ playbackRate WRITE setPlaybackRate NOTIFY playbackRateChanged)
|
|
||||||
Q_PROPERTY(Error error READ error NOTIFY errorChanged)
|
|
||||||
Q_PROPERTY(QString errorString READ errorString NOTIFY errorChanged)
|
|
||||||
Q_PROPERTY(FillMode fillMode READ fillMode WRITE setFillMode)
|
|
||||||
Q_PROPERTY(QDeclarativeMediaMetaData *metaData READ metaData CONSTANT)
|
|
||||||
Q_ENUMS(FillMode)
|
|
||||||
Q_ENUMS(Status)
|
|
||||||
Q_ENUMS(Error)
|
|
||||||
public:
|
|
||||||
enum FillMode
|
|
||||||
{
|
|
||||||
Stretch = Qt::IgnoreAspectRatio,
|
|
||||||
PreserveAspectFit = Qt::KeepAspectRatio,
|
|
||||||
PreserveAspectCrop = Qt::KeepAspectRatioByExpanding
|
|
||||||
};
|
|
||||||
|
|
||||||
enum Status
|
|
||||||
{
|
|
||||||
UnknownStatus = QMediaPlayer::UnknownMediaStatus,
|
|
||||||
NoMedia = QMediaPlayer::NoMedia,
|
|
||||||
Loading = QMediaPlayer::LoadingMedia,
|
|
||||||
Loaded = QMediaPlayer::LoadedMedia,
|
|
||||||
Stalled = QMediaPlayer::StalledMedia,
|
|
||||||
Buffering = QMediaPlayer::BufferingMedia,
|
|
||||||
Buffered = QMediaPlayer::BufferedMedia,
|
|
||||||
EndOfMedia = QMediaPlayer::EndOfMedia,
|
|
||||||
InvalidMedia = QMediaPlayer::InvalidMedia
|
|
||||||
};
|
|
||||||
|
|
||||||
enum Error
|
|
||||||
{
|
|
||||||
NoError = QMediaPlayer::NoError,
|
|
||||||
ResourceError = QMediaPlayer::ResourceError,
|
|
||||||
FormatError = QMediaPlayer::FormatError,
|
|
||||||
NetworkError = QMediaPlayer::NetworkError,
|
|
||||||
AccessDenied = QMediaPlayer::AccessDeniedError,
|
|
||||||
ServiceMissing = QMediaPlayer::ServiceMissingError
|
|
||||||
};
|
|
||||||
|
|
||||||
QDeclarativeVideo(QDeclarativeItem *parent = 0);
|
|
||||||
~QDeclarativeVideo();
|
|
||||||
|
|
||||||
bool hasAudio() const;
|
|
||||||
bool hasVideo() const;
|
|
||||||
|
|
||||||
FillMode fillMode() const;
|
|
||||||
void setFillMode(FillMode mode);
|
|
||||||
|
|
||||||
Status status() const;
|
|
||||||
Error error() const;
|
|
||||||
|
|
||||||
void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *);
|
|
||||||
|
|
||||||
void classBegin();
|
|
||||||
void componentComplete();
|
|
||||||
|
|
||||||
public Q_SLOTS:
|
|
||||||
void play();
|
|
||||||
void pause();
|
|
||||||
void stop();
|
|
||||||
|
|
||||||
Q_SIGNALS:
|
|
||||||
void sourceChanged();
|
|
||||||
void autoLoadChanged();
|
|
||||||
void playingChanged();
|
|
||||||
void pausedChanged();
|
|
||||||
void loopCountChanged();
|
|
||||||
|
|
||||||
void started();
|
|
||||||
void resumed();
|
|
||||||
void paused();
|
|
||||||
void stopped();
|
|
||||||
|
|
||||||
void statusChanged();
|
|
||||||
|
|
||||||
void durationChanged();
|
|
||||||
void positionChanged();
|
|
||||||
|
|
||||||
void volumeChanged();
|
|
||||||
void mutedChanged();
|
|
||||||
void hasAudioChanged();
|
|
||||||
void hasVideoChanged();
|
|
||||||
|
|
||||||
void bufferProgressChanged();
|
|
||||||
|
|
||||||
void seekableChanged();
|
|
||||||
void playbackRateChanged();
|
|
||||||
|
|
||||||
void errorChanged();
|
|
||||||
void error(QDeclarativeVideo::Error error, const QString &errorString);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
void geometryChanged(const QRectF &geometry, const QRectF &);
|
|
||||||
|
|
||||||
private Q_SLOTS:
|
|
||||||
void _q_nativeSizeChanged(const QSizeF &size);
|
|
||||||
void _q_error(int, const QString &);
|
|
||||||
|
|
||||||
private:
|
|
||||||
Q_DISABLE_COPY(QDeclarativeVideo)
|
|
||||||
|
|
||||||
QGraphicsVideoItem *m_graphicsItem;
|
|
||||||
|
|
||||||
Q_PRIVATE_SLOT(mediaBase(), void _q_statusChanged())
|
|
||||||
|
|
||||||
inline QDeclarativeMediaBase *mediaBase() { return this; }
|
|
||||||
};
|
|
||||||
|
|
||||||
QT_END_NAMESPACE
|
|
||||||
|
|
||||||
QML_DECLARE_TYPE(QT_PREPEND_NAMESPACE(QDeclarativeVideo))
|
|
||||||
|
|
||||||
QT_END_HEADER
|
|
||||||
|
|
||||||
#endif
|
|
||||||
Reference in New Issue
Block a user