[Rio-pm] Video::Xine::Stream bugado - função não definida
breno
breno em rio.pm.org
Segunda Maio 18 09:08:24 PDT 2009
2009/5/18 Samir Cury <rimasy em gmail.com>:
> Mas acho que o perl tá se perdendo na função que o cara usa e não existe, se
> alguém souber onde há (se há) essa "interface" acho que resolve
>
Samir, isso é código em xs, e a função está declarada sim:
------------8<------------
#
# Create a new Xine stream.
#
xine_stream_t *
xine_stream_new(xine,ao,vo)
xine_t *xine
xine_audio_port_t *ao
xine_video_port_t *vo
CODE:
RETVAL = xine_stream_new(xine,ao,vo);
if (RETVAL == NULL) {
XSRETURN_UNDEF;
}
OUTPUT:
RETVAL
------------>8------------
Vejamos a mensagem de erro:
Video::Xine::Stream::xine_stream_new: xine is not a reference (...)
"xine" é o primeiro elemento da função. Vamos à chamada dela:
------------8<------------
sub new {
my $type = shift;
my ( $xine, $audio_port, $video_port ) = @_;
my $self = {};
$self->{'xine'} = $xine;
$self->{'audio_port'} = $audio_port;
$self->{'video_port'} = $video_port;
$self->{'stream'} =
xine_stream_new( $xine, $audio_port->{'driver'},
$video_port->{'driver'} );
bless $self, $type;
return $self;
}
------------>8------------
$xine é passado pra ela, e é recebido como o primeiro elemento do new
(o primeiro q vc passa, claro, pq o primeiro "primeiro" é sempre a
classe em si :-)
Na sinopse da documentaçao do Video::Xine, encontrei:
# Create and initialize the Xine object
my $xine = Video::Xine->new(
config_file => "$ENV{'HOME'}/.xine/config",
);
Aí vem a pergunta: é esse objeto que vc está passando para o streamer?
Atenção deve ser tomada para os drivers de audio/vídeo, que também são
passados ao streamer.
Obs: não leva a mal se vc já fez isso tudo, só achei que faltaram
esses detalhes na sua dúvida e quero ter certeza que vc RTFM e que
está procurando a origem do problema no lugar certo (depurar código xs
é tão complicado qto depurar código C, as vezes mais :-)
[]s
-b
Mais detalhes sobre a lista de discussão Rio-pm