[MPlayer-dev-eng] Re: Custom input

Rok stefanic_rok at siol.net
Mon Mar 27 17:42:33 CEST 2006


Albeu:

I have done it as you said, and lets say it is kinda working.. But it doesn't do exactly as I imagined it would.

I want that my read function writes the command (nevermind if it is
hardoced, it is to be fixed later on) to for example mutes the player

Should it be done something like in the code below... (I don't know how
to write or in what format to write the command to its destination?)

I'm looking at the code from lirc.c which has this at the begining:

int mp_input_lirc_read(int fd,char* dest, int s) {
fd_set fds;
struct timeval tv;
int r,cl = 0;
char *code = NULL,*c = NULL;
// We have something in the buffer return it
	if(cmd_buf != NULL) {
	int l = strlen(cmd_buf), w = l > s ? s : l;
	memcpy(dest,cmd_buf,w);
	l -= w;
	if(l > 0)
	memmove(cmd_buf,&cmd_buf[w],l+1);
	else {
		free(cmd_buf);
		cmd_buf = NULL;
	}
	return w;
}



On Mon, 2006-03-27 at 15:13 +0200, Alban Bedel wrote:
> On Sun, 26 Mar 2006 18:00:33 +0200
> Rok <stefanic_rok at siol.net> wrote:
> 
> > Hey, 
> > 
> > thank you for your reply on the list.
> 
> Please don't reply off-list, this can be useful for others.
> 
> > I need to explain why I need to send commands.. I'm trying to include a
> > small server listening for commands, which would then be properly
> > paresed and sent to mplayer for execution. 
> 
> Well the input layer already take care of parsing commands, so generally
> their is no need to process them before.
> 
> > In the input header file there is a header for function:
> > mp_input_add_cmd_fd(int fd, int select, mp_cmd_func_t read_func,
> > mp_close_func_t close_func);
> > 
> > In my input I have those two functions, but I still don't know how to
> > actually send the command? I dont't understand the return type of int
> > from those functions...
> 
> The read function should fill the buffer and return the number of bytes
> read, or some error code.
> 
> > Goal: I'm trying to achieve that the player when "asking the input part"
> > for any change would also ask my "server" which would pass the command
> > to it.
> 
> I'm not sure i got what you want to do, but here is how one could implement
> controlling mplayer via tcp:
> 
> At init:
>  * Create the listening socket and turn it non-blocking.
>  * Register the listening socket with select enabled.
> 
> Listening socket read:
>  * Accept the incomming connection.
>  * Register the new socket as command input with select enabled.
>  * Return MP_INPUT_NOTHING.
> 
> Basically that's it, a full solution would need a bit more code to handle
> closing client sockets, etc but this alone should already work.
> 
> 	Albeu
> 
> _______________________________________________
> MPlayer-dev-eng mailing list
> MPlayer-dev-eng at mplayerhq.hu
> http://mplayerhq.hu/mailman/listinfo/mplayer-dev-eng




More information about the MPlayer-dev-eng mailing list