summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xine/post.c682
1 files changed, 341 insertions, 341 deletions
diff --git a/xine/post.c b/xine/post.c
index 86e5aa20..6c637634 100644
--- a/xine/post.c
+++ b/xine/post.c
@@ -1,27 +1,27 @@
-/*
+/*
* Copyright (C) 2003 by Dirk Meyer
- *
+ *
* This file is part of xine, a unix video player.
- *
+ *
* xine is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* xine is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
* The code is taken from xine-ui/src/xitk/post.c at changed to work with fbxine
- *
+ *
* Modified for VDR xineliboutput plugin by Petri Hintukainen, 2006
* - runtime re-configuration (load/unload, enable/disable)
- * - support for multiple streams
+ * - support for multiple streams
* - support for mosaico post plugin (picture-in-picture)
*
*/
@@ -59,51 +59,51 @@ typedef struct {
} post_object_t;
-static int __pplugin_retrieve_parameters(post_object_t *pobj)
+static int __pplugin_retrieve_parameters(post_object_t *pobj)
{
xine_post_in_t *input_api;
-
- if((input_api = (xine_post_in_t *) xine_post_input(pobj->post,
- "parameters"))) {
+
+ if((input_api = (xine_post_in_t *) xine_post_input(pobj->post,
+ "parameters"))) {
xine_post_api_t *post_api;
xine_post_api_descr_t *api_descr;
xine_post_api_parameter_t *parm;
int pnum = 0;
-
+
post_api = (xine_post_api_t *) input_api->data;
-
+
api_descr = post_api->get_param_descr();
-
+
parm = api_descr->parameter;
pobj->param_data = malloc(api_descr->struct_size);
-
+
while(parm->type != POST_PARAM_TYPE_LAST) {
-
+
post_api->get_parameters(pobj->post, pobj->param_data);
-
+
if(!pnum)
- pobj->properties_names = (char **) calloc(2, sizeof(char *));
+ pobj->properties_names = (char **) calloc(2, sizeof(char *));
else
- pobj->properties_names = (char **)
- realloc(pobj->properties_names, sizeof(char *) * (pnum + 2));
-
+ pobj->properties_names = (char **)
+ realloc(pobj->properties_names, sizeof(char *) * (pnum + 2));
+
pobj->properties_names[pnum] = strdup(parm->name);
pobj->properties_names[pnum + 1] = NULL;
pnum++;
parm++;
}
-
+
pobj->api = post_api;
pobj->descr = api_descr;
pobj->param = api_descr->parameter;
-
+
return 1;
}
return 0;
}
-static void _pplugin_update_parameter(post_object_t *pobj)
+static void _pplugin_update_parameter(post_object_t *pobj)
{
pobj->api->set_parameters(pobj->post, pobj->param_data);
pobj->api->get_parameters(pobj->post, pobj->param_data);
@@ -115,117 +115,117 @@ static void __pplugin_update_parameters(xine_post_t *post, char *args)
post_object_t pobj = {
.post = post,
};
-
+
if(__pplugin_retrieve_parameters(&pobj)) {
int i;
-
+
if(pobj.properties_names && args && *args) {
char *param;
-
+
while((param = xine_strsep(&args, ",")) != NULL) {
-
- p = param;
-
- while((*p != '\0') && (*p != '='))
- p++;
-
- if(p && strlen(p)) {
- int param_num = 0;
-
- *p++ = '\0';
-
- while(pobj.properties_names[param_num]
- && strcasecmp(pobj.properties_names[param_num], param))
- param_num++;
-
- if(pobj.properties_names[param_num]) {
-
- pobj.param = pobj.descr->parameter;
- pobj.param += param_num;
- pobj.readonly = pobj.param->readonly;
-
- switch(pobj.param->type) {
- case POST_PARAM_TYPE_INT:
- if(!pobj.readonly) {
- if(pobj.param->enum_values) {
- char **values = pobj.param->enum_values;
- int i = 0;
-
- while(values[i]) {
- if(!strcasecmp(values[i], p)) {
- *(int *)(pobj.param_data + pobj.param->offset) = i;
- break;
- }
- i++;
- }
-
- if( !values[i] )
- *(int *)(pobj.param_data + pobj.param->offset) = (int) strtol(p, &p, 10);
- } else {
- *(int *)(pobj.param_data + pobj.param->offset) = (int) strtol(p, &p, 10);
- }
- _pplugin_update_parameter(&pobj);
- }
- break;
-
- case POST_PARAM_TYPE_DOUBLE:
- if(!pobj.readonly) {
- *(double *)(pobj.param_data + pobj.param->offset) = strtod(p, &p);
- _pplugin_update_parameter(&pobj);
- }
- break;
-
- case POST_PARAM_TYPE_CHAR:
- case POST_PARAM_TYPE_STRING:
- if(!pobj.readonly) {
- if(pobj.param->type == POST_PARAM_TYPE_CHAR) {
- int maxlen = pobj.param->size / sizeof(char);
-
- snprintf((char *)(pobj.param_data + pobj.param->offset), maxlen, "%s", p);
- _pplugin_update_parameter(&pobj);
- }
- else
- fprintf(stderr, "parameter type POST_PARAM_TYPE_STRING not supported yet.\n");
- }
- break;
-
- case POST_PARAM_TYPE_STRINGLIST: /* unsupported */
- if(!pobj.readonly)
- fprintf(stderr, "parameter type POST_PARAM_TYPE_STRINGLIST not supported yet.\n");
- break;
-
- case POST_PARAM_TYPE_BOOL:
- if(!pobj.readonly) {
- *(int *)(pobj.param_data + pobj.param->offset) = ((int) strtol(p, &p, 10)) ? 1 : 0;
- _pplugin_update_parameter(&pobj);
- }
- break;
- }
- } else {
- LOGMSG("Unknown post plugin parameter %s !", param);
- }
- }
- }
-
+
+ p = param;
+
+ while((*p != '\0') && (*p != '='))
+ p++;
+
+ if(p && strlen(p)) {
+ int param_num = 0;
+
+ *p++ = '\0';
+
+ while(pobj.properties_names[param_num]
+ && strcasecmp(pobj.properties_names[param_num], param))
+ param_num++;
+
+ if(pobj.properties_names[param_num]) {
+
+ pobj.param = pobj.descr->parameter;
+ pobj.param += param_num;
+ pobj.readonly = pobj.param->readonly;
+
+ switch(pobj.param->type) {
+ case POST_PARAM_TYPE_INT:
+ if(!pobj.readonly) {
+ if(pobj.param->enum_values) {
+ char **values = pobj.param->enum_values;
+ int i = 0;
+
+ while(values[i]) {
+ if(!strcasecmp(values[i], p)) {
+ *(int *)(pobj.param_data + pobj.param->offset) = i;
+ break;
+ }
+ i++;
+ }
+
+ if( !values[i] )
+ *(int *)(pobj.param_data + pobj.param->offset) = (int) strtol(p, &p, 10);
+ } else {
+ *(int *)(pobj.param_data + pobj.param->offset) = (int) strtol(p, &p, 10);
+ }
+ _pplugin_update_parameter(&pobj);
+ }
+ break;
+
+ case POST_PARAM_TYPE_DOUBLE:
+ if(!pobj.readonly) {
+ *(double *)(pobj.param_data + pobj.param->offset) = strtod(p, &p);
+ _pplugin_update_parameter(&pobj);
+ }
+ break;
+
+ case POST_PARAM_TYPE_CHAR:
+ case POST_PARAM_TYPE_STRING:
+ if(!pobj.readonly) {
+ if(pobj.param->type == POST_PARAM_TYPE_CHAR) {
+ int maxlen = pobj.param->size / sizeof(char);
+
+ snprintf((char *)(pobj.param_data + pobj.param->offset), maxlen, "%s", p);
+ _pplugin_update_parameter(&pobj);
+ }
+ else
+ fprintf(stderr, "parameter type POST_PARAM_TYPE_STRING not supported yet.\n");
+ }
+ break;
+
+ case POST_PARAM_TYPE_STRINGLIST: /* unsupported */
+ if(!pobj.readonly)
+ fprintf(stderr, "parameter type POST_PARAM_TYPE_STRINGLIST not supported yet.\n");
+ break;
+
+ case POST_PARAM_TYPE_BOOL:
+ if(!pobj.readonly) {
+ *(int *)(pobj.param_data + pobj.param->offset) = ((int) strtol(p, &p, 10)) ? 1 : 0;
+ _pplugin_update_parameter(&pobj);
+ }
+ break;
+ }
+ } else {
+ LOGMSG("Unknown post plugin parameter %s !", param);
+ }
+ }
+ }
+
i = 0;
-
+
while(pobj.properties_names[i]) {
- free(pobj.properties_names[i]);
- i++;
+ free(pobj.properties_names[i]);
+ i++;
}
-
+
free(pobj.properties_names);
}
-
+
free(pobj.param_data);
}
}
/* -post <name>:option1=value1,option2=value2... */
-static post_element_t **pplugin_parse_and_load(fe_t *fe,
- int plugin_type,
- const char *pchain,
- int *post_elements_num)
+static post_element_t **pplugin_parse_and_load(fe_t *fe,
+ int plugin_type,
+ const char *pchain,
+ int *post_elements_num)
{
post_element_t **post_elements = NULL;
@@ -233,35 +233,35 @@ static post_element_t **pplugin_parse_and_load(fe_t *fe,
if(pchain && strlen(pchain)) {
char *post_chain, *freeme, *p;
-
+
freeme = post_chain = strdup(pchain);
-
+
while((p = xine_strsep(&post_chain, ";"))) {
-
+
if(p && strlen(p)) {
- char *plugin, *args = NULL;
- xine_post_t *post;
-
- while(*p == ' ')
- p++;
-
- plugin = strdup(p);
-
- if((p = strchr(plugin, ':')))
- *p++ = '\0';
-
- if(p && (strlen(p) > 1))
- args = p;
+ char *plugin, *args = NULL;
+ xine_post_t *post;
+
+ while(*p == ' ')
+ p++;
+
+ plugin = strdup(p);
+
+ if((p = strchr(plugin, ':')))
+ *p++ = '\0';
+
+ if(p && (strlen(p) > 1))
+ args = p;
#if 0
- post = xine_post_init(fe->xine, plugin, 0,
- &fe->audio_port, &fe->video_port);
+ post = xine_post_init(fe->xine, plugin, 0,
+ &fe->audio_port, &fe->video_port);
#else
- if(plugin_type == XINE_POST_TYPE_VIDEO_COMPOSE) {
- post = xine_post_init(fe->xine, plugin, 2,
- &fe->audio_port, &fe->video_port);
- } else
- post = xine_post_init(fe->xine, plugin, 0,
- &fe->audio_port, &fe->video_port);
+ if(plugin_type == XINE_POST_TYPE_VIDEO_COMPOSE) {
+ post = xine_post_init(fe->xine, plugin, 2,
+ &fe->audio_port, &fe->video_port);
+ } else
+ post = xine_post_init(fe->xine, plugin, 0,
+ &fe->audio_port, &fe->video_port);
#endif
if (post && plugin_type) {
@@ -270,29 +270,29 @@ static post_element_t **pplugin_parse_and_load(fe_t *fe,
post = NULL;
}
}
-
- if(post) {
-
- if(!(*post_elements_num))
- post_elements = (post_element_t **) calloc(2, sizeof(post_element_t *));
- else
- post_elements = (post_element_t **)
- realloc(post_elements, sizeof(post_element_t *) * ((*post_elements_num) + 2));
-
- post_elements[(*post_elements_num)] = calloc(1, sizeof(post_element_t));
- post_elements[(*post_elements_num)]->post = post;
- post_elements[(*post_elements_num)]->name = strdup(plugin);
+
+ if(post) {
+
+ if(!(*post_elements_num))
+ post_elements = (post_element_t **) calloc(2, sizeof(post_element_t *));
+ else
+ post_elements = (post_element_t **)
+ realloc(post_elements, sizeof(post_element_t *) * ((*post_elements_num) + 2));
+
+ post_elements[(*post_elements_num)] = calloc(1, sizeof(post_element_t));
+ post_elements[(*post_elements_num)]->post = post;
+ post_elements[(*post_elements_num)]->name = strdup(plugin);
#if 1
- post_elements[(*post_elements_num)]->args = args ? strdup(args) : NULL;
- post_elements[(*post_elements_num)]->enable = 0;
+ post_elements[(*post_elements_num)]->args = args ? strdup(args) : NULL;
+ post_elements[(*post_elements_num)]->enable = 0;
#endif
- (*post_elements_num)++;
- post_elements[(*post_elements_num)] = NULL;
+ (*post_elements_num)++;
+ post_elements[(*post_elements_num)] = NULL;
- __pplugin_update_parameters(post, args);
- }
-
- free(plugin);
+ __pplugin_update_parameters(post, args);
+ }
+
+ free(plugin);
}
}
free(freeme);
@@ -301,8 +301,8 @@ static post_element_t **pplugin_parse_and_load(fe_t *fe,
return post_elements;
}
-void pplugin_parse_and_store_post(fe_t *fe, int plugin_type,
- const char *post_chain)
+void pplugin_parse_and_store_post(fe_t *fe, int plugin_type,
+ const char *post_chain)
{
post_element_t ***_post_elements;
int *_post_elements_num;
@@ -332,11 +332,11 @@ void pplugin_parse_and_store_post(fe_t *fe, int plugin_type,
if(*_post_elements_num) {
int i;
int ptot = *_post_elements_num + num;
-
- *_post_elements = (post_element_t **) realloc(*_post_elements,
- sizeof(post_element_t *) * (ptot + 1));
+
+ *_post_elements = (post_element_t **) realloc(*_post_elements,
+ sizeof(post_element_t *) * (ptot + 1));
for(i = *_post_elements_num; i < ptot; i++)
- (*_post_elements)[i] = posts[i - *_post_elements_num];
+ (*_post_elements)[i] = posts[i - *_post_elements_num];
(*_post_elements)[i] = NULL;
(*_post_elements_num) += num;
@@ -352,39 +352,39 @@ void pplugin_parse_and_store_post(fe_t *fe, int plugin_type,
int i;
char s[4096]="";
for(i=0; i<ptot; i++)
- if((*_post_elements)[i])
- if(((*_post_elements)[i])->post) {
- if(((*_post_elements)[i])->enable)
- strcat(s, "*");
- if(((*_post_elements)[i])->name)
- strcat(s, ((*_post_elements)[i])->name);
- else
- strcat(s, "<no name!>");
- strcat(s, " ");
- }
- LOGDBG(" loaded plugins (type %d.%d): %s",
- (plugin_type>>16), (plugin_type&0xffff), s);
+ if((*_post_elements)[i])
+ if(((*_post_elements)[i])->post) {
+ if(((*_post_elements)[i])->enable)
+ strcat(s, "*");
+ if(((*_post_elements)[i])->name)
+ strcat(s, ((*_post_elements)[i])->name);
+ else
+ strcat(s, "<no name!>");
+ strcat(s, " ");
+ }
+ LOGDBG(" loaded plugins (type %d.%d): %s",
+ (plugin_type>>16), (plugin_type&0xffff), s);
}
#endif
}
}
-void vpplugin_parse_and_store_post(fe_t *fe, const char *post_chain)
+void vpplugin_parse_and_store_post(fe_t *fe, const char *post_chain)
{
pplugin_parse_and_store_post(fe, XINE_POST_TYPE_VIDEO_FILTER, post_chain);
pplugin_parse_and_store_post(fe, XINE_POST_TYPE_VIDEO_COMPOSE, post_chain);
}
-void applugin_parse_and_store_post(fe_t *fe, const char *post_chain)
+void applugin_parse_and_store_post(fe_t *fe, const char *post_chain)
{
pplugin_parse_and_store_post(fe, XINE_POST_TYPE_AUDIO_FILTER, post_chain);
pplugin_parse_and_store_post(fe, XINE_POST_TYPE_AUDIO_VISUALIZATION, post_chain);
}
-static void _vpplugin_unwire(fe_t *fe)
+static void _vpplugin_unwire(fe_t *fe)
{
xine_post_out_t *vo_source;
vo_source = xine_get_video_source(fe->video_source);
@@ -392,7 +392,7 @@ static void _vpplugin_unwire(fe_t *fe)
}
-static void _applugin_unwire(fe_t *fe)
+static void _applugin_unwire(fe_t *fe)
{
xine_post_out_t *ao_source;
ao_source = xine_get_audio_source(fe->audio_source);
@@ -400,8 +400,8 @@ static void _applugin_unwire(fe_t *fe)
}
-static void _vpplugin_rewire_from_post_elements(fe_t *fe, post_element_t **post_elements, int post_elements_num)
-{
+static void _vpplugin_rewire_from_post_elements(fe_t *fe, post_element_t **post_elements, int post_elements_num)
+{
if(post_elements_num) {
xine_post_out_t *vo_source;
int i = 0;
@@ -410,68 +410,68 @@ static void _vpplugin_rewire_from_post_elements(fe_t *fe, post_element_t **post_
const char *const *outs = xine_post_list_outputs(post_elements[i]->post);
const xine_post_out_t *vo_out = xine_post_output(post_elements[i]->post, (char *) *outs);
if(i == (post_elements_num - 1)) {
- LOGDBG(" wiring %10s[out] -> [in]video_out", post_elements[i]->name);
- xine_post_wire_video_port((xine_post_out_t *) vo_out, fe->video_port);
+ LOGDBG(" wiring %10s[out] -> [in]video_out", post_elements[i]->name);
+ xine_post_wire_video_port((xine_post_out_t *) vo_out, fe->video_port);
}
else {
- const xine_post_in_t *vo_in;
- int err;
-
- /* look for standard input names */
- vo_in = xine_post_input(post_elements[i + 1]->post, "video");
- if( !vo_in )
- vo_in = xine_post_input(post_elements[i + 1]->post, "video in");
-
- LOGDBG(" wiring %10s[out] -> [in]%-10s ",
- post_elements[i]->name, post_elements[i+1]->name);
- err = xine_post_wire((xine_post_out_t *) vo_out,
- (xine_post_in_t *) vo_in);
+ const xine_post_in_t *vo_in;
+ int err;
+
+ /* look for standard input names */
+ vo_in = xine_post_input(post_elements[i + 1]->post, "video");
+ if( !vo_in )
+ vo_in = xine_post_input(post_elements[i + 1]->post, "video in");
+
+ LOGDBG(" wiring %10s[out] -> [in]%-10s ",
+ post_elements[i]->name, post_elements[i+1]->name);
+ err = xine_post_wire((xine_post_out_t *) vo_out,
+ (xine_post_in_t *) vo_in);
}
}
- if(fe->post_pip_enable &&
+ if(fe->post_pip_enable &&
!strcmp(post_elements[0]->name, "mosaico") &&
fe->pip_stream) {
vo_source = xine_get_video_source(fe->pip_stream);
- LOGDBG(" wiring %10s[out] -> [in1]%-10s ", "pip stream", post_elements[0]->name);
+ LOGDBG(" wiring %10s[out] -> [in1]%-10s ", "pip stream", post_elements[0]->name);
xine_post_wire_video_port(vo_source,
- post_elements[0]->post->video_input[1]);
+ post_elements[0]->post->video_input[1]);
}
vo_source = xine_get_video_source(fe->video_source);
LOGDBG(" wiring %10s[out] -> [in]%-10s", "stream", post_elements[0]->name);
- xine_post_wire_video_port(vo_source,
- post_elements[0]->post->video_input[0]);
+ xine_post_wire_video_port(vo_source,
+ post_elements[0]->post->video_input[0]);
}
}
-static void _applugin_rewire_from_post_elements(fe_t *fe, post_element_t **post_elements, int post_elements_num)
+static void _applugin_rewire_from_post_elements(fe_t *fe, post_element_t **post_elements, int post_elements_num)
{
if(post_elements_num) {
xine_post_out_t *ao_source;
int i = 0;
-
+
for(i = (post_elements_num - 1); i >= 0; i--) {
const char *const *outs = xine_post_list_outputs(post_elements[i]->post);
const xine_post_out_t *ao_out = xine_post_output(post_elements[i]->post, (char *) *outs);
if(i == (post_elements_num - 1)) {
- LOGDBG(" wiring %10s[out] -> [in]audio_out", post_elements[i]->name);
- xine_post_wire_audio_port((xine_post_out_t *) ao_out, fe->audio_port);
+ LOGDBG(" wiring %10s[out] -> [in]audio_out", post_elements[i]->name);
+ xine_post_wire_audio_port((xine_post_out_t *) ao_out, fe->audio_port);
}
else {
- const xine_post_in_t *ao_in;
- int err;
-
- /* look for standard input names */
- ao_in = xine_post_input(post_elements[i + 1]->post, "audio");
- if( !ao_in )
- ao_in = xine_post_input(post_elements[i + 1]->post, "audio in");
-
- LOGDBG(" wiring %10s[out] -> [in]%-10s ",
- post_elements[i]->name, post_elements[i+1]->name);
- err = xine_post_wire((xine_post_out_t *) ao_out, (xine_post_in_t *) ao_in);
+ const xine_post_in_t *ao_in;
+ int err;
+
+ /* look for standard input names */
+ ao_in = xine_post_input(post_elements[i + 1]->post, "audio");
+ if( !ao_in )
+ ao_in = xine_post_input(post_elements[i + 1]->post, "audio in");
+
+ LOGDBG(" wiring %10s[out] -> [in]%-10s ",
+ post_elements[i]->name, post_elements[i+1]->name);
+ err = xine_post_wire((xine_post_out_t *) ao_out, (xine_post_in_t *) ao_in);
}
}
@@ -481,7 +481,7 @@ static void _applugin_rewire_from_post_elements(fe_t *fe, post_element_t **post_
}
}
-static post_element_t **_pplugin_join_deinterlace_and_post_elements(fe_t *fe, int *post_elements_num)
+static post_element_t **_pplugin_join_deinterlace_and_post_elements(fe_t *fe, int *post_elements_num)
{
post_element_t **post_elements;
int i = 0, j = 0, n = 0, p = 0;
@@ -502,17 +502,17 @@ static post_element_t **_pplugin_join_deinterlace_and_post_elements(fe_t *fe, in
if(fe->post_pip_enable)
for( i = 0; i < fe->post_pip_elements_num; i++ ) {
if(fe->post_pip_elements[i]->enable)
- post_elements[i+j-n] = fe->post_pip_elements[i];
+ post_elements[i+j-n] = fe->post_pip_elements[i];
else
- n++;
+ n++;
}
if(fe->post_video_enable)
for( j = 0; j < fe->post_video_elements_num; j++ ) {
if(fe->post_video_elements[j]->enable) {
- post_elements[i+j-n] = fe->post_video_elements[j];
+ post_elements[i+j-n] = fe->post_video_elements[j];
} else
- n++;
+ n++;
}
*post_elements_num -= n;
@@ -521,7 +521,7 @@ static post_element_t **_pplugin_join_deinterlace_and_post_elements(fe_t *fe, in
return NULL;
}
- /* in some special cases order is important. By default plugin order
+ /* in some special cases order is important. By default plugin order
* in post plugin chain is post plugin loading order.
* But, we want:
*
@@ -537,23 +537,23 @@ static post_element_t **_pplugin_join_deinterlace_and_post_elements(fe_t *fe, in
while(order[p]) {
for(i = 0; i<*post_elements_num; i++)
if(!strcmp(post_elements[i]->name, order[p])) {
- if(i != n) {
- post_element_t *tmp = post_elements[i];
- for(j=i; j>n; j--)
- post_elements[j] = post_elements[j-1];
- post_elements[n] = tmp;
- LOGDBG(" moved %s to post slot %d", order[p], n);
- }
- n++;
- break;
+ if(i != n) {
+ post_element_t *tmp = post_elements[i];
+ for(j=i; j>n; j--)
+ post_elements[j] = post_elements[j-1];
+ post_elements[n] = tmp;
+ LOGDBG(" moved %s to post slot %d", order[p], n);
+ }
+ n++;
+ break;
}
p++;
}
-
+
return post_elements;
}
-static post_element_t **_pplugin_join_visualization_and_post_elements(fe_t *fe, int *post_elements_num)
+static post_element_t **_pplugin_join_visualization_and_post_elements(fe_t *fe, int *post_elements_num)
{
post_element_t **post_elements;
int i = 0, j = 0, n = 0;
@@ -573,17 +573,17 @@ static post_element_t **_pplugin_join_visualization_and_post_elements(fe_t *fe,
if(fe->post_audio_enable)
for( j = 0; j < fe->post_audio_elements_num; j++ ) {
if(fe->post_audio_elements[j]->enable)
- post_elements[i+j-n] = fe->post_audio_elements[j];
+ post_elements[i+j-n] = fe->post_audio_elements[j];
else
- n++;
+ n++;
}
if(fe->post_vis_enable)
- for( i = 0; i < fe->post_vis_elements_num; i++ ) {
+ for( i = 0; i < fe->post_vis_elements_num; i++ ) {
if(fe->post_vis_elements[i]->enable)
- post_elements[i+j-n] = fe->post_vis_elements[i];
+ post_elements[i+j-n] = fe->post_vis_elements[i];
else
- n++;
+ n++;
}
*post_elements_num -= n;
@@ -595,7 +595,7 @@ static post_element_t **_pplugin_join_visualization_and_post_elements(fe_t *fe,
return post_elements;
}
-static void _vpplugin_rewire(fe_t *fe)
+static void _vpplugin_rewire(fe_t *fe)
{
static post_element_t **post_elements;
int post_elements_num;
@@ -609,7 +609,7 @@ static void _vpplugin_rewire(fe_t *fe)
}
}
-static void _applugin_rewire(fe_t *fe)
+static void _applugin_rewire(fe_t *fe)
{
static post_element_t **post_elements;
int post_elements_num;
@@ -623,14 +623,14 @@ static void _applugin_rewire(fe_t *fe)
}
}
-void vpplugin_rewire_posts(fe_t *fe)
+void vpplugin_rewire_posts(fe_t *fe)
{
/*TRACELINE;*/
_vpplugin_unwire(fe);
_vpplugin_rewire(fe);
}
-void applugin_rewire_posts(fe_t *fe)
+void applugin_rewire_posts(fe_t *fe)
{
/*TRACELINE;*/
_applugin_unwire(fe);
@@ -638,65 +638,65 @@ void applugin_rewire_posts(fe_t *fe)
}
static int _pplugin_enable_post(post_plugins_t *fe, const char *name,
- const char *args,
- post_element_t **post_elements,
- int post_elements_num,
- int *found)
+ const char *args,
+ post_element_t **post_elements,
+ int post_elements_num,
+ int *found)
{
int i, result = 0;
for(i=0; i<post_elements_num; i++)
if(post_elements[i])
if(!strcmp(post_elements[i]->name, name)) {
- if(post_elements[i]->enable == 0) {
- post_elements[i]->enable = 1;
- result = 1;
- }
-
- *found = 1;
-
- if(args && *args) {
- if(post_elements[i]->enable != 2) {
- char *tmp = strdup(args);
- __pplugin_update_parameters(post_elements[i]->post, tmp);
- free(tmp);
- if(post_elements[i]->args)
- free(post_elements[i]->args);
- post_elements[i]->args = strdup(args);
- } else {
- LOGDBG(" * enable post %s, parameters fixed in command line.", name);
- LOGDBG(" requested: %s", args ? : "none");
- LOGDBG(" using : %s", post_elements[i]->args ? : "none");
- }
- }
+ if(post_elements[i]->enable == 0) {
+ post_elements[i]->enable = 1;
+ result = 1;
+ }
+
+ *found = 1;
+
+ if(args && *args) {
+ if(post_elements[i]->enable != 2) {
+ char *tmp = strdup(args);
+ __pplugin_update_parameters(post_elements[i]->post, tmp);
+ free(tmp);
+ if(post_elements[i]->args)
+ free(post_elements[i]->args);
+ post_elements[i]->args = strdup(args);
+ } else {
+ LOGDBG(" * enable post %s, parameters fixed in command line.", name);
+ LOGDBG(" requested: %s", args ? : "none");
+ LOGDBG(" using : %s", post_elements[i]->args ? : "none");
+ }
+ }
}
return result;
}
-static int _vpplugin_enable_post(post_plugins_t *fe, const char *name,
- const char *args, int *found)
+static int _vpplugin_enable_post(post_plugins_t *fe, const char *name,
+ const char *args, int *found)
{
int result = 0;
if(!*found)
- result = _pplugin_enable_post(fe, name, args, fe->post_video_elements,
- fe->post_video_elements_num, found);
+ result = _pplugin_enable_post(fe, name, args, fe->post_video_elements,
+ fe->post_video_elements_num, found);
if(!*found)
- result = _pplugin_enable_post(fe, name, args, fe->post_pip_elements,
- fe->post_pip_elements_num, found);
+ result = _pplugin_enable_post(fe, name, args, fe->post_pip_elements,
+ fe->post_pip_elements_num, found);
return result;
}
static int _applugin_enable_post(post_plugins_t *fe, const char *name,
- const char *args, int *found)
+ const char *args, int *found)
{
int result = 0;
if(!*found)
- result = _pplugin_enable_post(fe, name, args, fe->post_audio_elements,
- fe->post_audio_elements_num, found);
+ result = _pplugin_enable_post(fe, name, args, fe->post_audio_elements,
+ fe->post_audio_elements_num, found);
if(!*found)
- result = _pplugin_enable_post(fe, name, args, fe->post_vis_elements,
- fe->post_vis_elements_num, found);
+ result = _pplugin_enable_post(fe, name, args, fe->post_vis_elements,
+ fe->post_vis_elements_num, found);
return result;
}
@@ -719,7 +719,7 @@ static const char * _pp_args(const char *initstr)
}
int vpplugin_enable_post(post_plugins_t *fe, const char *initstr,
- int *found)
+ int *found)
{
char *name = _pp_name_strdup(initstr);
const char *args = _pp_args(initstr);
@@ -727,47 +727,47 @@ int vpplugin_enable_post(post_plugins_t *fe, const char *initstr,
int result = _vpplugin_enable_post(fe, name, args, found);
LOGDBG(" * enable post %s --> %s, %s", name,
- *found ? "found" : "not found",
- result ? "enabled" : "no action");
+ *found ? "found" : "not found",
+ result ? "enabled" : "no action");
if(!*found) {
LOGDBG(" * loading post %s", initstr);
vpplugin_parse_and_store_post(fe, initstr);
result = _vpplugin_enable_post(fe, name, NULL, found);
LOGDBG(" * enable post %s --> %s, %s", name,
- *found ? "found" : "not found",
- result ? "enabled" : "no action");
- }
-
+ *found ? "found" : "not found",
+ result ? "enabled" : "no action");
+ }
+
if(result)
_vpplugin_unwire(fe);
-
+
free(name);
return result;
}
int applugin_enable_post(post_plugins_t *fe, const char *initstr,
- int *found)
+ int *found)
{
const char * args = _pp_args(initstr);
char *name = _pp_name_strdup(initstr);
- int result = _applugin_enable_post(fe, name, args, found);
+ int result = _applugin_enable_post(fe, name, args, found);
LOGDBG(" * enable post %s --> %s, %s", name,
- *found ? "found" : "not found",
- result ? "enabled" : "no action");
+ *found ? "found" : "not found",
+ result ? "enabled" : "no action");
if(!*found) {
LOGDBG(" * loading post %s", initstr);
applugin_parse_and_store_post(fe, initstr);
result = _applugin_enable_post(fe, name, NULL, found);
LOGDBG(" * enable post %s --> %s, %s", name,
- *found ? "found" : "not found",
- result ? "enabled" : "no action");
+ *found ? "found" : "not found",
+ result ? "enabled" : "no action");
}
- if(result)
+ if(result)
_applugin_unwire(fe);
free(name);
@@ -775,19 +775,19 @@ int applugin_enable_post(post_plugins_t *fe, const char *initstr,
}
static int _pplugin_disable_post(post_plugins_t *fe, const char *name,
- post_element_t **post_elements,
- int post_elements_num)
+ post_element_t **post_elements,
+ int post_elements_num)
{
int i, result = 0;
/*TRACELINE;*/
if(post_elements)
for(i = 0; i < post_elements_num; i++)
if(post_elements[i])
- if(!name || !strcmp(post_elements[i]->name, name))
- if(post_elements[i]->enable == 1) {
- post_elements[i]->enable = 0;
- result = 1;
- }
+ if(!name || !strcmp(post_elements[i]->name, name))
+ if(post_elements[i]->enable == 1) {
+ post_elements[i]->enable = 0;
+ result = 1;
+ }
return result;
}
@@ -795,9 +795,9 @@ int vpplugin_disable_post(post_plugins_t *fe, const char *name)
{
/*TRACELINE;*/
if(_pplugin_disable_post(fe, name, fe->post_video_elements,
- fe->post_video_elements_num) ||
+ fe->post_video_elements_num) ||
_pplugin_disable_post(fe, name, fe->post_pip_elements,
- fe->post_pip_elements_num)) {
+ fe->post_pip_elements_num)) {
_vpplugin_unwire(fe);
return 1;
}
@@ -808,9 +808,9 @@ int applugin_disable_post(post_plugins_t *fe, const char *name)
{
/*TRACELINE;*/
if(_pplugin_disable_post(fe, name, fe->post_audio_elements,
- fe->post_audio_elements_num) ||
+ fe->post_audio_elements_num) ||
_pplugin_disable_post(fe, name, fe->post_vis_elements,
- fe->post_vis_elements_num)) {
+ fe->post_vis_elements_num)) {
_applugin_unwire(fe);
return 1;
}
@@ -818,8 +818,8 @@ int applugin_disable_post(post_plugins_t *fe, const char *name)
}
static int _pplugin_unload_post(post_plugins_t *fe, const char *name,
- post_element_t ***post_elements,
- int *post_elements_num)
+ post_element_t ***post_elements,
+ int *post_elements_num)
{
/* does not unwrire plugins ! */
int i, j, result = 0;
@@ -832,29 +832,29 @@ static int _pplugin_unload_post(post_plugins_t *fe, const char *name,
if((*post_elements)[i]) {
if(!name || !strcmp((*post_elements)[i]->name, name)) {
- if((*post_elements)[i]->enable == 0 || !name) {
- xine_post_dispose(fe->xine, (*post_elements)[i]->post);
+ if((*post_elements)[i]->enable == 0 || !name) {
+ xine_post_dispose(fe->xine, (*post_elements)[i]->post);
+
+ free((*post_elements)[i]->name);
- free((*post_elements)[i]->name);
+ if((*post_elements)[i]->args)
+ free((*post_elements)[i]->args);
- if((*post_elements)[i]->args)
- free((*post_elements)[i]->args);
-
- free((*post_elements)[i]);
-
- for(j=i; j < *post_elements_num - 1; j++)
- (*post_elements)[j] = (*post_elements)[j+1];
+ free((*post_elements)[i]);
- (*post_elements_num) --;
- (*post_elements)[(*post_elements_num)] = 0;
+ for(j=i; j < *post_elements_num - 1; j++)
+ (*post_elements)[j] = (*post_elements)[j+1];
- result = 1;
- i--;
+ (*post_elements_num) --;
+ (*post_elements)[(*post_elements_num)] = 0;
- } else {
- LOGDBG("Unload %s failed: plugin enabled and in use",
- (*post_elements)[i]->name);
- }
+ result = 1;
+ i--;
+
+ } else {
+ LOGDBG("Unload %s failed: plugin enabled and in use",
+ (*post_elements)[i]->name);
+ }
}
}
}
@@ -873,12 +873,12 @@ int vpplugin_unload_post(post_plugins_t *fe, const char *name)
int result = vpplugin_disable_post(fe, name);
/* unload already disabled plugins too (result=0) */
- _pplugin_unload_post(fe, name, &fe->post_video_elements,
- &fe->post_video_elements_num);
- _pplugin_unload_post(fe, name, &fe->post_pip_elements,
- &fe->post_pip_elements_num);
+ _pplugin_unload_post(fe, name, &fe->post_video_elements,
+ &fe->post_video_elements_num);
+ _pplugin_unload_post(fe, name, &fe->post_pip_elements,
+ &fe->post_pip_elements_num);
- /* result indicates only unwiring condition, not unload result */
+ /* result indicates only unwiring condition, not unload result */
return result;
}
@@ -887,15 +887,15 @@ int applugin_unload_post(post_plugins_t *fe, const char *name)
int result = applugin_disable_post(fe, name);
/* unload already disabled plugins too (result=0) */
- _pplugin_unload_post(fe, name, &fe->post_audio_elements,
- &fe->post_audio_elements_num);
- _pplugin_unload_post(fe, name, &fe->post_vis_elements,
- &fe->post_vis_elements_num);
+ _pplugin_unload_post(fe, name, &fe->post_audio_elements,
+ &fe->post_audio_elements_num);
+ _pplugin_unload_post(fe, name, &fe->post_vis_elements,
+ &fe->post_vis_elements_num);
- /* result indicates only unwiring condition, not unload result */
+ /* result indicates only unwiring condition, not unload result */
return result;
}
/* end of post.c */
-
+