Skip to content

Commit ed35486

Browse files
committed
Fix the failure to compile libmpeg/changesForSqueak.c as mentioned in
#739. Squeak's plugin uses mpeg3_generate_toc_for_Squeak and this was inadvertently using the original mpeg3demux_print_timecodes. But the primitive using mpeg3_generate_toc_for_Squeak isn't used, so the potential crash never materializes. Anyway, it's a simple fix.
1 parent c1d5724 commit ed35486

File tree

1 file changed

+62
-97
lines changed

1 file changed

+62
-97
lines changed

platforms/Cross/plugins/Mpeg3Plugin/libmpeg/changesForSqueak.c

Lines changed: 62 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
/****************************************************************************
2-
* PROJECT: Changes for Squeak
2+
* PROJECT: Changes for Squeak
33
* FILE: changesForSqueak.c
4-
* CONTENT:
4+
* CONTENT:
55
*
66
* AUTHOR: John McIntosh, and others.
7-
* ADDRESS:
7+
* ADDRESS:
88
99
* RCSID: $Id$
1010
*
@@ -13,21 +13,21 @@
1313
*****************************************************************************/
1414
/* Squeak on MPEG
1515
by John M McIntosh johnmci#smalltalkconsulting.com Sept 2000
16-
17-
For the macintosh I've
16+
17+
For the macintosh I've
1818
1) coded up #ifdef for TARGET_OS_MAC
1919
2) Coded around the pthreads
2020
3) ignored most of mpeg3io_device
2121
4) some changes to make CodeWarrior 5 happy
22-
22+
2323
In General
24-
24+
2525
1) Added some casts
2626
2) had some problems with Mpeg3_stream_coeffs_t
2727
3) coded up memoryAllocate/memoryFree versus malloc/cmalloc/free
2828
4) created a mpeg3_generate_toc_for_Squeak
2929
5) Ignore perror
30-
30+
3131
*/
3232
// Nov 2nd, 2000 JMM changed memoryAllocate, use calloc
3333
// Sept 7nd, 2001 JMM added carbon logic
@@ -39,72 +39,49 @@
3939
#include "mpeg3protos.h"
4040
#include "changesForSqueak.h"
4141

42-
#if defined(TARGET_OS_MAC) && !defined ( __APPLE__ ) && !defined ( __MACH__ )
43-
#include <Memory.h>
44-
#include <QuickDraw.h>
45-
#include "sq.h"
46-
#endif
47-
4842
#ifdef _WIN32
4943
#include <windows.h>
5044
#endif
5145

5246
mpeg3_demuxer_t* mpeg3_new_demuxer(mpeg3_t *file, int do_audio, int do_video, int stream_id);
5347
mpeg3_title_t* mpeg3_new_title(mpeg3_t *file, char *path);
54-
mpeg3demux_timecode_t* mpeg3_append_timecode(mpeg3_demuxer_t *demuxer,
55-
mpeg3_title_t *title,
56-
long prev_byte,
57-
double prev_time,
58-
long next_byte,
48+
mpeg3demux_timecode_t* mpeg3_append_timecode(mpeg3_demuxer_t *demuxer,
49+
mpeg3_title_t *title,
50+
long prev_byte,
51+
double prev_time,
52+
long next_byte,
5953
double next_time,
6054
int dont_store);
61-
void appendStringToBufferIfPossible(char *buffer,char *append,int bufferSize);
62-
55+
static void appendStringToBufferIfPossible(char *buffer,char *append,int bufferSize);
56+
6357

6458
static long counter = 0;
6559

6660
void * memoryAllocate(int number,unsigned size) {
6761
void * stuff;
68-
#if defined(TARGET_OS_MAC) && !defined ( __APPLE__ ) && !defined ( __MACH__ )
69-
#if TARGET_API_MAC_CARBON
70-
stuff = (void *) NewPtrClear(size*number);
71-
#else
72-
stuff = (void *) NewPtrSysClear(size*number);
73-
#endif
74-
// if (stuff == nil) Debugger();
75-
#else
7662
stuff = (void *) calloc(size,number);
77-
#endif
7863
counter++;
7964
return stuff;
8065
}
8166

8267
void memoryFree(void *stuff) {
8368
counter--;
84-
#if defined(TARGET_OS_MAC) && !defined ( __APPLE__ ) && !defined ( __MACH__ )
85-
DisposePtr((char *)stuff);
86-
#else
8769
free(stuff);
88-
#endif
8970
}
9071

9172

9273

93-
#if (defined(TARGET_OS_MAC) && !defined ( __APPLE__ ) && !defined ( __MACH__ )) || (defined(_WIN32) && !defined(__GNUC__))
94-
#define NEEDSTRFUNCS
95-
#endif
96-
97-
#ifdef NEEDSTRFUNCS
98-
#ifndef _MSC_VER
74+
#if defined(_WIN32) && !defined(__GNUC__)
75+
# ifndef _MSC_VER
9976
void perror(const char * string) {
10077

10178
}
102-
#endif
79+
# endif
10380

104-
int strncasecmp(const char *str1, const char *str2, size_t nchars);
105-
int strcasecmp (const char *str1, const char *str2);
81+
int strncasecmp(const char *str1, const char *str2, size_t nchars);
82+
int strcasecmp (const char *str1, const char *str2);
10683

107-
int strncasecmp(const char *s1, const char *s2, size_t len)
84+
int strncasecmp(const char *s1, const char *s2, size_t len)
10885
{
10986
/* Return true if the two strings are the same, not considering case. */
11087
int i, c1, c2;
@@ -123,44 +100,16 @@ int strncasecmp(const char *s1, const char *s2, size_t len)
123100
return 1;
124101
}
125102

126-
int strcasecmp (const char *str1, const char *str2) {
103+
int strcasecmp (const char *str1, const char *str2) {
127104
if (strlen(str1) != strlen(str2)) return 0;
128105
return strncasecmp(str1,str2,strlen(str1));
129106
}
107+
#endif // defined(_WIN32) && !defined(__GNUC__)
130108

131-
132-
#endif
133-
134-
#ifdef _WIN32
135-
int bzero(char* block, long size) {
136-
ZeroMemory(block,size);
137-
}
138-
#endif
139-
140-
141-
#if defined(TARGET_OS_MAC) && !defined ( __APPLE__ ) && !defined ( __MACH__ )
142-
int bzero(char *block,long size) {
143-
BlockZero(block,size);
144-
}
145-
146-
int main ()
147-
{
148-
}
149-
150-
#endif
151-
152-
#if defined(TARGET_OS_MAC) && defined ( __APPLE__ ) && defined ( __MACH__ )
153-
int isSystem9_0_or_better(void)
109+
static void appendStringToBufferIfPossible(char *buffer,char *append,int bufferSize)
154110
{
155-
return 1;
156-
}
157-
#endif
158-
159-
void appendStringToBufferIfPossible(char *buffer,char *append,int bufferSize)
160-
{
161-
if (strlen(append) + strlen(buffer) < bufferSize)
111+
if (strlen(append) + strlen(buffer) < bufferSize)
162112
strcat(buffer,append);
163-
164113
}
165114

166115
int mpeg3_generate_toc_for_Squeak(mpeg3_t *file, int timecode_search, int print_streams, char *buffer, int bufferSize) {
@@ -176,17 +125,33 @@ int mpeg3_generate_toc_for_Squeak(mpeg3_t *file, int timecode_search, int print_
176125
if(print_streams) mpeg3demux_print_streams_for_Squeak(demuxer, buffer,bufferSize);
177126

178127
sprintf(temp_buffer, "SIZE: %ld\n", demuxer->titles[demuxer->current_title]->total_bytes);
179-
appendStringToBufferIfPossible(buffer,temp_buffer,bufferSize);
128+
appendStringToBufferIfPossible(buffer,temp_buffer,bufferSize);
180129
sprintf(temp_buffer, "PACKETSIZE: %ld\n", demuxer->packet_size);
181-
appendStringToBufferIfPossible(buffer,temp_buffer,bufferSize);
130+
appendStringToBufferIfPossible(buffer,temp_buffer,bufferSize);
182131

183-
mpeg3demux_print_timecodes(demuxer->titles[demuxer->current_title], buffer);
132+
/* inline mpeg3demux_print_timecodes to use sprintf */
133+
mpeg3_title_t *title = demuxer->titles[demuxer->current_title];
134+
if(title->timecode_table)
135+
{
136+
for (i = 0; i < title->timecode_table_size; i++)
137+
{
138+
mpeg3demux_timecode_t *timecode = &title->timecode_table[i];
139+
140+
sprintf(temp_buffer, "REGION: %ld %ld %f %f\n",
141+
timecode->start_byte,
142+
timecode->end_byte,
143+
timecode->start_time,
144+
timecode->end_time);
145+
appendStringToBufferIfPossible(buffer,temp_buffer,bufferSize);
146+
}
147+
}
184148

185149
mpeg3_delete_demuxer(demuxer);
186150
return 0;
187151
}
188152
return 1;
189153
}
154+
190155
/* Create a title. */
191156
/* Build a table of timecodes contained in the program stream. */
192157
/* If toc is 0 just read the first and last timecode. */
@@ -195,13 +160,13 @@ int mpeg3demux_create_title_for_Squeak(mpeg3_demuxer_t *demuxer, int timecode_se
195160
int result = 0, done = 0, counter_start, counter;
196161
mpeg3_t *file = (mpeg3_t *) demuxer->file;
197162
long next_byte=0, prev_byte=0;
198-
double next_time, prev_time, absolute_time;
163+
double next_time, prev_time;
199164
long i;
200165
mpeg3_title_t *title;
201166
unsigned long test_header = 0;
202167
mpeg3demux_timecode_t *timecode = 0;
203168
char temp_buffer[256];
204-
169+
205170
demuxer->error_flag = 0;
206171
demuxer->generating_timecode = 1;
207172

@@ -220,7 +185,7 @@ int mpeg3demux_create_title_for_Squeak(mpeg3_demuxer_t *demuxer, int timecode_se
220185
if(file->is_program_stream)
221186
{
222187
mpeg3io_seek(title->fs, 4);
223-
for(i = 0; i < MPEG3_MAX_PACKSIZE &&
188+
for(i = 0; i < MPEG3_MAX_PACKSIZE &&
224189
test_header != MPEG3_PACK_START_CODE; i++)
225190
{
226191
test_header <<= 8;
@@ -245,26 +210,26 @@ int mpeg3demux_create_title_for_Squeak(mpeg3_demuxer_t *demuxer, int timecode_se
245210
{
246211
next_time = demuxer->time;
247212
sprintf(temp_buffer,"%f %f\n", next_time, prev_time);
248-
appendStringToBufferIfPossible(buffer,temp_buffer,buffer_size);
249-
if(next_time < prev_time ||
213+
appendStringToBufferIfPossible(buffer,temp_buffer,buffer_size);
214+
if(next_time < prev_time ||
250215
next_time - prev_time > MPEG3_CONTIGUOUS_THRESHOLD ||
251216
!title->timecode_table_size)
252217
{
253218
/* Discontinuous */
254-
timecode = mpeg3_append_timecode(demuxer,
255-
title,
256-
prev_byte,
257-
prev_time,
258-
next_byte,
219+
timecode = mpeg3_append_timecode(demuxer,
220+
title,
221+
prev_byte,
222+
prev_time,
223+
next_byte,
259224
next_time,
260225
0);
261-
226+
262227
sprintf(temp_buffer,"timecode: %ld %ld %f %f\n",
263228
timecode->start_byte,
264229
timecode->end_byte,
265230
timecode->start_time,
266231
timecode->end_time);
267-
appendStringToBufferIfPossible(buffer,temp_buffer,buffer_size);
232+
appendStringToBufferIfPossible(buffer,temp_buffer,buffer_size);
268233

269234

270235
counter_start = next_time;
@@ -275,7 +240,7 @@ int mpeg3demux_create_title_for_Squeak(mpeg3_demuxer_t *demuxer, int timecode_se
275240
}
276241

277242
/* Just get the first bytes if not building a toc to get the stream ID's. */
278-
if(next_byte > 0x100000 &&
243+
if(next_byte > 0x100000 &&
279244
(!timecode_search || !buffer)) done = 1;
280245
}
281246

@@ -304,19 +269,19 @@ int mpeg3demux_print_streams_for_Squeak(mpeg3_demuxer_t *demuxer, char *buffer,i
304269
{
305270
int i;
306271
char temp_buffer[256];
307-
272+
308273
/* Print the stream information */
309274
for(i = 0; i < MPEG3_MAX_STREAMS; i++)
310275
{
311276
if(demuxer->astream_table[i]) {
312277
sprintf(temp_buffer, "ASTREAM: %d %d\n", i, demuxer->astream_table[i]);
313-
appendStringToBufferIfPossible(buffer,temp_buffer,buffer_size);
314-
}
278+
appendStringToBufferIfPossible(buffer,temp_buffer,buffer_size);
279+
}
315280

316281
if(demuxer->vstream_table[i]) {
317282
sprintf(temp_buffer, "VSTREAM: %d %d\n", i, demuxer->vstream_table[i]);
318-
appendStringToBufferIfPossible(buffer,temp_buffer,buffer_size);
319-
}
283+
appendStringToBufferIfPossible(buffer,temp_buffer,buffer_size);
284+
}
320285
}
321286
return 0;
322287
}

0 commit comments

Comments
 (0)