如何在xinimin.c(xine)中创建解交错器

如何在xinimin.c(xine)中创建解交错器,c,C,我使用了xinimin.c并添加了seek和osd功能。我需要实现的最后一个重要部分是逐行扫描,然而,我发现很少有文档。我已经看过黑客指南了,当然我已经用谷歌搜索了一个又一个。我发现了不推荐使用的方法: xine_set_param(stream, XINE_PARAM_VO_DEINTERLACE, 1); 这是行不通的。我看到当前的方法涉及post插件,但是my/usr/include/xine/post.h中没有deinterlace这个词 任何人都可以提供一个如何实现逐行扫描的示例。如

我使用了xinimin.c并添加了seek和osd功能。我需要实现的最后一个重要部分是逐行扫描,然而,我发现很少有文档。我已经看过黑客指南了,当然我已经用谷歌搜索了一个又一个。我发现了不推荐使用的方法:

xine_set_param(stream, XINE_PARAM_VO_DEINTERLACE, 1);
这是行不通的。我看到当前的方法涉及post插件,但是my/usr/include/xine/post.h中没有deinterlace这个词

任何人都可以提供一个如何实现逐行扫描的示例。如果能够灵活地更改解交错器,那就太好了,但是我希望从命令行上的-D选项开始


是否有一个好的资源,例如源文件?

这就是您要寻找的吗<代码>src/post/deinterlace目录:

(4个几乎相同的链接:)


发件人:

张贴
视频和音频后期效果插件在这里直播。Post插件 在视频帧或音频缓冲区流离开时修改它们 解码器提供转换或效果

  deinterlace (imported)
        The tvtime deinterlacer as a xine video filter post.

编辑:
我只安装了libxine,其他什么都没有

然而,下载是一个好主意,因为项目的大部分都记录在代码中。如果您使用,即,与和/或CTAG一起使用很好。(如图所示)。然后您可以跳转到函数、定义、调用者。。。(跨文件等),只需几个按键。(它们映射定义、调用每个函数的位置等)

编译时,如果至少在linux上,我必须在末尾添加lib(在源文件之后):

gcc-Wall-Wextra-pedantic-std=c89-o muxine muxine.c-lX11-lxine


也许这会让您在这条路上走得更远:使用示例代码:

阅读源文件(主要在这里):

我主要补充说:


在现有示例代码之后:

ao_port     = xine_open_audio_driver(xine , ao_driver, NULL);
stream      = xine_stream_new(xine, ao_port, vo_port);

我补充说

/* get a list of all available post plugins */
if((tmp = xine_list_post_plugins(xine)) == NULL) {
    fprintf(stderr, "Unable to get post plugins\n");
    xine_exit(xine);
    return 1;
}
printf("Post plugins:\n");
while (*tmp != NULL)
    printf("  %s\n", *tmp++);

/* initialize a post plugin */
if ((post_x = xine_post_init(xine, post_plug_t, 1,
                &ao_port, &vo_port)) == NULL) {
    fprintf(stderr, " *ERR: Unable to 'post init' %s;\n",
            post_plug_t);
    xine_exit(xine);
    return 1;
}

/* get a list of all outputs of a post plugin */
tmp = xine_post_list_outputs(post_x);
printf("Post List Outputs:\n");
while (*tmp != NULL)
    printf("  %s\n", *tmp++);

!!我至少有时间。相信这就是去隔行插件。(读src/post/…评论时听起来很像



一个是struct
xine\u post\u api\t
,而它又有
set\u parameters()
,可以用来控制插件(从外观上看).

Thank you@user120115。我确实在《黑客指南》中看到了这段代码,但不幸的是,这对演示如何实现它几乎没有什么帮助。我已经安装了xine lib 1.2.1版,但我恐怕没有正确的使用标志集(gentoo)因为我的系统中没有任何头文件或源文件。不幸的是,没有一个未设置的标志跳到我身上作为需要设置的标志。您提供的链接应该可以让我到达我想要的位置,只需要先正确配置我的系统。再次感谢。正如您现在可能已经猜到的,我是C/C++新手,但我是学习。我不知道如何继续。因为我的系统上没有这些头文件和源文件,我是否要将它们复制到我的工作目录中?我不需要一个完整的后处理器的所有功能。所以我不需要这些文件中的所有内容。关于需要哪些部分的任何提示?我不会在这个项目上赚钱,一个这不是学校的作业。我只是在努力学习。任何帮助都将不胜感激。Thanks@nomadicME:仅澄清:您不包括任何这些源文件(来自存储库),而是将它们用作参考文档。包括是通过已安装的库并使用-lxine或
$(pkg config--cflags--libs libxine)完成的
。如果你不熟悉GCC,这是一本很棒的读物:谢谢@user120115的指导。你给了我很多东西让我继续。我会做一段时间,阅读gccintro,然后发回它的运行情况。好吧,过去几天我断断续续地看了它,我只是不明白。我同意你的观点,我应该是abl我想使用set_parameters()来控制tvtime插件,但是参数的名称是什么?我想列出它们,但我不知道如何列出。我有/usr/lib/xine/plugins/2.1/post/xineplug_post_tvtime。所以在我的系统中(由xine lib安装),但找不到任何文档。我在谷歌上找到了这个
/* get a list of all available post plugins */
if((tmp = xine_list_post_plugins(xine)) == NULL) {
    fprintf(stderr, "Unable to get post plugins\n");
    xine_exit(xine);
    return 1;
}
printf("Post plugins:\n");
while (*tmp != NULL)
    printf("  %s\n", *tmp++);

/* initialize a post plugin */
if ((post_x = xine_post_init(xine, post_plug_t, 1,
                &ao_port, &vo_port)) == NULL) {
    fprintf(stderr, " *ERR: Unable to 'post init' %s;\n",
            post_plug_t);
    xine_exit(xine);
    return 1;
}

/* get a list of all outputs of a post plugin */
tmp = xine_post_list_outputs(post_x);
printf("Post List Outputs:\n");
while (*tmp != NULL)
    printf("  %s\n", *tmp++);