From 99b610f06af444e2636d1afe93d3de89a524ee8a Mon Sep 17 00:00:00 2001 From: harlekin Date: Mon, 02 Sep 2002 17:18:30 +0000 Subject: first parts of gamma correction, fullscreen on arm need some more work --- (limited to 'noncore/multimedia') diff --git a/noncore/multimedia/opieplayer2/lib.cpp b/noncore/multimedia/opieplayer2/lib.cpp index b2143a0..748ae1f 100644 --- a/noncore/multimedia/opieplayer2/lib.cpp +++ b/noncore/multimedia/opieplayer2/lib.cpp @@ -60,6 +60,7 @@ extern "C" { void null_set_gui_width( vo_driver_t* self, int width ); void null_set_gui_height( vo_driver_t* self, int height ); void null_set_mode( vo_driver_t* self, int depth, int rgb ); + void null_set_videoGamma( vo_driver_t* self , int value ); void null_display_handler(vo_driver_t* self, display_xine_frame_t t, void* user_data); } @@ -92,7 +93,7 @@ Lib::Lib(XineVideoWidget* widget) { printf("!0\n" ); resize ( m_wid-> size ( )); ::null_set_mode( m_videoOutput, qt_screen->depth(), qt_screen->pixelType() ); - m_wid-> setImage ( new QImage ( Resource::loadImage(""))); + m_wid-> setImage ( new QImage ( Resource::loadImage("") ) ); m_wid->repaint(); } null_display_handler( m_videoOutput, @@ -203,6 +204,12 @@ bool Lib::isVideoFullScreen() { void Lib::setScaling( bool scale ) { ::null_set_scaling( m_videoOutput, scale ); } + +void Lib::setGamma( int value ) { + //qDebug( QString( "%1").arg(value) ); + ::null_set_videoGamma( m_videoOutput, value ); +} + bool Lib::isScaling() { return ::null_is_scaling( m_videoOutput ); } diff --git a/noncore/multimedia/opieplayer2/lib.h b/noncore/multimedia/opieplayer2/lib.h index abd8c65..b9d0a8a 100644 --- a/noncore/multimedia/opieplayer2/lib.h +++ b/noncore/multimedia/opieplayer2/lib.h @@ -112,6 +112,13 @@ namespace XINE { * */ void setScaling( bool ); + + /** + * Set the Gamma value for video output + * @param int the value between -100 and 100, 0 is original + */ + void setGamma( int ); + /** * test */ diff --git a/noncore/multimedia/opieplayer2/mediaplayerstate.cpp b/noncore/multimedia/opieplayer2/mediaplayerstate.cpp index d984022..4ec5989 100644 --- a/noncore/multimedia/opieplayer2/mediaplayerstate.cpp +++ b/noncore/multimedia/opieplayer2/mediaplayerstate.cpp @@ -1,3 +1,38 @@ +/* +                This file is part of the Opie Project + +              Copyright (c) 2002 Max Reiss + Copyright (c) 2002 L. Potter + Copyright (c) 2002 Holger Freyther + =. + .=l. +           .>+-= + _;:,     .>    :=|. This program is free software; you can +.> <`_,   >  .   <= redistribute it and/or modify it under +:`=1 )Y*s>-.--   : the terms of the GNU General Public +.="- .-=="i,     .._ License as published by the Free Software + - .   .-<_>     .<> Foundation; either version 2 of the License, +     ._= =}       : or (at your option) any later version. +    .%`+i>       _;_. +    .i_,=:_.      -`: PARTICULAR PURPOSE. See the GNU +..}^=.=       =       ; General Public License for more +++=   -.     .`     .: details. + :     =  ...= . :.=- + -.   .:....=;==+<; You should have received a copy of the GNU +  -_. . .   )=.  = General Public License along with +    --        :-=` this library; see the file COPYING.LIB. + If not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +*/ + +// this file is based on work by trolltech + #include #include #include @@ -21,9 +56,6 @@ MediaPlayerState::MediaPlayerState( QObject *parent, const char *name ) MediaPlayerState::~MediaPlayerState() { -// Config cfg( "OpiePlayer" ); -// writeConfig( cfg ); - } @@ -34,6 +66,7 @@ void MediaPlayerState::readConfig( Config& cfg ) { isLooping = cfg.readBoolEntry( "Looping" ); isShuffled = cfg.readBoolEntry( "Shuffle" ); usePlaylist = cfg.readBoolEntry( "UsePlayList" ); + videoGamma = cfg.readNumEntry( "VideoGamma" ); usePlaylist = TRUE; isPlaying = FALSE; isStreaming = FALSE; @@ -45,12 +78,13 @@ void MediaPlayerState::readConfig( Config& cfg ) { void MediaPlayerState::writeConfig( Config& cfg ) const { - cfg.setGroup("Options"); - cfg.writeEntry("FullScreen", isFullscreen ); - cfg.writeEntry("Scaling", isScaled ); - cfg.writeEntry("Looping", isLooping ); - cfg.writeEntry("Shuffle", isShuffled ); - cfg.writeEntry("UsePlayList", usePlaylist ); + cfg.setGroup( "Options" ); + cfg.writeEntry( "FullScreen", isFullscreen ); + cfg.writeEntry( "Scaling", isScaled ); + cfg.writeEntry( "Looping", isLooping ); + cfg.writeEntry( "Shuffle", isShuffled ); + cfg.writeEntry( "UsePlayList", usePlaylist ); + cfg.writeEntry( "VideoGamma", videoGamma ); } @@ -209,6 +243,14 @@ void MediaPlayerState::updatePosition( long p ){ emit positionUpdated(p); } +void MediaPlayerState::setVideoGamma( int v ){ + if ( videoGamma == v ) { + return; + } + videoGamma = v; + emit videoGammaChanged( v ); +} + void MediaPlayerState::setLength( long l ) { if ( curLength == l ) { return; diff --git a/noncore/multimedia/opieplayer2/mediaplayerstate.h b/noncore/multimedia/opieplayer2/mediaplayerstate.h index 215a2a8..4fef8e0 100644 --- a/noncore/multimedia/opieplayer2/mediaplayerstate.h +++ b/noncore/multimedia/opieplayer2/mediaplayerstate.h @@ -19,11 +19,11 @@     : ..    .:,     . . . without even the implied warranty of     =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A   _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU -..}^=.=       =       ; Library General Public License for more +..}^=.=       =       ; General Public License for more ++=   -.     .`     .: details.  :     =  ...= . :.=-  -.   .:....=;==+<; You should have received a copy of the GNU -  -_. . .   )=.  = Library General Public License along with +  -_. . .   )=.  = General Public License along with     --        :-=` this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, @@ -31,6 +31,8 @@ */ +// this file is based on work by trolltech + #ifndef MEDIA_PLAYER_STATE_H #define MEDIA_PLAYER_STATE_H @@ -79,6 +81,7 @@ public slots: void setLength( long l ); void setView( char v ); void setBlanked( bool b ); + void setVideoGamma( int v ); void setPrev(); void setNext(); @@ -111,6 +114,7 @@ signals: void lengthChanged( long ); void viewChanged( char ); void blankToggled( bool ); + void videoGammaChanged( int ); void prev(); void next(); @@ -125,7 +129,7 @@ private: long curPosition; long curLength; char curView; - + int videoGamma; void readConfig( Config& cfg ); }; diff --git a/noncore/multimedia/opieplayer2/nullvideo.c b/noncore/multimedia/opieplayer2/nullvideo.c index bd52869..ceda333 100644 --- a/noncore/multimedia/opieplayer2/nullvideo.c +++ b/noncore/multimedia/opieplayer2/nullvideo.c @@ -1,3 +1,35 @@ +/* +                This file is part of the Opie Project + +              Copyright (c) 2002 Max Reiss + Copyright (c) 2002 L. Potter + Copyright (c) 2002 Holger Freyther + =. + .=l. +           .>+-= + _;:,     .>    :=|. This program is free software; you can +.> <`_,   >  .   <= redistribute it and/or modify it under +:`=1 )Y*s>-.--   : the terms of the GNU General Public +.="- .-=="i,     .._ License as published by the Free Software + - .   .-<_>     .<> Foundation; either version 2 of the License, +     ._= =}       : or (at your option) any later version. +    .%`+i>       _;_. +    .i_,=:_.      -`: PARTICULAR PURPOSE. See the GNU +..}^=.=       =       ; General Public License for more +++=   -.     .`     .: details. + :     =  ...= . :.=- + -.   .:....=;==+<; You should have received a copy of the GNU +  -_. . .   )=.  = General Public License along with +    --        :-=` this library; see the file COPYING.LIB. + If not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +*/ /*#include */ #include @@ -31,7 +63,7 @@ struct null_driver_s { int depth, bpp, bytes_per_pixel; int yuv2rgb_mode; int yuv2rgb_swap; - int zuv2rgb_gamma; + int yuv2rgb_gamma; uint8_t *yuv2rgb_cmap; yuv2rgb_factory_t *yuv2rgb_factory; vo_overlay_t *overlay; @@ -605,6 +637,12 @@ void null_set_fullscreen( vo_driver_t* self, int screen ){ int null_is_scaling( vo_driver_t* self ){ return ((null_driver_t*)self)->m_is_scaling; } + +void null_set_videoGamma( vo_driver_t* self , int value ) { + ((null_driver_t*) self) ->yuv2rgb_gamma = value; + ((null_driver_t*) self) ->yuv2rgb_factory->set_gamma( ((null_driver_t*) self) ->yuv2rgb_factory, value ); +} + void null_set_scaling( vo_driver_t* self, int scale ){ ((null_driver_t*)self)->m_is_scaling = scale; } @@ -615,6 +653,8 @@ void null_set_gui_width( vo_driver_t* self, int width ){ void null_set_gui_height( vo_driver_t* self, int height ){ ((null_driver_t*)self)->gui_height = height; } + + void null_set_mode( vo_driver_t* self, int depth, int rgb ){ null_driver_t* this = (null_driver_t*)self; @@ -670,3 +710,4 @@ void null_display_handler(vo_driver_t* self, display_xine_frame_t t, void* user_ this->caller = user_data; this->frameDis = t; } + diff --git a/noncore/multimedia/opieplayer2/playlistwidget.cpp b/noncore/multimedia/opieplayer2/playlistwidget.cpp index 6c4d07f..3bd04bc 100644 --- a/noncore/multimedia/opieplayer2/playlistwidget.cpp +++ b/noncore/multimedia/opieplayer2/playlistwidget.cpp @@ -19,11 +19,11 @@     : ..    .:,     . . . without even the implied warranty of     =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A   _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU -..}^=.=       =       ; Library General Public License for more +..}^=.=       =       ; General Public License for more ++=   -.     .`     .: details.  :     =  ...= . :.=-  -.   .:....=;==+<; You should have received a copy of the GNU -  -_. . .   )=.  = Library General Public License along with +  -_. . .   )=.  = General Public License along with     --        :-=` this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, @@ -118,6 +118,7 @@ PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl ) connect( mediaPlayerState, SIGNAL( shuffledToggled( bool ) ), d->tbShuffle, SLOT( setOn( bool ) ) ); connect( mediaPlayerState, SIGNAL( playlistToggled( bool ) ), this, SLOT( setPlaylist( bool ) ) ); connect( d->selectedFiles, SIGNAL( doubleClicked( QListViewItem *) ), this, SLOT( playIt( QListViewItem *) ) ); + connect ( gammaSlider, SIGNAL( valueChanged( int ) ), mediaPlayerState, SLOT( setVideoGamma( int ) ) ); readConfig( cfg ); QString currentPlaylist = cfg.readEntry( "CurrentPlaylist", "" ); @@ -133,7 +134,7 @@ PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl ) PlayListWidget::~PlayListWidget() { - // WTF?!@?! + // WTF?!@?! if ( d->current ) { delete d->current; @@ -733,7 +734,7 @@ void PlayListWidget::populateAudioView() { long size; if( dit.current()->file().left(4) == "http" ) size=0; - else + else size = QFile( dit.current()->file() ).size(); newItem= /*(void)*/ new QListViewItem( audioView, dit.current()->name(), QString::number(size ), storage); newItem->setPixmap( 0, Resource::loadPixmap( "opieplayer2/musicfile" ) ); @@ -934,7 +935,7 @@ void PlayListWidget::writem3u() { // so maybe we should do some net checking to ,-) // no, cause it takes to long... - + list += d->selectedFiles->current()->file() + "\n"; noOfFiles++; } diff --git a/noncore/multimedia/opieplayer2/playlistwidget.h b/noncore/multimedia/opieplayer2/playlistwidget.h index 2742252..dcfdd48 100644 --- a/noncore/multimedia/opieplayer2/playlistwidget.h +++ b/noncore/multimedia/opieplayer2/playlistwidget.h @@ -19,11 +19,11 @@     : ..    .:,     . . . without even the implied warranty of     =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A   _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU -..}^=.=       =       ; Library General Public License for more +..}^=.=       =       ; General Public License for more ++=   -.     .`     .: details.  :     =  ...= . :.=-  -.   .:....=;==+<; You should have received a copy of the GNU -  -_. . .   )=.  = Library General Public License along with +  -_. . .   )=.  = General Public License along with     --        :-=` this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, diff --git a/noncore/multimedia/opieplayer2/playlistwidgetgui.cpp b/noncore/multimedia/opieplayer2/playlistwidgetgui.cpp index 6ecd016..250833c 100644 --- a/noncore/multimedia/opieplayer2/playlistwidgetgui.cpp +++ b/noncore/multimedia/opieplayer2/playlistwidgetgui.cpp @@ -19,11 +19,11 @@     : ..    .:,     . . . without even the implied warranty of     =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A   _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU -..}^=.=       =       ; Library General Public License for more +..}^=.=       =       ; General Public License for more ++=   -.     .`     .: details.  :     =  ...= . :.=-  -.   .:....=;==+<; You should have received a copy of the GNU -  -_. . .   )=.  = Library General Public License along with +  -_. . .   )=.  = General Public License along with     --        :-=` this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, @@ -99,6 +99,25 @@ PlayListWidgetGui::PlayListWidgetGui( QWidget* parent, const char* name, WFlags pmView->insertItem( tr( "Skins" ), skinsMenu ); skinsMenu->isCheckable(); + gammaMenu = new QPopupMenu( this ); + pmView->insertItem( tr( "Gamma" ), gammaMenu ); + gammaMenu->setMinimumHeight( 50 ); + + gammaSlider = new QSlider( QSlider::Vertical, gammaMenu ); + gammaSlider->setRange( -100, 100 ); + gammaSlider->setTickmarks( QSlider::Left ); + gammaSlider->setTickInterval( 20 ); + gammaSlider->setFocusPolicy( QWidget::NoFocus ); + gammaSlider->setValue( 0 ); + gammaSlider->setMinimumHeight( 50 ); + + gammaLCD = new QLCDNumber( 3, gammaMenu ); + + gammaMenu->insertItem( gammaSlider ); + gammaMenu->insertItem( gammaLCD ); + + connect( gammaSlider, SIGNAL( valueChanged( int ) ), gammaLCD, SLOT( display( int ) ) ); + vbox5 = new QVBox( this ); QVBox *vbox4 = new QVBox( vbox5 ); QHBox *hbox6 = new QHBox( vbox4 ); @@ -107,7 +126,7 @@ PlayListWidgetGui::PlayListWidgetGui( QWidget* parent, const char* name, WFlags QWidget *pTab; pTab = new QWidget( tabWidget, "pTab" ); - tabWidget->insertTab( pTab,"Playlist"); + tabWidget->insertTab( pTab, "Playlist"); QGridLayout *Playout = new QGridLayout( pTab ); Playout->setSpacing( 2); diff --git a/noncore/multimedia/opieplayer2/playlistwidgetgui.h b/noncore/multimedia/opieplayer2/playlistwidgetgui.h index 4c8d737..61fd40d 100644 --- a/noncore/multimedia/opieplayer2/playlistwidgetgui.h +++ b/noncore/multimedia/opieplayer2/playlistwidgetgui.h @@ -19,11 +19,11 @@     : ..    .:,     . . . without even the implied warranty of     =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A   _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU -..}^=.=       =       ; Library General Public License for more +..}^=.=       =       ; General Public License for more ++=   -.     .`     .: details.  :     =  ...= . :.=-  -.   .:....=;==+<; You should have received a copy of the GNU -  -_. . .   )=.  = Library General Public License along with +  -_. . .   )=.  = General Public License along with     --        :-=` this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, @@ -44,7 +44,8 @@ #include #include #include - +#include +#include class PlayListWidgetPrivate; class PlayListSelection; @@ -104,6 +105,9 @@ protected: QListView *audioView, *videoView, *playlistView; QLabel *libString; QPopupMenu *pmView ; + QPopupMenu *gammaMenu; + QSlider *gammaSlider; + QLCDNumber *gammaLCD; bool fromSetDocument; bool insanityBool; QString setDocFileRef; diff --git a/noncore/multimedia/opieplayer2/xinecontrol.cpp b/noncore/multimedia/opieplayer2/xinecontrol.cpp index 12d80ba..d18fde5 100644 --- a/noncore/multimedia/opieplayer2/xinecontrol.cpp +++ b/noncore/multimedia/opieplayer2/xinecontrol.cpp @@ -19,11 +19,11 @@     : ..    .:,     . . . without even the implied warranty of     =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A   _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU -..}^=.=       =       ; Library General Public License for more +..}^=.=       =       ; General Public License for more ++=   -.     .`     .: details.  :     =  ...= . :.=-  -.   .:....=;==+<; You should have received a copy of the GNU -  -_. . .   )=.  = Library General Public License along with +  -_. . .   )=.  = General Public License along with     --        :-=` this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, @@ -51,6 +51,7 @@ XineControl::XineControl( QObject *parent, const char *name ) connect( mediaPlayerState, SIGNAL( playingToggled( bool ) ), this, SLOT( stop( bool ) ) ); connect( mediaPlayerState, SIGNAL( fullscreenToggled( bool ) ), this, SLOT( setFullscreen( bool ) ) ); connect( mediaPlayerState, SIGNAL( positionChanged( long ) ), this, SLOT( seekTo( long ) ) ); + connect( mediaPlayerState, SIGNAL( videoGammaChanged( int ) ), this, SLOT( setGamma( int ) ) ); connect( libXine, SIGNAL( stopped() ), this, SLOT( nextMedia() ) ); disabledSuspendScreenSaver = FALSE; @@ -71,9 +72,9 @@ void XineControl::play( const QString& fileName ) { hasVideoChannel=FALSE; hasAudioChannel=FALSE; m_fileName = fileName; - - qDebug("<>>>"); - + + //qDebug("<>>>"); + libXine->play( fileName ); mediaPlayerState->setPlaying( true ); // default to audio view until we know how to handle video @@ -114,6 +115,10 @@ void XineControl::nextMedia() { mediaPlayerState->setNext(); } +void XineControl::setGamma( int value ) { + libXine->setGamma( value ); +} + void XineControl::stop( bool isSet ) { if ( !isSet) { libXine->stop( ); diff --git a/noncore/multimedia/opieplayer2/xinecontrol.h b/noncore/multimedia/opieplayer2/xinecontrol.h index 4263b36..1de610b 100644 --- a/noncore/multimedia/opieplayer2/xinecontrol.h +++ b/noncore/multimedia/opieplayer2/xinecontrol.h @@ -19,11 +19,11 @@     : ..    .:,     . . . without even the implied warranty of     =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A   _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU -..}^=.=       =       ; Library General Public License for more +..}^=.=       =       ; General Public License for more ++=   -.     .`     .: details.  :     =  ...= . :.=-  -.   .:....=;==+<; You should have received a copy of the GNU -  -_. . .   )=.  = Library General Public License along with +  -_. . .   )=.  = General Public License along with     --        :-=` this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, @@ -50,26 +50,53 @@ public: public slots: void play( const QString& fileName ); void stop( bool ); + + /** + * Pause the media stream + * @param if pause or not + */ void pause( bool ); + + /** + * Set videos fullscreen + * @param yes or no + */ void setFullscreen( bool ); + + /** + * + */ long currentTime(); void seekTo( long ); // get length of media file and set it void length(); long position(); + + /** + * Proceed to the next media file in playlist + */ void nextMedia(); + void videoResized ( const QSize &s ); + /** + * Set the gamma value of the video output + * @param int value between -100 and 100, 0 is original + */ + void setGamma( int ); + + private: XINE::Lib *libXine; MediaDetect mdetect; - long m_currentTime; + long m_currentTime; long m_position; int m_length; QString m_fileName; bool disabledSuspendScreenSaver : 1; bool hasVideoChannel : 1; bool hasAudioChannel : 1; + signals: void positionChanged( long ); diff --git a/noncore/multimedia/opieplayer2/xinevideowidget.cpp b/noncore/multimedia/opieplayer2/xinevideowidget.cpp index bc95d86..d06d62a 100644 --- a/noncore/multimedia/opieplayer2/xinevideowidget.cpp +++ b/noncore/multimedia/opieplayer2/xinevideowidget.cpp @@ -129,74 +129,74 @@ void XineVideoWidget::paintEvent ( QPaintEvent * ) qt_bug_workaround_clip_rects. resize ( dp. numRects ( )); for ( int i = dp. numRects ( ) - 1; i >= 0; i-- ) { - const QRect &clip = dp. rect ( i ); + const QRect &clip = dp. rect ( i ); - qt_bug_workaround_clip_rects [i] = qt_screen-> mapFromDevice ( clip, QSize ( qt_screen-> width ( ), qt_screen-> height ( ))); + qt_bug_workaround_clip_rects [i] = qt_screen-> mapFromDevice ( clip, QSize ( qt_screen-> width ( ), qt_screen-> height ( ))); - uchar *dst = fb + ( clip. x ( ) * m_bytes_per_pixel ) + ( clip. y ( ) * m_bytes_per_line_fb ); - uchar *src = frame; + uchar *dst = fb + ( clip. x ( ) * m_bytes_per_pixel ) + ( clip. y ( ) * m_bytes_per_line_fb ); + uchar *src = frame; - switch ( rot ) { + switch ( rot ) { case 0: src += ( (( clip. x ( ) - framerect. x ( )) * m_bytes_per_pixel ) + (( clip. y ( ) - framerect. y ( )) * m_bytes_per_line_frame ) ); break; case 1: src += ( (( clip. y ( ) - framerect. y ( )) * m_bytes_per_pixel ) + (( clip. x ( ) - framerect. x ( )) * m_bytes_per_line_frame ) + (( framerect. height ( ) - 1 ) * m_bytes_per_pixel ) ); break; case 2: src += ( (( clip. x ( ) - framerect. x ( )) * m_bytes_per_pixel ) + (( clip. y ( ) - framerect. y ( )) * m_bytes_per_line_frame ) + (( framerect. height ( ) - 1 ) * m_bytes_per_line_frame ) ); break; case 3: src += ( (( clip. y ( ) - framerect. y ( )) * m_bytes_per_pixel ) + (( clip. x ( ) - framerect. x ( )) * m_bytes_per_line_frame ) ); break; - default: break; - } + default: break; + } - uint leftfill = 0; - uint framefill = 0; - uint rightfill = 0; - uint clipwidth = clip. width ( ) * m_bytes_per_pixel; + uint leftfill = 0; + uint framefill = 0; + uint rightfill = 0; + uint clipwidth = clip. width ( ) * m_bytes_per_pixel; - if ( clip. left ( ) < framerect. left ( )) - leftfill = (( framerect. left ( ) - clip. left ( )) * m_bytes_per_pixel ) framerect. right ( )) - rightfill = (( clip. right ( ) - framerect. right ( )) * m_bytes_per_pixel ) framerect. right ( )) + rightfill = (( clip. right ( ) - framerect. right ( )) * m_bytes_per_pixel ) framerect. bottom ( ))) { - memset ( dst, 0, clipwidth ); - } + for ( int y = clip. top ( ); y <= clip. bottom ( ); y++ ) { + if (( y < framerect. top ( )) || ( y > framerect. bottom ( ))) { + memset ( dst, 0, clipwidth ); + } else { - if ( leftfill ) - memset ( dst, 0, leftfill ); - - if ( framefill ) { - switch ( rot ) { - case 0: memcpy ( dst + leftfill, src, framefill ); break; - case 1: memcpy_step ( dst + leftfill, src, framefill, m_bytes_per_line_frame ); break; - case 2: memcpy_rev ( dst + leftfill, src, framefill ); break; - case 3: memcpy_step_rev ( dst + leftfill, src, framefill, m_bytes_per_line_frame ); break; - default: break; + if ( leftfill ) + memset ( dst, 0, leftfill ); + + if ( framefill ) { + switch ( rot ) { + case 0: memcpy ( dst + leftfill, src, framefill ); break; + case 1: memcpy_step ( dst + leftfill, src, framefill, m_bytes_per_line_frame ); break; + case 2: memcpy_rev ( dst + leftfill, src, framefill ); break; + case 3: memcpy_step_rev ( dst + leftfill, src, framefill, m_bytes_per_line_frame ); break; + default: break; + } } - } if ( rightfill ) - memset ( dst + leftfill + framefill, 0, rightfill ); + memset ( dst + leftfill + framefill, 0, rightfill ); } - dst += m_bytes_per_line_fb; + dst += m_bytes_per_line_fb; - switch ( rot ) { - case 0: src += m_bytes_per_line_frame; break; - case 1: src -= m_bytes_per_pixel; break; - case 2: src -= m_bytes_per_line_frame; break; + switch ( rot ) { + case 0: src += m_bytes_per_line_frame; break; + case 1: src -= m_bytes_per_pixel; break; + case 2: src -= m_bytes_per_line_frame; break; case 3: src += m_bytes_per_pixel; break; - default: break; + default: break; + } } - } } } //qWarning ( " ||| painting |||" ); { - // QVFB hack by MArtin Jones - QPainter p ( this ); + // QVFB hack by MArtin Jones + QPainter p ( this ); - for ( int i = qt_bug_workaround_clip_rects. size ( ) - 1; i >= 0; i-- ) { - p. fillRect ( QRect ( mapFromGlobal ( qt_bug_workaround_clip_rects [i]. topLeft ( )), qt_bug_workaround_clip_rects [i]. size ( )), QBrush ( NoBrush ) ); - } + for ( int i = qt_bug_workaround_clip_rects. size ( ) - 1; i >= 0; i-- ) { + p. fillRect ( QRect ( mapFromGlobal ( qt_bug_workaround_clip_rects [i]. topLeft ( )), qt_bug_workaround_clip_rects [i]. size ( )), QBrush ( NoBrush ) ); + } } } //qWarning( "painting >>>" ); diff --git a/noncore/multimedia/opieplayer2/yuv2rgb.c b/noncore/multimedia/opieplayer2/yuv2rgb.c index 22bb4cb..e8e86e6 100644 --- a/noncore/multimedia/opieplayer2/yuv2rgb.c +++ b/noncore/multimedia/opieplayer2/yuv2rgb.c @@ -3063,16 +3063,15 @@ yuv2rgb_t *yuv2rgb_create_converter (yuv2rgb_factory_t *factory) { /* * factory functions */ - void yuv2rgb_set_gamma (yuv2rgb_factory_t *this, int gamma) { - - int i; - - for (i = 0; i < 256; i++) { - (uint8_t *)this->table_rV[i] += this->entry_size*(gamma - this->gamma); - (uint8_t *)this->table_gU[i] += this->entry_size*(gamma - this->gamma); - (uint8_t *)this->table_bU[i] += this->entry_size*(gamma - this->gamma); - } + + int i; + + for (i = 0; i < 256; i++) { + (uint8_t *)this->table_rV[i] += this->entry_size*(gamma - this->gamma); + (uint8_t *)this->table_gU[i] += this->entry_size*(gamma - this->gamma); + (uint8_t *)this->table_bU[i] += this->entry_size*(gamma - this->gamma); + } #ifdef ARCH_X86 mmx_yuv2rgb_set_gamma(gamma); #endif -- cgit v0.9.0.2