"PRINTER",
"SOCKET",
"EVENT",
+ "SOUND_LOADER",
"Undefined",
NULL
};
CSP_LOG_TYPE_PRINTER,
CSP_LOG_TYPE_SOCKET,
CSP_LOG_TYPE_EVENT,
+ CSP_LOG_TYPE_SOUND_LOADER,
CSP_LOG_TYPE_COMPONENT_END,
CSP_LOG_TYPE_VM_CPU0 = 32,
CSP_LOG_TYPE_VM_CPU1,
#include <QThread>
#include "qt_gldraw.h"
-//#include "csp_logger.h"
#include "osd.h"
OSD::OSD(USING_FLAGS *p) : OSD_BASE(p)
memset(app_path, 0x00, sizeof(app_path));
strncpy(app_path, tmp_path.toUtf8().constData(), _MAX_PATH);
- //memset(console_string, 0x00, sizeof(console_string));
console_cmd_str.clear();
osd_console_opened = false;
osd_timer.start();
- //CoInitialize(NULL);
+
initialize_input();
initialize_printer();
initialize_screen();
initialize_sound(rate, samples);
+#if defined(USE_SOUND_FILES)
+ init_sound_files();
+#endif
if(get_use_movie_player() || get_use_video_capture()) initialize_video();
if(get_use_socket()) initialize_socket();
}
release_sound();
if(get_use_movie_player() || get_use_video_capture()) release_video();
if(get_use_socket()) release_socket();
- //CoUninitialize();
+#if defined(USE_SOUND_FILES)
+ release_sound_files();
+#endif
}
void OSD::power_off()
class USING_FLAGS;
class CSP_KeyTables;
class MOVIE_LOADER;
+class SOUND_LOADER;
class QTcpSocket2;
class QUdpSocket2;
QTcpSocket2 *tcp_socket[SOCKET_MAX];
QUdpSocket2 *udp_socket[SOCKET_MAX];
+
+#ifdef USE_SOUND_FILES
+ SOUND_LOADER *tail_sound_file;
+ SOUND_LOADER *sound_file_obj[USE_SOUND_FILES];
+
+ void init_sound_files();
+ void release_sound_files();
+#endif
public:
OSD(USING_FLAGS *p);
~OSD();
void recv_socket_data(int ch);
int get_socket(int ch);
+ // Sound
+#ifdef USE_SOUND_FILES
+ void load_sound_file(int id, const _TCHAR *name, int16_t **data, int *dst_size);
+ void free_sound_file(int id, int16_t **data);
+#endif
public slots:
void do_decode_movie(int frames);
void do_run_movie_audio_callback(uint8_t *data, long len);
virtual int get_screen_width(void);
virtual int get_screen_height(void);
virtual int get_vm_buttons_code(int num);
+
+ virtual void init_sound_files();
+ virtual void release_sound_files();
public:
OSD_BASE(USING_FLAGS *p);
~OSD_BASE();
void restart_record_sound();
bool now_record_sound;
int get_sound_rate();
+ // Wrapper : Sound
+ virtual void load_sound_file(int id, const _TCHAR *name, int16_t **data, int *dst_size);
+ virtual void free_sound_file(int id, int16_t **data);
// common video device
virtual void get_video_buffer();
virtual void set_vm_node(int id, const _TCHAR *name);
virtual const _TCHAR *get_vm_node_name(int id);
virtual int get_vm_node_size(void);
-
+
public slots:
void do_write_inputdata(QString s);
void do_set_input_string(QString s);
#else
SDL_PauseAudio(0);
#endif
-
+
sound_ok = sound_first_half = true;
}
{
return snd_spec_presented.freq;
}
+
+void OSD_BASE::load_sound_file(int id, const _TCHAR *name, int16_t **data, int *dst_size)
+{
+ if(data != NULL) *data = NULL;
+ if(dst_size != NULL) *dst_size = 0;
+}
+
+void OSD_BASE::free_sound_file(int id, int16_t **data)
+{
+}
+
+void OSD_BASE::init_sound_files()
+{
+}
+
+void OSD_BASE::release_sound_files()
+{
+}
#if defined(USE_MOVIE_PLAYER) || defined(USE_VIDEO_CAPTURE)
#include "avio/movie_loader.h"
#endif
-
+#if defined(USE_SOUND_FILES)
+#include "avio/sound_loader.h"
+#endif
#include "qt_gldraw.h"
#include "csp_logger.h"
return (Sint16 *)vm->create_sound(extra_frames);
}
+#ifdef USE_SOUND_FILES
+void OSD::load_sound_file(int id, const _TCHAR *name, int16_t **data, int *dst_size)
+{
+ int i = 0;
+ if(data != NULL) *data = NULL;
+ if(dst_size != NULL) *dst_size = 0;
+ if(id <= 0) return;
+
+ for(i = 0; i < USE_SOUND_FILES; i++) {
+ SOUND_LOADER *p = sound_file_obj[i];
+ if(p != NULL) {
+ if(p->get_id() == id) break;
+ }
+ }
+
+ if(i >= USE_SOUND_FILES) {
+ for(i = 0; i < USE_SOUND_FILES; i++) {
+ SOUND_LOADER *p = sound_file_obj[i];
+ if(p != NULL) {
+ if(p->get_id() < 0) {
+ p->set_id(id);
+ break;
+ }
+ }
+ }
+ }
+ if(i >= USE_SOUND_FILES) return;
+ SOUND_LOADER *p = sound_file_obj[i];
+ if(p != NULL) {
+ p->free_sound_buffer(NULL);
+ p->set_sound_rate(this->get_sound_rate());
+ if(p->open(id, QString::fromUtf8(name))) {
+ p->do_decode_frames();
+ p->close();
+ if(data != NULL) *data = (int16_t *)(p->get_sound_buffer());
+ if(dst_size != NULL) *dst_size = p->get_dst_size();
+ }
+ }
+}
+
+void OSD::free_sound_file(int id, int16_t **data)
+{
+ void *pp;
+ if(data == NULL) return;
+ for(int i = 0; i < USE_SOUND_FILES; i++) {
+ SOUND_LOADER *p = sound_file_obj[i];
+ if(p != NULL) {
+ if(p->get_id() == id) {
+ p->free_sound_buffer(*data);
+ *data = NULL;
+ break;
+ }
+ }
+ }
+}
+void OSD::init_sound_files()
+{
+ for(int i = 0; i < USE_SOUND_FILES; i++) {
+ sound_file_obj[i] = NULL;
+ SOUND_LOADER *p = new SOUND_LOADER((void *)tail_sound_file);
+ if(p != NULL) {
+ sound_file_obj[i] = p;
+ }
+ tail_sound_file = p;
+ }
+}
+
+void OSD::release_sound_files()
+{
+ for(int i = 0; i < USE_SOUND_FILES; i++) {
+ SOUND_LOADER *p = sound_file_obj[i];
+ if(p != NULL) delete p;
+ sound_file_obj[i] = NULL;
+ }
+}
+#endif
bool OSD::get_use_socket(void)
{
#ifdef USE_SOCKET