[smpeg] SMPEG threading, SMPEG constructors

Doru-Catalin Togea doru-cat at student.matnat.uio.no
Wed Jan 8 04:46:48 EST 2003


On Tue, 7 Jan 2003, Ryan C. Gordon wrote:

> > mpeg = SMPEG_new_descr(playBuffer[0], &info, use_audio);
> >
> > when will it return control to my programme?
>
> None of the SMPEG functions block...you should regain control immediately.

Hmmm! Then something could be seriously wrong with my SMPEG installation.
I don't remember getting any error messages when installing though. I am
using SMPEG on a RedHat 7.3 machine.

I have a programme which compiles and plays MPEG files when I use the
file-name-pointer constructor (playing from files on disk)

	mpeg = SMPEG_new(argv[i], &info, use_audio);

My new programme, on which I am working now, blocks when using the

	mpeg = SMPEG_new_descr(playBuffer[0], &info, use_audio);

cosntructor.

playBuffer is a pipe, initialized like this:

int playBuffer[2];
pipe(playBuffer);

When the process blocks I can only kill it with the -9 option. Ctr+C
doesn't work.

Another surprizing element is that I have added a couple of printf
statements in the following routines:

	SMPEG_new_descr(...) from the smpeg.cpp file,
	MPEG::MPEG(MPEG_FD, use_audio) from MPEG.cpp (this constructor,
		 is called by SMPEG_new_descr(...)

but they have no effect. No output is printed to the screen.

Of course, I recompiled the library with "make all", and
reinstalled it with "make install", both operations as root, and I have
recompiled my programme with the altered libraries.

Is SMPEG suppressing or redirecting output from stderr?

This is my quest:

I am streaming MPEG and I need a fine-grained control mechanism which
allows me to feed the MPEG player with chunks of data as they arrive. Data
arrives as char *s. Just calling some fancy streaming library which
pluggs in directly into some sockets and does all work behind the scene is
not good enough.

Is the SMPEG_new_descr(...); the right choice? Any alternatives?

Am I on the right track by using a pipe? My plan is to have the SMPEG
player "read" from the pipe, while my programme continuosly writes data
to it.

Can anyone please help me out?

Thanks!
Catalin

--

	<<<< ================================== >>>>
	<<     We are what we repeatedly do.      >>
	<<  Excellence, therefore, is not an act  >>
	<<             but a habit.               >>
	<<<< ================================== >>>>



More information about the smpeg mailing list