author | sandman <sandman> | 2002-08-01 01:33:23 (UTC) |
---|---|---|
committer | sandman <sandman> | 2002-08-01 01:33:23 (UTC) |
commit | 32b7fdb0e9e5ec6cb6f791962efe68c40564b178 (patch) (unidiff) | |
tree | 86044a8b3884536f65d38b32d3e0552c30f13a81 | |
parent | ba034bf4cb91b83654056945fc27313a28528015 (diff) | |
download | opie-32b7fdb0e9e5ec6cb6f791962efe68c40564b178.zip opie-32b7fdb0e9e5ec6cb6f791962efe68c40564b178.tar.gz opie-32b7fdb0e9e5ec6cb6f791962efe68c40564b178.tar.bz2 |
Fixed video output (frames allocated before video was enabled via
show_video flag have never been displayes thereafter)
Also optimized the video widget
-rw-r--r-- | noncore/multimedia/opieplayer2/lib.cpp | 2 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer2/nullvideo.c | 17 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer2/xinevideowidget.cpp | 79 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer2/xinevideowidget.h | 3 |
4 files changed, 49 insertions, 52 deletions
diff --git a/noncore/multimedia/opieplayer2/lib.cpp b/noncore/multimedia/opieplayer2/lib.cpp index aa37cd7..ac5cdd5 100644 --- a/noncore/multimedia/opieplayer2/lib.cpp +++ b/noncore/multimedia/opieplayer2/lib.cpp | |||
@@ -206,3 +206,3 @@ void Lib::drawFrame( uint8_t* frame, int width, int height, int bytes ) { | |||
206 | m_wid->setImage( frame, yoffset, xoffset, width, height, linestep, bytes, m_bytes_per_pixel ); | 206 | m_wid->setImage( frame, yoffset, xoffset, width, height, linestep, bytes, m_bytes_per_pixel ); |
207 | m_wid->repaint(); | 207 | // m_wid->repaint(false); |
208 | 208 | ||
diff --git a/noncore/multimedia/opieplayer2/nullvideo.c b/noncore/multimedia/opieplayer2/nullvideo.c index f356e76..63d5752 100644 --- a/noncore/multimedia/opieplayer2/nullvideo.c +++ b/noncore/multimedia/opieplayer2/nullvideo.c | |||
@@ -74,3 +74,3 @@ struct opie_frame_s { | |||
74 | 74 | ||
75 | int show_video; | 75 | // int show_video; |
76 | null_driver_t *output; | 76 | null_driver_t *output; |
@@ -87,3 +87,3 @@ static void null_frame_copy (vo_frame_t *vo_img, uint8_t **src) { | |||
87 | printf("frame copy\n"); | 87 | printf("frame copy\n"); |
88 | if(!frame->show_video ){ printf("no video\n"); return; } // no video | 88 | if(!frame->output->m_show_video ){ printf("no video\n"); return; } // no video |
89 | 89 | ||
@@ -96,3 +96,2 @@ static void null_frame_copy (vo_frame_t *vo_img, uint8_t **src) { | |||
96 | src[0]); | 96 | src[0]); |
97 | |||
98 | } | 97 | } |
@@ -147,3 +146,3 @@ static vo_frame_t* null_alloc_frame( vo_driver_t* self ){ | |||
147 | frame->output = this; | 146 | frame->output = this; |
148 | frame->show_video = this->m_show_video; | 147 | // frame->show_video = this->m_show_video; |
149 | /* initialize the frame*/ | 148 | /* initialize the frame*/ |
@@ -167,3 +166,3 @@ static void null_compute_ideal_size (null_driver_t *this, opie_frame_t *frame) { | |||
167 | 166 | ||
168 | if (!this->m_is_scaling || !this->m_show_video) { | 167 | if (!this->m_is_scaling /*|| !this->m_show_video*/) { |
169 | printf("Not scaling\n"); | 168 | printf("Not scaling\n"); |
@@ -303,3 +302,3 @@ static void null_update_frame_format( vo_driver_t* self, vo_frame_t* img, | |||
303 | this->gui_changed = 0; | 302 | this->gui_changed = 0; |
304 | frame->show_video = this->m_show_video; | 303 | //frame->show_video = this->m_show_video; |
305 | 304 | ||
@@ -357,3 +356,3 @@ static void null_update_frame_format( vo_driver_t* self, vo_frame_t* img, | |||
357 | */ | 356 | */ |
358 | if(this->m_show_video ){ | 357 | if(1 /*this->m_show_video*/ ){ |
359 | printf("showing video\n"); | 358 | printf("showing video\n"); |
@@ -416,3 +415,3 @@ static void null_display_frame( vo_driver_t* self, vo_frame_t *frame_gen ){ | |||
416 | printf("display frame\n"); | 415 | printf("display frame\n"); |
417 | // if( this->m_show_video ) { // return if not displaying | 416 | // if( this->m_show_video ) { // return if not displaying |
418 | printf("calling home aye\n" ); | 417 | printf("calling home aye\n" ); |
@@ -424,3 +423,3 @@ static void null_display_frame( vo_driver_t* self, vo_frame_t *frame_gen ){ | |||
424 | } | 423 | } |
425 | // } | 424 | // } |
426 | 425 | ||
diff --git a/noncore/multimedia/opieplayer2/xinevideowidget.cpp b/noncore/multimedia/opieplayer2/xinevideowidget.cpp index d665f16..b5a714e 100644 --- a/noncore/multimedia/opieplayer2/xinevideowidget.cpp +++ b/noncore/multimedia/opieplayer2/xinevideowidget.cpp | |||
@@ -48,3 +48,3 @@ XineVideoWidget::XineVideoWidget( int width, | |||
48 | const char* name ) | 48 | const char* name ) |
49 | : QWidget( parent, name ) | 49 | : QWidget( parent, name, WRepaintNoErase | WResizeNoErase ) |
50 | { | 50 | { |
@@ -63,3 +63,3 @@ void XineVideoWidget::clear() { | |||
63 | m_buff = 0; | 63 | m_buff = 0; |
64 | repaint(); | 64 | repaint(false); |
65 | } | 65 | } |
@@ -67,24 +67,35 @@ void XineVideoWidget::paintEvent( QPaintEvent* e ) { | |||
67 | qWarning("painting"); | 67 | qWarning("painting"); |
68 | QPainter p(this ); | 68 | if (m_buff == 0 ) { |
69 | p.setBrush( QBrush( Qt::black ) ); | 69 | QPainter p(this ); |
70 | p.drawRect( rect() ); | 70 | p.fillRect( rect(), black ); |
71 | if (m_buff == 0 ) | ||
72 | p.drawImage( 0, 0, *m_image ); | 71 | p.drawImage( 0, 0, *m_image ); |
73 | else { | 72 | qWarning ( "logo\n" ); |
73 | } | ||
74 | else { | ||
74 | qWarning("paitnevent\n"); | 75 | qWarning("paitnevent\n"); |
75 | 76 | { | |
76 | QDirectPainter dp( this ); | 77 | |
77 | uchar* dst = dp.frameBuffer() + (m_yOff + dp.yOffset() ) * linestep + | 78 | if (( m_thisframe & m_lastframe ) != m_lastframe ) { |
78 | (m_xOff + dp.xOffset() ) * m_bytes_per_pixel; | 79 | QPainter p ( this ); |
79 | uchar* frame = m_buff; | 80 | p. fillRect ( m_lastframe, black ); |
80 | for(int y = 0; y < m_Height; y++ ) { | 81 | } |
81 | memcpy( dst, frame, m_bytes ); | 82 | } |
82 | frame += m_bytes; | 83 | { |
83 | dst += linestep; | 84 | QDirectPainter dp ( this ); |
85 | |||
86 | uchar* dst = dp.frameBuffer() + (m_thisframe. y ( ) + dp.yOffset() ) * linestep + | ||
87 | (m_thisframe. x ( ) + dp.xOffset() ) * m_bytes_per_pixel; | ||
88 | uchar* frame = m_buff; | ||
89 | for(int y = 0; y < m_thisframe. height ( ); y++ ) { | ||
90 | memcpy( dst, frame, m_bytes ); | ||
91 | frame += m_bytes; | ||
92 | dst += linestep; | ||
93 | } | ||
84 | } | 94 | } |
85 | // QVFB hack by MArtin Jones | 95 | { |
86 | // QPainter dp2(this); | 96 | // QVFB hack by MArtin Jones |
87 | // dp2.fillRect( rect(), QBrush( NoBrush ) ); | 97 | QPainter p ( this ); |
98 | p. fillRect ( m_thisframe, QBrush ( NoBrush )); | ||
99 | } | ||
88 | } | 100 | } |
89 | // QWidget::paintEvent( e ); | ||
90 | } | 101 | } |
@@ -103,10 +114,7 @@ void XineVideoWidget::setImage( uchar* image, int yoffsetXLine, | |||
103 | int height, int linestep, int bytes, int bpp ) { | 114 | int height, int linestep, int bytes, int bpp ) { |
104 | /* if (m_buff != 0 ) | 115 | |
105 | free(m_buff ); | 116 | m_lastframe = m_thisframe; |
106 | */ | 117 | m_thisframe. setRect ( xoffsetXBytes, yoffsetXLine, width, height ); |
118 | |||
107 | m_buff = image; | 119 | m_buff = image; |
108 | m_yOff = yoffsetXLine; | ||
109 | m_xOff = xoffsetXBytes; | ||
110 | m_Width = width; | ||
111 | m_Height = height; | ||
112 | this->linestep = linestep; | 120 | this->linestep = linestep; |
@@ -114,17 +122,4 @@ void XineVideoWidget::setImage( uchar* image, int yoffsetXLine, | |||
114 | m_bytes_per_pixel = bpp; | 122 | m_bytes_per_pixel = bpp; |
115 | //// | 123 | |
116 | qWarning("width %d %d", width, height ); | 124 | repaint ( false ); |
117 | /* QDirectPainter dp( this ); | ||
118 | uchar* dst = dp.frameBuffer() + (m_yOff + dp.yOffset() ) * linestep + | ||
119 | (m_xOff + dp.xOffset() ) * m_bytes_per_pixel; | ||
120 | uchar* frame = m_buff; | ||
121 | for(int y = 0; y < m_Height; y++ ) { | ||
122 | memcpy( dst, frame, m_bytes ); | ||
123 | frame += m_bytes; | ||
124 | dst += linestep; | ||
125 | } | ||
126 | // QVFB hack | ||
127 | QPainter dp2(this); | ||
128 | dp2.fillRect( rect(), QBrush( NoBrush ) ); | ||
129 | */ | ||
130 | } | 125 | } |
diff --git a/noncore/multimedia/opieplayer2/xinevideowidget.h b/noncore/multimedia/opieplayer2/xinevideowidget.h index b670fa0..5656194 100644 --- a/noncore/multimedia/opieplayer2/xinevideowidget.h +++ b/noncore/multimedia/opieplayer2/xinevideowidget.h | |||
@@ -53,2 +53,5 @@ protected: | |||
53 | private: | 53 | private: |
54 | QRect m_lastframe; | ||
55 | QRect m_thisframe; | ||
56 | |||
54 | int m_wid; | 57 | int m_wid; |