summaryrefslogtreecommitdiff
authoralwin <alwin>2005-04-12 13:33:37 (UTC)
committer alwin <alwin>2005-04-12 13:33:37 (UTC)
commit6df2eb36803e072ea9db62153b762250742610f0 (patch) (side-by-side diff)
tree5e80ac2c581ffe19478110233dbd93ae1977f99f
parent81b7ea55be071eab5f8b4afd2c4c291dee365545 (diff)
downloadopie-6df2eb36803e072ea9db62153b762250742610f0.zip
opie-6df2eb36803e072ea9db62153b762250742610f0.tar.gz
opie-6df2eb36803e072ea9db62153b762250742610f0.tar.bz2
some usefull xine-helpers
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/lib.cpp34
-rw-r--r--noncore/multimedia/opieplayer2/lib.h4
2 files changed, 32 insertions, 6 deletions
diff --git a/noncore/multimedia/opieplayer2/lib.cpp b/noncore/multimedia/opieplayer2/lib.cpp
index 9f7a9c5..4ae8490 100644
--- a/noncore/multimedia/opieplayer2/lib.cpp
+++ b/noncore/multimedia/opieplayer2/lib.cpp
@@ -281,38 +281,66 @@ int Lib::length() const {
iRetVal = xine_get_pos_length( m_stream, &pos, &time, &length );
if (iRetVal)
{/* if the function didn't return 0, then pos, time and length are valid.*/
return length/1000;
}
/*don't poll too much*/
usleep(100000);
iTestLoop++;
}
while ( iTestLoop < 10 ); /* if after 1s, we still don't have any
valid stream, then return -1 (this value could be used to make the stream
unseekable, but it should never occur!! Mr. Murphy ? :) ) */
return -1;
}
+/* info about current stream */
+QSize Lib::videoSize()const
+{
+ if (!m_initialized||!hasVideo()) return QSize(0,0);
+ int width = xine_get_stream_info(m_stream,XINE_STREAM_INFO_VIDEO_WIDTH);
+ int height = xine_get_stream_info(m_stream,XINE_STREAM_INFO_VIDEO_HEIGHT);
+ return QSize(width,height);
+}
+
+
bool Lib::isSeekable() const {
assert( m_initialized );
return xine_get_stream_info( m_stream, XINE_STREAM_INFO_SEEKABLE );
}
+bool Lib::hasVideo() const {
+ assert( m_initialized );
+
+ return xine_get_stream_info( m_stream, XINE_STREAM_INFO_HAS_VIDEO);
+}
+
+int Lib::audioBitrate()const
+{
+ if (!m_initialized) return 0;
+ return xine_get_stream_info( m_stream, XINE_STREAM_INFO_AUDIO_BITRATE);
+}
+int Lib::videoBitrate()const
+{
+ if (!m_initialized||!hasVideo()) return 0;
+ return xine_get_stream_info( m_stream, XINE_STREAM_INFO_VIDEO_BITRATE);
+}
+/* end info block */
+
void Lib::seekTo( int time ) {
assert( m_initialized );
odebug << "Seeking to second " << time << oendl;
//Keep it paused if it was in that state
if ( xine_get_param( m_stream, XINE_PARAM_SPEED ) ) {
xine_play( m_stream, 0, time*1000 );
}
else {
xine_play( m_stream, 0, time*1000 );
xine_set_param( m_stream, XINE_PARAM_SPEED, XINE_SPEED_PAUSE );
}
}
@@ -378,38 +406,32 @@ void Lib::handleXineEvent( int type, int data, const char* name ) {
}
void Lib::setShowVideo( bool video ) {
assert( m_initialized );
m_video = video;
::null_set_show_video( m_videoOutput, video );
}
bool Lib::isShowingVideo() const {
assert( m_initialized );
return ::null_is_showing_video( m_videoOutput );
}
-bool Lib::hasVideo() const {
- assert( m_initialized );
-
- return xine_get_stream_info( m_stream, 18 );
-}
-
void Lib::showVideoFullScreen( bool fullScreen ) {
assert( m_initialized );
::null_set_fullscreen( m_videoOutput, fullScreen );
}
bool Lib::isVideoFullScreen() const {
assert( m_initialized );
return ::null_is_fullscreen( m_videoOutput );
}
void Lib::setScaling( bool scale ) {
assert( m_initialized );
::null_set_scaling( m_videoOutput, scale );
diff --git a/noncore/multimedia/opieplayer2/lib.h b/noncore/multimedia/opieplayer2/lib.h
index 2f5bf86..2607193 100644
--- a/noncore/multimedia/opieplayer2/lib.h
+++ b/noncore/multimedia/opieplayer2/lib.h
@@ -158,32 +158,36 @@ namespace XINE {
*/
void setGamma( int );
/**
* Returns the error code
* XINE_ERROR_NONE 0
* XINE_ERROR_NO_INPUT_PLUGIN 1
* XINE_ERROR_NO_DEMUXER_PLUGIN 2
* XINE_ERROR_DEMUXER_FAILED 3
*/
int error() const;
void ensureInitialized();
void setWidget( XineVideoWidget *widget );
+ QSize videoSize()const;
+ int audioBitrate()const;
+ int videoBitrate()const;
+
signals:
void stopped();
void initialized();
protected:
virtual void receiveMessage( ThreadUtil::ChannelMessage *msg, SendType sendType );
virtual void run();
private:
void initialize();
int m_bytes_per_pixel;
bool m_initialized:1;