Mercurial > mplayer.hg
annotate mp3lib/mpg123.h @ 32794:77d81e27a176
Fix stream_write_buffer to make sure all requested bytes are written
None of the calling sites to stream_write_buffer are checking the
return value to see if all bytes got written.
This was causing (very occasionally) problems with mencoder when using output
pipes AND running under a sandbox or when being straced (ptrace is the culprit)
Theoretically this problem can happen without pipes or ptrace.
Only stream_file, stream_smb and stream_ffmpeg implement
write_buffer and ffmpeg already handles this internally.
Original patch by Sang-Uok Kum.
Signed-off-by: Tobias Diedrich <ranma@google.com>
author | ranma |
---|---|
date | Thu, 10 Feb 2011 21:25:38 +0000 |
parents | 0ad2da052b2e |
children |
rev | line source |
---|---|
15167
07e7a572bd84
Mark modified imported files as such to comply with (L)GPL ¡ø2a.
diego
parents:
12131
diff
changeset
|
1 /* |
18783 | 2 * Modified for use with MPlayer, for details see the changelog at |
3 * http://svn.mplayerhq.hu/mplayer/trunk/ | |
15167
07e7a572bd84
Mark modified imported files as such to comply with (L)GPL ¡ø2a.
diego
parents:
12131
diff
changeset
|
4 * $Id$ |
07e7a572bd84
Mark modified imported files as such to comply with (L)GPL ¡ø2a.
diego
parents:
12131
diff
changeset
|
5 */ |
07e7a572bd84
Mark modified imported files as such to comply with (L)GPL ¡ø2a.
diego
parents:
12131
diff
changeset
|
6 |
1 | 7 /* |
8 * mpg123 defines | |
9 * used source: musicout.h from mpegaudio package | |
10 */ | |
11 | |
30163
257ef2adfd66
Add multiple inclusion guards to all mp3lib headers.
diego
parents:
28051
diff
changeset
|
12 #ifndef MPLAYER_MP3LIB_MPG123_H |
257ef2adfd66
Add multiple inclusion guards to all mp3lib headers.
diego
parents:
28051
diff
changeset
|
13 #define MPLAYER_MP3LIB_MPG123_H |
257ef2adfd66
Add multiple inclusion guards to all mp3lib headers.
diego
parents:
28051
diff
changeset
|
14 |
16989 | 15 #include "config.h" |
1 | 16 |
1256
a738eae695cc
#ifndef M_PI and M_SQRT2 added while fearing from redefining :)
alex
parents:
1245
diff
changeset
|
17 #ifndef M_PI |
30990 | 18 #define M_PI 3.141592653589793238462 |
1256
a738eae695cc
#ifndef M_PI and M_SQRT2 added while fearing from redefining :)
alex
parents:
1245
diff
changeset
|
19 #endif |
a738eae695cc
#ifndef M_PI and M_SQRT2 added while fearing from redefining :)
alex
parents:
1245
diff
changeset
|
20 #ifndef M_SQRT2 |
30990 | 21 #define M_SQRT2 1.414213562373095048802 |
1256
a738eae695cc
#ifndef M_PI and M_SQRT2 added while fearing from redefining :)
alex
parents:
1245
diff
changeset
|
22 #endif |
a738eae695cc
#ifndef M_PI and M_SQRT2 added while fearing from redefining :)
alex
parents:
1245
diff
changeset
|
23 #define REAL_IS_FLOAT |
a738eae695cc
#ifndef M_PI and M_SQRT2 added while fearing from redefining :)
alex
parents:
1245
diff
changeset
|
24 #define NEW_DCT9 |
1 | 25 |
26 #undef MPG123_REMOTE /* Get rid of this stuff for Win32 */ | |
27 | |
30167
347d152a5cfa
Refactor real --> float #define to a typedef in a common header.
diego
parents:
30163
diff
changeset
|
28 typedef float real; |
347d152a5cfa
Refactor real --> float #define to a typedef in a common header.
diego
parents:
30163
diff
changeset
|
29 |
1 | 30 /* |
31 # define real float | |
32 # define real long double | |
33 # define real double | |
34 #include "audio.h" | |
35 | |
36 // #define AUDIOBUFSIZE 4096 | |
37 */ | |
38 | |
39 #define FALSE 0 | |
40 #define TRUE 1 | |
41 | |
42 #define MAX_NAME_SIZE 81 | |
43 #define SBLIMIT 32 | |
44 #define SCALE_BLOCK 12 | |
45 #define SSLIMIT 18 | |
46 | |
47 #define MPG_MD_STEREO 0 | |
48 #define MPG_MD_JOINT_STEREO 1 | |
49 #define MPG_MD_DUAL_CHANNEL 2 | |
50 #define MPG_MD_MONO 3 | |
51 | |
52 /* #define MAXOUTBURST 32768 */ | |
53 | |
54 /* Pre Shift fo 16 to 8 bit converter table */ | |
55 #define AUSHIFT (3) | |
56 | |
57 struct al_table | |
58 { | |
59 short bits; | |
60 short d; | |
61 }; | |
62 | |
63 struct frame { | |
64 struct al_table *alloc; | |
65 int (*synth)(real *,int,unsigned char *,int *); | |
66 int (*synth_mono)(real *,unsigned char *,int *); | |
67 int stereo; | |
68 int jsbound; | |
69 int single; | |
70 int II_sblimit; | |
71 int down_sample_sblimit; | |
72 int lsf; | |
73 int mpeg25; | |
74 int down_sample; | |
75 int header_change; | |
76 int lay; | |
77 int error_protection; | |
78 int bitrate_index; | |
23434
d986b47f1451
Use int and uint32_t instead of long and unsigned long, when appropriate.
zuxy
parents:
18783
diff
changeset
|
79 int sampling_frequency; |
1 | 80 int padding; |
81 int extension; | |
82 int mode; | |
83 int mode_ext; | |
84 int copyright; | |
85 int original; | |
86 int emphasis; | |
23434
d986b47f1451
Use int and uint32_t instead of long and unsigned long, when appropriate.
zuxy
parents:
18783
diff
changeset
|
87 int framesize; /* computed framesize */ |
1 | 88 }; |
89 | |
90 | |
91 struct gr_info_s { | |
92 int scfsi; | |
93 unsigned part2_3_length; | |
94 unsigned big_values; | |
95 unsigned scalefac_compress; | |
96 unsigned block_type; | |
97 unsigned mixed_block_flag; | |
98 unsigned table_select[3]; | |
99 unsigned subblock_gain[3]; | |
100 unsigned maxband[3]; | |
101 unsigned maxbandl; | |
102 unsigned maxb; | |
103 unsigned region1start; | |
104 unsigned region2start; | |
105 unsigned preflag; | |
106 unsigned scalefac_scale; | |
107 unsigned count1table_select; | |
10343 | 108 real *full_gain[3]; |
109 real *pow2gain; | |
1 | 110 }; |
111 | |
112 struct III_sideinfo | |
113 { | |
114 unsigned main_data_begin; | |
115 unsigned private_bits; | |
116 struct { | |
117 struct gr_info_s gr[2]; | |
118 } ch[2]; | |
119 }; | |
120 | |
8560
1320f1b3229d
fixing that f*cking linker 'bug' e.g. naming config with libmp3lame
alex
parents:
1256
diff
changeset
|
121 extern real mp3lib_decwin[(512+32)]; |
12131
d155623271e3
fix symbol clashes when linking with libmp3lame including mp3 decoder, man, mp3lib is so much bloated
alex
parents:
10343
diff
changeset
|
122 extern real *mp3lib_pnts[]; |
1 | 123 |
28051 | 124 int synth_1to1_pent( real *, int, short * ); |
125 int synth_1to1_MMX( real *, int, short * ); | |
126 int synth_1to1_MMX_s(real *, int, short *, short *, int *); | |
1 | 127 |
28051 | 128 void dct36_3dnow(real *, real *, real *, real *, real *); |
129 void dct36_3dnowex(real *, real *, real *, real *, real *); | |
130 void dct36_sse(real *, real *, real *, real *, real *); | |
787 | 131 |
30658 | 132 void dct64_MMX(short *, short *, real *); |
133 void dct64_MMX_3dnow(short *, short *, real *); | |
134 void dct64_MMX_3dnowex(short *, short *, real *); | |
135 void dct64_sse(short *, short *, real *); | |
136 void dct64_altivec(real *, real *, real *); | |
30682
5fdc3c62cf76
Fix compilation: the dct64_MMX_func variable should be declared only once,
reimar
parents:
30658
diff
changeset
|
137 extern void (*dct64_MMX_func)(short *, short *, real *); |
30658 | 138 |
139 void mp3lib_dct64(real *, real *, real *); | |
140 | |
1245
03b7e2955a20
Added newest MMX-optimized decore which speedups decoding at least on 13% for any cpu.
nick
parents:
787
diff
changeset
|
141 typedef int (*synth_func_t)( real *,int,short * ); |
03b7e2955a20
Added newest MMX-optimized decore which speedups decoding at least on 13% for any cpu.
nick
parents:
787
diff
changeset
|
142 typedef void (*dct36_func_t)(real *,real *,real *,real *,real *); |
30163
257ef2adfd66
Add multiple inclusion guards to all mp3lib headers.
diego
parents:
28051
diff
changeset
|
143 |
257ef2adfd66
Add multiple inclusion guards to all mp3lib headers.
diego
parents:
28051
diff
changeset
|
144 #endif /* MPLAYER_MP3LIB_MPG123_H */ |