annotate libmpcodecs/ad_qtaudio.c @ 14004:3d698ac7ec9a

Explain what you need to read to add a codec yourself, patch by Compn <tempn at twmi dot rr dot com>
author diego
date Sun, 21 Nov 2004 12:53:03 +0000
parents 73086ea05489
children 860f06087aac
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
1 #include <stdio.h>
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
2 #include <stdlib.h>
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
3 #include <unistd.h>
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
4 #include <inttypes.h>
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
5
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
6 #include "config.h"
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
7 #include "../mp_msg.h"
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
8
9502
241bba8f60e8 MACOSX support patch, based on Dan Christiansens work
alex
parents: 9405
diff changeset
9 #if defined(USE_QTX_CODECS) || defined(MACOSX)
12356
6a61d694f7d3 minimal fix for alex's 1000000000000l compile errors. imo the fix in
rfelker
parents: 12193
diff changeset
10 #include "wine/windef.h"
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
11
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
12 #include "ad_internal.h"
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
13 #include "bswap.h"
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
14
9405
a4444e7ee56a real cygwin support by Sascha Sommer <saschasommer@freenet.de>
alex
parents: 8632
diff changeset
15 #ifdef WIN32_LOADER
8451
fb88ccbc5ccc compiler warning fixes
arpi
parents: 8389
diff changeset
16 #include "ldt_keeper.h"
fb88ccbc5ccc compiler warning fixes
arpi
parents: 8389
diff changeset
17 #endif
fb88ccbc5ccc compiler warning fixes
arpi
parents: 8389
diff changeset
18
9502
241bba8f60e8 MACOSX support patch, based on Dan Christiansens work
alex
parents: 9405
diff changeset
19 #ifdef MACOSX
241bba8f60e8 MACOSX support patch, based on Dan Christiansens work
alex
parents: 9405
diff changeset
20 #include <QuickTime/QuickTimeComponents.h>
241bba8f60e8 MACOSX support patch, based on Dan Christiansens work
alex
parents: 9405
diff changeset
21 #endif
241bba8f60e8 MACOSX support patch, based on Dan Christiansens work
alex
parents: 9405
diff changeset
22
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
23 static ad_info_t info = {
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
24 "QuickTime Audio Decoder",
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
25 "qtaudio",
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
26 "A'rpi",
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
27 "Sascha Sommer",
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
28 "uses win32 quicktime DLLs"
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
29 };
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
30
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
31 LIBAD_EXTERN(qtaudio)
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
32
13606
73086ea05489 fix compilation on macosx with --enable-qtx patch by Zachary Bedell <zaclist@adirondack.net>
faust3
parents: 13188
diff changeset
33 #if defined(USE_QTX_CODECS) && !defined(MACOSX)
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
34 typedef struct OpaqueSoundConverter* SoundConverter;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
35 typedef unsigned long OSType;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
36 typedef unsigned long UnsignedFixed;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
37 typedef uint8_t Byte;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
38 typedef struct SoundComponentData {
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
39 long flags;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
40 OSType format;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
41 short numChannels;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
42 short sampleSize;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
43 UnsignedFixed sampleRate;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
44 long sampleCount;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
45 Byte * buffer;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
46 long reserved;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
47 }SoundComponentData;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
48
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
49 typedef int (__cdecl* LPFUNC1)(long flag);
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
50 typedef int (__cdecl* LPFUNC2)(const SoundComponentData *, const SoundComponentData *,SoundConverter *);
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
51 typedef int (__cdecl* LPFUNC3)(SoundConverter sc);
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
52 typedef int (__cdecl* LPFUNC4)(void);
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
53 typedef int (__cdecl* LPFUNC5)(SoundConverter sc, OSType selector,void * infoPtr);
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
54 typedef int (__cdecl* LPFUNC6)(SoundConverter sc,
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
55 unsigned long inputBytesTarget,
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
56 unsigned long *inputFrames,
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
57 unsigned long *inputBytes,
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
58 unsigned long *outputBytes );
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
59 typedef int (__cdecl* LPFUNC7)(SoundConverter sc,
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
60 const void *inputPtr,
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
61 unsigned long inputFrames,
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
62 void *outputPtr,
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
63 unsigned long *outputFrames,
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
64 unsigned long *outputBytes );
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
65 typedef int (__cdecl* LPFUNC8)(SoundConverter sc,
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
66 void *outputPtr,
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
67 unsigned long *outputFrames,
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
68 unsigned long *outputBytes);
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
69 typedef int (__cdecl* LPFUNC9)(SoundConverter sc) ;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
70
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
71 static HINSTANCE qtml_dll;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
72 static LPFUNC1 InitializeQTML;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
73 static LPFUNC2 SoundConverterOpen;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
74 static LPFUNC3 SoundConverterClose;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
75 static LPFUNC4 TerminateQTML;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
76 static LPFUNC5 SoundConverterSetInfo;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
77 static LPFUNC6 SoundConverterGetBufferSizes;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
78 static LPFUNC7 SoundConverterConvertBuffer;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
79 static LPFUNC8 SoundConverterEndConversion;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
80 static LPFUNC9 SoundConverterBeginConversion;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
81
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
82 #define siDecompressionParams 2002876005 // siDecompressionParams = FOUR_CHAR_CODE('wave')
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
83
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
84 HMODULE WINAPI LoadLibraryA(LPCSTR);
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
85 FARPROC WINAPI GetProcAddress(HMODULE,LPCSTR);
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
86 int WINAPI FreeLibrary(HMODULE);
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
87
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
88 static int loader_init()
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
89 {
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
90
9405
a4444e7ee56a real cygwin support by Sascha Sommer <saschasommer@freenet.de>
alex
parents: 8632
diff changeset
91 #ifdef WIN32_LOADER
8270
badd24741e4a loader support
arpi
parents: 8159
diff changeset
92 Setup_LDT_Keeper();
badd24741e4a loader support
arpi
parents: 8159
diff changeset
93 #endif
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
94 qtml_dll = LoadLibraryA("qtmlClient.dll");
13188
f60bc2314146 small gcc warning fixes
rathann
parents: 13008
diff changeset
95 if( qtml_dll == (HMODULE)NULL )
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
96 {
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
97 mp_msg(MSGT_DECAUDIO,MSGL_ERR,"failed loading dll\n" );
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
98 return 1;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
99 }
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
100 #if 1
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
101 InitializeQTML = (LPFUNC1)GetProcAddress(qtml_dll,"InitializeQTML");
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
102 if ( InitializeQTML == NULL )
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
103 {
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
104 mp_msg(MSGT_DECAUDIO,MSGL_ERR,"failed geting proc address InitializeQTML\n");
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
105 return 1;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
106 }
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
107 SoundConverterOpen = (LPFUNC2)GetProcAddress(qtml_dll,"SoundConverterOpen");
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
108 if ( SoundConverterOpen == NULL )
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
109 {
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
110 mp_msg(MSGT_DECAUDIO,MSGL_ERR,"failed getting proc address SoundConverterOpen\n");
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
111 return 1;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
112 }
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
113 SoundConverterClose = (LPFUNC3)GetProcAddress(qtml_dll,"SoundConverterClose");
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
114 if ( SoundConverterClose == NULL )
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
115 {
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
116 mp_msg(MSGT_DECAUDIO,MSGL_ERR,"failed getting proc address SoundConverterClose\n");
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
117 return 1;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
118 }
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
119 TerminateQTML = (LPFUNC4)GetProcAddress(qtml_dll,"TerminateQTML");
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
120 if ( TerminateQTML == NULL )
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
121 {
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
122 mp_msg(MSGT_DECAUDIO,MSGL_ERR,"failed getting proc address TerminateQTML\n");
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
123 return 1;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
124 }
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
125 SoundConverterSetInfo = (LPFUNC5)GetProcAddress(qtml_dll,"SoundConverterSetInfo");
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
126 if ( SoundConverterSetInfo == NULL )
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
127 {
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
128 mp_msg(MSGT_DECAUDIO,MSGL_ERR,"failed getting proc address SoundConverterSetInfo\n");
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
129 return 1;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
130 }
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
131 SoundConverterGetBufferSizes = (LPFUNC6)GetProcAddress(qtml_dll,"SoundConverterGetBufferSizes");
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
132 if ( SoundConverterGetBufferSizes == NULL )
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
133 {
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
134 mp_msg(MSGT_DECAUDIO,MSGL_ERR,"failed getting proc address SoundConverterGetBufferSizes\n");
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
135 return 1;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
136 }
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
137 SoundConverterConvertBuffer = (LPFUNC7)GetProcAddress(qtml_dll,"SoundConverterConvertBuffer");
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
138 if ( SoundConverterConvertBuffer == NULL )
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
139 {
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
140 mp_msg(MSGT_DECAUDIO,MSGL_ERR,"failed getting proc address SoundConverterConvertBuffer1\n");
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
141 return 1;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
142 }
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
143 SoundConverterEndConversion = (LPFUNC8)GetProcAddress(qtml_dll,"SoundConverterEndConversion");
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
144 if ( SoundConverterEndConversion == NULL )
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
145 {
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
146 mp_msg(MSGT_DECAUDIO,MSGL_ERR,"failed getting proc address SoundConverterEndConversion\n");
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
147 return 1;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
148 }
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
149 SoundConverterBeginConversion = (LPFUNC9)GetProcAddress(qtml_dll,"SoundConverterBeginConversion");
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
150 if ( SoundConverterBeginConversion == NULL )
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
151 {
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
152 mp_msg(MSGT_DECAUDIO,MSGL_ERR,"failed getting proc address SoundConverterBeginConversion\n");
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
153 return 1;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
154 }
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
155 #endif
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
156 mp_msg(MSGT_DECAUDIO,MSGL_DBG2,"loader_init DONE???\n");
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
157 return 0;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
158 }
9502
241bba8f60e8 MACOSX support patch, based on Dan Christiansens work
alex
parents: 9405
diff changeset
159 #endif /* USE_QTX_CODECS */
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
160
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
161 static SoundConverter myConverter = NULL;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
162 static SoundComponentData InputFormatInfo,OutputFormatInfo;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
163
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
164 static int InFrameSize;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
165 static int OutFrameSize;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
166
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
167 static int preinit(sh_audio_t *sh){
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
168 int error;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
169 unsigned long FramesToGet=0; //how many frames the demuxer has to get
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
170 unsigned long InputBufferSize=0; //size of the input buffer
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
171 unsigned long OutputBufferSize=0; //size of the output buffer
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
172 unsigned long WantedBufferSize=0; //the size you want your buffers to be
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
173
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
174
9502
241bba8f60e8 MACOSX support patch, based on Dan Christiansens work
alex
parents: 9405
diff changeset
175 #ifdef MACOSX
241bba8f60e8 MACOSX support patch, based on Dan Christiansens work
alex
parents: 9405
diff changeset
176 EnterMovies();
241bba8f60e8 MACOSX support patch, based on Dan Christiansens work
alex
parents: 9405
diff changeset
177 #else
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
178 if(loader_init()) return 0; // failed to load DLL
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
179
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
180 mp_msg(MSGT_DECAUDIO,MSGL_DBG2,"loader_init DONE!\n");
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
181
8159
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
182 error = InitializeQTML(6+16);
13008
462408dae3e7 do not exit without an error message
faust3
parents: 12356
diff changeset
183 if(error){
462408dae3e7 do not exit without an error message
faust3
parents: 12356
diff changeset
184 mp_msg(MSGT_DECAUDIO,MSGL_ERR,"InitializeQTML:%i\n",error);
462408dae3e7 do not exit without an error message
faust3
parents: 12356
diff changeset
185 return 0;
462408dae3e7 do not exit without an error message
faust3
parents: 12356
diff changeset
186 }
9694
43c6bc4e7e2f macosx fix by Dan Christiansen <danchr@daimi.au.dk>
alex
parents: 9502
diff changeset
187 #endif
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
188
9694
43c6bc4e7e2f macosx fix by Dan Christiansen <danchr@daimi.au.dk>
alex
parents: 9502
diff changeset
189 #if 1
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
190 OutputFormatInfo.flags = InputFormatInfo.flags = 0;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
191 OutputFormatInfo.sampleCount = InputFormatInfo.sampleCount = 0;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
192 OutputFormatInfo.buffer = InputFormatInfo.buffer = NULL;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
193 OutputFormatInfo.reserved = InputFormatInfo.reserved = 0;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
194 OutputFormatInfo.numChannels = InputFormatInfo.numChannels = sh->wf->nChannels;
8159
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
195 InputFormatInfo.sampleSize = sh->wf->wBitsPerSample;
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
196 OutputFormatInfo.sampleSize = 16;
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
197 OutputFormatInfo.sampleRate = InputFormatInfo.sampleRate = sh->wf->nSamplesPerSec;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
198 InputFormatInfo.format = bswap_32(sh->format); //1363430706;///*1768775988;//*/1902406962;//qdm2//1768775988;//FOUR_CHAR_CODE('ima4');
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
199 OutputFormatInfo.format = 1313820229;// FOUR_CHAR_CODE('NONE');
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
200
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
201 error = SoundConverterOpen(&InputFormatInfo, &OutputFormatInfo, &myConverter);
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
202 mp_msg(MSGT_DECAUDIO,MSGL_DBG2,"SoundConverterOpen:%i\n",error);
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
203 if(error) return 0;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
204
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
205 if(sh->codecdata){
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
206 error = SoundConverterSetInfo(myConverter,siDecompressionParams,sh->codecdata);
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
207 mp_msg(MSGT_DECAUDIO,MSGL_DBG2,"SoundConverterSetInfo:%i\n",error);
8632
9cecfb883d85 don't abort if setparams failed - fixes some Qclp files
arpi
parents: 8451
diff changeset
208 // if(error) return 0;
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
209 }
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
210
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
211 WantedBufferSize=OutputFormatInfo.numChannels*OutputFormatInfo.sampleRate*2;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
212 error = SoundConverterGetBufferSizes(myConverter,
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
213 WantedBufferSize,&FramesToGet,&InputBufferSize,&OutputBufferSize);
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
214 mp_msg(MSGT_DECAUDIO,MSGL_DBG2,"SoundConverterGetBufferSizes:%i\n",error);
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
215 mp_msg(MSGT_DECAUDIO,MSGL_DBG2,"WantedBufferSize = %li\n",WantedBufferSize);
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
216 mp_msg(MSGT_DECAUDIO,MSGL_DBG2,"InputBufferSize = %li\n",InputBufferSize);
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
217 mp_msg(MSGT_DECAUDIO,MSGL_DBG2,"OutputBufferSize = %li\n",OutputBufferSize);
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
218 mp_msg(MSGT_DECAUDIO,MSGL_DBG2,"FramesToGet = %li\n",FramesToGet);
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
219
8389
e8c51ec86340 fixed in/out framesize rounding bug (causing low-rate QCLP hangup/looping)
arpi
parents: 8270
diff changeset
220 InFrameSize=(InputBufferSize+FramesToGet-1)/FramesToGet;
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
221 OutFrameSize=OutputBufferSize/FramesToGet;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
222
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
223 mp_msg(MSGT_DECAUDIO,MSGL_DBG2,"FrameSize: %i -> %i\n",InFrameSize,OutFrameSize);
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
224
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
225 error = SoundConverterBeginConversion(myConverter);
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
226 mp_msg(MSGT_DECAUDIO,MSGL_DBG2,"SoundConverterBeginConversion:%i\n",error);
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
227 if(error) return 0;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
228
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
229 sh->audio_out_minsize=OutputBufferSize;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
230 sh->audio_in_minsize=InputBufferSize;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
231
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
232 sh->channels=sh->wf->nChannels;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
233 sh->samplerate=sh->wf->nSamplesPerSec;
8159
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
234 sh->samplesize=2; //(sh->wf->wBitsPerSample+7)/8;
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
235
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
236 sh->i_bps=sh->wf->nAvgBytesPerSec;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
237 //InputBufferSize*WantedBufferSize/OutputBufferSize;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
238
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
239 #endif
8159
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
240
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
241 if(sh->format==0x3343414D){
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
242 // MACE 3:1
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
243 sh->ds->ss_div = 2*3; // 1 samples/packet
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
244 sh->ds->ss_mul = sh->channels*2*1; // 1 bytes/packet
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
245 } else
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
246 if(sh->format==0x3643414D){
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
247 // MACE 6:1
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
248 sh->ds->ss_div = 2*6; // 1 samples/packet
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
249 sh->ds->ss_mul = sh->channels*2*1; // 1 bytes/packet
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
250 }
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
251
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
252 return 1; // return values: 1=OK 0=ERROR
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
253 }
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
254
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
255 static int init(sh_audio_t *sh_audio){
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
256
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
257 return 1; // return values: 1=OK 0=ERROR
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
258 }
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
259
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
260 static void uninit(sh_audio_t *sh){
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
261 int error;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
262 unsigned long ConvertedFrames=0;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
263 unsigned long ConvertedBytes=0;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
264 error=SoundConverterEndConversion(myConverter,NULL,&ConvertedFrames,&ConvertedBytes);
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
265 mp_msg(MSGT_DECAUDIO,MSGL_DBG2,"SoundConverterEndConversion:%i\n",error);
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
266 error = SoundConverterClose(myConverter);
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
267 mp_msg(MSGT_DECAUDIO,MSGL_DBG2,"SoundConverterClose:%i\n",error);
8389
e8c51ec86340 fixed in/out framesize rounding bug (causing low-rate QCLP hangup/looping)
arpi
parents: 8270
diff changeset
268 // error = TerminateQTML();
e8c51ec86340 fixed in/out framesize rounding bug (causing low-rate QCLP hangup/looping)
arpi
parents: 8270
diff changeset
269 // printf("TerminateQTML:%i\n",error);
e8c51ec86340 fixed in/out framesize rounding bug (causing low-rate QCLP hangup/looping)
arpi
parents: 8270
diff changeset
270 // FreeLibrary( qtml_dll );
e8c51ec86340 fixed in/out framesize rounding bug (causing low-rate QCLP hangup/looping)
arpi
parents: 8270
diff changeset
271 // qtml_dll = NULL;
e8c51ec86340 fixed in/out framesize rounding bug (causing low-rate QCLP hangup/looping)
arpi
parents: 8270
diff changeset
272 // printf("qt dll loader uninit done\n");
9502
241bba8f60e8 MACOSX support patch, based on Dan Christiansens work
alex
parents: 9405
diff changeset
273 #ifdef MACOSX
241bba8f60e8 MACOSX support patch, based on Dan Christiansens work
alex
parents: 9405
diff changeset
274 ExitMovies();
241bba8f60e8 MACOSX support patch, based on Dan Christiansens work
alex
parents: 9405
diff changeset
275 #endif
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
276 }
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
277
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
278 static int decode_audio(sh_audio_t *sh,unsigned char *buf,int minlen,int maxlen){
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
279 int error;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
280 unsigned long FramesToGet=0; //how many frames the demuxer has to get
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
281 unsigned long InputBufferSize=0; //size of the input buffer
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
282 unsigned long ConvertedFrames=0;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
283 unsigned long ConvertedBytes=0;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
284
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
285 FramesToGet=minlen/OutFrameSize;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
286 if(FramesToGet*OutFrameSize<minlen &&
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
287 (FramesToGet+1)*OutFrameSize<=maxlen) ++FramesToGet;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
288 if(FramesToGet*InFrameSize>sh->a_in_buffer_size)
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
289 FramesToGet=sh->a_in_buffer_size/InFrameSize;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
290
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
291 InputBufferSize=FramesToGet*InFrameSize;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
292
8159
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
293 // printf("FramesToGet = %li (%li -> %li bytes)\n",FramesToGet,
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
294 // InputBufferSize, FramesToGet*OutFrameSize);
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
295
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
296 if(InputBufferSize>sh->a_in_buffer_len){
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
297 int x=demux_read_data(sh->ds,&sh->a_in_buffer[sh->a_in_buffer_len],
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
298 InputBufferSize-sh->a_in_buffer_len);
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
299 if(x>0) sh->a_in_buffer_len+=x;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
300 if(InputBufferSize>sh->a_in_buffer_len)
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
301 FramesToGet=sh->a_in_buffer_len/InFrameSize; // not enough data!
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
302 }
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
303
8159
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
304 // printf("\nSoundConverterConvertBuffer(myConv=%p,inbuf=%p,frames=%d,outbuf=%p,&convframes=%p,&convbytes=%p)\n",
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
305 // myConverter,sh->a_in_buffer,FramesToGet,buf,&ConvertedFrames,&ConvertedBytes);
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
306 error = SoundConverterConvertBuffer(myConverter,sh->a_in_buffer,
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
307 FramesToGet,buf,&ConvertedFrames,&ConvertedBytes);
8159
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
308 // printf("SoundConverterConvertBuffer:%i\n",error);
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
309 // printf("ConvertedFrames = %li\n",ConvertedFrames);
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
310 // printf("ConvertedBytes = %li\n",ConvertedBytes);
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
311
8389
e8c51ec86340 fixed in/out framesize rounding bug (causing low-rate QCLP hangup/looping)
arpi
parents: 8270
diff changeset
312 // InputBufferSize=(ConvertedBytes/OutFrameSize)*InFrameSize; // FIXME!!
e8c51ec86340 fixed in/out framesize rounding bug (causing low-rate QCLP hangup/looping)
arpi
parents: 8270
diff changeset
313 InputBufferSize=FramesToGet*InFrameSize;
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
314 sh->a_in_buffer_len-=InputBufferSize;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
315 if(sh->a_in_buffer_len<0) sh->a_in_buffer_len=0; // should not happen...
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
316 else if(sh->a_in_buffer_len>0){
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
317 memcpy(sh->a_in_buffer,&sh->a_in_buffer[InputBufferSize],sh->a_in_buffer_len);
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
318 }
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
319
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
320 return ConvertedBytes;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
321 }
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
322
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
323 static int control(sh_audio_t *sh,int cmd,void* arg, ...){
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
324 // various optional functions you MAY implement:
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
325 return CONTROL_UNKNOWN;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
326 }
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
327
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
328 #endif