annotate libmpcodecs/ad_qtaudio.c @ 30088:4977e04f3a18

Add support for parsing audio streams (though should be easy to extend to video) via libavcodec. Parsing can be done at the demuxer stage (currently disabled) or at the decoder (ad_ffmpeg, enabled). Should allow using the libavcodec AAC, DTS, ... decoders independent of container format.
author reimar
date Sun, 27 Dec 2009 15:28:01 +0000
parents 0f1b5b68af32
children bbb6ebec87a0
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
21260
cc732ceece60 Shouldn't move "#ifdef MACOSX" before #include config.h of course...
uau
parents: 21258
diff changeset
6 #include "config.h"
28197
45ca1763a540 Reorder #includes and #ifdefs to avoid excessive #ifdeffery.
diego
parents: 27388
diff changeset
7 #include "mp_msg.h"
45ca1763a540 Reorder #includes and #ifdefs to avoid excessive #ifdeffery.
diego
parents: 27388
diff changeset
8 #include "mpbswap.h"
45ca1763a540 Reorder #includes and #ifdefs to avoid excessive #ifdeffery.
diego
parents: 27388
diff changeset
9 #include "ad_internal.h"
21260
cc732ceece60 Shouldn't move "#ifdef MACOSX" before #include config.h of course...
uau
parents: 21258
diff changeset
10
27388
ac03760f7fcc Rename all preprocessor directives related to Apple / Mac OS X.
diego
parents: 26542
diff changeset
11 #ifdef CONFIG_QUICKTIME
21258
ed01090d1192 Move #include <QuickTime/QuickTimeComponents.h> before internal headers.
uau
parents: 18771
diff changeset
12 #include <QuickTime/QuickTimeComponents.h>
28197
45ca1763a540 Reorder #includes and #ifdefs to avoid excessive #ifdeffery.
diego
parents: 27388
diff changeset
13 #else
45ca1763a540 Reorder #includes and #ifdefs to avoid excessive #ifdeffery.
diego
parents: 27388
diff changeset
14 #include "loader/ldt_keeper.h"
22577
a033e5519802 Include loader/ prefix in #include path everywhere.
diego
parents: 21260
diff changeset
15 #include "loader/wine/windef.h"
8451
fb88ccbc5ccc compiler warning fixes
arpi
parents: 8389
diff changeset
16 #endif
fb88ccbc5ccc compiler warning fixes
arpi
parents: 8389
diff changeset
17
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
18 static ad_info_t info = {
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
19 "QuickTime Audio Decoder",
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
20 "qtaudio",
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
21 "A'rpi",
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
22 "Sascha Sommer",
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
23 "uses win32 quicktime DLLs"
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
24 };
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
25
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
26 LIBAD_EXTERN(qtaudio)
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
27
27388
ac03760f7fcc Rename all preprocessor directives related to Apple / Mac OS X.
diego
parents: 26542
diff changeset
28 #ifndef CONFIG_QUICKTIME
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
29 typedef struct OpaqueSoundConverter* SoundConverter;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
30 typedef unsigned long OSType;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
31 typedef unsigned long UnsignedFixed;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
32 typedef uint8_t Byte;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
33 typedef struct SoundComponentData {
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
34 long flags;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
35 OSType format;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
36 short numChannels;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
37 short sampleSize;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
38 UnsignedFixed sampleRate;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
39 long sampleCount;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
40 Byte * buffer;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
41 long reserved;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
42 }SoundComponentData;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
43
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
44 typedef int (__cdecl* LPFUNC1)(long flag);
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
45 typedef int (__cdecl* LPFUNC2)(const SoundComponentData *, const SoundComponentData *,SoundConverter *);
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
46 typedef int (__cdecl* LPFUNC3)(SoundConverter sc);
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
47 typedef int (__cdecl* LPFUNC4)(void);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
48 typedef int (__cdecl* LPFUNC5)(SoundConverter sc, OSType selector,void * infoPtr);
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
49 typedef int (__cdecl* LPFUNC6)(SoundConverter sc,
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
50 unsigned long inputBytesTarget,
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
51 unsigned long *inputFrames,
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
52 unsigned long *inputBytes,
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
53 unsigned long *outputBytes );
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
54 typedef int (__cdecl* LPFUNC7)(SoundConverter sc,
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
55 const void *inputPtr,
8008
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 void *outputPtr,
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
58 unsigned long *outputFrames,
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
59 unsigned long *outputBytes );
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
60 typedef int (__cdecl* LPFUNC8)(SoundConverter sc,
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
61 void *outputPtr,
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
62 unsigned long *outputFrames,
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
63 unsigned long *outputBytes);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
64 typedef int (__cdecl* LPFUNC9)(SoundConverter sc) ;
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
65
14528
860f06087aac preload quicktime.qts, this allows us to ignore the hardcoded path inside the dlls so that quicktime.qts doesn't need to be in the windows system dir, patch by Gianluigi Tiesi <mplayer at netfarm.it>, comments by myself
faust3
parents: 13606
diff changeset
66 static HINSTANCE qtime_qts; // handle to the preloaded quicktime.qts
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
67 static HINSTANCE qtml_dll;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
68 static LPFUNC1 InitializeQTML;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
69 static LPFUNC2 SoundConverterOpen;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
70 static LPFUNC3 SoundConverterClose;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
71 static LPFUNC4 TerminateQTML;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
72 static LPFUNC5 SoundConverterSetInfo;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
73 static LPFUNC6 SoundConverterGetBufferSizes;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
74 static LPFUNC7 SoundConverterConvertBuffer;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
75 static LPFUNC8 SoundConverterEndConversion;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
76 static LPFUNC9 SoundConverterBeginConversion;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
77
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
78 #define siDecompressionParams 2002876005 // siDecompressionParams = FOUR_CHAR_CODE('wave')
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
79
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
80 HMODULE WINAPI LoadLibraryA(LPCSTR);
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
81 FARPROC WINAPI GetProcAddress(HMODULE,LPCSTR);
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
82 int WINAPI FreeLibrary(HMODULE);
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
83
29212
eda346733b8c Add missing 'void' to parameterless function declarations.
diego
parents: 28197
diff changeset
84 static int loader_init(void)
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
85 {
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
86
9405
a4444e7ee56a real cygwin support by Sascha Sommer <saschasommer@freenet.de>
alex
parents: 8632
diff changeset
87 #ifdef WIN32_LOADER
8270
badd24741e4a loader support
arpi
parents: 8159
diff changeset
88 Setup_LDT_Keeper();
badd24741e4a loader support
arpi
parents: 8159
diff changeset
89 #endif
14528
860f06087aac preload quicktime.qts, this allows us to ignore the hardcoded path inside the dlls so that quicktime.qts doesn't need to be in the windows system dir, patch by Gianluigi Tiesi <mplayer at netfarm.it>, comments by myself
faust3
parents: 13606
diff changeset
90 //preload quicktime.qts to avoid the problems caused by the hardcoded path inside the dll
860f06087aac preload quicktime.qts, this allows us to ignore the hardcoded path inside the dlls so that quicktime.qts doesn't need to be in the windows system dir, patch by Gianluigi Tiesi <mplayer at netfarm.it>, comments by myself
faust3
parents: 13606
diff changeset
91 qtime_qts = LoadLibraryA("QuickTime.qts");
860f06087aac preload quicktime.qts, this allows us to ignore the hardcoded path inside the dlls so that quicktime.qts doesn't need to be in the windows system dir, patch by Gianluigi Tiesi <mplayer at netfarm.it>, comments by myself
faust3
parents: 13606
diff changeset
92 if( qtime_qts == (HMODULE)NULL )
860f06087aac preload quicktime.qts, this allows us to ignore the hardcoded path inside the dlls so that quicktime.qts doesn't need to be in the windows system dir, patch by Gianluigi Tiesi <mplayer at netfarm.it>, comments by myself
faust3
parents: 13606
diff changeset
93 {
860f06087aac preload quicktime.qts, this allows us to ignore the hardcoded path inside the dlls so that quicktime.qts doesn't need to be in the windows system dir, patch by Gianluigi Tiesi <mplayer at netfarm.it>, comments by myself
faust3
parents: 13606
diff changeset
94 mp_msg(MSGT_DECAUDIO,MSGL_ERR,"failed loading QuickTime.qts\n" );
860f06087aac preload quicktime.qts, this allows us to ignore the hardcoded path inside the dlls so that quicktime.qts doesn't need to be in the windows system dir, patch by Gianluigi Tiesi <mplayer at netfarm.it>, comments by myself
faust3
parents: 13606
diff changeset
95 return 1;
860f06087aac preload quicktime.qts, this allows us to ignore the hardcoded path inside the dlls so that quicktime.qts doesn't need to be in the windows system dir, patch by Gianluigi Tiesi <mplayer at netfarm.it>, comments by myself
faust3
parents: 13606
diff changeset
96 }
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
97 qtml_dll = LoadLibraryA("qtmlClient.dll");
13188
f60bc2314146 small gcc warning fixes
rathann
parents: 13008
diff changeset
98 if( qtml_dll == (HMODULE)NULL )
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
99 {
14528
860f06087aac preload quicktime.qts, this allows us to ignore the hardcoded path inside the dlls so that quicktime.qts doesn't need to be in the windows system dir, patch by Gianluigi Tiesi <mplayer at netfarm.it>, comments by myself
faust3
parents: 13606
diff changeset
100 mp_msg(MSGT_DECAUDIO,MSGL_ERR,"failed loading qtmlClient.dll\n" );
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
101 return 1;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
102 }
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
103 #if 1
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
104 InitializeQTML = (LPFUNC1)GetProcAddress(qtml_dll,"InitializeQTML");
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
105 if ( InitializeQTML == NULL )
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
106 {
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
107 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
108 return 1;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
109 }
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
110 SoundConverterOpen = (LPFUNC2)GetProcAddress(qtml_dll,"SoundConverterOpen");
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
111 if ( SoundConverterOpen == NULL )
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
112 {
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
113 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
114 return 1;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
115 }
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
116 SoundConverterClose = (LPFUNC3)GetProcAddress(qtml_dll,"SoundConverterClose");
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
117 if ( SoundConverterClose == NULL )
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
118 {
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
119 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
120 return 1;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
121 }
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
122 TerminateQTML = (LPFUNC4)GetProcAddress(qtml_dll,"TerminateQTML");
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
123 if ( TerminateQTML == NULL )
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
124 {
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
125 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
126 return 1;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
127 }
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
128 SoundConverterSetInfo = (LPFUNC5)GetProcAddress(qtml_dll,"SoundConverterSetInfo");
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
129 if ( SoundConverterSetInfo == NULL )
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
130 {
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
131 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
132 return 1;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
133 }
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
134 SoundConverterGetBufferSizes = (LPFUNC6)GetProcAddress(qtml_dll,"SoundConverterGetBufferSizes");
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
135 if ( SoundConverterGetBufferSizes == NULL )
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
136 {
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
137 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
138 return 1;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
139 }
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
140 SoundConverterConvertBuffer = (LPFUNC7)GetProcAddress(qtml_dll,"SoundConverterConvertBuffer");
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
141 if ( SoundConverterConvertBuffer == NULL )
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
142 {
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
143 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
144 return 1;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
145 }
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
146 SoundConverterEndConversion = (LPFUNC8)GetProcAddress(qtml_dll,"SoundConverterEndConversion");
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
147 if ( SoundConverterEndConversion == NULL )
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
148 {
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
149 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
150 return 1;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
151 }
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
152 SoundConverterBeginConversion = (LPFUNC9)GetProcAddress(qtml_dll,"SoundConverterBeginConversion");
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
153 if ( SoundConverterBeginConversion == NULL )
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
154 {
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
155 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
156 return 1;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
157 }
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
158 #endif
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
159 mp_msg(MSGT_DECAUDIO,MSGL_DBG2,"loader_init DONE???\n");
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
160 return 0;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
161 }
27388
ac03760f7fcc Rename all preprocessor directives related to Apple / Mac OS X.
diego
parents: 26542
diff changeset
162 #endif /* #ifndef CONFIG_QUICKTIME */
8008
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 SoundConverter myConverter = NULL;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
165 static SoundComponentData InputFormatInfo,OutputFormatInfo;
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 InFrameSize;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
168 static int OutFrameSize;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
169
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
170 static int preinit(sh_audio_t *sh){
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
171 int error;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
172 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
173 unsigned long InputBufferSize=0; //size of the input buffer
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
174 unsigned long OutputBufferSize=0; //size of the output buffer
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
175 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
176
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
177
27388
ac03760f7fcc Rename all preprocessor directives related to Apple / Mac OS X.
diego
parents: 26542
diff changeset
178 #ifdef CONFIG_QUICKTIME
9502
241bba8f60e8 MACOSX support patch, based on Dan Christiansens work
alex
parents: 9405
diff changeset
179 EnterMovies();
241bba8f60e8 MACOSX support patch, based on Dan Christiansens work
alex
parents: 9405
diff changeset
180 #else
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
181 if(loader_init()) return 0; // failed to load DLL
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
182
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
183 mp_msg(MSGT_DECAUDIO,MSGL_DBG2,"loader_init DONE!\n");
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
184
8159
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
185 error = InitializeQTML(6+16);
13008
462408dae3e7 do not exit without an error message
faust3
parents: 12356
diff changeset
186 if(error){
462408dae3e7 do not exit without an error message
faust3
parents: 12356
diff changeset
187 mp_msg(MSGT_DECAUDIO,MSGL_ERR,"InitializeQTML:%i\n",error);
462408dae3e7 do not exit without an error message
faust3
parents: 12356
diff changeset
188 return 0;
462408dae3e7 do not exit without an error message
faust3
parents: 12356
diff changeset
189 }
9694
43c6bc4e7e2f macosx fix by Dan Christiansen <danchr@daimi.au.dk>
alex
parents: 9502
diff changeset
190 #endif
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
191
9694
43c6bc4e7e2f macosx fix by Dan Christiansen <danchr@daimi.au.dk>
alex
parents: 9502
diff changeset
192 #if 1
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
193 OutputFormatInfo.flags = InputFormatInfo.flags = 0;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
194 OutputFormatInfo.sampleCount = InputFormatInfo.sampleCount = 0;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
195 OutputFormatInfo.buffer = InputFormatInfo.buffer = NULL;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
196 OutputFormatInfo.reserved = InputFormatInfo.reserved = 0;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
197 OutputFormatInfo.numChannels = InputFormatInfo.numChannels = sh->wf->nChannels;
8159
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
198 InputFormatInfo.sampleSize = sh->wf->wBitsPerSample;
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
199 OutputFormatInfo.sampleSize = 16;
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
200 OutputFormatInfo.sampleRate = InputFormatInfo.sampleRate = sh->wf->nSamplesPerSec;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
201 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
202 OutputFormatInfo.format = 1313820229;// FOUR_CHAR_CODE('NONE');
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
203
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
204 error = SoundConverterOpen(&InputFormatInfo, &OutputFormatInfo, &myConverter);
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
205 mp_msg(MSGT_DECAUDIO,MSGL_DBG2,"SoundConverterOpen:%i\n",error);
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
206 if(error) return 0;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
207
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
208 if(sh->codecdata){
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
209 error = SoundConverterSetInfo(myConverter,siDecompressionParams,sh->codecdata);
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
210 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
211 // if(error) return 0;
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
212 }
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
213
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
214 WantedBufferSize=OutputFormatInfo.numChannels*OutputFormatInfo.sampleRate*2;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
215 error = SoundConverterGetBufferSizes(myConverter,
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
216 WantedBufferSize,&FramesToGet,&InputBufferSize,&OutputBufferSize);
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
217 mp_msg(MSGT_DECAUDIO,MSGL_DBG2,"SoundConverterGetBufferSizes:%i\n",error);
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
218 mp_msg(MSGT_DECAUDIO,MSGL_DBG2,"WantedBufferSize = %li\n",WantedBufferSize);
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
219 mp_msg(MSGT_DECAUDIO,MSGL_DBG2,"InputBufferSize = %li\n",InputBufferSize);
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
220 mp_msg(MSGT_DECAUDIO,MSGL_DBG2,"OutputBufferSize = %li\n",OutputBufferSize);
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
221 mp_msg(MSGT_DECAUDIO,MSGL_DBG2,"FramesToGet = %li\n",FramesToGet);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
222
8389
e8c51ec86340 fixed in/out framesize rounding bug (causing low-rate QCLP hangup/looping)
arpi
parents: 8270
diff changeset
223 InFrameSize=(InputBufferSize+FramesToGet-1)/FramesToGet;
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
224 OutFrameSize=OutputBufferSize/FramesToGet;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
225
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
226 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
227
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
228 error = SoundConverterBeginConversion(myConverter);
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
229 mp_msg(MSGT_DECAUDIO,MSGL_DBG2,"SoundConverterBeginConversion:%i\n",error);
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
230 if(error) return 0;
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->audio_out_minsize=OutputBufferSize;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
233 sh->audio_in_minsize=InputBufferSize;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
234
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
235 sh->channels=sh->wf->nChannels;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
236 sh->samplerate=sh->wf->nSamplesPerSec;
8159
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
237 sh->samplesize=2; //(sh->wf->wBitsPerSample+7)/8;
8008
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 sh->i_bps=sh->wf->nAvgBytesPerSec;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
240 //InputBufferSize*WantedBufferSize/OutputBufferSize;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
241
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
242 #endif
8159
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
243
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
244 if(sh->format==0x3343414D){
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
245 // MACE 3:1
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
246 sh->ds->ss_div = 2*3; // 1 samples/packet
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
247 sh->ds->ss_mul = sh->channels*2*1; // 1 bytes/packet
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
248 } else
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
249 if(sh->format==0x3643414D){
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
250 // MACE 6:1
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
251 sh->ds->ss_div = 2*6; // 1 samples/packet
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
252 sh->ds->ss_mul = sh->channels*2*1; // 1 bytes/packet
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
253 }
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
254
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
255 return 1; // return values: 1=OK 0=ERROR
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
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
258 static int init(sh_audio_t *sh_audio){
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 return 1; // return values: 1=OK 0=ERROR
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
261 }
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
262
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
263 static void uninit(sh_audio_t *sh){
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
264 int error;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
265 unsigned long ConvertedFrames=0;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
266 unsigned long ConvertedBytes=0;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
267 error=SoundConverterEndConversion(myConverter,NULL,&ConvertedFrames,&ConvertedBytes);
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
268 mp_msg(MSGT_DECAUDIO,MSGL_DBG2,"SoundConverterEndConversion:%i\n",error);
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
269 error = SoundConverterClose(myConverter);
12193
574f7747d26f printf -> mp_msg
faust3
parents: 9694
diff changeset
270 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
271 // error = TerminateQTML();
e8c51ec86340 fixed in/out framesize rounding bug (causing low-rate QCLP hangup/looping)
arpi
parents: 8270
diff changeset
272 // printf("TerminateQTML:%i\n",error);
e8c51ec86340 fixed in/out framesize rounding bug (causing low-rate QCLP hangup/looping)
arpi
parents: 8270
diff changeset
273 // FreeLibrary( qtml_dll );
e8c51ec86340 fixed in/out framesize rounding bug (causing low-rate QCLP hangup/looping)
arpi
parents: 8270
diff changeset
274 // qtml_dll = NULL;
14528
860f06087aac preload quicktime.qts, this allows us to ignore the hardcoded path inside the dlls so that quicktime.qts doesn't need to be in the windows system dir, patch by Gianluigi Tiesi <mplayer at netfarm.it>, comments by myself
faust3
parents: 13606
diff changeset
275 // FreeLibrary( qtime_qts );
860f06087aac preload quicktime.qts, this allows us to ignore the hardcoded path inside the dlls so that quicktime.qts doesn't need to be in the windows system dir, patch by Gianluigi Tiesi <mplayer at netfarm.it>, comments by myself
faust3
parents: 13606
diff changeset
276 // qtime_qts = NULL;
8389
e8c51ec86340 fixed in/out framesize rounding bug (causing low-rate QCLP hangup/looping)
arpi
parents: 8270
diff changeset
277 // printf("qt dll loader uninit done\n");
27388
ac03760f7fcc Rename all preprocessor directives related to Apple / Mac OS X.
diego
parents: 26542
diff changeset
278 #ifdef CONFIG_QUICKTIME
9502
241bba8f60e8 MACOSX support patch, based on Dan Christiansens work
alex
parents: 9405
diff changeset
279 ExitMovies();
241bba8f60e8 MACOSX support patch, based on Dan Christiansens work
alex
parents: 9405
diff changeset
280 #endif
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
281 }
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
282
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
283 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
284 int error;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
285 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
286 unsigned long InputBufferSize=0; //size of the input buffer
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
287 unsigned long ConvertedFrames=0;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
288 unsigned long ConvertedBytes=0;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
289
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
290 FramesToGet=minlen/OutFrameSize;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
291 if(FramesToGet*OutFrameSize<minlen &&
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
292 (FramesToGet+1)*OutFrameSize<=maxlen) ++FramesToGet;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
293 if(FramesToGet*InFrameSize>sh->a_in_buffer_size)
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
294 FramesToGet=sh->a_in_buffer_size/InFrameSize;
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 InputBufferSize=FramesToGet*InFrameSize;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
297
8159
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
298 // printf("FramesToGet = %li (%li -> %li bytes)\n",FramesToGet,
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
299 // InputBufferSize, FramesToGet*OutFrameSize);
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
300
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
301 if(InputBufferSize>sh->a_in_buffer_len){
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
302 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
303 InputBufferSize-sh->a_in_buffer_len);
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
304 if(x>0) sh->a_in_buffer_len+=x;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
305 if(InputBufferSize>sh->a_in_buffer_len)
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
306 FramesToGet=sh->a_in_buffer_len/InFrameSize; // not enough data!
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
307 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
308
8159
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
309 // 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
310 // myConverter,sh->a_in_buffer,FramesToGet,buf,&ConvertedFrames,&ConvertedBytes);
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
311 error = SoundConverterConvertBuffer(myConverter,sh->a_in_buffer,
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
312 FramesToGet,buf,&ConvertedFrames,&ConvertedBytes);
8159
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
313 // printf("SoundConverterConvertBuffer:%i\n",error);
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
314 // printf("ConvertedFrames = %li\n",ConvertedFrames);
8703835345e3 fixed output bits per sample
arpi
parents: 8123
diff changeset
315 // printf("ConvertedBytes = %li\n",ConvertedBytes);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
316
8389
e8c51ec86340 fixed in/out framesize rounding bug (causing low-rate QCLP hangup/looping)
arpi
parents: 8270
diff changeset
317 // InputBufferSize=(ConvertedBytes/OutFrameSize)*InFrameSize; // FIXME!!
e8c51ec86340 fixed in/out framesize rounding bug (causing low-rate QCLP hangup/looping)
arpi
parents: 8270
diff changeset
318 InputBufferSize=FramesToGet*InFrameSize;
8008
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
319 sh->a_in_buffer_len-=InputBufferSize;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
320 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
321 else if(sh->a_in_buffer_len>0){
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
322 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
323 }
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
324
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
325 return ConvertedBytes;
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 static int control(sh_audio_t *sh,int cmd,void* arg, ...){
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
329 // various optional functions you MAY implement:
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
330 return CONTROL_UNKNOWN;
35d663ad0d95 qtaudio - audio decoder using win32 quicktime 5 dlls
arpi
parents:
diff changeset
331 }