summaryrefslogtreecommitdiff
path: root/noncore/multimedia/opieplayer2/lib.cpp
authorerik <erik>2007-02-05 20:20:18 (UTC)
committer erik <erik>2007-02-05 20:20:18 (UTC)
commita505f79190d4d14a7c9595af3e9b78d9c613da21 (patch) (unidiff)
treebfdeab48ca93857d5c2ec4f7d9380bc61b2c08b1 /noncore/multimedia/opieplayer2/lib.cpp
parentb017b14c0ec6d327e061a1f96209e19fdc59885a (diff)
downloadopie-a505f79190d4d14a7c9595af3e9b78d9c613da21.zip
opie-a505f79190d4d14a7c9595af3e9b78d9c613da21.tar.gz
opie-a505f79190d4d14a7c9595af3e9b78d9c613da21.tar.bz2
BUG: Lack of a << made opieplayer2 uncompilable.
FIX: It is put in now.
Diffstat (limited to 'noncore/multimedia/opieplayer2/lib.cpp') (more/less context) (show whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/lib.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/noncore/multimedia/opieplayer2/lib.cpp b/noncore/multimedia/opieplayer2/lib.cpp
index 5f281b7..575f2b2 100644
--- a/noncore/multimedia/opieplayer2/lib.cpp
+++ b/noncore/multimedia/opieplayer2/lib.cpp
@@ -1,191 +1,191 @@
1/* 1/*
2 This file is part of the Opie Project 2 This file is part of the Opie Project
3 3
4 Copyright (c) 2002 Max Reiss <harlekin@handhelds.org> 4 Copyright (c) 2002 Max Reiss <harlekin@handhelds.org>
5 Copyright (c) 2002 LJP <> 5 Copyright (c) 2002 LJP <>
6 Copyright (c) 2002 Holger Freyther <zecke@handhelds.org> 6 Copyright (c) 2002 Holger Freyther <zecke@handhelds.org>
7 =. 7 =.
8 .=l. 8 .=l.
9 .>+-= 9 .>+-=
10_;:, .> :=|. This program is free software; you can 10_;:, .> :=|. This program is free software; you can
11.> <`_, > . <= redistribute it and/or modify it under 11.> <`_, > . <= redistribute it and/or modify it under
12:`=1 )Y*s>-.-- : the terms of the GNU General Public 12:`=1 )Y*s>-.-- : the terms of the GNU General Public
13.="- .-=="i, .._ License as published by the Free Software 13.="- .-=="i, .._ License as published by the Free Software
14- . .-<_> .<> Foundation; either version 2 of the License, 14- . .-<_> .<> Foundation; either version 2 of the License,
15 ._= =} : or (at your option) any later version. 15 ._= =} : or (at your option) any later version.
16 .%`+i> _;_. 16 .%`+i> _;_.
17 .i_,=:_. -<s. This program is distributed in the hope that 17 .i_,=:_. -<s. This program is distributed in the hope that
18 + . -:. = it will be useful, but WITHOUT ANY WARRANTY; 18 + . -:. = it will be useful, but WITHOUT ANY WARRANTY;
19 : .. .:, . . . without even the implied warranty of 19 : .. .:, . . . without even the implied warranty of
20 =_ + =;=|` MERCHANTABILITY or FITNESS FOR A 20 =_ + =;=|` MERCHANTABILITY or FITNESS FOR A
21 _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU 21 _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU
22..}^=.= = ; Library General Public License for more 22..}^=.= = ; Library General Public License for more
23++= -. .` .: details. 23++= -. .` .: details.
24: = ...= . :.=- 24: = ...= . :.=-
25-. .:....=;==+<; You should have received a copy of the GNU 25-. .:....=;==+<; You should have received a copy of the GNU
26 -_. . . )=. = Library General Public License along with 26 -_. . . )=. = Library General Public License along with
27 -- :-=` this library; see the file COPYING.LIB. 27 -- :-=` this library; see the file COPYING.LIB.
28 If not, write to the Free Software Foundation, 28 If not, write to the Free Software Foundation,
29 Inc., 59 Temple Place - Suite 330, 29 Inc., 59 Temple Place - Suite 330,
30 Boston, MA 02111-1307, USA. 30 Boston, MA 02111-1307, USA.
31 31
32*/ 32*/
33 33
34#include "xinevideowidget.h" 34#include "xinevideowidget.h"
35#include "lib.h" 35#include "lib.h"
36 36
37/* OPIE */ 37/* OPIE */
38#include <opie2/odebug.h> 38#include <opie2/odebug.h>
39#include <qpe/global.h> 39#include <qpe/global.h>
40 40
41/* QT */ 41/* QT */
42#include <qtextstream.h> 42#include <qtextstream.h>
43#include <qdir.h> 43#include <qdir.h>
44#include <qgfx_qws.h> 44#include <qgfx_qws.h>
45 45
46/* STD */ 46/* STD */
47#include <assert.h> 47#include <assert.h>
48#include <unistd.h> 48#include <unistd.h>
49 49
50typedef void (*display_xine_frame_t) (void *user_data, uint8_t* frame, 50typedef void (*display_xine_frame_t) (void *user_data, uint8_t* frame,
51 int width, int height,int bytes ); 51 int width, int height,int bytes );
52typedef void (*vo_scale_cb) (void*, int, int, double, 52typedef void (*vo_scale_cb) (void*, int, int, double,
53 int*, int*, int*, int*, double*, int*, int* ); 53 int*, int*, int*, int*, double*, int*, int* );
54typedef void (*dest_size_cb) (void*, int, int, double, int*, int*, double*); 54typedef void (*dest_size_cb) (void*, int, int, double, int*, int*, double*);
55 55
56 56
57extern "C" { 57extern "C" {
58 xine_vo_driver_t* init_video_out_plugin( xine_t *xine, void* video, display_xine_frame_t, void *, vo_scale_cb, dest_size_cb ); 58 xine_vo_driver_t* init_video_out_plugin( xine_t *xine, void* video, display_xine_frame_t, void *, vo_scale_cb, dest_size_cb );
59 int null_is_showing_video( const xine_vo_driver_t* self ); 59 int null_is_showing_video( const xine_vo_driver_t* self );
60 void null_set_show_video( const xine_vo_driver_t* self, int show ); 60 void null_set_show_video( const xine_vo_driver_t* self, int show );
61 void null_set_mode( const xine_vo_driver_t* self, int depth, int rgb ); 61 void null_set_mode( const xine_vo_driver_t* self, int depth, int rgb );
62 void null_display_handler( const xine_vo_driver_t* self, display_xine_frame_t t, void* user_data ); 62 void null_display_handler( const xine_vo_driver_t* self, display_xine_frame_t t, void* user_data );
63} 63}
64 64
65using namespace XINE; 65using namespace XINE;
66 66
67Lib::Lib( InitializationMode initMode, XineVideoWidget* widget ) 67Lib::Lib( InitializationMode initMode, XineVideoWidget* widget )
68{ 68{
69 m_initialized = false; 69 m_initialized = false;
70 m_duringInitialization = false; 70 m_duringInitialization = false;
71 m_video = false; 71 m_video = false;
72 m_wid = widget; 72 m_wid = widget;
73 printf("Lib"); 73 printf("Lib");
74 QString configPath = QDir::homeDirPath() + "/Settings/opiexine.cf"; 74 QString configPath = QDir::homeDirPath() + "/Settings/opiexine.cf";
75 // get the configuration 75 // get the configuration
76 76
77 // not really OO, should be an extra class, later 77 // not really OO, should be an extra class, later
78 if ( !QFile::exists(configPath) ) { 78 if ( !QFile::exists(configPath) ) {
79 QFile f(configPath); 79 QFile f(configPath);
80 if (f.open(IO_WriteOnly)) { 80 if (f.open(IO_WriteOnly)) {
81 QTextStream ts( &f ); 81 QTextStream ts( &f );
82 ts << "misc.memcpy_method:glibc\n"; 82 ts << "misc.memcpy_method:glibc\n";
83 ts << "# uncomment if you experience double speed audio \n #audio.oss_sync_method:softsync\n"; 83 ts << "# uncomment if you experience double speed audio \n #audio.oss_sync_method:softsync\n";
84 ts << "codec.ffmpeg_pp_quality:3\n"; 84 ts << "codec.ffmpeg_pp_quality:3\n";
85 ts << "audio.num_buffers:50\n"; 85 ts << "audio.num_buffers:50\n";
86 ts << "audio.size_buffers:4096\n"; 86 ts << "audio.size_buffers:4096\n";
87 ts << "video.num_buffers:20\n"; 87 ts << "video.num_buffers:20\n";
88 ts << "video.size_buffers:4096\n"; 88 ts << "video.size_buffers:4096\n";
89 ts << "audio.out_num_audio_buf:16\n"; 89 ts << "audio.out_num_audio_buf:16\n";
90 ts << "audio.out_size_audio_buf:8096\n"; 90 ts << "audio.out_size_audio_buf:8096\n";
91 ts << "audio.out_size_zero_buf:1024\n"; 91 ts << "audio.out_size_zero_buf:1024\n";
92 ts << "audio.passthrough_offset:0\n"; 92 ts << "audio.passthrough_offset:0\n";
93 f.close(); 93 f.close();
94 } else 94 } else
95 owarn << "Failed to open " f.name() << oendl; 95 owarn << "Failed to open " << f.name() << oendl;
96 } 96 }
97 97
98 if ( initMode == InitializeImmediately ) { 98 if ( initMode == InitializeImmediately ) {
99 initialize(); 99 initialize();
100 m_initialized = true; 100 m_initialized = true;
101 } 101 }
102 else 102 else
103 start(); 103 start();
104} 104}
105 105
106void Lib::run() 106void Lib::run()
107{ 107{
108 odebug << "Lib::run() started" << oendl; 108 odebug << "Lib::run() started" << oendl;
109 initialize(); 109 initialize();
110 m_initialized = true; 110 m_initialized = true;
111 odebug << "Lib::run() finished" << oendl; 111 odebug << "Lib::run() finished" << oendl;
112} 112}
113 113
114void Lib::initialize() 114void Lib::initialize()
115{ 115{
116 m_duringInitialization = true; 116 m_duringInitialization = true;
117 m_xine = xine_new( ); 117 m_xine = xine_new( );
118 118
119 QString configPath = QDir::homeDirPath() + "/Settings/opiexine.cf"; 119 QString configPath = QDir::homeDirPath() + "/Settings/opiexine.cf";
120 xine_config_load( m_xine, QFile::encodeName( configPath ) ); 120 xine_config_load( m_xine, QFile::encodeName( configPath ) );
121 121
122 xine_init( m_xine ); 122 xine_init( m_xine );
123 123
124 // allocate oss for sound 124 // allocate oss for sound
125 // and fb for framebuffer 125 // and fb for framebuffer
126 m_audioOutput = xine_open_audio_driver( m_xine, "oss", NULL ); 126 m_audioOutput = xine_open_audio_driver( m_xine, "oss", NULL );
127 m_videoOutput = ::init_video_out_plugin( m_xine, NULL, 127 m_videoOutput = ::init_video_out_plugin( m_xine, NULL,
128 xine_display_frame, this, 128 xine_display_frame, this,
129 xine_vo_scale_cb, 129 xine_vo_scale_cb,
130 xine_dest_cb ); 130 xine_dest_cb );
131 131
132 m_stream = xine_stream_new (m_xine, m_audioOutput, m_videoOutput ); 132 m_stream = xine_stream_new (m_xine, m_audioOutput, m_videoOutput );
133 xine_set_param( m_stream, XINE_PARAM_AUDIO_CLOSE_DEVICE, 1); 133 xine_set_param( m_stream, XINE_PARAM_AUDIO_CLOSE_DEVICE, 1);
134 134
135 if (m_wid != 0 ) 135 if (m_wid != 0 )
136 setWidget( m_wid ); 136 setWidget( m_wid );
137 137
138 138
139 m_queue = xine_event_new_queue (m_stream); 139 m_queue = xine_event_new_queue (m_stream);
140 xine_event_create_listener_thread (m_queue, xine_event_handler, this); 140 xine_event_create_listener_thread (m_queue, xine_event_handler, this);
141 141
142 m_duringInitialization = false; 142 m_duringInitialization = false;
143} 143}
144 144
145Lib::~Lib() { 145Lib::~Lib() {
146 assert( isRunning() == false ); 146 assert( isRunning() == false );
147 assert( m_initialized ); 147 assert( m_initialized );
148 148
149// free( m_config ); 149// free( m_config );
150 150
151 xine_close( m_stream ); 151 xine_close( m_stream );
152 xine_event_dispose_queue( m_queue ); 152 xine_event_dispose_queue( m_queue );
153 xine_dispose( m_stream ); 153 xine_dispose( m_stream );
154 xine_close_audio_driver(m_xine,m_audioOutput); 154 xine_close_audio_driver(m_xine,m_audioOutput);
155 xine_close_video_driver(m_xine,m_videoOutput); 155 xine_close_video_driver(m_xine,m_videoOutput);
156 xine_exit( m_xine ); 156 xine_exit( m_xine );
157 157
158 /* FIXME either free or delete but valgrind bitches against both */ 158 /* FIXME either free or delete but valgrind bitches against both */
159 //free( m_videoOutput ); 159 //free( m_videoOutput );
160 //delete m_audioOutput; 160 //delete m_audioOutput;
161} 161}
162 162
163void Lib::resize ( const QSize &s ) { 163void Lib::resize ( const QSize &s ) {
164 assert( m_initialized || m_duringInitialization ); 164 assert( m_initialized || m_duringInitialization );
165 165
166 if ( s. width ( ) && s. height ( ) ) 166 if ( s. width ( ) && s. height ( ) )
167 m_videoSize = s; 167 m_videoSize = s;
168} 168}
169 169
170int Lib::majorVersion() { 170int Lib::majorVersion() {
171 int major, minor, sub; 171 int major, minor, sub;
172 xine_get_version ( &major, &minor, &sub ); 172 xine_get_version ( &major, &minor, &sub );
173 return major; 173 return major;
174} 174}
175 175
176int Lib::minorVersion() { 176int Lib::minorVersion() {
177 int major, minor, sub; 177 int major, minor, sub;
178 xine_get_version ( &major, &minor, &sub ); 178 xine_get_version ( &major, &minor, &sub );
179 return minor; 179 return minor;
180} 180}
181 181
182int Lib::subVersion() { 182int Lib::subVersion() {
183 int major, minor, sub; 183 int major, minor, sub;
184 xine_get_version ( &major, &minor, &sub ); 184 xine_get_version ( &major, &minor, &sub );
185 return sub; 185 return sub;
186} 186}
187 187
188int Lib::setfile(const QString& fileName) 188int Lib::setfile(const QString& fileName)
189{ 189{
190 QString str = fileName.stripWhiteSpace(); 190 QString str = fileName.stripWhiteSpace();
191 191